Programming Collective Intelligence 讀書筆記之 Recommandation

第二章進入正題耕姊,Making Recommandation 引入一個重要概念: Collabrative Filtering, 即協(xié)同過濾页藻。

書中以電影評價系統(tǒng)和推薦系統(tǒng)為例解析協(xié)同過濾的概念及應(yīng)用冗懦。首先以nested dictionary為載體用python建立一系列包含人名扰付,片名抗碰,評分的數(shù)據(jù)集灌。然后拋出問題: how to find similar users? 即如何從海量數(shù)據(jù)分析中尋獲品位相似的用戶晚凿。

相似度計算體系:Euclidean Distance Score (歐式距離)
歐式距離在數(shù)學(xué)中的定義為N維歐式空間兩點間的距離峭竣。書中以簡單的二維空間為例



以書中圖片為例,建立以兩個片名為坐標軸的二維坐標系晃虫,將人名和他們對應(yīng)的對于兩部影片的評分作為點置于圖中皆撩。然后計算每一個維度的距離平方,相加后再做方計算出值來表示這個距離哲银。暫將這個值標位D扛吞。很明顯,D的值隨著兩點間的距離變大而變大荆责,取值范圍飄忽不定滥比。進一步優(yōu)化公式,算的1/(1+D)做院, 使得這個值永遠介于0和1之間盲泛,數(shù)值越接近一,樣本的相似度越高键耕。

相似度計算體系:Pearson Correlation Score (皮爾遜相關(guān)系數(shù))
這個系數(shù)是用來判斷兩組數(shù)的線性相關(guān)程度的寺滚。這個系數(shù)的計算更加復(fù)雜但是更為精確。大黃試著用大白話理解這里的意義屈雄,用電影評價的例子來看村视,有三個人A,B,C,其中A酒奶,B的歐式距離比B蚁孔,C要小奶赔,但是觀察數(shù)據(jù)發(fā)現(xiàn),A,B對于很多電影的評分都有分歧杠氢,即對于某些電影A給分高站刑,B給分低,另外一些相反鼻百。但是B笛钝,C的評價體系卻非常相似,即對于某些電影B給了“高分”愕宋,C也是玻靡。這里的高分我用引號括起來,意思是相對高分中贝,也就是在B自己的體系里囤捻,某一部電影分數(shù)高,但絕對分數(shù)并不一定邻寿。換一種說法就是B蝎土,C對于電影的絕對分數(shù)評價差距較大,但是對于這些電影給出的排名卻非常一致绣否,這時候我們就需要這個皮爾遜相關(guān)系數(shù)來判定他倆才是相似度較高的用戶了誊涯。皮爾遜相關(guān)系數(shù)的數(shù)學(xué)表達式為 x和y的協(xié)方差/(x的標準差*y的標準差),這個結(jié)果會落在-1和1之間蒜撮,越接近1暴构,相關(guān)性越強。


CodeCogsEqn.gif

兩兩的問題解決后段磨,我們自然可以以某一個目標用戶為基礎(chǔ)取逾,計算所有其他用戶和他的相關(guān)性,并找出和他相關(guān)性最高的那個人苹支,從而將那個人的電影推薦給目標用戶

在解決了上述相關(guān)性問題后砾隅,作者再次拋出疑問,找到一個相似性很高的用戶是否已經(jīng)足夠去推薦電影债蜜,會不會出現(xiàn)一些情況比如有一些很適合我的電影晴埂,相關(guān)性很高的那個人并沒有看過或者評分過,或者相關(guān)性很高的那個人在某一部電影的評分上和其他人完全相悖寻定,給了個很低的分數(shù)儒洛,但其實在絕大部分人眼中那是部好電影。如果僅僅使用用戶相關(guān)性特姐,這樣的電影推薦就會被忽視晶丘。這是下一個需要解決的問題。
解決這個問題的途徑便是利用權(quán)重唐含。再次截取書中的圖表:


P2.PNG

圖片中浅浮,每個用戶和目標用戶都有相關(guān)度數(shù)值,作為權(quán)重捷枯,都有對于某一部作品的評分滚秩,相乘后的積再求和,除以權(quán)重淮捆,得到最后的分數(shù)郁油,可以看到最后一行的數(shù)據(jù)為判定推薦與否的終值。

