推薦算法個(gè)人感想

1.在我們逛淘寶,亞馬遜桥滨,今日頭條的時(shí)候,往往你在買了一件東西以后,亞馬遜和淘寶都會(huì)給你推薦相似性的一些物品齐媒,今日頭條在你點(diǎn)擊對(duì)關(guān)于老司機(jī)的帖子感興趣的時(shí)候蒲每,就會(huì)把關(guān)于老司機(jī)的帖子推薦給你,這是很有意思的喻括。
2.推薦就分為了基于人的推薦和基于物品的推薦邀杏,基于物品的推薦就類似于我第一條寫的東西,當(dāng)你購買一件物品或者點(diǎn)擊一條新聞的時(shí)候双妨,就會(huì)推薦給你類似的東西』床現(xiàn)在我們來談?wù)勱P(guān)于人的推薦,協(xié)作型推薦刁品。當(dāng)你想看一部電影的時(shí)候泣特,最簡單的方式是什么呢?可以去豆瓣上面看一看評(píng)分挑随?如果沒有網(wǎng)怎么辦状您,那就吃飯的時(shí)候咨詢一下旁邊的朋友唄,如果你倆對(duì)一部或者多部已經(jīng)看過的影片聊得很來兜挨,那么他推薦給你的影片你有很大的可能性也愛看膏孟,這就是我們基于人的推薦,根據(jù)興趣差不多的人來看看他們還看過一些其他什么樣的影片拌汇,把他們覺得口碑很好的影片可以排個(gè)序柒桑,然后將最頂?shù)挠捌扑]給用戶就行了。
3.那么上面的過程是我們自己根據(jù)經(jīng)驗(yàn)來推想的場(chǎng)景噪舀,那么應(yīng)該怎么用計(jì)算機(jī)語言還有數(shù)學(xué)來描述這種現(xiàn)況呢魁淳?下面我們就來講解一下,我們有一些數(shù)據(jù)与倡,其中記錄了一些用戶對(duì)影片的評(píng)分界逛,那么我們?cè)趺磥砗饬浚男┯脩魰?huì)有一些比較相同的愛好呢纺座?所以息拜,為了解決這個(gè)問題我們又提出來了兩個(gè)方法來衡量這個(gè)問題,也就是來描述這個(gè)問題净响,其中一個(gè)叫做歐幾里得距離少欺,另外一個(gè)叫做皮爾遜相關(guān)系數(shù)。通過兩個(gè)數(shù)學(xué)方法來描述這個(gè)問題馋贤。
4.歐幾里得距離狈茉,我忘了我們是在初中還是高中學(xué)習(xí)過這個(gè)問題,不過我們當(dāng)時(shí)學(xué)習(xí)的是二維的掸掸,相信大家肯定也學(xué)習(xí)過氯庆,在一個(gè)二維的坐標(biāo)系中蹭秋,我們想要衡量兩個(gè)點(diǎn)的相距的距離,應(yīng)該怎么計(jì)算呢堤撵?應(yīng)該是d=√[(x1-x2)2+(y1-y2)2],這是二維坐標(biāo)系中的距離計(jì)算方法仁讨。剛剛我們知道我們現(xiàn)在的數(shù)據(jù)中里面是一個(gè)dict然后里面是人名對(duì)應(yīng)另外一個(gè)dict(電影對(duì)象:評(píng)分),我們將里面不同電影稱之為特征,然后我們就可以將其抽象成數(shù)據(jù)的維度实昨,當(dāng)然我們?cè)诔踔谢蛘吒咧械臅r(shí)候?qū)W過的只是最簡單的二維調(diào)用洞豁,所以我們可以將上述公式進(jìn)行擴(kuò)展,維度之間進(jìn)行相減之后然后求根荒给,這就變成了我們現(xiàn)在的歐幾里得距離的擴(kuò)展計(jì)算丈挟,適應(yīng)于多個(gè)維度之間的計(jì)算。這里面的話所對(duì)應(yīng)的維度當(dāng)然要相同志电,什么叫做所對(duì)應(yīng)的維度要相同呢曙咽?也就是對(duì)相同的電影進(jìn)行判斷,而不是對(duì)應(yīng)的順序來進(jìn)行判斷挑辆。

