【機器學習】推薦系統、SVD分解降維


推薦系統:

1.基於內容的實現:KNN

2.基於協同濾波(CF)實現:SVD pLSA(LSA發展而來,SVD實現)LDAGDBT

        SVD算是比較老的方法,后期演進的主題模型主要是pLSALDApLSA主要基於EM最大期望算法,而LDA主要基於Gibbs抽樣算法,這個在下一篇文章《主題模型》里會詳細介紹。

 

一、推薦系統

        推薦系統實現主要分為兩個方面:基於內容實現和基於協同濾波實現。

1.基於內容

        不同人對不同電影評分這個例子,可以看做是一個普通回歸(線性回歸)問題,因此每部電影都要提前提取出一個特征向量(即x值),然后針對每個用戶建模,即每個用戶的打分值作為y,利用這些已有的分值y和電影特征值x就可以訓練回歸模型了(最常見的是線性回歸)。這樣就可以預測那些用戶沒有評分的電影分數。(值得注意的是每個用戶都建立他自己的回歸模型)

        從另一個角度,也可以是先給定每個用戶對某種電影的喜好程度(即權值),然后學出每部電影的特征,最后采用回歸來預測那些沒有被評分的電影。

        當然還可以是同時優化每個用戶對不同類型電影的熱愛程度以及每部電影的特征。具體可以參考Ng在coursera上的ML教程:https://www.coursera.org/course/ml

 

2.基於協同濾波

         協同濾波可以看做是一個分類問題,也可以看做是一個矩陣分解問題。協同濾波主要是基於每個人自己的喜好都類似這一特征,它不依賴於個人的基本信息。比如剛才那個電影評分的例子中,預測那些沒有被評分的電影的分數只依賴於已經打分的那些分數,並不需要去學習那些電影的特征。

 

二、奇異值分解SVD

1.SVD原理

        SVD將矩陣分為三個矩陣的乘積,公式:


        中間矩陣∑為對角陣,對角元素值為Data矩陣特征值λi,且已經從大到小排序,即使去掉特征值小的那些特征,依然可以很好地重構出原始矩陣。如下圖:其中陰影部分代表去掉小特征值重構時的三個矩陣。

         如果m代表商品個數,n代表用戶個數,則U矩陣每行代表商品屬性,現在通過降維U矩陣(取陰影部分)后,每個商品的屬性可以用更低的維度表示(假設k維)。這樣當新來一個用戶的商品推薦向量X,則可以根據公式X*U1*inv(S1)得到一個k維的向量,然后V’尋找最相似的的那個用戶(相似度計算可用余弦公式),根據這個用戶的評分來推薦(主要是推薦新用戶未打分的那些商品)。具體例子可以參考文章:SVD在推薦系統中的應用

         另外關於SVD分解后每個矩陣的實際含義可以參考google吳軍的數學之美一書(吳軍解釋UV兩個矩陣好像弄反了?)或者參考machine learning in action其中的svd章節。

 

2.SVD應用

        SVD是一種降維工具,可以利用SVD來逼近矩陣並從中提取重要特征,保留80%~90%的能量就可以得到重要特征並去掉噪聲。

 

SVD應用:

        隱形語義索引、信息檢索;

        推薦引擎;

        圖像壓縮;

 

matlab中調用SVD庫函數:已知矩陣A=[…],則[U, S, V] = svd(A)就可以輸出三個矩陣U, S, V分別是多少。

 

3.性能

優點:簡化數據,去除噪聲,提高算法結果

缺點:數據轉換難以理解

數據類型:數值型數據



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM