ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略
ML之DR之SVD:SVD算法相關(guān)論文、算法過程、代碼實現(xiàn)、案例應(yīng)用之詳細攻略
?
?
?
目錄
SVD算法相關(guān)論文
SVD算法過程
1、公式的推導
2、SVD算法兩步過程
SVD代碼實現(xiàn)
SVD的案例應(yīng)用
1、SVD的推薦案例
?
?
SVD算法相關(guān)論文
? ?奇異值分解Singular Value Decomposition:簡稱SVD,特征分解的廣義化,是一種提取特征信息的方法。
?
SVD算法過程
1、根據(jù)Andrew Gibiansky 寫的關(guān)于 SVD 的文章中代碼
http://andrew.gibiansky.com/blog/mathematics/cool-linear-algebra-singular-value-decomposition/
奇異值top不同個數(shù)的應(yīng)用:可以發(fā)現(xiàn),如果我們根據(jù)大小排序這些奇異值(矩陣 Σ 的值),那么前 50 個奇異值將包含整個矩陣 Σ 的大小的 85%。根據(jù)這個事實,我們可以丟棄后面的 250 個值(即將它們設(shè)為 0),僅保留這張小狗圖像的「rank(秩)50」版本。值的數(shù)量差不多少了 5 倍,但質(zhì)量卻下降很少。上述計算的原因是當我們執(zhí)行 UΣ'V 運算時,U 和 V 矩陣中的一部分因為乘 0 也被丟棄(其中 Σ' 是 Σ 的修改后版本,其中僅包含了前面的 30 個值)。
低秩矩陣的近似應(yīng)用:圖像壓縮,其實80與原圖相差不是很大。SVD中的奇異值的個數(shù)分別為1、10、80。
?
?
1、公式的推導
?
2、SVD算法兩步過程
?
?
?
SVD代碼實現(xiàn)
import numpy as np def load_data():return [ [0,0,0,1,1],[0,0,0,2,2],[0,0,0,3,3],[4,4,4,0,0],[5,5,5,0,0],[6,6,6,0,0],[7,7,7,0,0]] data = load_data() u, sigma, vt = np.linalg.svd(data) #Sigma是個矩陣,Python內(nèi)部的機制,為了節(jié)省空間,因為它除了對角線都是0 print(sigma)#前兩個值比后三個值大的多,所以可以取這兩個奇異值,把其余三個置0。[1.94422221e+01 5.29150262e+00 1.86910323e-15 4.48702001e-168.62587679e-18]?
SVD的案例應(yīng)用
1、SVD的推薦案例
假定Ben、Tom、John、Fred對6種產(chǎn)品進行了評價,評分越高,代表對該產(chǎn)品越喜歡。0表示未評價。
1、進行SVD分解并提取前2個特征
(1)、產(chǎn)品矩陣的壓縮、用戶矩陣的壓縮
2、利用SVD進行新用戶的個性化推薦
思路:對于新用戶,如何對其做個性化推薦呢?將A擴展后重新計算SVD,然后聚類用戶?
(1)、假設(shè)有個Bob的新用戶,對6個產(chǎn)品的評分為(5,5,0,0,0,5)T,通過上邊的公式計算出Bob的特征點坐標。
(2)、通過計算Bob和現(xiàn)有用戶的距離進行聚類:計算余弦距離(一定意義下即相關(guān)系數(shù)),與其最近的是Ben,因此,可以給Bob推薦Ben喜歡的S5、S3。
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ML与math:机器学习与高等数学基础概
- 下一篇: ML之LiR:基于编程实现简单线性回归案