协同过滤进化版本NeuralCF及tensorflow2实现
生活随笔
收集整理的這篇文章主要介紹了
协同过滤进化版本NeuralCF及tensorflow2实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目標:
掌握NeuralCF比傳統(tǒng)基于矩陣分解的協(xié)同過濾算法的改進點,以及算法的優(yōu)點和缺點。
內容:
上篇學習了最經(jīng)典的推薦算法:協(xié)同過濾,并基于矩陣分解得到了用戶和物品的embeding向量。通過點積可以得到兩者的相似度,可進行排序推薦。但傳統(tǒng)協(xié)同過濾通過直接利用非常稀疏的共現(xiàn)矩陣進行預測的,所以模型的泛化能力非常弱,遇到歷史行為非常少的用戶,就沒法產生準確的推薦結果了。矩陣分解是利用非常簡單的內積方式來處理用戶向量和物品向量的交叉問題的,所以,它的擬合能力也比較弱。
- 改進點
1、 能不能利用深度學習來改進協(xié)同過濾算法呢?包括計算embeding向量,和最后計算物品與用戶相似度的點積。
2、 新加坡國立的研究者就使用深度學習網(wǎng)絡來改進了傳統(tǒng)的協(xié)同過濾算法,取名 NeuralCF(神經(jīng)網(wǎng)絡協(xié)同過濾)
算法思想:
對比幾種算法思想
- 1、矩陣分解算法的原理
就是把共線矩陣分解成兩個小矩陣相乘,小矩陣就是embeding向量。 - 2、傳統(tǒng)的點積求相似度
- 3、 NeuralCF基本思想
改進點,就是用MLP替代原來的點積操作。 - 4、改進版本-雙塔模型
- 用戶側的Layer的輸出就當做用戶側embeding。
- 物品側的Layer的輸出就當做物品側embeding。
- 優(yōu)點:可以緩存物品、用戶側embeding,在線上推薦時。直接用物品、用戶側embeding計算點積得到相似度。
- 5、改進版本2-雙塔模型+MLP
點積操作還是過于簡單,不便于發(fā)現(xiàn)。采用MLP替換點積操作。
- 6、改進版本6-雙塔模型+多特征組合+MLP
embeding只用了用戶的id或者共線矩陣產生,忽略了物品和用戶的其他固有屬性,使用的特征過少,因此,可以加入更多特征一起輸入到用戶側和物品側的多層神經(jīng)網(wǎng)絡。這樣可以充分利用特征。
模型代碼:
GitHub地址:github源碼
例如:
1、 NeuralCF基本模型
2、改進版本-雙塔模型
# neural cf model arch one. embedding+MLP in each tower, then dot product layer as the output def neural_cf_model_2(feature_inputs, item_feature_columns, user_feature_columns, hidden_units):item_tower = tf.keras.layers.DenseFeatures(item_feature_columns)(feature_inputs)for num_nodes in hidden_units:item_tower = tf.keras.layers.Dense(num_nodes, activation='relu')(item_tower)user_tower = tf.keras.layers.DenseFeatures(user_feature_columns)(feature_inputs)for num_nodes in hidden_units:user_tower = tf.keras.layers.Dense(num_nodes, activation='relu')(user_tower)output = tf.keras.layers.Dot(axes=1)([item_tower, user_tower])output = tf.keras.layers.Dense(1, activation='sigmoid')(output)# output = tf.keras.layers.Dense(1)(output)neural_cf_model = tf.keras.Model(feature_inputs, output)return neural_cf_model
從結果可以看出,accuracy不是很高,模型欠擬合較嚴重。
3、 改進版本2-雙塔模型+MLP
從運行結果看,這個模型的loss減小,準確度有提升。
4、 改進版本6-雙塔模型+多特征組合+MLP
終極版本:
最終運行結果:
效果和第三種相差不大,但是當數(shù)據(jù)量多的時候,理論上,第4種效果最好。
總結
以上是生活随笔為你收集整理的协同过滤进化版本NeuralCF及tensorflow2实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于协同过滤算法的在线鲜花店推荐系统详解
- 下一篇: 经典Wide Deep模型介绍及ten