# -*- coding: utf-8 -*-
"""
Created on Wed Nov 16 09:16:32 2016

@author: zhangxu
"""

critics={'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5,
 'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5, 
 'The Night Listener': 3.0},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5, 
 'Just My Luck': 1.5, 'Superman Returns': 5.0, 'The Night Listener': 3.0, 
 'You, Me and Dupree': 3.5}, 
'Michael Phillips': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.0,
 'Superman Returns': 3.5, 'The Night Listener': 4.0},
'Claudia Puig': {'Snakes on a Plane': 3.5, 'Just My Luck': 3.0,
 'The Night Listener': 4.5, 'Superman Returns': 4.0, 
 'You, Me and Dupree': 2.5},
'Mick LaSalle': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0, 
 'Just My Luck': 2.0, 'Superman Returns': 3.0, 'The Night Listener': 3.0,
 'You, Me and Dupree': 2.0}, 
'Jack Matthews': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0,
 'The Night Listener': 3.0, 'Superman Returns': 5.0, 'You, Me and Dupree': 3.5},
'Toby': {'Snakes on a Plane':4.5,'You, Me and Dupree':1.0,'Superman Returns':4.0}}

from math import sqrt

def calculateDistance(datas,person1,person2):
    person1MovieDataSet = datas[person1]
    person2MovieDataSet = datas[person2]
    commonMovieNames = []
    for movieName in person1MovieDataSet:
        if movieName in person2MovieDataSet:
            commonMovieNames.append(movieName)
    if(len(commonMovieNames) == 0):
        return 0
    sum = 0.0
    for movieName in commonMovieNames:
        sum += pow(datas[person1][movieName] - datas[person2][movieName],2)
    return 1/(1+sqrt(sum))
//給用戶進(jìn)行打分例朱,選擇推薦值最近的用戶
def topMatch(datas,other,top=1,fun=calculateDistance):
    scores = [(fun(datas,person,other),person) for person in datas if person != other]
    scores.sort()
    scores.reverse()    
    return scores[0:top]
print topMatch(critics,'Lisa Rose',3)
print calculateDistance(critics,'Lisa Rose','Gene Seymour')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鱼蝉,隨后出現(xiàn)的幾起案子洒嗤,更是在濱河造成了極大的恐慌,老刑警劉巖魁亦,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渔隶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡洁奈,警方通過查閱死者的電腦和手機(jī)间唉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睬魂,“玉大人终吼,你說我怎么就攤上這事镀赌÷认” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵商佛,是天一觀的道長喉钢。 經(jīng)常有香客問我,道長良姆,這世上最難降的妖魔是什么肠虽? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮玛追,結(jié)果婚禮上税课,老公的妹妹穿的比我還像新娘闲延。我一直安慰自己,他們只是感情好韩玩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布垒玲。 她就那樣靜靜地躺著,像睡著了一般找颓。 火紅的嫁衣襯著肌膚如雪合愈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天击狮,我揣著相機(jī)與錄音佛析,去河邊找鬼。 笑死彪蓬,一個(gè)胖子當(dāng)著我的面吹牛寸莫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寞焙,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼储狭,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了捣郊?” 一聲冷哼從身側(cè)響起诱鞠,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤玷室,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體属百,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年肺素,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粤策。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琐旁,死狀恐怖涮阔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灰殴,我是刑警寧澤敬特,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站牺陶,受9級(jí)特大地震影響伟阔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掰伸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一皱炉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狮鸭,春花似錦合搅、人聲如沸多搀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酗昼。三九已至,卻和暖如春梳猪,著一層夾襖步出監(jiān)牢的瞬間麻削,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工春弥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呛哟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓匿沛,卻偏偏與公主長得像扫责,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逃呼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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