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')]
如今咱們只獲得喜愛相同的人,怎麼才能獲得推薦的物品?咱們能夠查找與本身品味相投的人,並從他們喜愛的影片中找到本身沒有看過的電影,可是這樣不夠全面。能夠利用下面公式給本身沒有看過的電影進行評分預測: