Skip to content

Commit

Permalink
moved content into new dir
Browse files Browse the repository at this point in the history
  • Loading branch information
unknown authored and unknown committed Apr 22, 2012
1 parent 25cef0b commit 1d1c57a
Show file tree
Hide file tree
Showing 4 changed files with 337 additions and 0 deletions.
1 change: 1 addition & 0 deletions svdsample/README
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
some SVD samples.
Binary file added svdsample/SVD talk.pdf
Binary file not shown.
164 changes: 164 additions & 0 deletions svdsample/exampleMatlab.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
A=[1 0 0 1 0 0 0 0 0;
1 0 1 0 0 0 0 0 0;
1 1 0 0 0 0 0 0 0;
0 1 1 0 1 0 0 0 0;
0 1 1 2 0 0 0 0 0;
0 1 0 0 1 0 0 0 0;
0 1 0 0 1 0 0 0 0;
0 0 1 1 0 0 0 0 0;
0 1 0 0 0 0 0 0 1;
0 0 0 0 0 1 1 1 0;
0 0 0 0 0 0 1 1 1;
0 0 0 0 0 0 0 1 1];

[U,S,V] = svd(A,'econ');

U =

-0.2214 -0.1132 0.2890 -0.4148 -0.1063 -0.3410 -0.5227 0.0605 0.4067
-0.1976 -0.0721 0.1350 -0.5522 0.2818 0.4959 0.0704 0.0099 0.1089
-0.2405 0.0432 -0.1644 -0.5950 -0.1068 -0.2550 0.3022 -0.0623 -0.4924
-0.4036 0.0571 -0.3378 0.0991 0.3317 0.3848 -0.0029 0.0004 -0.0123
-0.6445 -0.1673 0.3611 0.3335 -0.1590 -0.2065 0.1658 -0.0343 -0.2707
-0.2650 0.1072 -0.4260 0.0738 0.0803 -0.1697 -0.2829 0.0161 0.0539
-0.2650 0.1072 -0.4260 0.0738 0.0803 -0.1697 -0.2829 0.0161 0.0539
-0.3008 -0.1413 0.3303 0.1881 0.1148 0.2722 -0.0330 0.0190 0.1653
-0.2059 0.2736 -0.1776 -0.0324 -0.5372 0.0809 0.4669 0.0363 0.5794
-0.0127 0.4902 0.2311 0.0248 0.5942 -0.3921 0.2883 -0.2546 0.2254
-0.0361 0.6228 0.2231 0.0007 -0.0683 0.1149 -0.1596 0.6811 -0.2320
-0.0318 0.4505 0.1411 -0.0087 -0.3005 0.2773 -0.3395 -0.6784 -0.1825


S =

3.3409 0 0 0 0 0 0 0 0
0 2.5417 0 0 0 0 0 0 0
0 0 2.3539 0 0 0 0 0 0
0 0 0 1.6445 0 0 0 0 0
0 0 0 0 1.5048 0 0 0 0
0 0 0 0 0 1.3064 0 0 0
0 0 0 0 0 0 0.8459 0 0
0 0 0 0 0 0 0 0.5601 0
0 0 0 0 0 0 0 0 0.3637


V =

-0.1974 -0.0559 0.1103 -0.9498 0.0457 -0.0766 -0.1773 0.0144 0.0637
-0.6060 0.1656 -0.4973 -0.0286 -0.2063 -0.2565 0.4330 -0.0493 -0.2428
-0.4629 -0.1273 0.2076 0.0416 0.3783 0.7244 0.2369 -0.0088 -0.0241
-0.5421 -0.2318 0.5699 0.2677 -0.2056 -0.3689 -0.2648 0.0195 0.0842
-0.2795 0.1068 -0.5054 0.1500 0.3272 0.0348 -0.6723 0.0583 0.2624
-0.0038 0.1928 0.0982 0.0151 0.3948 -0.3002 0.3408 -0.4545 0.6198
-0.0146 0.4379 0.1930 0.0155 0.3495 -0.2122 0.1522 0.7615 -0.0180
-0.0241 0.6151 0.2529 0.0102 0.1498 0.0001 -0.2491 -0.4496 -0.5199
-0.0820 0.5299 0.0793 -0.0246 -0.6020 0.3622 -0.0380 0.0696 0.4535

>> A-U*S*V'

ans =

1.0e-014 *

0.0111 -0.0340 -0.0839 0.0888 0.0812 -0.0139 0.0161 0.0194 0.0444
-0.0888 -0.0461 0.0999 0.0040 -0.0092 0.0378 0.0186 0.0014 -0.0420
-0.1110 0.0555 -0.0103 -0.0253 0.0222 -0.0319 -0.0487 -0.0444 -0.0347
-0.0001 0.0666 0.0777 -0.0662 0.1332 0.0165 0.0486 0.0211 -0.0008
0.0627 -0.0444 0.0888 0.1332 -0.0333 0.0035 0.0006 0 0.0291
0.0100 0.1554 -0.0665 -0.0690 0.1998 -0.0498 -0.0338 0.0158 0.0075
0.0122 0.1443 -0.0718 -0.0637 0.1998 -0.0215 -0.0038 0.0220 0.0102
0.0532 -0.0765 0.0777 0.0888 -0.0468 0.0451 0.0369 0.0520 0.0291
-0.0359 0.0777 -0.0119 0.0121 -0.0347 0.0389 -0.0271 -0.0625 0.0666
0.0087 -0.0021 0.0771 -0.0529 0.0187 0 -0.0444 -0.1110 0.0153
0.0317 0.0080 0.0244 -0.0292 0.0711 -0.0049 0.0222 -0.0666 0
0.0317 0.0062 -0.0205 0.0223 0.0503 0.0180 -0.0481 -0.0444 0



>> U2=U(:,1:2)

U2 =

-0.2214 -0.1132
-0.1976 -0.0721
-0.2405 0.0432
-0.4036 0.0571
-0.6445 -0.1673
-0.2650 0.1072
-0.2650 0.1072
-0.3008 -0.1413
-0.2059 0.2736
-0.0127 0.4902
-0.0361 0.6228
-0.0318 0.4505

>> S2=S(1:2,1:2)

S2 =

3.3409 0
0 2.5417

>> V2=V(:,1:2)

V2 =

-0.1974 -0.0559
-0.6060 0.1656
-0.4629 -0.1273
-0.5421 -0.2318
-0.2795 0.1068
-0.0038 0.1928
-0.0146 0.4379
-0.0241 0.6151
-0.0820 0.5299

>> A2=U2*S2*V2'

A2 =

0.1621 0.4005 0.3790 0.4676 0.1760 -0.0527 -0.1151 -0.1591 -0.0918
0.1406 0.3698 0.3290 0.4004 0.1650 -0.0328 -0.0706 -0.0968 -0.0430
0.1524 0.5050 0.3579 0.4101 0.2362 0.0242 0.0598 0.0869 0.1240
0.2580 0.8411 0.6057 0.6974 0.3923 0.0331 0.0832 0.1218 0.1874
0.4488 1.2344 1.0509 1.2658 0.5563 -0.0738 -0.1547 -0.2096 -0.0489
0.1596 0.5817 0.3752 0.4169 0.2765 0.0559 0.1322 0.1889 0.2169
0.1596 0.5817 0.3752 0.4169 0.2765 0.0559 0.1322 0.1889 0.2169
0.2185 0.5496 0.5110 0.6281 0.2425 -0.0654 -0.1425 -0.1966 -0.1079
0.0969 0.5321 0.2299 0.2118 0.2665 0.1368 0.3146 0.4444 0.4250
-0.0613 0.2321 -0.1389 -0.2656 0.1449 0.2404 0.5461 0.7674 0.6637
-0.0647 0.3353 -0.1456 -0.3014 0.2028 0.3057 0.6949 0.9766 0.8487
-0.0431 0.2539 -0.0967 -0.2079 0.1519 0.2212 0.5029 0.7069 0.6155

>> dot(A(1,:),A(4,:))/norm(A(1,:))/norm(A(4,:)) % original cosine distance human-user

ans =

0




>> dot(A2(1,:),A2(4,:))/norm(A2(1,:))/norm(A2(4,:)) % new cosine distance human-user

ans =

0.8878




>> dot(A(1,:),A(12,:))/norm(A(1,:))/norm(A(12,:)) % original cosine distance human-minor

ans =

0




>> dot(A2(1,:),A2(12,:))/norm(A2(1,:))/norm(A2(12,:)) % new cosine distance human-minor

ans =

-0.2750
172 changes: 172 additions & 0 deletions svdsample/examplePython.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
>>> from numpy import *
>>> from numpy.linalg import svd


A = array ([( 1., 0., 0., 1., 0., 0., 0., 0., 0.),
( 1., 0., 1., 0., 0., 0., 0., 0., 0.),
( 1., 1., 0., 0., 0., 0., 0., 0., 0.),
( 0., 1., 1., 0., 1., 0., 0., 0., 0.),
( 0., 1., 1., 2., 0., 0., 0., 0., 0.),
( 0., 1., 0., 0., 1., 0., 0., 0., 0.),
( 0., 1., 0., 0., 1., 0., 0., 0., 0.),
( 0., 0., 1., 1., 0., 0., 0., 0., 0.),
( 0., 1., 0., 0., 0., 0., 0., 0., 1.),
( 0., 0., 0., 0., 0., 1., 1., 1., 0.),
( 0., 0., 0., 0., 0., 0., 1., 1., 1.),
( 0., 0., 0., 0., 0., 0., 0., 1., 1.)])


