產品數學課:如何理解個性化推薦里的數學原理?
6月份是高考以及畢業的月份,這種時候特別適合老人家懷舊。離開課堂三年,課本上學的知識幾乎都還給了老師。寫這篇文章即是加深自己對個性化推薦的理解,也想趁著高考時回顧下高(中)數(學)。
一、什么是個性化推薦?
個性化推薦,是系統的智能推薦。為什么豆瓣的私人FM特別符合我們的音樂品味,又為什么電商應用總是知道我們想買什么?
個性化推薦的原理使用較多的是這3種方式:基于內容的推薦、基于用戶的協同過濾、基于物品的協同過濾
這3種推薦方式的核心則是計算相似度。
二、這三種推薦方式是什么?
介紹相似度的計算之前,先為大家簡單介紹一下這三種推薦方式。
2.1?基于內容的推薦(Content-Based Recommendation)
表1-內容相似度舉例
在上表表1的對比中,song 1與song 2,在風格、發行年份、歌手地區及內容上是相近的或者是相同的,這兩首歌的相似度更高。
song 3僅有發行年份與前面兩首歌匹配,其他則完全不匹配,song 3與前兩者是完全不相似的。
基于內容的推薦,本質是“你喜歡某一事物,給你推薦近似的事物?!?/strong>
你喜歡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-余弦相似度公式
最開始我看到這個公式時,有種《個性化推薦:看到公式就放棄》的感覺??墒亲鳛橐幻懂a品汪,我覺得,我還是要搶救一下。
于是我試著將公式拆解,
similarity:相似性;類似性。
cos(θ):在直角三角形中=領邊/斜邊;在空間中=空間中兩個向量夾角的余弦值。
圖5-直角三角形回憶
連起來說,相似度=空間中兩個向量夾角的余弦值。
在線性代數上:“向量是多維空間中從原點出發,具有大小及方向的有向線段?!?/strong>
當向量的夾角越小,方向則越接近。代表著內容、用戶、物品的向量方向越接近,則他們越相似。
而根據圖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協議
看到公式真的有點頭疼。。
當時重新撿起來確實花了些時間。 ?
前幾天剛買的《推薦系統實踐》,各種代碼和公式文科生表示很無奈。期待大佬進一步講解
客氣啦~那我有空看看寫個續集嘻嘻。