确认皮尔逊相关系数是否适用于基于产品评分的客户推荐算法
皮尔逊相关系数完全适用于你的客户推荐场景
核心结论
皮尔逊相关系数绝非仅通过数组均值对比,它完全是基于逐产品的评分差异来计算相似度的,完全符合你的需求。
用你的例子直观理解计算过程
拿你给出的客户评分来手动计算一遍,你就能明白它是怎么逐产品分析的:
- 客户A评分:
[3,4,2,4,3],均值 = (3+4+2+4+3)/5 = 3.2 - 客户B评分:
[5,4,2,3,3],均值 = (5+4+2+3+3)/5 = 3.4
步骤1:逐产品计算评分偏差与乘积
偏差 = 单产品评分 - 用户自身评分均值,然后计算两个用户对应产品的偏差乘积:
| 产品 | A的偏差 | B的偏差 | 偏差乘积 |
|---|---|---|---|
| a | 3-3.2=-0.2 | 5-3.4=1.6 | -0.2×1.6=-0.32 |
| b | 4-3.2=0.8 | 4-3.4=0.6 | 0.8×0.6=0.48 |
| c | 2-3.2=-1.2 | 2-3.4=-1.4 | (-1.2)×(-1.4)=1.68 |
| d | 4-3.2=0.8 | 3-3.4=-0.4 | 0.8×(-0.4)=-0.32 |
| e | 3-3.2=-0.2 | 3-3.4=-0.4 | (-0.2)×(-0.4)=0.08 |
步骤2:计算综合相似度
- 把所有偏差乘积相加:
-0.32 + 0.48 + 1.68 - 0.32 + 0.08 = 1.6 - 计算两个用户的偏差平方和:
- A的偏差平方和:
(-0.2)² + 0.8² + (-1.2)² + 0.8² + (-0.2)² = 2.8 - B的偏差平方和:
1.6² + 0.6² + (-1.4)² + (-0.4)² + (-0.4)² = 5.2
- A的偏差平方和:
- 计算平方和的平方根乘积:
√2.8 × √5.2 ≈ 3.814 - 最终皮尔逊系数:
1.6 ÷ 3.814 ≈ 0.419
结果解读(不用懂线性相关)
- 皮尔逊系数的范围是
[-1, 1]:- 越接近
1:两个用户的评分趋势越一致(比如都在某类产品上给高分/低分) - 越接近
-1:评分趋势完全相反 - 接近
0:评分无关联
- 越接近
- 你的例子中系数≈0.419,说明A和B有一定的评分相似度,可以考虑推荐。
关于Java库的说明
Java中的皮尔逊相关系数库(比如Apache Commons Math的PearsonCorrelation)完全是按照上述逻辑实现的,你可以放心使用。如果仍有疑虑,可以用你的示例评分作为输入,对比库的计算结果和手动计算的0.419是否一致。
内容的提问来源于stack exchange,提问作者Bryar
相关产品推荐
相关产品推荐

