推薦系統 02 隱語義模型LFM

2021-09-02 01:18:11 字數 2786 閱讀 8292

隱語義模型(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年寫成的,所以一開始都是那年比較流行的演算法模型,裡面總共講了三個演算法,乙個是協同過濾,乙個是隱語義模型,乙個圖模型。圖模型我覺得現在實際上用的比較少,所以我就只看了一下,這裡不寫出來了。後面我會研究一下深...