(三)电子商务推荐系统--协同过滤

拖了两个月,终于要进入正题了,本章开始折腾真正的算法(ps:其实也没那么高深)。

第一个要说的肯定是经典的协同过滤了,从算法的主体来分可以分为两种:基于用户的协同过滤(user-CF)和基于物品的协同过滤(item-CF),CF就是collaborative filtering,所谓协同就是在大家都要对结果有贡献。

其基本思想是兴趣相似的用户其行为也相似,反之也成立,实现协同过滤的关键在于怎么算行为相似,用什么样的标准去度量相似度。

 

bc
101513
10252-

 

 行是item,列是用户,交叉点是评分。

从图中我们可以看出来101和102都对a和b评分了,且评分基本一致,说明他们俩兴趣应该相似,这个时候可以把c推荐给102。下面把这个过程数学化一下:

1、计算101与102的相似度

可以把它们对item的评分看成两个向量(只包含两个用户共同评价的item):(5,1)、(5,2),把这两个向量看成坐标轴上的两个点:

 

 欧几里得距离示意图

然后可以把这两个点之前的距离做为101和102之间的相似度,计算公式大家应该都知道了,就是初中学的平面几何了。

w=sqrt((5-5)^2+(1-2)^2) = 1

 

本来打算昨天写完,但是iteye的编辑器实在不好用,不支持LaTex不说,连潜入个图片都这么麻烦。长话短说,先把主要意思写完吧,回头博客会搬到csdn上去。

 

上面的公式其实就是欧几里得距离啦,很简单是吧,如果item多了也是这么着算,这里就不贴公式了(蛋疼。。。)

2、推荐

我们可以为每一个用户都维护一个列表,用于存储于他相似的用户,然后,从这些用户评过分的item中挑一些推荐给他,过滤他评过分的item,具体到这个例子中就是把101评过分的c推荐给102。

当然这个过程还有很多细节问题,比如如果与用户A相似的用户有很多,他们评过分的商品也有很多,那么如何从这么多的商品中挑选出一部分推荐给A呢?还有,挑选出的商品如何排序?此系后话,且听下回分解……

 

上面讲的是USER-CF,ITEM-CF同理,其实一般常用的是ITEM-CF,因为对于B2C网站来说,商品有限,而用户无限,计算量会小得多,但是因为USER-CF讲起来比较容易理解,所以这里就以USER-CF为例。

 

=================================华丽的分隔线=============================

下面以item-CF为例进行讲解

上面的讲的方法是根据用户对商品的评分,那么如果用户对于商品只有购买而没有评分,或者评分数据太少怎么办呢?

这其实就是我要讲的重点,对于用户和商品之间只有购买与不购买的关系,我们可以称之为布尔矩阵,购买是1,不购买是0,这个时候如果也使用欧几里得距离去计算的话,会发现很不合适,那我们怎么得出用户之间的相似度呢?

{N(a) ^ N(b)} / {N(a) * N(b)}(凑合着看吧。。。)

N(a):买了商品a的用户

N(b):买了商品b的用户

分子的意思是同时买了a和b的用户的数量

分母是买了a的用户的个数与买了b的用户的个数的积

 

这样我们就得出了商品a和b之间的相似度,推荐的话,如果a和b相似,就可以给买了a的用户推荐b。

这就是item-CF了,也很简单是吧。

但是简单不代表不强大,这里面有很多可以优化的地方,其实主要看你的源数据的形态了,下一篇我们会讲增强版的协同过滤,如果有时间我会把这一篇完善下,公式填上去,真不爽,真心希望iteye能对这个编辑器改进一下,学学Wordpress

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程为官方授权出品如今大数据已经成了各大互联网公司工作的重点方向,而推荐系统可以说就是大数据最好的落地应用之一,已经为企业带来了可观的用户流量和销售额。特别是对于电商,好的推荐系统可以大大提升电商企业的销售业绩。国内外的知名电商,如亚马逊、淘宝、京东等公司,都在推荐系统领域投入了大量研发力量,也在大量招收相关的专业人才。量身定制打造的电商推荐系统项目,就是以经过修改的中文亚马逊电商数据集作为依托,并以某电商网站真实的业务架构作为基础来实现的,其中包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。具体实现的模块主要有:基于统计的离线推荐、基于隐语义模型的离线推荐、基于自定义模型的实时推荐,以及基于内容的、和基于Item-CF的离线相似推荐。整个项目具有很强的实操性和综合性,对已有的大数据和机器学习相关知识是一个系统性的梳理和整合,通过学习,同学们可以深入了解推荐系统在电商企业中的实际应用,可以为有志于增加大数据项目经验的开发人员、特别是对电商业务领域感兴趣的求职人员,提供更好的学习平台。适合人群:1.有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2.有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3.有电商领域开发经验,希望拓展电商业务场景、丰富经验的开发人员4.有较好的数学基础,希望学br习机器学习和推荐系统相关算法的求职人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值