用途:预测用户对物品评分
输入:所有用户对所有物品的评分矩阵
输出:用户A对物品I的评分
预测用户A对物品I的所有可能评分的概率,然后选出概率最大的评分作为输出
物品1 | 物品2 | 物品3 | 物品4 | 物品5 | |
Alice | 1 | 3 | 3 | 2 | ? |
用户1 | 2 | 4 | 2 | 2 | 4 |
用户2 | 1 | 3 | 3 | 5 | 1 |
用户3 | 4 | 5 | 2 | 3 | 3 |
用户4 | 1 | 1 | 5 | 2 | 1 |
如图,要预测Alice对物品5的评分,需要计算条件概率P(物品5=1|X),在这里X是Alice对其他物品的评分:X=(item1=1,item2=3,item3=3,item4=2)。
简单方法:朴素贝叶斯
这里要计算的是P(Y|X),由贝叶斯理论,P(Y|X)=P(X|Y)*P(Y)/P(X)。
P(X)=P(item1=1,item2=3,item3=3,item4=2)对于Alice而言是常量,可省略;
P(Y)为P(item5评分)的概率,这里P(item5=1)=2/4,P(item5=3)=1/4,P(item5=4)=1/4
P(X|Y),假设用户对不同物品的评分之间相互独立,则有:
,d 为属性个数,就是X涉及的物品个数。
从评分表计算P(Y):
P(item5=1) = 2/4(物品5的评分有两个1)
P(item5=2) = 0
P(item5=3) = 1/4
P(item5=4) = 1/4
计算P(X|Y):
P(X|item5 = 1) = P(item1=1|item5=1)*P(item2=3|item5=1)*P(item3=3|item5=1)*P(item4=2|item5=1)
=2/2*1/2*1/2*1/2 = 0.125
依次可得:P(X|item5 = 2) = 0,P(X|item5 = 3) = 0,P(X|item5 = 4) = 0
从以上结果,用户Alice对物品5评分为1的概率:P(item5=1|X)的概率最高,所以估计结果是Alice最可能给物品5打1分。
方法缺陷
1、计算P(X|Y)时有可能会计算出概率值为0,可采用m估值和laplace平滑来处理概率。
2、计算复杂度高,在小规模或评分数据稀疏的场景下效果不好。
参考:
《推荐系统》 蒋凡译