熱門:瘦小腿瘦小腿瘦小腿

  1. 首頁
  2. 科技日報
  3. 科技

產品數學課:如何理解個性化推薦裡的數學原理?

  • 小白兔

  • 2019-06-15 12:52:21

6月份是高考以及畢業的月份,這種時候特別適合老人家懷舊。離開課堂三年,課本上學的知識幾乎都還給了老師。寫這篇文章即是加深自己對個性化推薦的理解,也想趁著高考時回顧下高(中)數(學)。

一、什麼是個性化推薦?

圖1

個性化推薦,是系統的智慧推薦。為什麼豆瓣的私人FM特別符合我們的音樂品味,又為什麼電商應用總是知道我們想買什麼?

個性化推薦的原理使用較多的是這3種方式:基於內容的推薦、基於使用者的協同過濾、基於物品的協同過濾

這3種推薦方式的核心則是計算相似度

二、這三種推薦方式是什麼?介紹相似度的計算之前,先為大家簡單介紹一下這三種推薦方式。

2.1 基於內容的推薦(Content-Based Recommendation)

表1-內容相似度舉例

在上表表1的對比中,song 1與song 2,在風格、發行年份、歌手地區及內容上是相近的或者是相同的,這兩首歌的相似度更高。

song 3僅有發行年份與前面兩首歌匹配,其他則完全不匹配,song 3與前兩者是完全不相似的。

基於內容的推薦,本質是“你喜歡某一事物,給你推薦近似的事物。”

你喜歡song 1,系統為你推薦song2。

2.2 基於使用者的協同過濾(User-based CF)

表2-使用者相似度舉例

基於使用者的協同過濾,通俗的解釋是:和你相似的使用者還買了什麼?

我們會先找到相似的使用者,然後找到此類使用者喜歡的且目標使用者未接觸的物品,將其推薦給目標使用者。

上表表2中,我們先找到相似的User 1和User 2(下文簡稱U1、U2)他們都購買了商品A、C且未購買商品B。

然後將U1買過的且U2沒買過的商品D推薦給U2。

U3則僅購買商品B,其他的都未購買,推薦系統會認為他與U1、U2沒有什麼關聯,所以我們不會對U3推薦U1和U2購買的商品。

2.3 基於物品的協同過濾(Item-Based CF)基於物品的協同過濾,以物品為核心,它是對基於使用者的協同過濾的一種改良

理解為:“買了這款商品的使用者,還買過什麼。”

圖2-京東圖書首頁

前陣子我購買了《推薦系統實踐》一書,在上圖中,京東給我推薦了產品相關書籍《幕後產品》以及資料相關書籍《商業智慧資料分析》。

當然萬一我是半個研發呢,所以給我又推薦了一本《深入淺出Prometheus》。

2.4 三種推薦方式的區別理解完這三種推薦方式,我們來看看他們之間的區別。

1)基於物品的協同過濾與基於內容的推薦

內容和物品都是事物的一種,2者似乎都是在計算物品的相似性?看起來是相同的。

但實際上基於內容的推薦,更傾向於兩件事物是接近的、相似的與使用者的行為無關。而基於物品的協同過濾則與事物是否相似關係較小,更多與使用者行為有關,是有順承關係的。

2)基於物品的協同過濾與基於使用者的協同過濾

基於使用者的協同過濾,是先找相似的人,再找相似的人喜歡的物品。

基於物品的協同過濾,則是找到和某個物品相關的物品。

當物品數量、特徵相對固定的情況下,更多采用基於物品的協同過濾因為相對穩定一定程度上意味著不需要實時計算,通過離線的運算,對伺服器的壓力就很小了。

當物品和使用者量都非常大,這樣會造成購買的物品重疊性較低,我們很難才能找到相似的使用者,Item-Based CF就不適用了。

而在如內容類媒體,微博、新聞網站等,物品(內容)的數量、特徵都在不斷的變化,去計算物品的相似度效能消耗反而更大了。而新聞媒體更傾向於群體的喜好,這個時候使用User-Based CF也更加的合適。

初步瞭解完這三種推薦方式,我們便回到它們的核心:相似度的計算。

三、相似度怎麼計算相似度常見的計算方式是餘弦相似度、歐幾里德距離、Jaccard相關係數。

下文則是對餘弦相似度歐幾里德距離的理解。

數學課正式開始(敲黑板)。

圖3-多舉栗子掛柯南

3.1 餘弦相似度

圖4-餘弦相似度公式

最開始我看到這個公式時,有種《個性化推薦:看到公式就放棄》的感覺。可是作為一枚產品汪,我覺得,我還是要搶救一下。

於是我試著將公式拆解,

similarity:相似性;類似性。

cos(θ):在直角三角形中=領邊/斜邊;在空間中=空間中兩個向量夾角的餘弦值。

圖5-直角三角形回憶

連起來說,相似度=空間中兩個向量夾角的餘弦值。

線上性代數上:“向量是多維空間中從原點出發,具有大小及方向的有向線段。”

向量的夾角越小,方向則越接近。代表著內容、使用者、物品的向量方向越接近,則他們越相似。

而根據圖3的公式計算,夾角越小,cos(θ)越趨近於1。所以前輩們將餘弦值當成量化相似度的手段,當餘弦值趨近於1,二者則是相似的,趨近-1的看做是不相似的。

可是,向量為什麼能夠代表內容,代表使用者呢?

圖6-向量的夾角

向量代表著在N維空間中的方向,它的座標表示法是:α=(x,y),這個表示法是指向量α在x軸方向以及y軸方向的座標。不準確但通俗的理解為:在x軸方向的趨同度以及y軸方向的趨同度。

圖7-向量類比舉例

換個說法,不是向量,x軸和y軸。而是等於歌曲,發行年份和風格近似度。

song2=(95%,1997),即song2這首歌發行年份在1997年,歌曲風格與Brit-Pop的匹配度有95%。

圖8-三維向量舉例

理解了2維的向量,我想理解3維、多維會更加容易。

那麼回到剛剛的問題:“向量為什麼能夠代表內容,代表使用者呢?”

從剛剛的例子我們可以推匯出,內容或者使用者本質上是在不同維度擁有相關性的座標

組成內容、使用者的維度絕對不止於3維,當維度越多,我們就會被量化的越徹底,相似度會被計算的越準確。

在上文介紹餘弦相似度的時候,一直在強調一個詞:方向。餘弦相似度注重維度之間的差異,不注重數值上的差異。這其實也是餘弦相似度不足的地方。

表3-餘弦相似度的不足

表3中,User 1,給Blur樂隊和Oasis樂隊分別評了1顆、2顆星,而User 2則是評了4顆、5顆星。

圖9-表3向量表示

將其在二維空間中表示,我們會發現,代表User 1和User 2的夾角非常的小,用餘弦相似度來計算則會發現餘弦值等於0.97,這兩名使用者會是非常相似的,這真的太糟糕了。

對於強調數值差異的事件相似度,我們要用什麼方法來計算呢?

一種方法是,利用維度間均值是調整餘弦的相似度,User 1,User 2對兩支樂隊評分的平均值是3。

我們將2名使用者的評分減去3,則會變成User 1(-2,-1),User 2(1,2),再次通過餘弦相似度計算,得出-0.8,這個時候的差異值就非常大了。

另一種方法,則是利用歐幾里德距離。

3.2 歐幾里德距離

圖10-歐幾里德距離

歐幾里德距離,它也叫歐式距離。上文我們提到的向量,也稱歐幾里德向量。

這個公式實際上是二維空間中兩點的距離,多維空間中向量的距離。距離越小,則差異越小,越接近。

由於我們習慣相似度與1進行類比,越接近於1相似度越高。所以前輩們對歐式距離進行了歸一化處理,通過將函式值加1,並取其倒數的方法來構造歐幾里得相似度函式。

其中加1的目的則是為了避免分母為0。

圖11-歐幾里德相似度函式

將上文表3的值代入歐幾里德相似度函式,SimDistance≈0.2,那我們也能夠得出正確的結論,User 1以及User 2並不相似。

歐氏距離體現事件數值的差異,如:GMV的增長金額,使用者的消費頻次等。類似GMV這類數字,很可能增速趨近,但是增長的金額卻大不相同。

歐氏距離和餘弦相似度分別適用於不同的資料分析模型,歐氏距離適用於數值差異敏感的推薦,而餘弦相似度用於方向上的差異,更多用於興趣的相似度及差異。

最後以上,是對個性化推薦一部分筆記,在個性化推薦落實到應用層面,其實還有冷啟動、過濾、加權以及融合等等。這方面有更專業的大佬已經做了許多的總結,就不多獻醜了。

希望這篇筆記能讓大家有所收穫。如有不正之處,歡迎大家指出以及交流。

本文由 @WISE原創釋出於人人都是產品經理 ,未經許可,禁止轉載。

題圖來自Unsplash,基於CC0協議

推薦您的文章

其他文章