協(xié)同過濾推薦算法應(yīng)用于預(yù)測和推薦。算法通過對(duì)用戶歷史行為數(shù)據(jù)的挖掘發(fā)現(xiàn)用戶的偏好兴猩,基于不同的偏好對(duì)用戶進(jìn)行群組劃分并推薦品味相似的商品埂陆。協(xié)同過濾推薦算法分為兩類,分別是基于用戶的協(xié)同過濾算法(user-based collaboratIve filtering)呐赡,和基于物品的協(xié)同過濾算法(item-based collaborative filtering)退客。簡單的說就是:人以類聚,物以群分链嘀。
如果你現(xiàn)在想看個(gè)電影攀细,但你不知道具體看哪部捌省,你會(huì)怎么做?大部分的人會(huì)問問周圍的朋友,看看最近有什么好看的電影推薦缚态,而我們一般更傾向于從口味比較類似的朋友那里得到推薦蓝谨。這就是協(xié)同過濾的核心思想垛玻。
基于用戶的協(xié)同過濾算法(user-based collaboratIve filtering)
基于用戶的協(xié)同過濾算法是通過用戶的歷史行為數(shù)據(jù)發(fā)現(xiàn)用戶對(duì)商品或內(nèi)容的喜歡(如商品購買摹察,收藏,內(nèi)容評(píng)論或分享)碧囊,并對(duì)這些喜好進(jìn)行度量和打分树灶。根據(jù)不同用戶對(duì)相同商品或內(nèi)容的態(tài)度和偏好程度計(jì)算用戶之間的關(guān)系。在有相同喜好的用戶間進(jìn)行商品推薦糯而。簡單的說就是如果A,B兩個(gè)用戶都購買了x,y,z三本圖書天通,并且給出了5星的好評(píng)。那么A和B就屬于同一類用戶熄驼∠窈可以將A看過的圖書w也推薦給用戶B烘豹。
1、尋找偏好相似的用戶
我們模擬了5個(gè)用戶對(duì)兩件商品的評(píng)分诺祸,來說明如何通過用戶對(duì)不同商品的態(tài)度和偏好尋找相似的用戶携悯。在示例中,5個(gè)用戶分別對(duì)兩件商品進(jìn)行了評(píng)分筷笨。這里的分值可能表示真實(shí)的購買憔鬼,也可以是用戶對(duì)商品不同行為的量化指標(biāo)。例如胃夏,瀏覽商品的次數(shù)轴或,向朋友推薦商品,收藏仰禀,分享照雁,或評(píng)論等等。這些行為都可以表示用戶對(duì)商品的態(tài)度和偏好程度答恶。
從表格中很難直觀發(fā)現(xiàn)5個(gè)用戶間的聯(lián)系饺蚊,我們將5個(gè)用戶對(duì)兩件商品的評(píng)分用散點(diǎn)圖表示出來后,用戶間的關(guān)系就很容易發(fā)現(xiàn)了亥宿。在散點(diǎn)圖中卸勺,Y軸是商品1的評(píng)分,X軸是商品2的評(píng)分烫扼,通過用戶的分布情況可以發(fā)現(xiàn),A,C,D三個(gè)用戶距離較近碍庵。用戶A(3.3 6.5)和用戶C(3.6 6.3)映企,用戶D(3.4 5.8)對(duì)兩件商品的評(píng)分較為接近。而用戶E和用戶B則形成了另一個(gè)群體静浴。
散點(diǎn)圖雖然直觀堰氓,但無法投入實(shí)際的應(yīng)用,也不能準(zhǔn)確的度量用戶間的關(guān)系苹享。因此我們需要通過數(shù)字對(duì)用戶的關(guān)系進(jìn)行準(zhǔn)確的度量双絮,并依據(jù)這些關(guān)系完成商品的推薦。
歐幾里德距離評(píng)價(jià)
歐幾里德距離評(píng)價(jià)是一個(gè)較為簡單的用戶關(guān)系評(píng)價(jià)方法得问。原理是通過計(jì)算兩個(gè)用戶在散點(diǎn)圖中的距離來判斷不同的用戶是否有相同的偏好囤攀。以下是歐幾里德距離評(píng)價(jià)的計(jì)算公式。
通過公式我們獲得了5個(gè)用戶相互間的歐幾里德系數(shù)宫纬,也就是用戶間的距離焚挠。系數(shù)越小表示兩個(gè)用戶間的距離越近,偏好也越是接近漓骚。不過這里有個(gè)問題蝌衔,太小的數(shù)值可能無法準(zhǔn)確的表現(xiàn)出不同用戶間距離的差異榛泛,因此我們對(duì)求得的系數(shù)取倒數(shù),使用戶間的距離約接近噩斟,數(shù)值越大曹锨。在下面的表格中,可以發(fā)現(xiàn)剃允,用戶A&C用戶A&D和用戶C&D距離較近沛简。同時(shí)用戶B&E的距離也較為接近。與我們前面在散點(diǎn)圖中看到的情況一致硅急。
皮爾遜相關(guān)度評(píng)價(jià)
皮爾遜相關(guān)度評(píng)價(jià)是另一種計(jì)算用戶間關(guān)系的方法覆享。他比歐幾里德距離評(píng)價(jià)的計(jì)算要復(fù)雜一些,但對(duì)于評(píng)分?jǐn)?shù)據(jù)不規(guī)范時(shí)皮爾遜相關(guān)度評(píng)價(jià)能夠給出更好的結(jié)果营袜。以下是一個(gè)多用戶對(duì)多個(gè)商品進(jìn)行評(píng)分的示例撒顿。這個(gè)示例比之前的兩個(gè)商品的情況要復(fù)雜一些,但也更接近真實(shí)的情況荚板。我們通過皮爾遜相關(guān)度評(píng)價(jià)對(duì)用戶進(jìn)行分組凤壁,并推薦商品。
皮爾遜相關(guān)系數(shù)
皮爾遜相關(guān)系數(shù)的計(jì)算公式如下跪另,結(jié)果是一個(gè)在-1與1之間的系數(shù)拧抖。該系數(shù)用來說明兩個(gè)用戶間聯(lián)系的強(qiáng)弱程度。
相關(guān)系數(shù)的分類
0.8-1.0 極強(qiáng)相關(guān)
0.6-0.8 強(qiáng)相關(guān)
0.4-0.6 中等程度相關(guān)
0.2-0.4 弱相關(guān)
0.0-0.2 極弱相關(guān)或無相關(guān)
通過計(jì)算5個(gè)用戶對(duì)5件商品的評(píng)分我們獲得了用戶間的相似度數(shù)據(jù)免绿。這里可以看到用戶A&B唧席,C&D,C&E和D&E之間相似度較高嘲驾。下一步淌哟,我們可以依照相似度對(duì)用戶進(jìn)行商品推薦。
2辽故、為相似的用戶提供推薦物品
為用戶C推薦商品
當(dāng)我們需要對(duì)用戶C推薦商品時(shí)徒仓,首先我們檢查之前的相似度列表,發(fā)現(xiàn)用戶C和用戶D和E的相似度較高誊垢。換句話說這三個(gè)用戶是一個(gè)群體掉弛,擁有相同的偏好。因此喂走,我們可以對(duì)用戶C推薦D和E的商品殃饿。但這里有一個(gè)問題。我們不能直接推薦前面商品1-商品5的商品缴啡。因?yàn)檫@這些商品用戶C以及瀏覽或者購買過了壁晒。不能重復(fù)推薦。因此我們要推薦用戶C還沒有瀏覽或購買過的商品。
加權(quán)排序推薦
我們提取了用戶D和用戶E評(píng)價(jià)過的另外5件商品A—商品F的商品秒咐。并對(duì)不同商品的評(píng)分進(jìn)行相似度加權(quán)谬晕。按加權(quán)后的結(jié)果對(duì)5件商品進(jìn)行排序,然后推薦給用戶C携取。這樣攒钳,用戶C就獲得了與他偏好相似的用戶D和E評(píng)價(jià)的商品。而在具體的推薦順序和展示上我們依照用戶D和用戶E與用戶C的相似度進(jìn)行排序雷滋。
以上是基于用戶的協(xié)同過濾算法不撑。這個(gè)算法依靠用戶的歷史行為數(shù)據(jù)來計(jì)算相關(guān)度。也就是說必須要有一定的數(shù)據(jù)積累(冷啟動(dòng)問題)晤斩。對(duì)于新網(wǎng)站或數(shù)據(jù)量較少的網(wǎng)站焕檬,還有一種方法是基于物品的協(xié)同過濾算法。
基于物品的協(xié)同過濾算法(item-based collaborative filtering)
基于物品的協(xié)同過濾算法與基于用戶的協(xié)同過濾算法很像澳泵,將商品和用戶互換实愚。通過計(jì)算不同用戶對(duì)不同物品的評(píng)分獲得物品間的關(guān)系⊥酶ǎ基于物品間的關(guān)系對(duì)用戶進(jìn)行相似物品的推薦腊敲。這里的評(píng)分代表用戶對(duì)商品的態(tài)度和偏好。簡單來說就是如果用戶A同時(shí)購買了商品1和商品2维苔,那么說明商品1和商品2的相關(guān)度較高碰辅。當(dāng)用戶B也購買了商品1時(shí),可以推斷他也有購買商品2的需求介时。
1没宾、尋找相似的物品
表格中是兩個(gè)用戶對(duì)5件商品的評(píng)分。在這個(gè)表格中我們用戶和商品的位置進(jìn)行了互換沸柔,通過兩個(gè)用戶的評(píng)分來獲得5件商品之間的相似度情況榕吼。單從表格中我們依然很難發(fā)現(xiàn)其中的聯(lián)系,因此我們選擇通過散點(diǎn)圖進(jìn)行展示勉失。
在散點(diǎn)圖中,X軸和Y軸分別是兩個(gè)用戶的評(píng)分原探。5件商品按照所獲的評(píng)分值分布在散點(diǎn)圖中乱凿。我們可以發(fā)現(xiàn),商品1,3,4在用戶A和B中有著近似的評(píng)分咽弦,說明這三件商品的相關(guān)度較高徒蟆。而商品5和2則在另一個(gè)群體中。
歐幾里德距離評(píng)價(jià)
在基于物品的協(xié)同過濾算法中型型,我們依然可以使用歐幾里德距離評(píng)價(jià)來計(jì)算不同商品間的距離和關(guān)系段审。以下是計(jì)算公式。
通過歐幾里德系數(shù)可以發(fā)現(xiàn)闹蒜,商品間的距離和關(guān)系與前面散點(diǎn)圖中的表現(xiàn)一致寺枉,商品1,3,4距離較近關(guān)系密切抑淫。商品2和商品5距離較近。
皮爾遜相關(guān)度評(píng)價(jià)
我們選擇使用皮爾遜相關(guān)度評(píng)價(jià)來計(jì)算多用戶與多商品的關(guān)系計(jì)算姥闪。下面是5個(gè)用戶對(duì)5件商品的評(píng)分表始苇。我們通過這些評(píng)分計(jì)算出商品間的相關(guān)度。
皮爾遜相關(guān)度計(jì)算公式
通過計(jì)算可以發(fā)現(xiàn)筐喳,商品1&2催式,商品3&4,商品3&5和商品4&5相似度較高避归。下一步我們可以依據(jù)這些商品間的相關(guān)度對(duì)用戶進(jìn)行商品推薦荣月。
2、為用戶提供基于相似物品的推薦
這里我們遇到了和基于用戶進(jìn)行商品推薦相同的問題梳毙,當(dāng)需要對(duì)用戶C基于商品3推薦商品時(shí)哺窄,需要一張新的商品與已有商品間的相似度列表。在前面的相似度計(jì)算中顿天,商品3與商品4和商品5相似度較高堂氯,因此我們計(jì)算并獲得了商品4,5與其他商品的相似度列表。
以下是通過計(jì)算獲得的新商品與已有商品間的相似度數(shù)據(jù)牌废。
加權(quán)排序推薦
這里是用戶C已經(jīng)購買過的商品4,5與新商品A,B,C直接的相似程度咽白。我們將用戶C對(duì)商品4,5的評(píng)分作為權(quán)重。對(duì)商品A,B,C進(jìn)行加權(quán)排序鸟缕。用戶C評(píng)分較高并且與之相似度較高的商品被優(yōu)先推薦晶框。
算法總結(jié)
優(yōu)點(diǎn):
(1)能夠過濾機(jī)器難以自動(dòng)內(nèi)容分析的信息,如藝術(shù)品懂从,音樂等授段。
(2)共用其他人的經(jīng)驗(yàn),避免了內(nèi)容分析的不完全或不精確番甩,并且能夠基于一些復(fù)雜的侵贵,難以表述的概念(如信息質(zhì)量、個(gè)人品味)進(jìn)行過濾缘薛。
(3)有推薦新信息的能力窍育。可以發(fā)現(xiàn)內(nèi)容上完全不相似的信息宴胧,用戶對(duì)推薦信息的內(nèi)容事先是預(yù)料不到的漱抓。可以發(fā)現(xiàn)用戶潛在的但自己尚未發(fā)現(xiàn)的興趣偏好恕齐。
(4)推薦個(gè)性化乞娄、自動(dòng)化程度高、能夠有效的利用其他相似用戶的回饋信息、加快個(gè)性化學(xué)習(xí)的速度仪或。
缺點(diǎn):
(1)系統(tǒng)開始時(shí)推薦質(zhì)量較差确镊;
(2)質(zhì)量取決于歷史數(shù)據(jù)集;
(3)稀疏性問題(Sparsity)溶其;
(4)系統(tǒng)延伸性問題(Scalability)骚腥;