在咱們平常瀏覽各類網站的時候,常常會受到該網站或者應用的推薦,比較典型的例子就是在淘寶天貓上買東西的時候,點擊商品,搜索商品或者付款完成後,咱們會發現系統給咱們
列舉出了不少類似的物品,或者一些可能相關的物品。好比你要買牙膏,可能點了一款牙膏,它就給你推薦好多款牙膏,可能還會有牙刷,牙線等其餘東西。那麼咱們不由想問,這個推薦算法它是怎麼實現的呢?
咱們今天就來簡單的講講推薦算法。
首先咱們知道系統推薦的東西,會和咱們想要找的物品很類似,因此這個推薦算法的本質就是在於,根據你搜索點擊輸入的信息,去給你找到類似的東西。 這裏咱們先提出一個概念:類似度。 咱們先來看看二維的世界裏,類似度是怎麼定義的,也就是咱們這片博文要講的餘弦類似度。
算法
推廣到多維向量:a(a1,a2...an),b(b1,b2...bn)
咱們要用到的協同過濾算法和這個差很少:
摘自百度百科:協同過濾簡單來講是利用某興趣相投、擁有共同經驗之羣體的喜愛來推薦用戶感興趣的信息,我的經過合做的機制給予信息至關程度的迴應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息,迴應不必定侷限於特別感興趣的,特別不感興趣信息的紀錄也至關重要。
協同過濾又可分爲評比(rating)或者羣體過濾(social filtering)協同過濾以其出色的速度和健壯性,在全球互聯網領域煊赫一時。 這樣講乾乾的咱們看個例子,這裏咱們就是根據物品維度來協同過濾bash
咱們如今假設有用戶A,B,C,物品1,2,3,4, 5
行爲的權重:點擊1分, 搜索3分, 收藏6分, 付款10分
而後他們的行爲以下
用戶 物品 行爲
A 1 點擊
C 1 付款
A 2 搜索
C 5 點擊
B 2 收藏
B 3 點擊
B 1 收藏
C 3 點擊
A 1 收藏
A 4 點擊
B 2 點擊網站
1.先將用戶信息給聚合成一個用戶行爲矩陣spa
A B C
1 1點擊+1收藏 1收藏 1付款
2 1搜索 1收藏+1點擊
3 1點擊 1點擊
4 1點擊
5 1點擊
複製代碼
轉化爲數學矩陣3d
A B C
1 1+6 6 10
2 3 6+1
3 1 1
4 1
5 1
複製代碼
繼續轉化code
A B C
1 7 6 10
2 3 7 0
3 0 1 1
4 1 0 0
5 0 0 1
複製代碼
2.如今咱們就獲得了一個用戶和物品的評分矩陣,令它爲A,而後用咱們上面說的餘弦類似度算法計算出每一種物品間的類似程度。 好比物品1,2之間的類似度
而後咱們能夠獲得一張物品之間類似度的表格,令它爲Bcdn
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | 0 | 0.74 | 0.83 | 0.51 | 0.74 |
2 | 0.74 | 0 | 0.65 | 0.39 | 0 |
3 | 0.83 | 0.65 | 0 | 0 | 0.71 |
4 | 0.51 | 0.39 | 0 | 0 | 0 |
5 | 0.74 | 0 | 0.71 | 0 | 0 |
3.而後咱們經過物品類似度矩陣和以前用戶物品評分矩陣相乘得出用戶的推薦列表blog
0 | A | B | C |
---|---|---|---|
1 | 2.73 | 6.01 | 1.57 |
2 | 5.57 | 5.09 | 8.05 |
3 | 7.76 | 9.53 | 9.01 |
4 | 4.74 | 5.79 | 5.1 |
5 | 5.18 | 5.15 | 8.11 |
4.將計算結果去除用戶已經產生過操做的物品,獲得ci
0 | A | B | C |
---|---|---|---|
1 | 0 | 0 | 0 |
2 | 0 | 0 | 8.05 |
3 | 7.76 | 0 | 0 |
4 | 0 | 5.79 | 5.1 |
5 | 5.18 | 5.15 | 0 |
5.最後根據實際狀況選取須要的推薦物品,這裏咱們就只選評分最高的那個物品,獲得 用戶_商品_分數的數據 A_3_7.76
B_4_5.79
C_2_8.05
而後就能夠選出推薦的物品了~數學