1、算法简介
(1)推荐算法常见使用场景:电商产品推荐。基于产品的算法推荐,是分析用户历史行为数据,选择用户的浏览量、点赞数、评论数等数据高的产品,去推荐相似产品给用户。
(2)推荐算法作用:帮助用户发现他们感兴趣的产品。(1)节省用户的搜索时间,提高用户体验,减少流失。(2)延长用户的网站使用时间,提高用户忠诚度。
2、算法原理
(1)计算产品之间的相似度,生成相似度矩阵:
计算产品相似度可用3种方法:夹角余弦、杰卡德(Jaccard)相似系数、相关系数。
注:用户行为为二元选择(0/1)时,建议采用杰卡德相似系数。
相似度矩阵:
(2)基于产品相似度和用户已浏览产品a的数据,根据公式P=SIM*R,计算用户对未浏览产品b的感兴趣程度。
-
P-用户对b产品的感兴趣程度
-
SIM-a与b产品之间的相似度
-
R-用户对a产品感兴趣与否(1/0)
(3)基于产品相似度矩阵,推荐算法会给用户推荐与其数据最高产品最相似的K个产品。也可以基于产品兴趣度,给用户推荐其兴趣度最高的K个产品。
3、算法实现:
基于Python的Numpy库
import numpy as np
#计算杰卡德相似系数的函数
#a:喜欢a产品的用户数
#b:喜欢b产品的用户数
def Jaccard(a,b):
return 1.0*(a*b).sum()/(a+b-a*b).sum()
class Remommendor():
sim =None #相似度矩阵
#计算相似度矩阵的函数
def similarity(self,x,jaccard):
y = np.ones((len(x),len(x)))
for i in range(len(x)):
for j in range(len(x)):
y[i,j] = jaccard(x[i],y[j])
return y
#训练函数
def fit(self,x,jaccard = Jaccard):
self.sim = self.similarity(x.jaccard)
#推荐函数
def recommend(self,a):
return np.dot(self.sim,a)*(1-a)
4、模型评估:
对于用户可给产品打分的网站,使用预测准确度的评估指标。
对于用户只能选择“喜欢与否\浏览与否”的网站,要用分类准确度的评估指标。
这里重点解释基于分类准确度数据构建的模型的3个评估指标:
(1)准确率precesion:用户对被推荐产品感兴趣的概率;
准确率=用户被推荐产品中喜欢的数目/用户被推荐产品总数
(2)召回率recall:一个用户喜欢的产品被推荐的概率;
Recall=用户喜欢且被推荐的产品数/(用户喜欢且被推荐产品数+用户喜欢且违背推荐产品数);
(3)F1:综合考虑准确率和召回率,更好地评价算法的优劣;
评估指标分数越高越好。
5、注意事项
以上为个性化推荐,还有2种相关推荐列表:
(1)推荐用户购买过的商品的相关商品
(2)推荐浏览过该商品的其他用户经常购买的其他商品
相关推荐列表,是根据不同用户的行为,去计算商品的相似性,后面再写;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)