推荐算法原理感悟

——Content Based

实践步骤:利用jieba先对Item分词,然后做出正排表(Item–Feature…);然后给每个Feature打分(TFIDF值),逆序排列;接着做倒排表(map阶段以每个Feature为Key,关联对应的Item,在reduce阶段把Feature值(TFIDF值)高的对应的Item放在前面,逆序排列);最后,便根据倒排表,对于某个Feature高的Item,给出一个推荐列表,这个推荐列表就是倒排表的top-N,也就是推荐列表出现的Item和正在被A使用的Item在Item上是很相近的。

例如:
倒排表:特征:“时间”——Item1:“时间简史”0.9 (A看过) Item2:“时间xx”0.8 Item3:“时间yy”0.7
在只考虑”时间”这个特征(就这一个维度)做推荐并且只能推荐一个Item时,直接把Item2推荐给A(因为0.9乘以0.8>0.9乘以0.7,一种比较相似度的方式)

假设如果知道xx=”模型简史”,yy=”概率简史”
特征:“简史”——Item1:“时间简史”0.8 (A看过) Item3:“时间yy”0.6 Item2:“时间xx”0.4

相似度: Item1&Item2(0.9乘以0.8+0.8乘以0.4)小于 Item1&Item3(0.9乘以0.7+0.8乘以0.6)
则应该把Item3推荐给A。

——Collaboration Filtering

User Based CF

原理:用户喜欢那些跟他有相似爱好的用户喜欢的东西,具有相似兴趣的用户在未来也具有相似兴趣。给定用户u,找到一个用户的集合S(u),他们和u具有相似的兴趣,将S(u)喜欢的物品推荐给用户。

A喜欢女生:xxx0、xxx1 、xxx2
B喜欢女生:xxx0、xxx1 、xxx3
B刚喜欢上女生: meimei
——可以把meimei推荐给A(因为B和A喜欢的女生很相似)

例如:
用户A翻他微信朋友圈,发现A的好友B看了部电影《xxx》并分享到朋友圈了,A与B从小关系好、志趣相投(历史信息),于是A也打算去看这部电影。

Item Based CF

原理:用户喜欢跟他过去喜欢的物品相似的物品,历史上相似的物品在未来也相似。给定用户u,找到他过去喜欢的物品的集合S(u),把和S(u)相似的物品推荐给u。

A喜欢女生:xxx0、xxx1 、xxx2
B喜欢女生:xxx0、xxx1 、xxx3
C喜欢女生:xxx0、xxx2 、xxx4
D喜欢女生:xxx0、xxx1 、xxx5

——可以把xxx1推荐给C(因为xxx1和C之前喜欢的xxx0相似,这是根据统计得来的:A、B、C都喜欢xxx0、xxx1,说明这两个女生很像,两个班花,哈哈~)

重点:这里评价Item相似,是通过与之关联的用户行为来判断的,而不是挖掘Item本身的属性来判断。即基于Item的协同过滤,是考虑用户的行为向量,跟Item本身毫无关系,譬如我们100个人中,有90个人都看了A和B两个Item,那么我认为A和B具有很强的相关性(跟Item本身无关),道理上跟关联规则的啤酒和尿不湿是类似的,就是看AB共同出现了很多次,就认为他们相关,喜欢A的用户很大程度上也喜欢B。

——Model based

以用户为基础(User-based)的协同过滤和以项目为基础(Item-based)的协同过滤统称为以记忆为基础(Memory based)的协同过滤技术,他们共有的缺点是数据稀疏,难以处理大数据量影响即时结果,因此发展出以模型为基础的协同过滤技术。 以模型为基础的协同过滤(Model-based Collaborative Filtering)是先用历史数据得到一个模型,再用此模型进行预测。以模型为基础的协同过滤广泛使用的技术包括Latent Semantic Indexing、Bayesian Networks…等,根据对一个样本的分析得到模型。

总结

差别在于:
协同过滤必须要有用户行为,基于Item的推荐可以不用考虑用户行为。冷启动阶段只能用基于Item的推荐,因为没有用户行为数据;积累一段时间用户行为数据后就可以用协同过滤了。基于Item的推荐的要求:item数据比较容易结构化,且结构化的数据能相对完整的描述item,否则效果不会太好。

协同过滤的要求:用户行为越丰富越好。用户数少时,推荐用User Based CF;Item少时,推荐用Item Based CF。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Python机器学习是我编程学习中重要的一步,让我对机器学习有了更深入的了解和实践。在学习Python机器学习的过程中,我有以下几点感悟: 首先,Python机器学习非常实用。Python是一门非常流行的编程语言,因此Python机器学习工具包也非常丰富,例如Scikit-learn、Tensorflow和PyTorch等等。这些工具包为我们提供了丰富的机器学习算法和工具,可以帮助我们快速地进行数据处理、特征工程、模型训练和预测等任务。 其次,Python机器学习需要有一定的数学和统计基础。机器学习算法的本质是数学和统计学方法的应用,因此我们需要掌握一定的数学和统计学知识,如线性代数、概率论和统计推断等。只有掌握了这些基础知识,才能更好地理解机器学习算法的原理和应用,从而更好地进行模型的构建和优化。 最后,Python机器学习需要不断的实践和学习。机器学习是一个不断发展和更新的领域,我们需要不断地学习新的算法和技术,并将其应用到实际的问题中。同时,我们也需要不断地进行实践和调试,从数据中发掘规律和特征,并不断优化模型,才能取得更好的效果。 总之,Python机器学习是一门非常实用的技能,但需要我们有一定的数学和统计基础,并进行不断的实践和学习。我相信,在未来的学习和工作中,Python机器学习会成为我重要的技能和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值