【矩陣分解四】SVD++

改進點(跟Funk-SVD比):

一句話總結:SVD++算法在Bias-SVD算法上進一步做了增強,考慮用戶的隱式反饋。也就是在Pu上,添加用戶的偏好信息。


主要思想:

引入了隱式反饋和用戶屬性的信息,相當於引入了額外的信息源,這樣可以從側面反映用戶的偏好,而且能夠解決因顯式評分行爲較少導致的冷啓動問題。

目標函數:

先說隱式反饋怎麼加入,方法是:除了假設評分矩陣中的物品有一個隱因子向量外,用戶有過行爲的物品集合也都有一個隱因子向量,維度是一樣的。把用戶操作過的物品隱因子向量加起來,用來表達用戶的興趣偏好。

類似的,用戶屬性如社會學統計信息,全都轉換成 0-1 型的特徵後,對每一個特徵也假設都存在一個同樣維度的隱因子向量,一個用戶的所有屬性對應的隱因子向量相加,也代表了他的一些偏好。

綜合兩者,SVD++ 的目標函數中,只需要把推薦分數預測部分稍作修改,原來的用戶向量那部分增加了隱式反饋向量和用戶屬性向量:

目標函數是:

其中 𝑁(𝑢) 爲用戶 𝑢 所產生行爲的物品集合,|𝑁𝑢|−0.5 是一個規範化(normalization)因子,對總和規範化可帶來不錯的效果;𝑥𝑗 爲隱藏的、對於商品 𝑗 的個人喜好偏置(相當於每種產生行爲的商品都有一個偏好 𝑥𝑗),是一個我們所要學習的參數。並且 𝑥𝑗 是一個向量,維度數等於隱因子維度數,每個分量代表對該商品的某一隱因子成分的偏好程度,也就是說對 𝑥𝑗 求和實際上是將所有產生行爲的商品對應的隱因子分量值進行分別求和,最後得到的求和後的向量,相當於是用戶對這些隱因子的偏好程度;𝐴(𝑢) 爲用戶 𝑢 的屬性集合,𝑦𝑎 與 𝑥𝑗 類似,即每個屬性都對應一個隱因子向量,也是要學習的參數。

SVD++整體的優化學習算法依然不變,只是要學習的參數多了兩個向量:x 和 y,一個是隱式反饋的物品向量,另一個用戶屬性的向量。

參考:

1.https://lumingdong.cn/recommendation-algorithm-based-on-matrix-decomposition.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章