1. 程式人生 > >推薦系統--相似性推薦

推薦系統--相似性推薦

相似性推薦

沒有歷史資料的支援,對於新使用者A,沒有他的歷史行為資料,在他點選了item-X的場景下,可以將與item-x最相似的item集合推薦給新使用者A

問題轉化為,如何用一種通用的方法,表達item之間的相似性

仍以電影推薦為例,新使用者A進入了《我不是潘金蓮》電影詳情頁,如何對A進行電影推薦?

  1. 對於一部電影《我不是潘金蓮》,假設他有10個屬性,則可以把它看作是一個十維空間的點:
    點N《我不是潘金蓮》
    {
    導演:馮小剛
    女主:范冰冰
    男主:郭濤
    女配:張嘉譯
    男配:大鵬
    型別:劇情
    地區:中國大陸
    語言:普通話
    日期:2016
    片長:140
    }

對於二維,三維中的點,可以直接用直線距離計算遠近,10維空間{導演,女主,男主,女配,男配,型別,地區,語言,日期,片長}中的兩個點的距離,需要重新定義一個距離函式,例如:
distance=f1(導演)+f2(女主)+…+f10(片長)
這個距離。就是每個維度貢獻分值的總和

函式可以自定義

分值可以這麼定義:
f1(導演)
{
如果兩部電影導演相同,得1分;
如果導演不同,得0分;
}

例如,有另一個點M《芳華》
{
導演:馮小剛
女主:苗苗
男主:黃軒
女配:NULL
男配:NULL
型別:劇情
地區:中國大陸
語言:普通話
日期:2017
片長:140
}

要計算M《芳華》與N《我不是潘金蓮》的距離
distance=f1(導演)+f2(女主)+…+f10(片長)=1+0+…+1=5

即:導演,型別,地區,語言,片長相同各得1分,其他維度不同得0分

遍歷電影全集中的10w部電影,就能找到與點N《我不是潘金蓮》最相近的3部電影,當用戶點選《我不是潘金蓮》的詳情頁時,直接推薦這3部最相近的電影即可