>>> A
array([[ 1., 0., 0., 1., 0., 0., 0., 0., 0.],
[ 1., 0., 1., 0., 0., 0., 0., 0., 0.],
[ 1., 1., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 1., 0., 1., 0., 0., 0., 0.],
[ 0., 1., 1., 2., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 1., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 0., 1., 1., 1., 0.],
[ 0., 0., 0., 0., 0., 0., 1., 1., 1.],
[ 0., 0., 0., 0., 0., 0., 0., 1., 1.]])

>>> U,sigma,V = svd(A)

>>> Sigma = zeros_like(A)

>>> n = min(A.shape)

>>> Sigma[:n,:n] = diag(sigma)

>>> print dot(U,dot(Sigma,V))
[[ 1.00000000e+00 3.67761377e-16 3.40005801e-16 1.00000000e+00
-3.05311332e-16 -2.49800181e-16 2.76688394e-16 4.02455846e-16
-2.77555756e-17]
[ 1.00000000e+00 7.63278329e-16 1.00000000e+00 3.53449908e-16
3.86843335e-16 1.04083409e-17 9.48676901e-17 4.68375339e-16
1.56125113e-16]
[ 1.00000000e+00 1.00000000e+00 7.18175519e-16 3.97251676e-16
-7.28583860e-16 4.16333634e-17 -3.85975973e-16 -7.77156117e-16
-4.57966998e-16]
[ -2.43674438e-16 1.00000000e+00 1.00000000e+00 -7.93093889e-17
1.00000000e+00 -1.15359111e-16 -2.26909962e-16 4.25007252e-17
4.57099636e-16]
[ -3.76434994e-16 1.00000000e+00 1.00000000e+00 2.00000000e+00
-3.33066907e-16 0.00000000e+00 2.51534904e-17 -1.45716772e-16
-5.20417043e-16]
[ 5.48606299e-17 1.00000000e+00 7.11995567e-16 9.97465999e-17
1.00000000e+00 -1.42247325e-16 -7.55146813e-17 -6.93889390e-17
9.54097912e-17]
[ 3.90312782e-18 1.00000000e+00 6.58002298e-16 -8.67361738e-19
1.00000000e+00 -1.75207071e-16 -2.92355116e-16 -3.12250226e-17
3.88578059e-16]
[ -4.18068358e-16 3.85108612e-16 1.00000000e+00 1.00000000e+00
1.87350135e-16 1.17961196e-16 4.42354486e-17 1.11022302e-16
-1.24900090e-16]
[ -1.54390389e-16 1.00000000e+00 4.38017678e-16 -3.46944695e-17
-4.02455846e-16 6.10622664e-16 6.42715048e-16 0.00000000e+00
1.00000000e+00]
[ 3.55618313e-17 -2.84494650e-16 8.47412418e-16 -1.49186219e-16
-4.78783679e-16 1.00000000e+00 1.00000000e+00 1.00000000e+00
9.15933995e-16]
[ -6.33174069e-17 -7.97972799e-17 7.93635990e-17 1.47451495e-16
-1.45716772e-16 9.02056208e-17 1.00000000e+00 1.00000000e+00
1.00000000e+00]
[ -2.94902991e-17 5.89805982e-17 -2.45029691e-16 1.50053581e-16
1.70002901e-16 5.27355937e-16 3.48245738e-16 1.00000000e+00
1.00000000e+00]]

>>> U2=U[:,:2]

>>> U2
array([[-0.22135078, -0.11317962],
[-0.1976454 , -0.07208778],
[-0.24047023, 0.04315195],
[-0.40359886, 0.05707026],
[-0.64448115, -0.16730121],
[-0.26503747, 0.10715957],
[-0.26503747, 0.10715957],
[-0.30082816, -0.14127047],
[-0.20591786, 0.27364743],
[-0.01274618, 0.49016179],
[-0.03613585, 0.62278523],
[-0.03175633, 0.45050892]])

>>> S2=Sigma[:2,:2]

>>> S2
array([[ 3.34088375, 0. ],
[ 0. , 2.541701 ]])


