机器学习(一)协同过滤推荐算法

机器学习(一)协同过滤推荐算法,第1张

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)推荐浏览过该商品的其他用户经常购买的其他商品
相关推荐列表,是根据不同用户的行为,去计算商品的相似性,后面再写;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/878077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存