python推荐系统算法朴素贝叶斯_浅谈推荐系统算法(一):朴素贝叶斯协同过滤...

朴素贝叶斯分类器是数据挖掘领域中的一种经典方法,而所谓朴素贝叶斯协同过滤(Naive Bayes Collaborative Filtering),无非是将推荐系统中的评分预测问题转化成一个分类问题。不过,在推荐系统中,借助贝叶斯分类实现协同过滤需要做以下两点考虑:用户对项(例如商品、电影)的评分必须是一些具有代表性的数字(即定序数据如1~5分)或者评论(如喜欢、不喜欢、一般);

用户(或项)之间是条件独立的(说明:虽然条件独立的假设在很多贝叶斯分类器的应用场景中并不成立,但却有较好的效果)。

1 朴素贝叶斯协同过滤的原理

为了便于理解朴素贝叶斯协同过滤的原理,现在我们选取一个评分表进行实例分析,如图1所示,评分表中给出了5个用户对6件商品的评分情况,其中将

记为“喜欢”,而

则为“不喜欢”。

以预测用户3对商品1的评分为例,已给定了用户3对商品2、3、4、5的评分,需要将预测任务描述成计算商品1最可能评分值的问题。图1 5个用户对6件商品的评分表,其中,数字1表示“喜欢”,数字-1表示“不喜欢”

将评分矩阵记作

,用户

对商品

的评分记作

,用户3评论过的商品记作集合

,根据贝叶斯理论,用户3对商品1评分为

的概率(后验概率)为

由于用户3对商品2、3、4、5的评分分别为

,进而有

在这里,

是用户3对商品1评分为

的概率,也是贝叶斯模型的先验概率,可以直接从用户3的历史评分中计算得到,从图1可以看到,用户3对商品2、3、4、5进行了评分,其中,评分为1的商品是2和3,故

.

是商品1评分为1条件下商品2评分为

的概率,在评分表中,商品1评分为

的次数是2,而商品1评分为

的同时商品2评分为

的次数是1,故

.

以此类推,

综上所述,我们能够得到用户3对商品1评分为

的概率为

用户3对商品1评分为

的概率与上述原理相同,感兴趣的读者可以自己动手算一下:

到这里,我们可以得到:用户3对商品1评分为

的可能性比较大。

2 常见的过拟合问题

在图1的评分表中,用户对绝大多数商品都进行了评分,然而,真实的数据并没有这么完美,举一个例子,如果没有用户对商品

进行过评分,则联合概率

中会出现

,在这种情况下,计算出来的后验概率是任何没有参考价值的。

在实际的应用中,假如我们实际拿到的评分矩阵是非常稀疏的,并且样本量也不多,那么,上面提到的问题就在所难免了,为了解决这个问题,人们通常采用拉普拉斯平滑,即,对于商品

,假设评分为

的总次数为

,评分为

的总次数为

,以往计算先验概率是按照

现在额外增加一个拉普拉斯平滑参数

,先验概率被改写成如下形式

其中,即使商品

没有被任何用户评论过,仍然会得到一个先验概率

,这里的参数

会控制平滑程度,若

取值过大,则会导致先验概率过于平滑,对观测样本不敏感。

当然,为了解决可能存在的过拟合问题,也可以在联合概率

中加入拉普拉斯平滑参数。

3 参考文献

本文主要参考了Charu C. Aggarwal于2016年出版的著作《Recommender systems》(链接:Recommender Systems)第82-85页(章节:3.4 Naive Bayes Collaborative Filtering)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值