本文的代码-源于《推荐系统开发实战》
数据源:train.json, 含有用户看过的所有的电影,以及他对电影的评分
使用算法:
皮尔逊相关系数
公式:
皮尔逊相关系数的取值范围是[-1,1],1表示完全正相关,-1表示完全负相关
那么,为什么要使用pearson系数呢,它和欧式距离和cosin相似的有什么区别。
pearson通过一系列的数学推导之后被证明和经过标准化后的欧式距离和cosin相识度的是等价的。
那么使用pearson系数的话,就可以省略掉对数据进行标准化操作的这个步骤。为什么需要标准化操作,这时因为不同的属性如果数值差距很大的话,相关系数的大小往往起决于数量级大的属性,为了消除这种影响,必须做这样的操作。
cosin相识度公式
项目代码如下:
链接:https://pan.baidu.com/s/1-3J5XJ2XJ9liUc7ED9S9iw
提取码:ytdx
实现要点:
1. pearson公式的实现
2. 计算相识度只考虑他们都看过的电影,只有一方看过的电影不纳入公式的计算中
3. 推荐算法的实现逻辑。比如说现在有个场景:给用户A推荐电影。需要做下面的步骤:找到和用户A相识度最高的n个用户,
统计和这k个用户看过,但是用户A没有看过的电影集合C。预测A对集合C中电影的评分,预测的方式可以是评分*相识度的平均值。选取预测评分最高的m个电影推荐给用户。
算法测试:
代码中的测试集,是随机出来的。用预测出来的结果集合和测试中的结果集进行命中率对比。