產(chǎn)品數(shù)學(xué)課:如何理解個(gè)性化推薦里的數(shù)學(xué)原理?
6月份是高考以及畢業(yè)的月份,這種時(shí)候特別適合老人家懷舊。離開課堂三年,課本上學(xué)的知識(shí)幾乎都還給了老師。寫這篇文章即是加深自己對(duì)個(gè)性化推薦的理解,也想趁著高考時(shí)回顧下高(中)數(shù)(學(xué))。
一、什么是個(gè)性化推薦?
個(gè)性化推薦,是系統(tǒng)的智能推薦。為什么豆瓣的私人FM特別符合我們的音樂品味,又為什么電商應(yīng)用總是知道我們想買什么?
個(gè)性化推薦的原理使用較多的是這3種方式:基于內(nèi)容的推薦、基于用戶的協(xié)同過濾、基于物品的協(xié)同過濾
這3種推薦方式的核心則是計(jì)算相似度。
二、這三種推薦方式是什么?
介紹相似度的計(jì)算之前,先為大家簡(jiǎn)單介紹一下這三種推薦方式。
2.1?基于內(nèi)容的推薦(Content-Based Recommendation)
表1-內(nèi)容相似度舉例
在上表表1的對(duì)比中,song 1與song 2,在風(fēng)格、發(fā)行年份、歌手地區(qū)及內(nèi)容上是相近的或者是相同的,這兩首歌的相似度更高。
song 3僅有發(fā)行年份與前面兩首歌匹配,其他則完全不匹配,song 3與前兩者是完全不相似的。
基于內(nèi)容的推薦,本質(zhì)是“你喜歡某一事物,給你推薦近似的事物?!?/strong>
你喜歡song 1,系統(tǒng)為你推薦song2。
2.2?基于用戶的協(xié)同過濾(User-based CF)
表2-用戶相似度舉例
基于用戶的協(xié)同過濾,通俗的解釋是:和你相似的用戶還買了什么?
我們會(huì)先找到相似的用戶,然后找到此類用戶喜歡的且目標(biāo)用戶未接觸的物品,將其推薦給目標(biāo)用戶。
上表表2中,我們先找到相似的User 1和User 2(下文簡(jiǎn)稱U1、U2),他們都購(gòu)買了商品A、C且未購(gòu)買商品B。
然后將U1買過的且U2沒買過的商品D,推薦給U2。
U3則僅購(gòu)買商品B,其他的都未購(gòu)買,推薦系統(tǒng)會(huì)認(rèn)為他與U1、U2沒有什么關(guān)聯(lián),所以我們不會(huì)對(duì)U3推薦U1和U2購(gòu)買的商品。
2.3?基于物品的協(xié)同過濾(Item-Based CF)
基于物品的協(xié)同過濾,以物品為核心,它是對(duì)基于用戶的協(xié)同過濾的一種改良。
理解為:“買了這款商品的用戶,還買過什么?!?/strong>
圖2-京東圖書首頁(yè)
前陣子我購(gòu)買了《推薦系統(tǒng)實(shí)踐》一書,在上圖中,京東給我推薦了產(chǎn)品相關(guān)書籍《幕后產(chǎn)品》以及數(shù)據(jù)相關(guān)書籍《商業(yè)智能數(shù)據(jù)分析》。
當(dāng)然萬一我是半個(gè)研發(fā)呢,所以給我又推薦了一本《深入淺出Prometheus》。
2.4?三種推薦方式的區(qū)別
理解完這三種推薦方式,我們來看看他們之間的區(qū)別。
1)基于物品的協(xié)同過濾與基于內(nèi)容的推薦
內(nèi)容和物品都是事物的一種,2者似乎都是在計(jì)算物品的相似性?看起來是相同的。
但實(shí)際上基于內(nèi)容的推薦,更傾向于兩件事物是接近的、相似的,與用戶的行為無關(guān)。而基于物品的協(xié)同過濾則與事物是否相似關(guān)系較小,更多與用戶行為有關(guān),是有順承關(guān)系的。
2)基于物品的協(xié)同過濾與基于用戶的協(xié)同過濾
基于用戶的協(xié)同過濾,是先找相似的人,再找相似的人喜歡的物品。
基于物品的協(xié)同過濾,則是找到和某個(gè)物品相關(guān)的物品。
當(dāng)物品數(shù)量、特征相對(duì)固定的情況下,更多采用基于物品的協(xié)同過濾。因?yàn)?strong>相對(duì)穩(wěn)定一定程度上意味著不需要實(shí)時(shí)計(jì)算,通過離線的運(yùn)算,對(duì)服務(wù)器的壓力就很小了。
當(dāng)物品和用戶量都非常大,這樣會(huì)造成購(gòu)買的物品重疊性較低,我們很難才能找到相似的用戶,Item-Based CF就不適用了。
而在如內(nèi)容類媒體,微博、新聞網(wǎng)站等,物品(內(nèi)容)的數(shù)量、特征都在不斷的變化,去計(jì)算物品的相似度性能消耗反而更大了。而新聞媒體更傾向于群體的喜好,這個(gè)時(shí)候使用User-Based CF也更加的合適。
初步了解完這三種推薦方式,我們便回到它們的核心:相似度的計(jì)算。
三、相似度怎么計(jì)算
相似度常見的計(jì)算方式是余弦相似度、歐幾里德距離、Jaccard相關(guān)系數(shù)。
下文則是對(duì)余弦相似度及歐幾里德距離的理解。
數(shù)學(xué)課正式開始(敲黑板)。
圖3-多舉栗子掛柯南
3.1?余弦相似度
圖4-余弦相似度公式
最開始我看到這個(gè)公式時(shí),有種《個(gè)性化推薦:看到公式就放棄》的感覺??墒亲鳛橐幻懂a(chǎn)品汪,我覺得,我還是要搶救一下。
于是我試著將公式拆解,
similarity:相似性;類似性。
cos(θ):在直角三角形中=領(lǐng)邊/斜邊;在空間中=空間中兩個(gè)向量夾角的余弦值。
圖5-直角三角形回憶
連起來說,相似度=空間中兩個(gè)向量夾角的余弦值。
在線性代數(shù)上:“向量是多維空間中從原點(diǎn)出發(fā),具有大小及方向的有向線段?!?/strong>
當(dāng)向量的夾角越小,方向則越接近。代表著內(nèi)容、用戶、物品的向量方向越接近,則他們?cè)较嗨啤?/p>
而根據(jù)圖3的公式計(jì)算,夾角越小,cos(θ)越趨近于1。所以前輩們將余弦值當(dāng)成量化相似度的手段,當(dāng)余弦值趨近于1,二者則是相似的,趨近-1的看做是不相似的。
可是,向量為什么能夠代表內(nèi)容,代表用戶呢?
圖6-向量的夾角
向量代表著在N維空間中的方向,它的坐標(biāo)表示法是:α=(x,y),這個(gè)表示法是指向量α在x軸方向以及y軸方向的坐標(biāo)。不準(zhǔn)確但通俗的理解為:在x軸方向的趨同度以及y軸方向的趨同度。
圖7-向量類比舉例
換個(gè)說法,不是向量,x軸和y軸。而是等于歌曲,發(fā)行年份和風(fēng)格近似度。
song2=(95%,1997),即song2這首歌發(fā)行年份在1997年,歌曲風(fēng)格與Brit-Pop的匹配度有95%。
圖8-三維向量舉例
理解了2維的向量,我想理解3維、多維會(huì)更加容易。
那么回到剛剛的問題:“向量為什么能夠代表內(nèi)容,代表用戶呢?”
從剛剛的例子我們可以推導(dǎo)出,內(nèi)容或者用戶本質(zhì)上是在不同維度擁有相關(guān)性的坐標(biāo)
組成內(nèi)容、用戶的維度絕對(duì)不止于3維,當(dāng)維度越多,我們就會(huì)被量化的越徹底,相似度會(huì)被計(jì)算的越準(zhǔn)確。
在上文介紹余弦相似度的時(shí)候,一直在強(qiáng)調(diào)一個(gè)詞:方向。余弦相似度注重維度之間的差異,不注重?cái)?shù)值上的差異。這其實(shí)也是余弦相似度不足的地方。
表3-余弦相似度的不足
表3中,User 1,給Blur樂隊(duì)和Oasis樂隊(duì)分別評(píng)了1顆、2顆星,而User 2則是評(píng)了4顆、5顆星。
圖9-表3向量表示
將其在二維空間中表示,我們會(huì)發(fā)現(xiàn),代表User 1和User 2的夾角非常的小,用余弦相似度來計(jì)算則會(huì)發(fā)現(xiàn)余弦值等于0.97,這兩名用戶會(huì)是非常相似的,這真的太糟糕了。
而對(duì)于強(qiáng)調(diào)數(shù)值差異的事件相似度,我們要用什么方法來計(jì)算呢?
一種方法是,利用維度間均值是調(diào)整余弦的相似度,User 1,User 2對(duì)兩支樂隊(duì)評(píng)分的平均值是3。
我們將2名用戶的評(píng)分減去3,則會(huì)變成User 1(-2,-1),User 2(1,2),再次通過余弦相似度計(jì)算,得出-0.8,這個(gè)時(shí)候的差異值就非常大了。
另一種方法,則是利用歐幾里德距離。
3.2?歐幾里德距離
圖10-歐幾里德距離
歐幾里德距離,它也叫歐式距離。上文我們提到的向量,也稱歐幾里德向量。
這個(gè)公式實(shí)際上是二維空間中兩點(diǎn)的距離,多維空間中向量的距離。距離越小,則差異越小,越接近。
由于我們習(xí)慣相似度與1進(jìn)行類比,越接近于1相似度越高。所以前輩們對(duì)歐式距離進(jìn)行了歸一化處理,通過將函數(shù)值加1,并取其倒數(shù)的方法來構(gòu)造歐幾里得相似度函數(shù)。
其中加1的目的則是為了避免分母為0。
圖11-歐幾里德相似度函數(shù)
將上文表3的值代入歐幾里德相似度函數(shù),SimDistance≈0.2,那我們也能夠得出正確的結(jié)論,User 1以及User 2并不相似。
歐氏距離體現(xiàn)事件數(shù)值的差異,如:GMV的增長(zhǎng)金額,用戶的消費(fèi)頻次等。類似GMV這類數(shù)字,很可能增速趨近,但是增長(zhǎng)的金額卻大不相同。
歐氏距離和余弦相似度分別適用于不同的數(shù)據(jù)分析模型,歐氏距離適用于數(shù)值差異敏感的推薦,而余弦相似度用于方向上的差異,更多用于興趣的相似度及差異。
最后
以上,是對(duì)個(gè)性化推薦一部分筆記,在個(gè)性化推薦落實(shí)到應(yīng)用層面,其實(shí)還有冷啟動(dòng)、過濾、加權(quán)以及融合等等。這方面有更專業(yè)的大佬已經(jīng)做了許多的總結(jié),就不多獻(xiàn)丑了。
希望這篇筆記能讓大家有所收獲。如有不正之處,歡迎大家指出以及交流。
本文由 @WISE原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理?,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議
看到公式真的有點(diǎn)頭疼。。
當(dāng)時(shí)重新?lián)炱饋泶_實(shí)花了些時(shí)間。 ?
前幾天剛買的《推薦系統(tǒng)實(shí)踐》,各種代碼和公式文科生表示很無奈。期待大佬進(jìn)一步講解
客氣啦~那我有空看看寫個(gè)續(xù)集嘻嘻。