低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法
最基本的問題,以用戶電影評分為例,也就是這個用戶-電影矩陣.
表中是用戶多電影的評分,但評分有缺失,因為用戶不可能對所有電影作出評價.
那么推薦問題就是給用戶合理推薦一個沒看過的電影,合理是指,預測用戶應該對這部電影評分較高.然后這個問題就變成了矩陣補全,也就是填充表中的問號.
低秩矩陣分解
矩陣的補全有無數種可能,所以如果不對用戶-電影矩陣(記為Y)的性質作出一定假設,那這個恢復問題就不可能完成.所以首先作出的假設是Y是低秩的.如果Y是低秩的,那么Y就能夠由兩個較小的矩陣線性組合而來.即:
假設Y矩陣維度\(n_m \times n_u\),即有\(n_m\)部電影和\(n_u\)個用戶,P的維度是\(n_m \times K\), Q的維度是\(n_u \times K\),K是特征的維度,也就是Y的秩.上式如果畫出來就是這樣.
這表示了一個電影對應一個K維特征,一個用戶對應了K個參數,反映出有用戶對電影的K維特征的喜好程度.然后每個評分都可以看做是用戶參數和電影特征的點積.試想如果我們得到了P和Q兩個矩陣,我們就能對Y矩陣中的缺失值進行預測.
以上問題可以用梯度下降來求解,因為我們可以構造誤差函數,并能計算偏導.
這個誤差函數的意義是對于Y矩陣中存在的值,用P和Q乘積計算出預測值,讓它們之間誤差最小.當然,還加入了針對P和Q的L2正則項.這個誤差函數對P和Q中每一項的偏導如下:
然后迭代求解即可.
協同過濾
這個算法本質上和低秩矩陣分解一樣,但它里面的K維特征具有現實意義.一個電影的K維特征,就是它對應于K種電影風格的分量,比如只有兩種風格的時候:
設一個電影的k維特征向量為\(x = [x_1, x_2,…, x_k]\),那么就應該存在一個用戶參數向量\(\theta = [\theta_1,\theta_1,…,\theta_k,]\).這實際上和矩陣分解里的P和Q意義相同.
但實際情況是,這個電影特征無法得到,還是要通過迭代算出來.針對電影特征和用戶參數,對應了兩個代價函數.
再分別求導,用梯度下降迭代至收斂即可.
核范數矩陣補全
這個方法的來源是一幫搞圖像的科學家.圖像恢復里經常有這種問題,比如圖像被隨機采樣,試圖從隨機采樣的圖像恢復出原圖.
首先它將問題定義為,認為用戶-電影矩陣是由一個完全矩陣A下采樣而來,而且還加上了噪音.L就是那個下采樣變換.
然后問題的解就是要求秩最小,如下:
但直接去優化秩太困難了,于是換成了核范數,核范數就是矩陣的奇異值之和.
總結
這三種方法很類似,就是做出了Y矩陣低秩的假設.
前幾天看了一篇文章推薦系統的那點事,覺得這些算法其實沒多大用,雖然解決的是推薦系統的基本問題,但現實情況不是這么簡單.
總結
以上是生活随笔為你收集整理的低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 编程题_最新JAVA编程题全集
- 下一篇: chart.js x轴显示不全_机床大讲