摘要:在近鄰?fù)扑]中,最常用的相似度是余弦相似度。這就是由于余弦相似度被向量長(zhǎng)度歸一化后的結(jié)果。用余弦相似度計(jì)算出來(lái),兩個(gè)用戶的相似度達(dá)到。余弦相似度適用于評(píng)分?jǐn)?shù)據(jù),杰卡德相似度適合用于隱式反饋數(shù)據(jù)。
今天,我們來(lái)聊聊協(xié)同過(guò)濾中的相似度計(jì)算方法有哪些。相似度的本質(zhì)
推薦系統(tǒng)中,推薦算法分為兩個(gè)門派,一個(gè)是機(jī)器學(xué)習(xí)派,另一個(gè)就是相似度門派。機(jī)器學(xué)習(xí)派是后起之秀,而相似度派則是泰山北斗,以致?lián)纹饋?lái)推薦系統(tǒng)的半壁江山。近鄰?fù)扑]顧名思義就是在地理位置上住得近。如果用戶有個(gè)鄰居,那么社交軟件上把鄰居推薦給他在直觀上就很合理,當(dāng)然,如果鄰居姓王的話,就不要推薦了。
這里說(shuō)的近鄰,并不一定只是在三維空間下的地理位置的近鄰,在任意高維空間都可以找到近鄰,尤其是當(dāng)用戶和物品的特征維度都很高時(shí),要找到用戶隔壁的鄰居,就不是那么直觀,需要選擇好用適合的相似度度量辦法。
近鄰?fù)扑]的核心就是相似度計(jì)算方法的選擇,由于近鄰?fù)扑]并沒(méi)有采用最優(yōu)化思路,所以效果通常取決于矩陣的量化方式和相似度的選擇。
相似度,與之配套的還有另一個(gè)概念就是距離,兩者都是用來(lái)量化兩個(gè)物體在高維空間中的親疏程度的,它們是硬幣的兩面。
推薦算法中的相似度門派,實(shí)際上有這么一個(gè)潛在假設(shè):如果兩個(gè)物體很相似,也就是距離很近,那么這兩個(gè)物體就很容易產(chǎn)生一樣的動(dòng)作。
如果兩篇新聞很相似,那么他們很容易被同一個(gè)人先后點(diǎn)擊閱讀,如果兩個(gè)用戶很相似,那么他們就很容易點(diǎn)擊同一個(gè)新聞。這種符合直覺(jué)的假設(shè),大部分時(shí)候很奏效。
其實(shí)屬于另一門派的推薦算法——機(jī)器學(xué)習(xí)中,也有很多算法在某種角度看做是相似度度量。
例如,邏輯回歸或者線性回歸中,一邊是特征向量,另一邊是模型參數(shù)向量,兩者的點(diǎn)積運(yùn)算,就可以看做是相似度計(jì)算,只不過(guò)其中的模型參數(shù)向量值并不是人肉指定的,而是從數(shù)據(jù)中由優(yōu)化算法自動(dòng)總結(jié)出來(lái)的。
在近鄰?fù)扑]中,最常用的相似度是余弦相似度。然而可以選用的相似度并不只是余弦相似度,還有歐氏距離、皮爾遜相關(guān)度、自適應(yīng)的余弦相似度、局部敏感哈希等。使用場(chǎng)景各不相同,今天,我會(huì)分別一一介紹如下。
相似度的計(jì)算方法 數(shù)據(jù)分類
在真正開始巡視相似度計(jì)算方法前,我先給你把度量對(duì)象做個(gè)簡(jiǎn)單分類。相似度計(jì)算對(duì)象是向量,或者叫做高維空間下的坐標(biāo),一個(gè)意思。那表示這個(gè)向量的數(shù)值就有兩種:實(shí)數(shù)值; 布爾值,也就是 0 或者 1。 下面介紹的不同計(jì)算方法適用于不同的數(shù)據(jù)種類。
1 歐氏距離 歐氏距離,如名字所料,是一個(gè)歐式空間下度量距離的方法。兩個(gè)物體,都在同一個(gè)空間下表示為兩個(gè)點(diǎn),假如叫做 p 和 q,分別都是
n 個(gè)坐標(biāo)。那么歐式距離就是衡量這兩個(gè)點(diǎn)之間的距離,從 p 到 q 移動(dòng)要經(jīng)過(guò)的距離。歐式距離不適合布爾向量之間。這個(gè)公式就是,每一個(gè)坐標(biāo)上的取值相減,求平方和,最后輸出方根。
顯然,歐式距離得到的值是一個(gè)非負(fù)數(shù),最大值是正無(wú)窮。通常相似度計(jì)算度量結(jié)果希望是 [-1,1] 或者 [0,1]
之間,所以歐式距離要么無(wú)法直接使用到這個(gè)場(chǎng)景中,要么需要經(jīng)過(guò)二次轉(zhuǎn)化得到,我在文稿中放了一個(gè)最常用的轉(zhuǎn)化公式,你可以點(diǎn)擊
距離加一后取倒數(shù)。這個(gè)公式能夠把范圍為 0 到正無(wú)窮的歐式距離轉(zhuǎn)換為 0 到 1 的相似度。歐式距離度量的是空間中兩個(gè)點(diǎn)的絕對(duì)差異,適用于分析用戶能力模型之間的差異,比如消費(fèi)能力、貢獻(xiàn)內(nèi)容的能力等。
當(dāng)然,雖然歐式距離計(jì)算兩個(gè)點(diǎn)的距離,實(shí)際上,點(diǎn)的坐標(biāo)表示和我們常說(shuō)的向量表示是同一回事,希望這句話是廢話,你早已懂得。
2 余弦相似度 大名鼎鼎的余弦相似度,度量的是兩個(gè)向量之間的夾角,其實(shí)就是用夾角的余弦值來(lái)度量,所以名字叫余弦相似度。當(dāng)兩個(gè)向量的夾角為 0
度時(shí),余弦值為 1,當(dāng)夾角為 90 度時(shí),余弦值為 0,為 180 度時(shí),余弦值則為 -1。余弦相似度在度量文本相似度、用戶相似度、物品相似度的時(shí)候都較為常用;但是在這里需要提醒你一點(diǎn),余弦相似度的特點(diǎn):它與向量的長(zhǎng)度無(wú)關(guān)。因?yàn)橛嘞蚁嗨贫扔?jì)算需要對(duì)向量長(zhǎng)度做歸一化:
經(jīng)過(guò)向量長(zhǎng)度歸一化后的相似度量方式,背后潛藏著這樣一種思想:兩個(gè)向量,只要方向一致,無(wú)論程度強(qiáng)弱,都可以視為“相似”。
這簡(jiǎn)直就是:招聘人才時(shí)只看價(jià)值觀,不考核代碼能力,只要肯干,搬磚嘛,誰(shuí)搬不是搬。這樣做錯(cuò)不錯(cuò)呢?很顯然,有非常大的合理性。
比如,我用 140 字的微博摘要了一篇 5000
字的博客內(nèi)容,兩者得到的文本向量可以認(rèn)為方向一致,詞頻等程度不同,但是余弦相似度仍然認(rèn)為他們是相似的。在協(xié)同過(guò)濾中,如果選擇余弦相似度,某種程度上更加依賴兩個(gè)物品的共同評(píng)價(jià)用戶數(shù),而不是用戶給予的評(píng)分多少。這就是由于余弦相似度被向量長(zhǎng)度歸一化后的結(jié)果。
余弦相似度對(duì)絕對(duì)值大小不敏感這件事,在某些應(yīng)用上仍然有些問(wèn)題。
舉個(gè)小例子,用戶 A 對(duì)兩部電影評(píng)分分別是 1 分和 2 分,用戶 B 對(duì)同樣這兩部電影評(píng)分是 4 分和 5
分。用余弦相似度計(jì)算出來(lái),兩個(gè)用戶的相似度達(dá)到 0.98。這和實(shí)際直覺(jué)不符,用戶 A 明顯不喜歡這兩部電影。針對(duì)這個(gè)問(wèn)題,對(duì)余弦相似度有個(gè)改進(jìn),改進(jìn)的算法叫做調(diào)整的余弦相似度(Adjusted Cosine
Similarity)。調(diào)整的方法很簡(jiǎn)單,就是先計(jì)算向量每個(gè)維度上的均值,然后每個(gè)向量在各個(gè)維度上都減去均值后,再計(jì)算余弦相似度。前面這個(gè)小例子,用調(diào)整的余弦相似度計(jì)算得到的相似度是 -0.1,呈現(xiàn)出兩個(gè)用戶口味相反,和直覺(jué)相符。
3 皮爾遜相關(guān)度 皮爾遜相關(guān)度,實(shí)際上也是一種余弦相似度,不過(guò)先對(duì)向量做了中心化,向量 p 和 q 各自減去向量的均值后,再計(jì)算余弦相似度。
皮爾遜相關(guān)度計(jì)算結(jié)果范圍在 -1 到 1。-1 表示負(fù)相關(guān),1 比表示正相關(guān)。皮爾遜相關(guān)度其實(shí)度量的是兩個(gè)隨機(jī)變量是不是在同增同減。
如果同時(shí)對(duì)兩個(gè)隨機(jī)變量采樣,當(dāng)其中一個(gè)得到較大的值另一也較大,其中一個(gè)較小時(shí)另一個(gè)也較小時(shí),這就是正相關(guān),計(jì)算出來(lái)的相關(guān)度就接近
1,這種情況屬于沆瀣一氣,反之就接近 -1。由于皮爾遜相關(guān)度度量的時(shí)兩個(gè)變量的變化趨勢(shì)是否一致,所以不適合用作計(jì)算布爾值向量之間相關(guān)度,因?yàn)閮蓚€(gè)布爾向量也就是對(duì)應(yīng)兩個(gè) 0-1
分布的隨機(jī)變量,這樣的隨機(jī)變量變化只有有限的兩個(gè)取值,根本沒(méi)有“變化趨勢(shì),高低起伏”這一說(shuō)。4 杰卡德(Jaccard)相似度
杰卡德相似度,是兩個(gè)集合的交集元素個(gè)數(shù)在并集中所占的比例。由于集合非常適用于布爾向量表示,所以杰卡德相似度簡(jiǎn)直就是為布爾值向量私人定做的。對(duì)應(yīng)的計(jì)算方式是:分子是兩個(gè)布爾向量做點(diǎn)積計(jì)算,得到的就是交集元素個(gè)數(shù); 分母是兩個(gè)布爾向量做或運(yùn)算,再求元素和。
余弦相似度適用于評(píng)分?jǐn)?shù)據(jù),杰卡德相似度適合用于隱式反饋數(shù)據(jù)。例如,使用用戶的收藏行為,計(jì)算用戶之間的相似度,杰卡德相似度就適合來(lái)承擔(dān)這個(gè)任務(wù)。總結(jié) 今天,我介紹了常用的幾種相似度計(jì)算方法,以及其各自的使用場(chǎng)景。
這里的場(chǎng)景是按照數(shù)據(jù)形式劃分的,按照向量維度取值是否是布爾值來(lái)看,杰卡德相似度就只適合布爾值向量,余弦相似度彈性略大,適合兩種向量。歐式距離度量的是絕對(duì)差異,余弦相似度度量的是方向差異,但是調(diào)整的余弦相似度則可以避免這個(gè)弱點(diǎn)。
現(xiàn)在留給你一個(gè)問(wèn)題:如果在一個(gè)社交網(wǎng)絡(luò)中,要計(jì)算好友的相似度,你會(huì)選擇哪種相似度來(lái)做?歡迎留言討論。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44685.html
摘要:最近寫搜索引擎文章寫多了,來(lái)一篇之前寫的老文,給那些對(duì)推薦算法感興趣想入門的人吧,最近也在做推薦廣告系統(tǒng),又翻出來(lái)看了看。 最近寫搜索引擎文章寫多了,來(lái)一篇之前寫的老文,給那些對(duì)推薦算法感興趣想入門的人吧,最近也在做推薦廣告系統(tǒng),又翻出來(lái)看了看。 什么是推薦算法 推薦算法最早在1992年就提出來(lái)了,但是火起來(lái)實(shí)際上是最近這些年的事情,因?yàn)榛ヂ?lián)網(wǎng)的爆發(fā),有了更大的數(shù)據(jù)量可以供我們使用,推...
摘要:機(jī)器學(xué)習(xí)派是后起之秀,而相似度派則是泰山北斗,以致?lián)纹饋?lái)推薦系統(tǒng)的半壁江山。純來(lái)做推薦基本不靠譜,所以我們來(lái)試一下基于和相似度來(lái)實(shí)現(xiàn)一個(gè)推薦系統(tǒng)。 對(duì)于內(nèi)容類網(wǎng)站或者APP,搜索和推薦已經(jīng)是標(biāo)配。搜索相對(duì)容易,使用Elasticsearch簡(jiǎn)單配置一下就可以做出一個(gè)性能還不錯(cuò)效果也還可以的搜索引擎,然而,推薦系統(tǒng)的話,沒(méi)有專門的團(tuán)隊(duì)實(shí)踐起來(lái)還挺困難的。 網(wǎng)上推薦系統(tǒng)相關(guān)的理論非常多,但...
摘要:機(jī)器學(xué)習(xí)派是后起之秀,而相似度派則是泰山北斗,以致?lián)纹饋?lái)推薦系統(tǒng)的半壁江山。純來(lái)做推薦基本不靠譜,所以我們來(lái)試一下基于和相似度來(lái)實(shí)現(xiàn)一個(gè)推薦系統(tǒng)。 對(duì)于內(nèi)容類網(wǎng)站或者APP,搜索和推薦已經(jīng)是標(biāo)配。搜索相對(duì)容易,使用Elasticsearch簡(jiǎn)單配置一下就可以做出一個(gè)性能還不錯(cuò)效果也還可以的搜索引擎,然而,推薦系統(tǒng)的話,沒(méi)有專門的團(tuán)隊(duì)實(shí)踐起來(lái)還挺困難的。 網(wǎng)上推薦系統(tǒng)相關(guān)的理論非常多,但...
摘要:如果做推薦系統(tǒng)不知道基于物品的協(xié)同過(guò)濾,那等同于做程序員不懂得冒泡排序。基于物品的八卦基于物品的協(xié)同過(guò)濾算法誕生于年,是由亞馬遜首先提出的,并在年由其發(fā)明者發(fā)表了相應(yīng)的論文。 不管你有沒(méi)有剁過(guò)手,你對(duì)看了這個(gè)商品的還看了這樣的推薦形式一定不陌生。無(wú)論是貓還是狗,或者是其他電商網(wǎng)站,這樣的推薦產(chǎn)品可以說(shuō)是推薦系統(tǒng)的標(biāo)配了。 類似的還有,如點(diǎn)評(píng)標(biāo)記類網(wǎng)站的喜歡了這部電影的還喜歡了,社交媒...
閱讀 569·2023-04-26 02:59
閱讀 700·2023-04-25 16:02
閱讀 2171·2021-08-05 09:55
閱讀 3585·2019-08-30 15:55
閱讀 4680·2019-08-30 15:44
閱讀 1809·2019-08-30 13:02
閱讀 2207·2019-08-29 16:57
閱讀 2296·2019-08-26 13:35