Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
1.數據分類
- 實物值(物品或者其他的評分)
- 布爾值(是或者否的行為),1,0這種布爾值,表肯定或者否定的行為
2.余弦相似度
- 度量的是兩個向量之間的夾角,用夾角的余弦值來度量相似的情況
- 兩個向量的夾角為0時余弦值為1,當夾角為90°時余弦值為0,當夾角為180°時余弦值為-1
- 余弦相似度在度量文本相似度,用戶相似度,物品相似度的時候較為常用
- 余弦相似度的特點,與向量長度無關,余弦相似度計算要對向量長度歸一化,兩個向量只要方向一致,無論程度強弱,都可以視為‘相似’
如圖:
?說明:
? ? ? ? 比如8這個樣本,可以從原點出發到8做出一個向量來,每一個點都可以從原點開始做一個向量,比如9樣本和6樣本,
????????預算向量考慮的就是夾角,舉個例子,9樣本向量和8樣本向量的夾角,可以去算他兩之間的cos值,我們知道余弦值的范圍是[-1,1],
????????如果兩個向量的角度余弦值算出來是1,那認為兩個物品就是相似的或者說是相關的,如果說是0,就是不相似或者說是不相關的,如果是-1的話,就是負相關。實際上利用負相關或者完全不相關也可以做推薦,比如說你和他愛好完全不一樣,是相反的,他不喜歡的那你就喜歡,他喜歡的你就不喜歡,是一種負相關的狀態,只是說明這種負相關的概念,真正情況下不會用負相關去做推薦的,這就是余弦相似度
? ? ? ? 注意余弦相似度不考慮長度,如上圖,這個從原點出發到樣本點,不會考慮多長,只要大方向是一致的,就認為它是相似的。所以有時候考慮余弦長度的話,可能是會有不考不的結果。?
?舉個例子,如上圖,x軸和y軸一共兩部電影,9樣本,一個電影評分給了8分,一個給了5分,?圖上新加的10號樣本,一個給了2分,一個給了1分,從余弦角度去算,10號樣本和9號樣本很相似,因為10號樣本和9號樣本夾角很小,實際上他倆不相似,比如9號給了y軸上的電影算是一個高分,而10號確實很低的分。?
這就是余弦相似度恰恰沒考慮這個長度通過這種方式算可能是有點問題的。
就有了另外一種計算相似度的方法,皮爾遜相關系數
3.皮爾遜相關系數
這個皮爾遜相關系數實際上就是對余弦相似度的一個優化,會去做一個向量的中心化
?
總結
以上是生活随笔為你收集整理的Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.PostgreSQL的学习
- 下一篇: Pandas打印所有行和列(显示所有的行