零、引入
亞馬遜的推薦算法,主要結合兩類信息來推薦:1.用戶A評論的a書(比如說給0-5顆星),2.其他評論過a書的用戶(比如B,C,D等等),他們評論過的其他書的信息。由於這種推薦算法藉助了別的用戶的評論信息,所以被稱作協作過濾算法。假如你想要被推薦一本書,系統搜索其他用戶看過的書,發現這本和你的風格更像,然後就把這本書推薦給你。那麼怎麼樣才能解決這個“更像”的問題呢?
現在有A,B,C三個同學看過了兩本書a和b,並且分別對這2本書做了如下評星:
a書 | b書 | |
A同學 | 5星 | 5星 |
B同學 | 2星 | 5星 |
C同學 | 1星 | 4星 |
我們現在有一個同學X,他也看過a書和b書(這是前提!!!),他對a書評4星,b書評2星,通過A,B,C同學的對這兩本書的評星記錄來分析ABC當中哪個同學“更像”X同學的風格,然後就可以從“更像”的這個同學看過的而X沒看過的書中推薦幾本給X,在協同過濾算法中我們有四種方法來解決這個“更像”的問題。
一、Manhattan Distance 曼哈坦距離
我們可以把每個同學的評星記錄寫成座標形式,比如B同學對a,b分別評2星和5星,那麼就記作(2,5),那麼X同學就是(4,2)。曼哈坦距離簡單的講就像高中時候學的求兩個座標水平距離和垂直距離之和,那麼就可以寫成絕對值求和運算,即
distance(BX) = |2-4| + |5-2| = 5,
distance(AX) = |5-4| + |5-2| = 4,
distance(CX) = |1-4| + |4-2| = 5.
可見A同學和X同學距離比BC要小,那麼我們就可以認爲A同學的讀書風格“更像”X同學,並且可以從A同學的讀書記錄中挑一本不是a,b的書來推薦給X同學。
曼哈坦距離計算起來速度快,適合大規模數據計算。
二、Euclidean Distance 歐幾里得距離
同樣使用方法一中的座標形式,歐幾里得距離,其實就是初中學過的兩個座標之間的直線距離,如下,勾股定理就搞定了,結果依然是A同學“更像”X同學。。
distance(BX) = sqrt((2-4)**2 + (5-2)**2) = 3.61,
distance(AX) = sqrt((5-4)**2 + (5-2)**2) = 3.16,
distance(CX) = sqrt((1-4)**2 + (4-2)**2) = 3.61.
拓展:
上面介紹的都是兩本書,評星之後的座標形式是二維的(x,y),如果有更多書的評星記錄是不是得出的“更像”程度會更深呢?當然可以這樣子,如果有多本書的話,那麼就不再是二維平面距離了,就是多維空間的歐幾里得距離了,舉個栗子:
a | b | c | d | e | f | g | h | |
X同學 | - | 4 | 1 | 4 | - | - | 4 | 1 |
A同學 | 3 | - | - | 5 | 4 | 2.5 | 3 | - |
B同學 | - | 4.5 | 4 | 5 | 5 | 4.5 | 4 | 4 |
distance(AX) = sqrt((5-4)**2 + (3-4)**2) = 1.414,
distance(BX) = sqrt((4.5-4)**2 + (4-1)**2 + (5-4)**2 + (4-4)**2 + (4-1)**2) = 4.387,
A和X更像,那麼就可以將A看過X沒看過的a書,e書,f書推薦給X同學了。
以上一和二方法都是屬於閔可夫斯基距離(明氏距離),它是曼哈坦距離和歐幾里得距離的推廣,可到維基腦補。
三、Pearson Correlation Coefficient 皮爾遜相關係數
a | b | c | d | e | f | g | h | |
X同學 | - | 4 | 1 | 4 | - | - | 4 | 1 |
C同學 | 2 | 3.5 | 4 | - | 2 | 3.5 | - | 3 |
B同學 | - | 4.5 | 4 | 5 | 5 | 4.5 | 4 | 4 |
X同學評星不是1就是4,C同學評星主要分佈在2~4,B同學評星主要是4~5,這並不是好現象,如果說X同學的1是差評,4是好評,那麼B同學只給打4~5之間,B的4是差評還是好評呢?我倒覺得B的4是差評,5是好評。這時候我們遇到了grade inflation(等級膨脹)的問題,就好比現在有些學校學生成績普遍都是80分以上(80~85差,85~90中,90~95良,95+優),而有的學校依然是採用傳統的方法(70分以下差,70~80中,80~90良,90+優),這樣子一來,使用方法一和二就不具有普遍可比性,我們採用皮爾遜相關係數來解決“更像”的問題。公式如下:r值在[ -1,1 ]之間,1表示正相關性最強,0表示不相關,-1表示負相關性最強。我們求出r(XB)和r(XC),然後選擇最大的作爲推薦者,將他看過,而X沒有看過的書推薦給X。
四、Cosine Similarity 餘弦相似度
餘弦相似度,類似與皮爾遜相關係數,它也是衡量兩組變量的相關程度的,值在[ -1,1 ]之間,1表示正相關性最強,0表示不相關,-1表示負相關性最強,公式如下:
這種方法常用於對比變量當中零值較多,即未評星的書籍較多的情況。