推荐系统中的矩阵分解演变方式
生活随笔
收集整理的這篇文章主要介紹了
推荐系统中的矩阵分解演变方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
推薦算法主要分為基于內容的算法和協同過濾. 協同過濾的兩種基本方法是基于鄰居的方法(基于內容/物品的協同過濾)和隱語義模型. 矩陣分解乃是實現隱語義模型的基石.
矩陣分解依據用戶對物品的評分, 判斷出用戶和物品的隱語義向量, 然后依據用戶和物品的隱語義向量來進行推薦.
推薦系統用到的數據能夠有顯式評分和隱式評分. 顯式評分時用戶對物品的打分, 顯式評分矩陣通常很稀疏. 隱式評分是指用戶的瀏覽, 購買, 搜索等歷史記錄, 表示的是用戶行為的有無, 所以是一個密集矩陣.
矩陣分解方法會將用戶和物品映射到維的隱向量空間, 用戶對物品的評分表示為兩個向量的內積. 亦即, 每一個物品表示為向量, 每一個用戶表示成向量. 對于物品, 向量的元素表示的是物品具有這些隱因子的程度, 對于用戶, 向量表示的是用戶對各個隱因子的興趣, 元素的值可正可負. 兩個向量的內積
表示的就是預計的用戶對物品的評分. 所以基本的挑戰就是計算用戶和物品到隱向量的映射.
最簡單的就是神秘值分解(Singular value decomposition, SVD), 使用SVD須要分解用戶物品評分矩陣, 可是通常該矩陣中有非常多值是缺失的, 這樣的情況下的SVD是不可行的. 另外, 僅僅處理已知的這些評分easy導致過擬合. 能夠通過填充數據來使得矩陣變得稠密, 可是填充數據的準確性非常是問題.
最主流的做法是僅僅對那些已觀測到的評分進行建模, 而且通過使用正則化項來避免過擬合, 亦即求解下面問題:
當中是所以已知評分的用戶-物品對,?控制著正則化的程度.
兩種經常使用的求解上式的算法為隨機梯度下降(SGD)和ALS(Alternating Least Square).
對于每一個用戶-物品評分, 計算預測誤差
然后依照梯度下降的方向更新用戶和物品的隱向量:
由于和都是未知的, 所以公式2不是凸的. 可是, 當我們固定當中一個變量, 則2式變成一個二次函數, 可以被最優的求解. 所以ALS算法的思想就是交替的固定和, 然后求解另外一個變量的二次函數的最優值.
通常SGD都會比ALS要簡單并且高速, 可是ALS的并行性比較好, 并且能夠較好地處理稀疏數據(?).
矩陣分解方法的一個優點就是能夠靈活的加入很多面向應用的要求. 比方, 通常來說, 不同用戶的評分傾向不同, 用的用戶的打分普遍較高, 有的普遍較低, 物品亦然. 所以只使用用戶和物品之間的交互來對評分進行建模不是非常好, 還須要加上一些偏置項. 一種一階偏置項近似為:
當中描寫敘述的是全部評分的平均值,?描寫敘述的是用戶和物品相對于的偏差.
評分模型為:
轉化為最優化問題為:
當解決冷啟動問題時, 用戶的評分信息非常少, 這時候就須要使用用戶的其它輸入信息, 比方用戶隱式反饋(瀏覽, 購買歷史等). 令表示用戶有隱反饋的物品. 系統能夠通過這些物品來對用戶建模, 亦即把每一個物品表示成一個隱向量, 則用戶能夠通過下式來描寫敘述:
能夠對上式進行正則化:
也能夠使用用戶的一些其它屬性(性別, 年齡, 收入等)來對用戶建模, 令表示用戶的一些布爾屬性,則隱向量表示用戶的某個屬性, 用戶的全部屬性能夠通過下式來描寫敘述:
用戶對物品的評分能夠表示為:
到如今為止, 模型是靜態的, 可是實際中物品的流行程度會隨著時間變化, 用戶的評分傾向也會變化, 用戶的隱向量也會隨時間變化. 所以能夠將這些變量表示成時間的函數來更好地描寫敘述這些現象:
不同的評分的可信度不同. 比方廣告會影響某個物品的評分, 另外, 有些作弊的用戶會對某些物品惡意的打高分或者低分. 另外, 在使用隱式反饋時, 能夠使用某些行為(比方瀏覽)等得次數來表示用戶喜歡某個物品的程度. 能夠通過為某個評分設置權重來解決上述問題:
?
參考文獻:
[1]. Yuhuda Koren, Robert Bell and Chris Volinsky. Matrix Factorization Techniques for Recommender Systems.
矩陣分解依據用戶對物品的評分, 判斷出用戶和物品的隱語義向量, 然后依據用戶和物品的隱語義向量來進行推薦.
推薦系統用到的數據能夠有顯式評分和隱式評分. 顯式評分時用戶對物品的打分, 顯式評分矩陣通常很稀疏. 隱式評分是指用戶的瀏覽, 購買, 搜索等歷史記錄, 表示的是用戶行為的有無, 所以是一個密集矩陣.
1. 基本矩陣分解
矩陣分解方法會將用戶和物品映射到維的隱向量空間, 用戶對物品的評分表示為兩個向量的內積. 亦即, 每一個物品表示為向量, 每一個用戶表示成向量. 對于物品, 向量的元素表示的是物品具有這些隱因子的程度, 對于用戶, 向量表示的是用戶對各個隱因子的興趣, 元素的值可正可負. 兩個向量的內積
表示的就是預計的用戶對物品的評分. 所以基本的挑戰就是計算用戶和物品到隱向量的映射.
最簡單的就是神秘值分解(Singular value decomposition, SVD), 使用SVD須要分解用戶物品評分矩陣, 可是通常該矩陣中有非常多值是缺失的, 這樣的情況下的SVD是不可行的. 另外, 僅僅處理已知的這些評分easy導致過擬合. 能夠通過填充數據來使得矩陣變得稠密, 可是填充數據的準確性非常是問題.
最主流的做法是僅僅對那些已觀測到的評分進行建模, 而且通過使用正則化項來避免過擬合, 亦即求解下面問題:
當中是所以已知評分的用戶-物品對,?控制著正則化的程度.
2. 學習算法
兩種經常使用的求解上式的算法為隨機梯度下降(SGD)和ALS(Alternating Least Square).
2.1 隨機梯度下降
對于每一個用戶-物品評分, 計算預測誤差
然后依照梯度下降的方向更新用戶和物品的隱向量:
2.2 ALS(Alternating Least Square)
由于和都是未知的, 所以公式2不是凸的. 可是, 當我們固定當中一個變量, 則2式變成一個二次函數, 可以被最優的求解. 所以ALS算法的思想就是交替的固定和, 然后求解另外一個變量的二次函數的最優值.
通常SGD都會比ALS要簡單并且高速, 可是ALS的并行性比較好, 并且能夠較好地處理稀疏數據(?).
3. 加入偏置項
矩陣分解方法的一個優點就是能夠靈活的加入很多面向應用的要求. 比方, 通常來說, 不同用戶的評分傾向不同, 用的用戶的打分普遍較高, 有的普遍較低, 物品亦然. 所以只使用用戶和物品之間的交互來對評分進行建模不是非常好, 還須要加上一些偏置項. 一種一階偏置項近似為:
當中描寫敘述的是全部評分的平均值,?描寫敘述的是用戶和物品相對于的偏差.
評分模型為:
轉化為最優化問題為:
4. 其它的輸入源
當解決冷啟動問題時, 用戶的評分信息非常少, 這時候就須要使用用戶的其它輸入信息, 比方用戶隱式反饋(瀏覽, 購買歷史等). 令表示用戶有隱反饋的物品. 系統能夠通過這些物品來對用戶建模, 亦即把每一個物品表示成一個隱向量, 則用戶能夠通過下式來描寫敘述:
能夠對上式進行正則化:
也能夠使用用戶的一些其它屬性(性別, 年齡, 收入等)來對用戶建模, 令表示用戶的一些布爾屬性,則隱向量表示用戶的某個屬性, 用戶的全部屬性能夠通過下式來描寫敘述:
用戶對物品的評分能夠表示為:
5. 時間因素
到如今為止, 模型是靜態的, 可是實際中物品的流行程度會隨著時間變化, 用戶的評分傾向也會變化, 用戶的隱向量也會隨時間變化. 所以能夠將這些變量表示成時間的函數來更好地描寫敘述這些現象:
6. 不同可信度的輸入源
不同的評分的可信度不同. 比方廣告會影響某個物品的評分, 另外, 有些作弊的用戶會對某些物品惡意的打高分或者低分. 另外, 在使用隱式反饋時, 能夠使用某些行為(比方瀏覽)等得次數來表示用戶喜歡某個物品的程度. 能夠通過為某個評分設置權重來解決上述問題:
?
參考文獻:
[1]. Yuhuda Koren, Robert Bell and Chris Volinsky. Matrix Factorization Techniques for Recommender Systems.
轉載于:https://www.cnblogs.com/jhcelue/p/7235020.html
總結
以上是生活随笔為你收集整理的推荐系统中的矩阵分解演变方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么直接播放或编辑WEBM格式的视频
- 下一篇: Android 折叠头部监听,抽屉式动画