Programming Collective Intelligence notes
第二章 提供推荐
引言
协同过滤首次出现在《Using collaborative filtering to weave an information tapestry》论文中。他设计了一个名叫Tapesrty的系统,该系统允许人们根据自己对文档感兴趣的程度为其添加标注,并利用这一信息为他人进行文档过滤。
搜集偏好
以字典格式存储偏好:{user:{‘movie’:socre}}
尽管可以将相当数量人员的偏好信息存储于字典中,但对于一个规模巨大的数据集,还是存在数据库比较方便。
相似度评价
此处采用了欧几里得距离和皮尔逊相关系数。皮尔逊相关系数可以修正“夸大分值”,即如果A倾向于给出更高的分值,B倾向于给出更低的分值,他们对于movie1和movie2的偏好相同,此时用欧式距离,A和B的偏好相似会被低估。
编程tips:
- 对于功能相似的函数编写,尽量使用相同的签名;
- 在编写函数的时候,必须考虑到所有输入可能的情况,包括缺失值、分母为0等,需要使用if函数或者其他方式收集这些情况;
- 得到结果后,注意排序,sort(reverse=True);
- 列表推导式非常强大,可以同时接for循环和if逻辑判断.
点击链接可以了解到不同的