Collaborative Filtering: 经过喜爱相近的人构造推荐列表。html
如何表示喜爱?用嵌套字典表示不一样人对不一样影片的评分。嵌套字典的数据结构就像一棵树,叶子节点(键值)表示最终的属性。(源代码下载地址)数据结构
>>>from recommendations import critics >>> critics['Toby'] {'Snakes on a Plane': 4.5, 'Superman Returns': 4.0, 'You, Me and Dupree': 1.0} >>> critics['Toby']['Superman Returns'] 4.0
Euclidean Distance Scoreide
评价公式:ui
该值越大,喜爱越类似,没有共同评价过的电影,则返回 0.idea
Pearson Correlation Scorespa
数据不是很规范,好比有人习惯给高分,有人习惯给低分,用皮尔逊相关度评价效果更好。code
Pearson Correlation 实际上就是两个向量的余弦值,等于两个向量中心化后(减去均值)的内积除以长度的乘积:htm
一样,数值越大,两个向量角度越小,喜爱越类似。此外,类似度度量方法还有 Jaccard 系数或者曼哈顿距离等,更多关于类似度度量信息能够参考这篇博客.blog
Ranking the Criticsget
根据不一样的类似度度量方法返回从高到低排好序的的类似者.
>>> from recommendations import * >>> topMatches(critics, 'Toby', similarity=sim_pearson, n=3) [(0.9912407071619299, 'Lisa Rose'), (0.9244734516419049, 'Mick LaSalle'), (0.8934051474415647, 'Claudia Puig')]
如今咱们只获得喜爱相同的人,怎么才能获得推荐的物品?咱们能够查找与本身品味相投的人,并从他们喜爱的影片中找到本身没有看过的电影,可是这样不够全面。能够利用下面公式给本身没有看过的电影进行评分预测: