2.5.1 基礎演算法
程式實現
##正樣本:使用者喜歡的物品;
##負樣本:使用者不感興趣的物品。
import random
items = # 使用者已經有過行為的物品的集合,即使用者喜歡的物品列表,即正樣本
ret = dict() # 用來儲存正樣本和負樣本,即使用者喜歡的和不感興趣的物品都將儲存在這裡
for i in items.keys():
ret.update() # 將使用者已經有過行為的物品,新增到ret字典中,並標註成正樣本
items_pool = ['a','b','c','d','e','f','g','h','i']
n = 0 # 計數,計算已經找到的負樣本的數目
for i in range(0,len(items)*3): # 當然,也有可能迴圈len(items)*3次後,找到的負樣本還是不如正樣本多,但這畢竟是小概率事件
item = items_pool[random.randint(1,len(items_pool) - 1)] # items_pool 是候選物品的列表,包括正樣本和負樣本。(注意!但不是所有物品,因為除了正樣本後,不止有負樣本,還有熱門物品中,使用者不感興趣的物品)。 換言之,items_pool中不包括熱門物品中,使用者不感興趣的物品
if item in ret.keys():
continue
ret.update()
n += 1
if n >= len(items):
break
for item,ret in ret.items():
print(item,'correspond to ',ret)
執行結果
a correspond to 1
b correspond to 1
c correspond to 1
f correspond to 0
i correspond to 0
d correspond to 0
該演算法中涉及到的梯度下降法的學習:梯度下降法 推薦系統 隱語義模型
繼續學習推薦系統,還是推薦演算法的部分。因為我的學習是圍繞 推薦系統實踐 展開,這邊書是12年寫成的,所以一開始都是那年比較流行的演算法模型,裡面總共講了三個演算法,乙個是協同過濾,乙個是隱語義模型,乙個圖模型。圖模型我覺得現在實際上用的比較少,所以我就只看了一下,這裡不寫出來了。後面我會研究一下深...
推薦系統 02 隱語義模型LFM
隱語義模型 lfm 圖形解釋 lfm的前生今世 隱語義模型的適用性 關於訓練集 基本概念 那麼如何產生負樣本呢?負樣本的選擇 小結 如何計算權重 負樣本取樣過程 如何求解c的極小值 演算法原理 原函式 deffun x,y return x y 2 x x 2 x y y y 偏x導 defpxfu...
推薦系統 5 隱語義模型 LFM
2019 03 02 14 27 17 對於usercf,我們可以先計算和目標使用者興趣相似的使用者,之後再根據計算出來的使用者喜歡的物品給目標使用者推薦物品。而itemcf,我們可以根據目標使用者喜歡的物品,尋找和這些物品相似的物品,再推薦給使用者。我們還有一種方法,先對所有的物品進行分類,再根據...