推荐系统中的相似性
作者|Madhukara Putty 編譯|VK 來源|gitconnected
你有沒有想過Netflix是如何推薦你想看的電影的?或者亞馬遜如何向你展示你覺得需要購買的產(chǎn)品?
很明顯,那些網(wǎng)站已經(jīng)知道你喜歡看什么或買什么了。他們有一段在后臺(tái)運(yùn)行的代碼,可以在線收集用戶行為數(shù)據(jù),并預(yù)測單個(gè)用戶對特定內(nèi)容或產(chǎn)品的好惡。這種系統(tǒng)被稱為“推薦系統(tǒng)”。
一般來說,開發(fā)推薦系統(tǒng)有兩種方法。在一種方法中,系統(tǒng)考慮個(gè)人所消費(fèi)內(nèi)容的屬性。例如,如果你在Netflix上一天內(nèi)看過黑客帝國,那么Netflix知道你喜歡科幻電影,而且更有可能推薦其他科幻電影。換言之,推薦是基于電影類型-科幻在這種情況下。
在另一種方法中,推薦系統(tǒng)會(huì)考慮與你口味相似的其他人的偏好,并推薦他們看過的電影。與第一種方法不同的是,建議是基于多個(gè)用戶的行為,而不是基于所消費(fèi)內(nèi)容的屬性。這種方法稱為協(xié)同過濾。
在這個(gè)例子中,我們認(rèn)為這兩種方法都更有可能向你推薦科幻電影,但它們會(huì)采取不同的方法得出結(jié)論。
效用矩陣
協(xié)同過濾的一個(gè)重要部分是識(shí)別具有相似偏好的觀眾。盡管Netflix采用多種方式收集用戶偏好信息,但為了簡單起見,我們假設(shè)它要求觀眾對電影進(jìn)行1-5級(jí)評分。我們還假設(shè)只有7部電影(哈利波特三部曲HP13、暮光之城TW和星球大戰(zhàn)三部曲SW13)需要審查,只有4位觀眾被要求對它們進(jìn)行評分。
圖1顯示了我們四個(gè)精心挑選的觀眾提供的評分。這樣一個(gè)表,產(chǎn)品在列上,用戶在行上,叫做效用矩陣。空白意味著有些用戶還沒有給某些電影打分。
事實(shí)上,Netflix每天都有上千個(gè)節(jié)目被數(shù)以百萬計(jì)的觀眾消費(fèi)。相應(yīng)地,它的實(shí)際效用矩陣將有數(shù)百萬行,跨越數(shù)千列。此外,隨著系統(tǒng)不斷獲取用戶行為信息,矩陣也會(huì)動(dòng)態(tài)更新。
通過查看圖1中的效用矩陣,我們可以得出一些明顯的結(jié)論。
觀眾A喜歡《哈利波特1》和《暮光之城》,但不喜歡《星球大戰(zhàn)1》
觀眾B喜歡哈利波特三部曲的所有電影
觀眾C喜歡《星球大戰(zhàn)1》和《星球大戰(zhàn)2》,但不喜歡《暮光之城》
觀眾D不介意在無聊的一天里看《哈利波特2》和《星球大戰(zhàn)2》,但這兩部電影都不是她的選擇
總而言之,觀眾A和觀眾B有著相似的品味,因?yàn)樗麄兌枷矚g《哈利波特1》。相比之下,觀眾A和C有不同的口味,因?yàn)橛^眾A喜歡《暮光之城》,但觀眾C一點(diǎn)也不喜歡。同樣,A不喜歡星球大戰(zhàn),但C喜歡。推薦系統(tǒng)需要一種方法來比較不同觀眾的評論,并告訴我們他們的品味有多接近。
量化相似性
有不同的標(biāo)準(zhǔn)來比較兩個(gè)觀眾提供的評分,并找出他們是否有相似的品味。在本文中,我們將學(xué)習(xí)其中的兩個(gè):Jaccard距離和余弦距離。口味相似的觀眾更接近。
Jaccard距離
Jaccard距離是另一個(gè)稱為Jaccard相似性的量的函數(shù)。根據(jù)定義,集合S和T的Jaccard相似性是S和T的交的大小與其并的大小之比。從數(shù)學(xué)上講,它可以寫成:
集A和集B之間的Jaccard距離d(x,y)由下式給出,
余弦距離
兩個(gè)向量A和B之間的余弦距離是角度d(A,B),由,
其中
分別是向量A和向量B的$L_2$范數(shù),n是要審查的產(chǎn)品(本例中是電影)的數(shù)量。余弦距離在0到180度之間變化。
效用矩陣距離測度的計(jì)算
為了更好地理解這些距離度量,讓我們使用效用矩陣中的數(shù)據(jù)計(jì)算距離(圖1)。
計(jì)算Jaccard距離:計(jì)算Jaccard距離的第一步是以集合的形式寫入用戶給出的評分。對應(yīng)于用戶A和B的集合是:
A={HP1,TW,SW1}
B={HP1,HP2,HP3}
集合A和集合B的交集是兩個(gè)集合共有的元素集合。A和B的并集是A和B中所有元素的集合。因此
A?B={HP1}
A?B={HP1,HP2,HP3,TW,SW1}。
A和B之間的Jaccard距離為:
類似地,A和C之間的Jaccard距離,d(A,C)=0.5。根據(jù)這一衡量標(biāo)準(zhǔn),觀察者A和C與觀察者A和B相比具有更多的相似性,這與對效用表的直觀分析所揭示的完全相反。因此,Jaccard距離不適合我們考慮的數(shù)據(jù)類型。
計(jì)算余弦距離:現(xiàn)在讓我們計(jì)算觀眾A和B之間以及觀眾A和C之間的余弦距離。為此,我們首先必須創(chuàng)建一個(gè)表示其評分的向量。為了簡單起見,我們假設(shè)空格等于0的等級(jí)。這是一個(gè)值得商榷的選擇,因?yàn)榱惴忠部赡艽碛^眾給出的差分。對應(yīng)于觀眾A、B和C的向量是:
A=[4,0,0,5,1,0,0]
B=[5,5,4,0,0,0,0]
C=[0,0,0,2,4,5,0]。
A和B之間的余弦距離為:
同樣,A和C之間的余弦距離為:
這是合理的,因?yàn)樗砻鰽比C更接近B。
轉(zhuǎn)換評分
我們還可以通過對矩陣中的每個(gè)元素應(yīng)用定義良好的規(guī)則來轉(zhuǎn)換效用矩陣中捕獲的數(shù)據(jù)。在本文中,我們將學(xué)習(xí)兩種轉(zhuǎn)換:四舍五入和標(biāo)準(zhǔn)化。
四舍五入
觀眾通常會(huì)給相似的電影提供相似的評分。例如,觀眾B對所有的哈利波特電影給予了很高的評價(jià),而觀眾C對《星球大戰(zhàn)1》和《星球大戰(zhàn)2》給予了很高的評價(jià)。這種評分的相似性可以通過用規(guī)則將評分四舍五入來消除。例如,我們可以將規(guī)則設(shè)置為將等級(jí)3、4和5舍入為1,并將等級(jí)1和2視為空格。應(yīng)用此規(guī)則后,我們的效用矩陣變成:
在評分四舍五入的情況下,對應(yīng)于觀眾A和C的集合的交集為空集合。這將Jaccard相似度降低到其最小值0,并將Jaccard距離射向其最大值1。此外,對應(yīng)于觀眾A和B的集合之間的Jaccard距離小于1,這使得A比C更接近B。請注意,Jaccard距離度量在使用原始用戶評分計(jì)算距離時(shí)并沒有提供對用戶行為的這種了解。用四舍五入值求余弦距離得到了同樣的結(jié)論。
標(biāo)準(zhǔn)化評分
另一種改變原始評分的方法是使其標(biāo)準(zhǔn)化。通過標(biāo)準(zhǔn)化,我們的意思是從每個(gè)評分中減去每個(gè)觀眾的平均評分。例如,讓我們?yōu)槠骄u分為10/3的觀眾A找到標(biāo)準(zhǔn)化的評分。因此,她的標(biāo)準(zhǔn)化評分是,
下面給出了所有值都標(biāo)準(zhǔn)化的效用矩陣。請注意,這會(huì)將較高的值轉(zhuǎn)換為正值,而將較低的值轉(zhuǎn)換為負(fù)值。
由于效用矩陣中的個(gè)別值發(fā)生了變化,我們可以期望余弦距離發(fā)生變化。但是,Jaccard距離保持不變,因?yàn)樗蝗Q于兩個(gè)用戶對電影的評分,而不取決于給定的評分。
對于標(biāo)準(zhǔn)化值,對應(yīng)于觀眾A、B和C的向量為:
A和B以及A和C之間的余弦距離為:
雖然標(biāo)準(zhǔn)化評分的余弦距離計(jì)算并沒有改變最初的結(jié)論(即A比C更接近B),但它確實(shí)放大了向量之間的距離。向量A和向量C似乎與標(biāo)準(zhǔn)化評分的差距特別大,盡管兩者都不是非常接近。
結(jié)論
推薦系統(tǒng)是互聯(lián)網(wǎng)經(jīng)濟(jì)的核心。它們是讓我們沉迷于社交媒體、在線購物和娛樂平臺(tái)的計(jì)算機(jī)程序。推薦系統(tǒng)的工作是預(yù)測特定用戶可能購買或消費(fèi)的內(nèi)容。預(yù)測這一情況的兩種廣泛方法之一是,看看其他人——特別是那些對用戶有類似偏好的人——購買或消費(fèi)了什么。這種方法的一個(gè)關(guān)鍵部分是量化用戶之間的相似性。
計(jì)算Jaccard和余弦距離是量化用戶之間相似性的兩種方法。Jaccard距離考慮了被比較的兩個(gè)用戶評分的產(chǎn)品數(shù)量,而不是評分本身的實(shí)際值。另一方面,余弦距離考慮的是評分的實(shí)際值,而不是兩個(gè)用戶評分的產(chǎn)品數(shù)量。由于計(jì)算距離的差異,Jaccard和余弦距離度量有時(shí)會(huì)導(dǎo)致相互沖突的預(yù)測。在某些情況下,我們可以通過根據(jù)明確的規(guī)則舍入評分來避免此類沖突。
評分也可以通過從用戶給出的每個(gè)評分中減去用戶給出的平均評分來進(jìn)行轉(zhuǎn)換。這一過程稱為常態(tài)化,不影響Jaccard距離,但有放大余弦距離的趨勢。
原文鏈接:https://levelup.gitconnected.com/measuring-similarity-in-recommendation-systems-8f2aa8ad1f44
歡迎關(guān)注磐創(chuàng)AI博客站: http://panchuang.net/
sklearn機(jī)器學(xué)習(xí)中文官方文檔: http://sklearn123.com/
歡迎關(guān)注磐創(chuàng)博客資源匯總站: http://docs.panchuang.net/
總結(jié)
- 上一篇: CodeFroces 429B Gods
- 下一篇: 03-03 创建和编辑AutoCAD实体