1. 程式人生 > >矩陣分解協同過濾模型

矩陣分解協同過濾模型

   矩陣分解實際上就是一個利用更少數目的引數通過某種計算來表示原有資料,然後找到一個方法來計算這些引數的模型。已知的方法有SVD等矩陣分解的方法。SVD雖然在推薦系統中已經發揮了良好的效果,但是在利用SVD進行矩陣分解應用於推薦系統時,不能有缺失值,而缺失值的填充又是一個很難以解決的問題。本節中,將介紹另一種可以不用考慮缺失值的適用於推薦系統的矩陣分解的方法。

    其核心思想就是假設使用者對商品只關注k個屬性,那麼每個商品都用對應於這k個屬性上的表現,即一個具有k個值的向量來表示,相對應的,每一個使用者也用他們對這k個屬性的偏好程度,即一個同樣具有k個值的向量來表示。那麼對使用者i和商品j

來說,就可以用使用者i對某個屬性的偏好程度和商品j對應的屬性的值相乘,再將這k個值相加得到使用者i對商品j的打分來表示使用者i對商品j的感興趣程度。

圖1 使用者對商品的打分矩陣並將打分矩陣進行分解

    具體到推薦系統中,可以描述為已知有m個使用者U={u1,u2,...um}和n種商品I={i1,i2,...in},使用者對商品的感興趣程度用一個m×n大小的打分矩陣R表示,分數越高表示該使用者對該商品越感興趣,而如果使用者i沒有使用過商品j,則矩陣中對應的值缺失。對於使用者對商品的評分矩陣R來說,然後求出一個m×k大小的矩陣P和一個k×n大小的矩陣Q,對於打分矩陣R中每一個使用者i對商品j進行打分的值R[i][j],都滿足下式:

    其中矩陣P中的第i行表示使用者i對這k個屬性的偏好程度矩陣,而Q中的第j列表示商品j在這k個屬性上的表現。以上所述恰恰是一個矩陣分解的過程,即將矩陣R分解成兩個矩陣PQ相乘的形式,使得R≈P×Q。應用於推薦系統的這種矩陣分解的方法比起SVD有一個很明顯的優點,就是它允許缺失值的存在,因為它在計算的時候只考慮原打分矩陣中得分不等於0的值,那麼就可以得到其損失函式形式如下:

    其中,Rij表示在得分矩陣R中不為零的值。Pi代表矩陣P的第i行,Qj表示矩陣Q中的第j列。為了防止過擬合,利用L2正規化對L進行正則化得到損失函式如下:

    利用梯度下降法對損失函式進行優化:

    其中,η是學習速率,代表學習的步長。

得到的能夠使得L最小化的PQ就是最終求出的由R分解出的使用者特徵矩陣P和商品特徵矩陣Q 按照這種方法求出了PQ之後,就可以利用PQ的內積來對使用者對商品的評分矩陣進行還原,對矩陣中原本存在的缺失值進行預測。