今天突然想到做一個(gè)小的實(shí)用性推薦系統(tǒng),其目的主要是為了“檢驗(yàn)真理”。
如今推薦系統(tǒng)到處都有,netflix、youtube,淘寶,京東,當(dāng)當(dāng) ,亞馬遜,可以說成了電商平臺(tái)不可或缺的功能。當(dāng)然,我們用的網(wǎng)易云音樂,豆瓣電影等也有推薦。因?yàn)橛?/2原則,即80%的銷售額依賴于20%的熱門品牌。
推薦系統(tǒng)組成 = 前端展示頁面 + 后臺(tái)日志系統(tǒng) + 推薦算法系統(tǒng)
前端展示當(dāng)然是給用戶看的結(jié)果
日志系統(tǒng)主要是記錄用戶行為,并按照一定格式生成一個(gè)數(shù)據(jù)集
推薦算法是推薦與用戶喜歡的物品類似的物品
查閱資料發(fā)現(xiàn),傳統(tǒng)的推薦系統(tǒng)原理其實(shí)蠻簡單的。下面按照我自己的理解來闡述下,簡單易懂。
最經(jīng)典的例子就是用戶電影評(píng)分,網(wǎng)上大把相關(guān)的博客和技術(shù)文章。
咱們要實(shí)現(xiàn)的目標(biāo)是找到這幾對(duì)關(guān)系,電影->電影,電影->用戶,用戶->電影,用戶->用戶
用戶 ? ? ?電影1 ? ? 電影2 ? ? 電影3 ? ?電影4
小明: ? ?1 ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? 0 ? ? ? ? ? ? 4
小紅: ? ?4 ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ?2 ? ? ? ? ? ?0
小李: ? ?0 ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ?3 ? ? ? ? ? ? 4
這里用0-9表示用戶對(duì)電影的評(píng)分,當(dāng)然假設(shè)評(píng)分為0的表示用戶還未看過。
現(xiàn)在要給小明推薦一部電影,需要從他看過并給出評(píng)分的電影中找到相關(guān)聯(lián)的,也就是計(jì)算電影2與電影1、電影4的相似度,以及電影3與電影1、電影4的相似度。
相似度的計(jì)算最簡單的是歐氏距離
A(X1,Y1),B(X2,Y2) ? ?則A、B的距離 d = sqrt((X1-X2)^2+(Y1-Y2)^2)
電影2與電影1的相似度為 similar1 = 1/sqrt(1+(0-1)^2+(0-4)^2+(0-0)^2)
電影2與電影4的相似度為 similar1 = 1/sqrt(1+(0-4)^2+(0-0)^2+(0-4)^2)
……
這里+1和取倒數(shù)是因?yàn)橐獨(dú)w一化成0-1的值 當(dāng)距離越大時(shí),相似度越接近0,當(dāng)距離為0時(shí),相似度為1
用相似度乘以評(píng)分可以得到一個(gè)帶權(quán)的值,再對(duì)它排序,就可以得到真正想要的相似物品。