php商品推荐算法,电子商务商品推荐算法科普(转自MARS同学BLOG)

最近比较关注Customer Segmentation和Personalized Recommendation。

国内

本文大部分知识来自于一份叫做Item-to-Item Collaborative Filtering的文档,如果有条件,建议看原文。

这个文档的好处是:

写很短,只有5页,其它相关论文动辄上百页,打印出来都觉得是在浪费森林

写很简单,我这种技术白痴也可以看

号称是Amazon官方算法

坏处是:

写得很简单,所以有基础的同学们不用看了。真想了解的话可以用英文搜索相关关键词,研究论文还是很多的

2003年出的,比较古老

文章主要比较了三种算法:

Collaborative Filtering

Cluster models

Item-to-Item Collaborative Filtering

下面分几个post来详细说:

Collaborative Filtering

简单说就是,找到和你喜好类似的那群人,看他们买了什么你还没买的东西,推荐给你。

简化举例来说,你买了哈利波特,羽泉的CD,新宋……他会去找其他买了类似

详细来讲(当然其实还是省略大量实现上的细节),假设www.MarsOpinion.com(我的博客:P)有M个客户,N种产品,就把每个客户当成一个N维的项量,客户见的相似度可以用这两个项量的COS计算:

fomula_thumb.jpg

找到和你“相似”的那些消费者之后,就可以给其他商品打分了,越多和你相似的消费者买了商品X,说明商品X越可能吸引你,所以可以以“有多少和你相似的消费者购买了这个商品”作为这个商品的分数。举例来说:和你相似的消费者中,80个买了《青铜时代》,《白银时代》,70个买了《失乐园》,那么《青铜时代》和《白银时代》分数就是80,《失乐园》分数就是70,要推荐的话就应该先推荐《青铜时代》、《白银时代》,再推荐《失乐园》。

这里还有两点需要考虑,第一是不要推荐客户已经购买的东西,例如如果你已经购买过《青铜时代》,就应该只给你推荐《白银时代》(至少对于书是这样,对于重复购买的消费品再议)。

第二就是要降低那些畅销产品的权重:举例来说,买哈利波特的人动辄百万计,因为你和别人都买了哈利波特而向你推荐他所购买的商品,其实没有什么意义;相反,如果你买了本《MarsOpinion.com电子商务推荐算法》,这本书一共就4个人买过,另外三个人都买了《MarsOpinion.com鬼扯全集》,那么你很可能也会喜欢那本书。因为越大众化的爱好,越难代表一个人的特质(从而没有办法通过这个特质去寻找类似的人),而越小众的爱好,相对能更加说明者个人某方面强烈的偏好。——基本上,解决这个问题的方法很多,有一种就是在设置项量时,将值设置为该产品销量的倒数。例如你买了《哈利波特》(假设有100万人买了它),那么代表你的那个项量的《哈利波特》那个值就是百万分之一;而你如果买了《MarsOpinion.com电子商务推荐算法》,那么你相对应的那个值就是四分之一。

整个算法的复杂度是O(MN),但是因为每个客户购买的商品数量都很有限(远远小于N),所以复杂度很可能降为O(M+N),可是如果产品数量巨大的话,这个复杂度仍然是很可怕的,而相关的降低复杂度的算法(例如限制取样的客户样本大小或者商品样本大小)都会显著影响推荐结果的精度。

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值