隱語義模型(lfm)
圖形解釋:
lfm的前生今世
隱語義模型的適用性
關於訓練集
基本概念:
那麼如何產生負樣本呢?
負樣本的選擇(小結)
如何計算權重
負樣本取樣過程(**):
如何求解c的極小值
演算法原理:
#原函式
deffun
(x,y)
:return x-y+
2*x*x+
2*x*y+y*y
#偏x導
defpxfun
(x,y)
:return1+
4*x+2*y
#偏y導
defpyfun
(x,y)
:return-1
+2*x+2*y
#初始化
#figure物件
fig=plt.figure(
)#axes3d物件
ax=axes3d(fig)
#取樣並作滿射聯合
x,y=np.mgrid[-2
:2:40j,-
2:2:
40j]
#取樣點z座標打表
z=fun(x,y)
ax.plot_su***ce(x,y,z,rstride=
1,cstride=
1,cmap=
"rainbow"
)ax.set_xlabel(
'x')
ax.set_ylabel(
'y')
ax.set_zlabel(
'z')
#梯度下降
#下降係數
step=
0.0008
#初始選取乙個點x=0
y=0tag_x=
[x]tag_y=
[y]#三個座標分別打入表中,該錶用於繪製點
tag_z=
[fun(x,y)
]new_x=x
new_y=y
over=
false
while over==
false
:#分別作梯度下降
new_x-=step*pxfun(x,y)
new_y-=step*pyfun(x,y)
#精度if fun(x,y)
-fun(new_x,new_y)
<7e-
9:over=
true
#更新舊點
x=new_x
y=new_y
#新點三個座標打入表中
)#繪製點/輸出座標
ax.plot(tag_x,tag_y,tag_z,
'r.'
)plt.title(
'(x,y)~('
+str
(x)+
","+
str(y)
+')'
)plt.show(
)lfm中的重要引數(如何調參)
使用movielens資料集驗證lfm有效性
movielens**:
驗證結果:
netflix大獎賽
正負樣本比例引數ratio的影響
隨著負樣本數目的增加,lfm的準確率和召回率有明顯提高,不過當ratio>10後,準確率和召回率基本上就比較穩定了。同時,隨著負樣本數目的增加,覆蓋率不斷降低,而推薦結果的流行度不斷增加,說明ratio引數控制了推薦演算法發掘長尾的能力。注意:當資料集非常稀疏時,lmf的效能會明顯下降,甚至不如usercf和itemcf。
補充:幾種指標
項亮書:p40
lfm的優缺點
改進lfm
項亮書第八章
加入偏置項後的lfm公式:
考慮領域影響的lfm
更像是itemcf的變形。相當於svd的加強版,也稱為svd++。
將時間變數加入模型
考慮使用者興趣會隨著時間改變
模型組合
推薦系統 5 隱語義模型 LFM
2019 03 02 14 27 17 對於usercf,我們可以先計算和目標使用者興趣相似的使用者,之後再根據計算出來的使用者喜歡的物品給目標使用者推薦物品。而itemcf,我們可以根據目標使用者喜歡的物品,尋找和這些物品相似的物品,再推薦給使用者。我們還有一種方法,先對所有的物品進行分類,再根據...
LFM隱語義模型
此外我們還需要注意的兩個問題 我們在可見的使用者書單中歸結出3個類別,不等於該使用者就只喜歡這3類,對其他類別的書就一點興趣也沒有。也就是說,我們需要了解使用者對於所有類別的興趣度。對於乙個給定的類來說,我們需要確定這個類中每本書屬於該類別的權重。權重有助於我們確定該推薦哪些書給使用者。下面我們就來...
推薦系統 隱語義模型
繼續學習推薦系統,還是推薦演算法的部分。因為我的學習是圍繞 推薦系統實踐 展開,這邊書是12年寫成的,所以一開始都是那年比較流行的演算法模型,裡面總共講了三個演算法,乙個是協同過濾,乙個是隱語義模型,乙個圖模型。圖模型我覺得現在實際上用的比較少,所以我就只看了一下,這裡不寫出來了。後面我會研究一下深...