推薦演算法5 隱語義模型

2021-08-20 04:54:06 字數 1827 閱讀 4972

lfm(latent factor model)隱語義模型的核心思想是通過隱含特徵(latent factor)聯絡使用者興趣和物品,採取基於使用者行為統計的自動聚類。

lfm通過如下公式計算使用者u對物品i的興趣:

對每個使用者取樣負樣本時,要選取那些很熱門,而使用者卻沒有行為的物品。

下面的python**實現了負樣本取樣過程:

def randomselectnegativesample(self, items):

ret = dict()

for i in items.keys():

ret[i] = 1

n = 0

for i in range(0, len(items) * 3):

item = items_pool[random.randint(0, len(items_pool) - 1)]

if item in ret:

continue

ret[item] = 0

n + = 1

if n > len(items):

break

return ret

items_pool維護了候選物品的列表,在這個列表中,物品i出現的次數和物品i的流行度成正比。items是乙個dict,它維護了使用者已經有過行為的物品的集合。因此,上面的**按照物品的流行度取樣出了那些熱門的、但使用者卻沒有過行為的物品。經過取樣,可以得到乙個使用者—物品集k= ,其中如果(u, i)是正樣本,則有r(ui)=1,否則有r(ui)=0 ,r(ui,hat)是推薦系統給出的使用者u對物品i的興趣。然後。需要優化如下的損失函式來找到最合適的引數p和q:

這裡,||pu||和||qi||是用來防止過擬合的正則化項,λ可以通過實驗獲得。要最小化上面的損失函式,可以利用隨機梯度下降法演算法。

隨機梯度下降法需要首先對它們分別求偏導數,可以得到:

然後,根據隨機梯度下降法,需要將引數沿著最速下降方向向前推進,因此可以得到如下遞推公式,其中a是學習率。

def latentfactormodel(user_items, f, n, alpha, lambda):

[p, q] = initmodel(user_items, f)

for step in range(0,n):

for user, items in user_items.items():

samples = randselectnegativesamples(items)

for item, rui in samples.items():

eui = rui - predict(user, item)

for f in range(0, f):

p[user][f] += alpha * (eui * q[item][f] - lambda * p[user][f])

q[item][f] += alpha * (eui * p[user][f] - lambda * q[item][f])

alpha *= 0.9

def recommend(user, p, q):

rank = dict()

for f, puf in p[user].items():

for i, qfi in q[f].items():

if i not in rank:

rank[i] += puf * qfi

return rank

綜上在lfm中,重要的引數有4個:隱特徵的個數f;學習速率alpha;正則化引數lambda;負樣本/正樣本比例 ratio。通過實驗發現,ratio引數對lfm的效能影響最大。

還可參考

推薦系統 5 隱語義模型 LFM

2019 03 02 14 27 17 對於usercf,我們可以先計算和目標使用者興趣相似的使用者,之後再根據計算出來的使用者喜歡的物品給目標使用者推薦物品。而itemcf,我們可以根據目標使用者喜歡的物品,尋找和這些物品相似的物品,再推薦給使用者。我們還有一種方法,先對所有的物品進行分類,再根據...

推薦系統 隱語義模型

繼續學習推薦系統,還是推薦演算法的部分。因為我的學習是圍繞 推薦系統實踐 展開,這邊書是12年寫成的,所以一開始都是那年比較流行的演算法模型,裡面總共講了三個演算法,乙個是協同過濾,乙個是隱語義模型,乙個圖模型。圖模型我覺得現在實際上用的比較少,所以我就只看了一下,這裡不寫出來了。後面我會研究一下深...

基於隱語義模型的推薦演算法的原理

隱語義模型 lfm 和lsi,lda,topic model其實都屬於隱含語義分析技術,是一類概念,他們在本質上是相通的,都是找出潛在的主題或分類。這些技術一開始都是在文字挖掘領域中提出來的,近些年它們也被不斷應用到其他領域中,並得到了不錯的應用效果。lfm演算法的核心是將user item m n...