>>> V=transpose(V)
>>> V
array([[ -1.97392802e-01, -5.59135178e-02, 1.10269729e-01,
-9.49785024e-01, 4.56785564e-02, -7.65935585e-02,
-1.77318297e-01, 1.43932591e-02, 6.36922896e-02],
[ -6.05990269e-01, 1.65592878e-01, -4.97326494e-01,
-2.86488989e-02, -2.06327278e-01, -2.56475221e-01,
4.32984245e-01, -4.93053257e-02, -2.42782900e-01],
[ -4.62917508e-01, -1.27312062e-01, 2.07605953e-01,
4.16091951e-02, 3.78336233e-01, 7.24399642e-01,
2.36889703e-01, -8.82550205e-03, -2.40768748e-02],
[ -5.42114417e-01, -2.31755229e-01, 5.69921445e-01,
2.67714038e-01, -2.05604711e-01, -3.68860901e-01,
-2.64799523e-01, 1.94669439e-02, 8.42069017e-02],
[ -2.79469108e-01, 1.06774717e-01, -5.05449907e-01,
1.50035433e-01, 3.27194409e-01, 3.48130498e-02,
-6.72303530e-01, 5.83495626e-02, 2.62375876e-01],
[ -3.81521297e-03, 1.92847936e-01, 9.81842398e-02,
1.50814907e-02, 3.94841214e-01, -3.00161116e-01,
3.40839827e-01, -4.54476523e-01, 6.19847194e-01],
[ -1.46314675e-02, 4.37874883e-01, 1.92955572e-01,
1.55071875e-02, 3.49485348e-01, -2.12201424e-01,
1.52194722e-01, 7.61527011e-01, -1.79751825e-02],
[ -2.41368353e-02, 6.15121899e-01, 2.52903979e-01,
1.01990092e-02, 1.49798472e-01, 9.74341694e-05,
-2.49145920e-01, -4.49642757e-01, -5.19890498e-01],
[ -8.19573680e-02, 5.29937072e-01, 7.92731465e-02,
-2.45549056e-02, -6.01992995e-01, 3.62218973e-01,
-3.80341889e-02, 6.96375497e-02, 4.53506755e-01]])

>>> V2=V[:,:2]

>>> V2
array([[-0.1973928 , -0.05591352],
[-0.60599027, 0.16559288],
[-0.46291751, -0.12731206],
[-0.54211442, -0.23175523],
[-0.27946911, 0.10677472],
[-0.00381521, 0.19284794],
[-0.01463147, 0.43787488],
[-0.02413684, 0.6151219 ],
[-0.08195737, 0.52993707]])

>>> A2=dot(U2,dot(S2,transpose(V2)))

>>> A2
array([[ 0.16205797, 0.40049828, 0.37895454, 0.46756626, 0.17595367,
-0.05265495, -0.11514284, -0.15910198, -0.09183827],
[ 0.14058529, 0.36980077, 0.32899603, 0.40042722, 0.16497247,
-0.03281545, -0.07056857, -0.09676827, -0.04298073],
[ 0.15244948, 0.50500444, 0.35793658, 0.41010678, 0.23623173,
0.02421652, 0.05978051, 0.0868573 , 0.12396632],
[ 0.25804933, 0.84112343, 0.60571995, 0.69735717, 0.39231795,
0.03311801, 0.08324491, 0.12177239, 0.18737973],
[ 0.44878975, 1.23436483, 1.0508615 , 1.26579559, 0.55633139,
-0.07378998, -0.15469383, -0.20959816, -0.04887954],
[ 0.15955428, 0.5816819 , 0.37521897, 0.41689768, 0.27654052,
0.05590374, 0.1322185 , 0.18891146, 0.21690761],
[ 0.15955428, 0.5816819 , 0.37521897, 0.41689768, 0.27654052,
0.05590374, 0.1322185 , 0.18891146, 0.21690761],
[ 0.21846278, 0.54958058, 0.51096047, 0.62805802, 0.24253607,
-0.06541098, -0.14252146, -0.19661186, -0.1079133 ],
[ 0.09690639, 0.53206438, 0.22991365, 0.21175363, 0.26652513,
0.13675618, 0.31462078, 0.44444058, 0.42496948],
[-0.06125388, 0.23210821, -0.1388984 , -0.26564589, 0.14492549,
0.24042105, 0.54614717, 0.7673742 , 0.66370933],
[-0.06467702, 0.33528115, -0.14564055, -0.30140607, 0.20275641,
0.30572612, 0.69489337, 0.97661121, 0.84874969],
[-0.04308204, 0.25390566, -0.09666695, -0.20785821, 0.1519134 ,
0.22122703, 0.50294488, 0.70691163, 0.6155044 ]])
>>>

0 comments on commit 1d1c57a

Please sign in to comment.