下一部分書中簡要介紹了另一個維度的推薦攀痊,即推薦產(chǎn)品相關(guān)性較高的其他產(chǎn)品桐腌,從編程的角度這并不難辦,即將python的dictionary變更Key和Value來重新計算相關(guān)性苟径。這種推薦常見于對目標用戶數(shù)據(jù)不足的情況案站,比如書中列舉的在amazon買書時,進入該書的頁面后會看到“買了這本書的用戶還買了”這樣的推薦版塊棘街。

這一章節(jié)到此依然沒有結(jié)束蟆盐,作者引入了兩個新概念:User-Based Filtering和Item-Based Filtering。之前的例子中基本都是基于用戶的過濾遭殉,但是對于一個非常龐大石挂,擁有指數(shù)級用戶的網(wǎng)站或者系統(tǒng),做這樣的過濾是非常緩慢的险污,而且由于用戶的行為非常頻繁痹愚,所以計算的結(jié)果也需要實時變更,那么這個時候這種策略將失去優(yōu)勢蛔糯。于是轉(zhuǎn)向了基于項目的過濾里伯,對于某一用戶,先找出他的歷史數(shù)據(jù)渤闷,將位列前排的項目提取出來疾瓮,然后通過類似于前面介紹的權(quán)重體系獲取其他項目的相關(guān)性。這樣做的好處是項目的更新頻率相對用戶是更低的飒箭,很多計算不需要實時的數(shù)據(jù)狼电,可以預(yù)先計算保留結(jié)果,大大提高了推薦系統(tǒng)的效率和速度弦蹂。這種策略特別時候用戶基數(shù)很大的情況肩碟。

最后,對于如何選擇基于用戶還是基于項目凸椿,作者給出一條結(jié)論:“Item-based filtering usually outperforms user-based filtering in sparse datasets, and the two perform about equally in dense datasets”削祈。這樣的結(jié)論是基于數(shù)據(jù)量和運算速度的,這兩種過濾方式在現(xiàn)實中都有實際存在和應(yīng)用的場景,不可以一概選擇其中一種髓抑。

本章最后的練習(xí)中提到了另一個指標:Tanimoto score咙崎。這個指標是用于計算符號度量或布爾值度量的個體間的相似度的。當(dāng)參考樣本無法量化評分吨拍,而只是例如用是或否褪猛,大小這樣的指標來衡量,則Tanimoto score是用來計算相似度的一個好方式羹饰。


CodeCogsEqn (1).gif

公式很簡單伊滋,兩者相同選項總數(shù)除以兩者不同選項總數(shù)和。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末队秩,一起剝皮案震驚了整個濱河市笑旺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馍资,老刑警劉巖筒主,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迷帜,居然都是意外死亡物舒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門戏锹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冠胯,“玉大人,你說我怎么就攤上這事锦针≤欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵奈搜,是天一觀的道長悉盆。 經(jīng)常有香客問我,道長馋吗,這世上最難降的妖魔是什么焕盟? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮宏粤,結(jié)果婚禮上脚翘,老公的妹妹穿的比我還像新娘。我一直安慰自己绍哎,他們只是感情好来农,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著崇堰,像睡著了一般沃于。 火紅的嫁衣襯著肌膚如雪涩咖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天繁莹,我揣著相機與錄音檩互,去河邊找鬼。 笑死蒋困,一個胖子當(dāng)著我的面吹牛盾似,可吹牛的內(nèi)容都是我干的敬辣。 我是一名探鬼主播雪标,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溉跃!你這毒婦竟也來了村刨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撰茎,失蹤者是張志新(化名)和其女友劉穎嵌牺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體龄糊,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡逆粹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炫惩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僻弹。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖他嚷,靈堂內(nèi)的尸體忽然破棺而出蹋绽,到底是詐尸還是另有隱情,我是刑警寧澤筋蓖,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布卸耘,位于F島的核電站,受9級特大地震影響粘咖,放射性物質(zhì)發(fā)生泄漏蚣抗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一瓮下、第九天 我趴在偏房一處隱蔽的房頂上張望翰铡。 院中可真熱鬧,春花似錦唱捣、人聲如沸两蟀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赂毯。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間党涕,已是汗流浹背烦感。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膛堤,地道東北人手趣。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像肥荔,于是被迫代替她去往敵國和親绿渣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容