LFM--隱語義模型,屬於協同領域。
1. LFM算法的背景
提到協同領域,很多人首先想到的就是item CF與user CF,那麼這裏說到的LFM與這兩者又有什麼區別呢?
首先簡單回憶一下item CF與user CF。
item CF:主體是item,首先考慮的是item層面。也就是說,可以根據目標用戶喜歡的物品,尋找和這些物品相似的物品,再推薦給用戶。
user CF:主體是user,首先考慮的是user層面。也就是說,可以先計算和目標用戶興趣相似的用戶,之後再根據計算出來的用戶喜歡的物品給目標用戶推薦物品。
那麼LFM呢?
LFM:先對所有的物品進行分類,再根據用戶的興趣分類給用戶推薦該分類中的物品。
那LFM具體的意義是什麼呢?
爲了方便大家理解,這裏通過item CF再進一步說明。
item CF算法,是將item進行劃分,這樣一旦item貢獻的次數越多,就會造成兩個item越相近。舉個例子來說,就是當你看你喜歡的電視節目的時候,爲了不錯過精彩的內容,你廣告部分也會看;這時,後臺就會統計,你看了***電視節目,也看了***廣告。這樣就可能分析出***電視節目與***廣告比較接近。
然而,事實上兩者並不一樣,爲了解決這一問題,就會需要人工打標籤,進行降權處理。這種方式就需要消耗大量的人力,不適用。
對此,就需要LFM。LFM是根據用戶對item的點擊與否,來獲取user與item之間的關係,item與item之間的關係。我的理解就是,LFM不僅會考慮item,也會考慮item。
2.什麼是LFM算法?
此部分內容來源:https://yq.aliyun.com/articles/152083
首先說明一下,LFM算法其實也是矩陣分解的一種,它的參數是每一個user向量表示和每一個item的向量表示。
下面爲了方便理解,這裏用具體的例子介紹算法的思想。
對於音樂,每一個用戶都有自己的喜好,比如A喜歡帶有小清新的、吉他伴奏的、王菲等元素(latent factor),如果一首歌(item)帶有這些元素,那麼就將這首歌推薦給該用戶,也就是用元素去連接用戶和音樂。每個人對不同的元素偏好不同,而每首歌包含的元素也不一樣。
所以,我們希望能找到這樣兩個矩陣:潛在因子-用戶矩陣Q、潛在因子-音樂矩陣P
(1)潛在因子-用戶矩陣:表示不同的用戶對於不用元素的偏好程度,1代表很喜歡,0代表不喜歡。
比如:
(2)潛在因子-音樂矩陣:表示每種音樂含有各種元素的成分,比如下表中,音樂A是一個偏小清新的音樂,含有小清新這個Latent Factor的成分是0.9,重口味的成分是0.1,優雅的成分是0.2……
利用這兩個矩陣,我們能得出張三對音樂A的喜歡程度是:張三對小清新的偏好*音樂A含有小清新的成分+對重口味的偏好*音樂A含有重口味的成分+對優雅的偏好*音樂A含有優雅的成分+……
即:0.6*0.9 + 0.8*0.1 + 0.1*0.2 + 0.1*0.4 + 0.7*0 = 0.69
每個用戶對每首歌都這樣計算可以得到不同用戶對不同歌曲的評分矩陣。(注,這裏的破浪線表示的是估計的評分,接下來我們還會用到不帶波浪線的R表示實際的評分):
因此我們隊張三推薦四首歌中得分最高的B,對李四推薦得分最高的C,王五推薦B。
下面問題來了,這個潛在因子(latent factor)是怎麼得到的呢?
由於面對海量的讓用戶自己給音樂分類並告訴我們自己的偏好係數顯然是不現實的,事實上我們能獲得的數據只有用戶行爲數據。我們沿用 @邰原朗的量化標準:單曲循環=5, 分享=4, 收藏=3, 主動播放=2 , 聽完=1, 跳過=-2 , 拉黑=-5,在分析時能獲得的實際評分矩陣R,也就是輸入矩陣大概是這個樣子:
事實上這是個非常非常稀疏的矩陣,因爲大部分用戶只聽過全部音樂中很少一部分。如何利用這個矩陣去找潛在因子呢?這裏主要應用到的是矩陣的UV分解。也就是將上面的評分矩陣分解爲兩個低維度的矩陣,用Q和P兩個矩陣的乘積去估計實際的評分矩陣,而且我們希望估計的評分矩陣
和實際的評分矩陣不要相差太多,也就是求解下面的目標函數:
這裏涉及到最優化理論,在實際應用中,往往還要在後面加上2範數的罰項,然後利用梯度下降法就可以求得這P,Q兩個矩陣的估計值。
3.LFM算法的應用場景
根據上述內容,可以得到相應的模型輸出,即兩個潛在因子矩陣。其中,潛在因子的維度是之前設定的,可以理解爲你認爲有哪些特徵可能會影響user對item的喜好程度。
那麼得到模型輸出後,如何應用?
(1)計算用戶toplike:對於與用戶沒有被展示的item,可以計算出一個用戶對item的傾向性得分,取top即toplike,後直接完成用戶對item的喜愛度列表,寫入離線即可完成對在線的推薦。
(2)計算item的topsim:得到item的向量可以用很多表示距離的公式包括cos等等,計算出每一個item的相似度矩陣,該矩陣可以用於線上推薦。當用戶點擊item之後,給其推薦與該item的topsim item。
(3)計算item的topic:根據得到的item向量,可以用聚類的方法,如K-means等等,取出一些隱含的類別。也就是一些隱含的topic能將item分成不同的簇,推薦時按簇推薦。