在進行影片相似度計算的時候,有的人對於影片的評分習慣偏低,有的人習慣偏高,皮爾遜方法可以修正「誇大分值」的情況。
如果某人總是傾向於給出比另乙個人更高的分值,而二者的分值又始終保持一致,則他們也會存在很高的相關性。
# recommendations.py
# 返回p1和p2的相關係數
def sim_pearson(prefs,p1,p2):
# 得到雙方都曾評價過的物品列表
si={}
foritem
in prefs[p1]:
ifitem
in prefs[p2]:
si[item]=1
# 列表元素的個數
n=len(si)
# 如果兩者沒有共同之處,則返回1
if n==0:return
1# 對所有的偏好求和
sum1=sum([prefs[p1][it]for
itin si])
sum2=sum([prefs[p2][it]for
itin si])
#求平方和
sum1sq=sum([pow(prefs[p1][it],2)for
itin si])
sum2sq=sum([pow(prefs[p2][it],2)for
itin si])
#求乘積之和
psum=sum([prefs[p1][it]*prefs[p2][it]for
itin si])
# 計算皮爾遜評價值
num=psum-(sum1*sum2/n)
den=sqrt((sum1sq-pow(sum1,2)/n)*(sum2sq-pow(sum2,2)/n))
if den==0:return
0 r=num/den
return r
該函式將會返回乙個介於-1和1之間的數值。
皮爾遜相關度評價
1 用在資料不是很規範的時候 2 最佳擬合線 3 誇大分值 4 皮爾遜積差係數 其中,e是數學期望,cov表示協方差,和是標準差。因為,同樣地,對於 可以寫成 當兩個變數的標準差都不為零,相關係數才有定義。從柯西 施瓦茨不等式可知,相關係數的絕對值不超過1。當兩個變數的線性關係增強時,相關係數趨於1...
歐幾里德距離 皮爾遜相關度 Tanimoto
集體智慧型程式設計正式開始了接觸,第一課便是如何尋找想進使用者 也就是兩者的相似程度 正如大多數的推送服務一樣,通過計算你和其他的使用者的相似程度,給你推薦最佳匹配人認為很好的但是你還沒有購買的東西。測試資料如下 就是巢狀字典,共7個人對使用過的商品的評價 critics gene seymour ...
皮爾遜相關度歐式距離以及曼哈頓距離
有些時候我們需要獲得一些事物的相似度評價值,例如我們可以獲取到大量的資料用以分析人們在品味方面的相似度,為此,我們可以將沒個人與所有其他人進行對比,並計算他們的相似度評價。有很多種方法能夠幫助我們來實現這個目的,而我們今天要提到的則是歐幾里得距離和皮耶爾遜相關度,同時作為引申,簡單地涉及一些曼哈頓距...