推薦系統(tǒng)是目前非常流行的機(jī)器學(xué)習(xí)應(yīng)用。
特征值對機(jī)器學(xué)習(xí)是非常重要的,而對特征值的選擇會直接影響到算法的好壞,推薦系統(tǒng)能夠自動幫助學(xué)習(xí)一些優(yōu)良的特征值,幫助更好的實現(xiàn)算法。
舉例說明
以電影評分和推薦電影為例
先定義幾個變量:
=用戶人數(shù)
=電影數(shù)量
表示用戶
評價了電影
= 用戶
對電影
的評分,只有在
的時候才會有
=用戶
評價過的電影數(shù)量
首先電影評分分為0-5星。我們有4個用戶和5部電影:
| 電影 | Alice(1) | Bob(2) | Carol(3) | Dave(4) |
|---|---|---|---|---|
| Love at last(1) | 5 | 5 | 0 | 0 |
| Romance forever(2) | 5 | ? | ? | 0 |
| Cute puppies of love(3) | ? | 4 | 0 | ? |
| Nonstop car chases(4) | 0 | 0 | 5 | 4 |
| Swords vs. karate(5) | 0 | 0 | 5 | ? |
上表中,電影
為愛情片,
為動作片,打問號的表示沒有評分。
上面的表格中可以看到Alice和Bob對愛情電影評分很高,對動作片評分很低,Carol和Dave則相反。
現(xiàn)在給每部電影添加兩個特征值:表示浪漫指數(shù),
表示動作指數(shù):
| 電影 | Alice(1) | Bob(2) | Carol(3) | Dave(4) |
|
|
|---|---|---|---|---|---|---|
| Love at last(1) | 5 | 5 | 0 | 0 | 0.9 | 0 |
| Romance forever(2) | 5 | ? | ? | 0 | 1 | 0.01 |
| Cute puppies of love(3) | ? | 4 | 0 | ? | 0.99 | 0 |
| Nonstop car chases(4) | 0 | 0 | 5 | 4 | 0.1 | 1 |
| Swords vs. karate(5) | 0 | 0 | 5 | ? | 0 | 1 |
用矩陣的形式來表示每個電影的特征值:
想要預(yù)測問號的值,這是一個線性回歸的問題。
對于用戶來說,要預(yù)測他對電影
的評分值,應(yīng)用線性回歸的模型,當(dāng)通過算法獲得來一個參數(shù)
,通過這個參數(shù),計算
,即可預(yù)測出評分值。
假設(shè)要預(yù)測用戶1對電影3的評分:用戶1的參數(shù),計算他對電影3的評分:
,即可預(yù)測他的評分為5星。
下面就是對每個用戶,應(yīng)用線性回歸模型即可預(yù)測出他們對電影的評分。
用公式來表示一下:
對一個用戶,他的線性回歸公式:
這就是常用的線性回歸模型。
下面在公式上約去常數(shù)項,這并不影響最小化代價函數(shù):
然后計算所有用戶加在一起的代價函數(shù)公式:
對該公式應(yīng)用梯度下降求最小值:
當(dāng):
當(dāng):
協(xié)同過濾(Collaborative Filtering)
在一個電影網(wǎng)站中,很難去獲得一部電影的浪漫指數(shù)和動作指數(shù)是多少,這個參數(shù)很難人為的去判斷。為了解決這個問題,可以使用特征尋找器(feature finders.)
現(xiàn)在我們不知道電影的特征值是多少,,但是我們通過某種途徑得知用戶對各種類型電影的喜愛程度,是喜歡動作電影還是喜歡愛情電影。
表示喜歡愛情電影的參數(shù),
表示喜歡動作電影的參數(shù)
| 電影 | Alice(1) | Bob(2) | Carol(3) | Dave(4) |
|---|---|---|---|---|
| Love at last(1) | 5 | 5 | 0 | 0 |
| Romance forever(2) | 5 | ? | ? | 0 |
| Cute puppies of love(3) | ? | 4 | 0 | ? |
| Nonstop car chases(4) | 0 | 0 | 5 | 4 |
| Swords vs. karate(5) | 0 | 0 | 5 | ? |
|
|
5 | 5 | 0 | 0 |
|
|
0 | 0 | 5 | 5 |
用矩陣的形式來表示每個用戶的關(guān)于電影特征的參數(shù)值:
對一個電影,要獲得它的特征值
,也可以看作一個線性回歸問題。
同樣的預(yù)測函數(shù)可以寫作:
那么對一個電影,它的代價函數(shù)則是:
然后計算所有電影加在一起的代價函數(shù)公式:
同樣的應(yīng)用梯度下降來最小化代價函數(shù)。
通過上面的說明:
當(dāng)我們有電影的特征值時,可以預(yù)測出用戶的屬性
;當(dāng)有用戶的屬性
可以預(yù)測出電影的特征值
,這樣交替運(yùn)行,就可以使系統(tǒng)更加完善。這就是基本的協(xié)同過濾算法。
算法公式
將上面的兩個式子合并,同時最小化特征值和參數(shù):
PS:該式子中的和
都是n維的向量,它們的偏差單元
和
都被移除了。
算法步驟
- 隨機(jī)初始化
一個很小的值。
- 使用梯度下降算法來最小化代價函數(shù)
。
這樣下來可以對用戶尚未評分的電影,通過預(yù)測評分大小來推薦電影。
對用戶已評分的電影,可以根據(jù)評分和用戶的屬性參數(shù)來獲得更好的電影特征值。
其他應(yīng)用
協(xié)同過濾算法還可以用來推薦相似的產(chǎn)品,假如當(dāng)用戶看了一個電影之后,可以判斷其他電影和該電影的相似度來推薦,相似度的公式為
,當(dāng)該式子越小時相似度越高,就可以據(jù)此來推薦電影。
其他事項
在上述電影網(wǎng)站中,除了上面的四個用戶,又有一個新用戶加入,他沒有對任何電影評分,要預(yù)測他對某一個電影的評分,通常采用的方法取評過該電影評分的平均值來當(dāng)作預(yù)測值。
轉(zhuǎn)載自:
https://codeeper.com/2020/02/07/tech/machine_learning/recommender_system.html