1、概述
推薦系統是現實生活中應用最廣泛的積極學習問題,通過對歷史數據的分析,把用戶感興趣的商品、服務推薦給用戶。
2、基於內容的推薦算法
基於內容的推薦算法,其實就是已知商品的特徵,根據特徵建立模型,實現推薦系統的方式。
我們以一個案例來介紹推薦算法,這個案例講貫穿整章內容。
2.1 電影推薦案例
介紹一下上述表格的組成部分:
- 第一列:代表電影的名稱,一共有5個電影。
- 第二列:分成4個小列,代表每個人對各個電影的評分。問號代表用戶沒有進行評分。
- 第三列:電影的特徵值,x1代表電影是愛情電影的概率;x2代表是動作電影的概率。
2.2 符號說明
爲了描述方便,我們把本章使用到的符號做個定義:
- nn:用戶數量。
- nm:電影數量。
- r(i,j)=1:代表用戶j對電影i進行了評價。
- y(i,j):代表用戶j對電影i的評分。
- m(j):代表用戶j評價的電影數量。
- θ(j):用戶j的向量參數。
- x(i):電影i的特徵向量。
- nu:代表θ的數量。
- nm:代表特徵x的數量。
2.3 基本原理
我們假設用戶j對電影i的評分爲:(θ(j))T∗X(i)。具體原因,恕我無可奉告。
在已知θ和X的前提下,就能計算每個用戶對每個電影的評分了。
這就是基於內容的推薦算法。
那θ如何計算呢,請看下節。
2.4 θ的計算
θ 是擬合參數,需要保證預測值與真實值最接近的情況下,求最小值,公式爲:
minθj:2m(j)1i:r(i,j)=1∑((θj)TX(i)−y(i,j))2+2m(j)λk=1∑n(θk(j))2
m(j)代表用戶評價的電影的數量,是一個常量,可以從商戶公式中去掉:
minθj:21i:r(i,j)=1∑((θj)TX(i)−y(i,j))2+2λk=1∑n(θk(j))2
求所有的θ值:
J(θ(1),θ(2),θ(3)......θ(nu))=21j=1∑nui:r(i,j)=1∑((θj)TX(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2
通過梯度下降的方式來計算θ:
θk(j):=θk(j)−α(∑i:r(i,j)=1((θ(j))TX(i)−y(i,j))xk(i))(for k=0)
θk(j):=θk(j)−α(∑i:r(i,j)=1((θ(j))TX(i)−y(i,j))xk(i)+λθk(j))(for k!=0)
3、協同過濾
上面介紹的是已知特徵的情況下,可以推導出θ,從而構建推薦模型。
本節講的是另外一種情況,假設θ是已知的,特徵是未知的,通過θ來自動構建特徵的過程,這種方式稱爲協同過濾。
3.1 前提
前提:每個用戶都對數個電影進行了評分,通過觀察大量的數據,得到每個電影的特徵值,相當於每個用戶都在協助改進算法。
3.2 原理
根據之前的定義我們知道用戶j對電影i的評分爲(θ(j))TX(i),現在已知θ、評分求解X,則公式爲:
minx(i):21∑j:r(i,j)=1((θ(j))TX(i)−y(i,j))2+2λ∑k=1n(xk(i))2
求解所有的X:
minx(1),x(2)...x(nm):21∑i=1nm∑j:r(i,j)=1((θ(j))TX(i)−y(i,j))2+2λ∑i=1nm∑k=1n(xk(i))2
3.3 計算步驟
- 先取一個隨機的θ
- 根據上述公式計算出X。
- 對θ進行優化。
- 重新計算x
- …
3.4 同時計算θ、X
有一種同時計算θX的方式,公式爲:
J(x(1),x(2),x(3)...,x(nm),θ(1),θ(2),θ(3)......θ(nu))=21(i,j):r(i,j)=1∑((θj)TX(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2+2λi=1∑nmk=1∑n(xk(i))2
注意:該算法中,不包含x0θ0的值。
計算步驟爲:
- 隨機初始化θ x爲較小的值。
- 使用梯度下降算法優化θ x。
θk(j):=θk(j)−α(∑i:r(i,j)=1((θ(j))TX(i)−y(i,j))xk(i)+λθk(j))
xk(i):=xk(i)−α(∑i:r(i,j)=1((θ(j))TX(i)−y(i,j))θk(j)+λX(i))
4、矢量化實現
矢量化是一種表示方式的變化。
我們來看一下上面的這張圖:
- Y:每行代表每個用戶對一個電影的評分結果。
- Predicted ratings:預測的公式,(θ(j))2x(i)。用這個來預測Y的值。
- 假設X Θ 爲兩個矩陣,則Y=XΘT
這就是矢量化表示方式,也稱爲“低秩矩陣分解算法”。
5、均值歸一化
有些用戶從來不對電影進行評分,針對於這種用戶,如何進行推送呢?
通過上面的方式,因爲r(i,j)!=1,所以該用戶對所有電影的評分結果計算出來都是0,這對於推薦系統沒有任何意義,而均值歸一化是一種解決思路。
均值歸一化:就是計算所有用戶對電影的評分的平均值,作爲該用戶的評分返回。
介紹一下上圖的元素:
- Y:代表用戶對電影的評分,可以看出最後一個用戶,沒有進行任何評分。
- μ代表每個電影評分的平均值。
- 使用Y減去平均值得到新的Y。
- 預測評分的公式爲:(θ(j))Tx(i),由於每個y值都減去了平均值,所以公式需要加上平均值:(θ(j))Tx(i)+μi
- 所以沒有評分的用戶的評分:(θ(j))Tx(i)+μi=0+μi=μi