推荐系统之基于用户的协调过滤

在如何海量的数据时代,如何从海量的商品中选择相关产品?在1100万首iTunes曲目中,肯定有一部分音乐是你特别喜爱的,那么该如何找到它们呢?
- 专家点评推荐(影评家)
- 通过商品本身寻找(我喜欢披头士的一张专辑,所以会认为他们的另一张专辑也不错)

数据挖掘不仅仅是用来推荐商品,或是单单给商人增加销量,同时也能扩展我们的能力,让我们能够处理海量的数据,如让潘多拉音乐站提供个性化的音乐列表。数据挖掘的重点在于找到数据中的模式。

协调过滤

利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。

协调过滤的实现的三步骤:收集数据——找到相似用户和物品——进行推荐


数据集来源:

  1. 用户的浏览记录
  2. 其他浏览过该商品的用户的浏览记录

找到相似用户

这里可以用距离表示,即找到距离最近的两个用户。

计算距离的算法有以下几种:

  1. 曼哈顿距离
    曼哈顿计算公式

  2. 欧几里得距离(利用勾股定理计算两点间的直线距离)
    欧几里得计算公式

  3. 闵可夫斯基(将曼哈顿和欧几里得距离归纳成一个公式)
    闵可夫斯基计算公式
    以上三种方式实现代码请访问: https://github.com/BubbleM/Python-Recommended/blob/master/recommend1.py

  4. 皮尔逊相关系数(描述两个变量之间的线性相关程度 评价标准之间的差异)
    皮尔逊相关系数

    实现:
    https://github.com/BubbleM/Python-Recommended/blob/master/recommend2.py

  5. 余弦相似度(不足在于并没有很好的解决分数贬值问题)
    余弦相似度

区别:
在数据完整“密集”的情况下使用曼哈顿和欧几里得距离效果最好。
当数据存在“分数膨胀”问题,使用皮尔逊相关系数效果最好。
在数据稀疏,非零值较总体要少得多的情况下使用余弦相似度效果最好。

K最邻近算法

如果只依靠最相似的一个用户来做推荐,这个用户有些特殊的偏好,会直接反映在推荐内容里。解决之一就是找寻多个相似的用户。
实现代码:
https://github.com/BubbleM/Python-Recommended/blob/master/recommend.py

原文请访问:https://github.com/BubbleM/blog/issues/4

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值