1. 程式人生 > >[機器學習]協同過濾,LFM(隱語義)演算法

[機器學習]協同過濾,LFM(隱語義)演算法

本文內容屬於 Andrew Ng的《機器學習》公開課筆記,大部分截圖均來自Andrew Ng的課件 對於本節所講的演算法,Andrew Ng稱為 Collaborative filtering(協同過濾),或者low rank matrix factorization(xx矩陣分解),項亮博士《推薦系統實踐》那本書裡叫做 LFM(隱語義模型) 上一篇部落格說道 基於內容的推薦 ,但是內容矩陣怎麼來?一種方法就是用大量的人力去填。而Collaborative filtering 正是這樣一種代替人工的方式。 回顧一下,基於內容的推薦,是已知y和X,求theta。如果我們已知y和theta,就可以求X。
於是,如果給theta一個初始化很小的值,可以來回利用上面兩個式子,對X和theta進行求解。 我們偉大的前輩發現了一種更好的方法,就是把兩個 linear regression合併,如下圖
合併後,我們的最優化目標就從  J(theta) 和 J(X)變成了 J(theta,X) 演算法描述如下
在這裡,我們不需要 k = 0的特殊情況了,因為我們不需要手動新增 x=1這個元素。如果需要x=1,協同過濾演算法會自己算出一個 x=1。演算法描述到此為止。 1,為什麼該演算法也叫做 矩陣分解演算法呢。見下圖

我們把 Y矩陣,轉換成了 Theta和X兩個矩陣的乘積 2,怎麼找到與 movie i最相似的5個movie呢? 計算距離
這個距離可能很大。更好的計算距離或者說相似的的方法有 皮爾遜相似度,餘弦相似度,尤拉距離相似度等等,這些相似度的取值範圍都在 -1~1之間 3,如果一個使用者是新來的,沒有任何評分記錄,怎麼給他推薦? Andrew Ng推薦 mean normalization  方法 如果一個使用者沒有評分記錄,那麼用 CF方法算出來的評分都是0。沒什麼價值,還不如給他一個平均值。具體實現見下圖
計算出每部電影的評分平均值。然後把所有的評分都減去平均值進行計算。算出來的結果再加上平均值。 這樣做其實對有評分記錄的使用者是多餘的。但是卻可以把沒有評分記錄的使用者給 統一 進來! -------------割------------- 節目預告:下一節要講 logistic regression 和 regulization。因為是複習,所以沒按大綱走