1分钟了解相似性推荐
轉載自?1分鐘了解相似性推薦
前幾天聊的“協同過濾(Collaborative Filtering)”和“基于內容的推薦(Content-based Recommendation)”,都必須分析用戶的歷史行為數據(例如電影點擊數據,職位查看數據等),針對不同的用戶進行個性化推薦。如果系統沒有用戶的歷史行為數據積累,如何實施推薦呢?
?
今天接著用通俗的語言說說推薦算法中的“相似性推薦”。
?
什么是“相似性推薦”?
答:對于新用戶A,沒有ta的歷史行為數據,在ta點擊了item-X的場景下,可以將與item-X最相似的item集合推薦給新用戶A。
?
問題轉化為,如何用一種通用的方法,表達item之間的相似性。
?
仍以電影推薦為例,新用戶A進入了《我不是潘金蓮》電影詳情頁,如何對A進行電影推薦呢?
?
先看二維空間的點N,如何推薦與其最近的點?
答:可以用二維空間中,點與點之間的距離,表示點之間的遠近。
對于全集中的任何一個點M(xi, yi),它與點N(x1, y1)的距離:
distance = (x1-xi)^2 + (y1-yi)^2
所以,只要計算全集中所有點與N的距離,就能計算出與它最近的3個點。
?
再看三維空間的點N,如何推薦與其最近的點?
答:可以用三維空間中,點與點之間的距離,表示點之間的遠近。
對于全集中的任何一個點M(xi, yi, zi),它與點N(x1, y1, z1)的距離:
distance = (x1-xi)^2 + (y1-yi)^2 + (z1-zi)^2
所以,只要計算全集中所有點與N的距離,就能計算出與它最近的3個點。
?
循序漸進,對于一部電影《我不是潘金蓮》,假設它有10個屬性,則可以把它看做一個十維空間中的點:
點N《我不是潘金蓮》
{
導演:馮小剛
女主:范冰冰
男主:郭濤
女配:張嘉譯
男配:大鵬
類型:劇情
地區:中國大陸
語言:普通話
日期:2016
片長:140
}
?
對于電影全集中的任何一部電影,都可以計算與點N《我不是潘金蓮》之間的距離。二維三維中的點,可以用直線距離計算遠近,10維空間{導演,?女主,?男主,?女配,?男配,?類型,?地區,?語言,?日期,?片長}中的兩個點的距離,需要重新定義一個距離函數,例如:
distance = f1(導演) + f2(女主) + … +f10(片長)
這個距離,通俗的解釋,就是每個維度貢獻分值的總和。
?
分值可以這么定義:
f1(導演){
?????????如果兩部電影導演相同,得1分;
?????????如果導演不同,得0分;
}
?
例如,現在10維空間中,有另一個點M《芳華》
{
導演:馮小剛
女主:苗苗
男主:黃軒
女配:NULL
男配:NULL
類型:劇情
地區:中國大陸
語言:普通話
日期:2017
片長:140
}
?
要計算點M《芳華》與點N《我不是潘金蓮》的距離,代入distance距離計算公式:
distance = f1(導演) + f2(女主) + … +f10(片長)
???????? =1 + 0 + … + 1
???????? =5
即:導演、類型、地區、語言、片長相同各得1分,其他維度不同得0分。
?
遍歷電影全集中的10w部電影,就能找到與點N《我不是潘金蓮》最相近的3部電影,當用戶點擊《我不是潘金蓮》的詳情頁時,直接推薦這3部最相近的電影即可。
?
相似性推薦,原理大致如上,要說明的是:
由于沒有用戶歷史行為積累,不是個性化推薦,所以所有用戶的推薦結果都是相同的
一般來說,距離公式確實是線性的
一般來說,每個維度的權重不一樣
這個線性公式,以及維度的權重,都可以通過機器學習訓練出來
?
相似性推薦,希望這1分鐘,大家能有收獲。
總結
以上是生活随笔為你收集整理的1分钟了解相似性推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hostomy-有目的的网络托管
- 下一篇: 1分钟了解基于内容的推荐,pm又懂了