Chris is just right.

See the compact SVD definition here:

http://en.wikipedia.org/wiki/Singular_value_decomposition#Reduced_SVDs




On Fri, Jun 13, 2014 at 4:47 AM, Chris Baker <[email protected]> wrote:

> MATLAB's svd() function computes the singular value decomposition, with
> orthogonal matrices U and V. Mahout computes a singular value
> factorization, which does not contain the subspaces that do not contribute
> to the data matrix. Compare against
> svd(x,0) instead. Also, watch out for transposes.
> On Jun 13, 2014 3:10 AM, "Han Fan" <[email protected]> wrote:
>
> >
> > import org.apache.mahout.math.DenseMatrix;
> > import org.apache.mahout.math.Matrix;
> > import org.apache.mahout.math.SingularValueDecomposition;
> >
> > public class testMPInverse {
> >         public void test() {
> >                 Matrix matrix = new DenseMatrix(new double[][] {
> >                                 {1,2},
> >                                 {3,4},
> >                                 {5,6}
> >                           });
> >                 SingularValueDecomposition svd = new
> > SingularValueDecomposition(matrix);
> >                  Matrix u = svd.getU();
> >                  Matrix v = svd.getV();
> >                  Matrix s = svd.getS();
> >                  System.out.println(u);
> >                  System.out.println(v);
> >                  System.out.println(s);
> >         }
> >
> >         public static void main(String[] args) {
> >                 testMPInverse t = new testMPInverse();
> >                 t.test();
> >         }
> > }
> >
> > v is
> >
> > {
> >   0  => {0:0.42866713354862623,1:-0.8059639085892977}
> >   1  => {0:0.5663069188480352,1:-0.1123824140965937}
> >   2  => {0:0.7039467041474443,1:0.5811990803961101}
> > }
> >
> > MATLAB gives a different answer
> >
> > x=[1,2,3;4,5,6];
> > [u s v]=svd(x);
> > v
> > v =
> >
> >    -0.4287    0.8060    0.4082
> >    -0.5663    0.1124   -0.8165
> >    -0.7039   -0.5812    0.4082
> >
> > Why the last column of v produced by Mahout SingularValueDecomposition is
> > 0?
> >
> > Thanks for your time.
> >
> >
>

Reply via email to