【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统...
Lecture 16 Recommender Systems 推薦系統
16.1 問題形式化 Problem Formulation
在機器學習領域,對于一些問題存在一些算法, 能試圖自動地替你學習到一組優良的特征。通過推薦系統(recommender systems),將領略一小部分特征學習的思想。
假使有 5 部電影,3部愛情片、2部動作片。? 4 個用戶為其中的部分電影打了分。現在希望構建一個算法,預測每個人可能給沒看過的電影打多少分,以此作為推薦的依據。
下面引入一些標記:
nu?????? 代表用戶的數量
nm????? 代表電影的數量
r(i, j)?? 如果用戶 j 給電影 i 評過分則 r(i, j) = 1
y(i,j)??? 代表用戶 j 給電影 i 的評分 (注:這里 i 和 j 不要搞反)
mj?????? 代表用戶 j 評過分的電影的總數
16.2 基于內容的推薦系統 Content Based Recommendations
1 定義
在一個基于內容的推薦系統算法中,假設對于我們希望推薦的東西有一些數據,是這些東西的特征。
現在假設每部電影都有兩個特征, x1 代表電影的浪漫程度,x2 代表電影的動作程度。
則每部電影都有一個特征向量,如 x(1)是第一部電影的特征向量,為[0.9 0]。
下面我們采用線性回歸模型,針對每一個用戶都訓練一個線性回歸模型,如θ(1) 是第一個用戶的模型的參數。 于是有:
θ(j)?? 用戶 j 的參數向量
x(i)?? 電影 i 的特征向量
對于用戶 j 和電影 i,我們預測其評分為:(θ(j))Tx(i)
2 代價函數
針對用戶 j,該線性回歸模型的代價為預測誤差的平方和,加上正則化項:
其中 i: r(i, j) 表示我們只計算那些用戶 j 評過分的電影。在一般的線性回歸模型中,誤差項和正則項應該都是乘以1/2m,在這里我們將m去掉,且不對方差項θ0進行正則化處理。
上面的代價函數只是針對一個用戶的,為了學習所有用戶,我們將所有用戶的代價函數求和:
如果我們要用梯度下降法來求解最優解,我們計算代價函數的偏導數后得到梯度下降的更新公式為:
16.3 協同過濾 Collaborative Filtering
在之前的基于內容的推薦系統中,使用電影的特征,訓練出了每一個用戶的參數。相反地,如果擁有用戶的參數,可以學習得出電影的特征。
但是如果既沒有用戶的參數,也沒有電影的特征,這兩種方法都不可行了。可以使用協同過濾算法,同時學習這兩者。
優化目標便改為同時針對x和θ進行。是一個:預測 θ,再反過來預測 x, 再預測 θ,再預測 x 的迭代過程。
16.4 協同過濾算法 Collaborative Filtering Algorithm
協同過濾的代價函數定義為:
對代價函數求偏導數:
(注:在協同過濾從算法中,通常不使用方差項,如果需要的話,算法會自動學得。)
協同過濾算法使用步驟如下:
1. 初始 x 和 θ 為一些隨機小值
2. 使用梯度下降算法最小化代價函數 J
3. 在訓練完算法后,通過計算 θTx 預測用戶 j 給電影 i 的評分
通過這個學習過程獲得的特征矩陣包含了有關電影的重要數據,這些數據不總是人能讀懂的,但是可以用這些數據作為給用戶推薦電影的依據。
總結:
16.5 向量化:低秩矩陣分解 Vectorization_ Low Rank Matrix Factorization
協同過濾算法的向量化實現
舉例:
1)給出一件產品,能否找到與之相關的其它產品。
2)一位用戶最近看上一件產品,有沒有其它相關的產品可以推薦給他。
現在有5部電影,4位用戶,矩陣 Y 就是一個 5 行 4 列的矩陣,存儲每個用戶對每個電影的評分數據:
通過使用 θ 和 x 計算,可以預測出每個用戶對每個電影打的分數:
現在將所有 x 都集中在一個大的矩陣X中,每一部電影是一行;
將所有 θ 集中在一個大的Θ中,每個用戶是一行。
?則有:
因為矩陣X乘Θ的轉置,在數學上具有低秩屬性。因此這個算法也被稱為低秩矩陣分解 low rank matrix factorization。
現在已經學習到了特征參數向量,那么可以使用這些向量做一些別的事情,比如度量兩部電影之間的相似性。例如,如果一位用戶正在觀看電影 x(i) ,可以根據兩部電影的特征向量之間的距離 ∥x(i) ? x(j)∥,尋找另一部相似電影 x(j):
16.6 推行工作上的細節:均值歸一化? Mean Normalization
現在新增一個用戶 Eve,她沒有為任何電影評分,那么我們以什么為依據為 Eve 推薦電影呢?
如果根據之前的模型,因為她沒有打分,代價函數第一項為0。算法目標變為最小化最后一項,最后得到 θ(5)?中的元素都是0。現在拿著 θ(5) 預測出的瓶分都是0。這沒有什么意義,因此需要做一些處理。
首先需要對結果 Y 矩陣進行均值歸一化處理,將每一個用戶對某一部電影的評分減去所有用戶對該電影評分的平均值:
然后利用這個新的 Y 矩陣來訓練算法。 最后在預測評分時,需要在預測值的基礎上加回平均值,即預測值等于 (θ(j))Tx(i) + μi 。因此對于 Eve,新模型預測出的她的打分都是該電影的平均分。
轉載于:https://www.cnblogs.com/maxiaodoubao/p/10220632.html
總結
以上是生活随笔為你收集整理的【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Go结构体内存大小的一点小知识
- 下一篇: 分辨率与栅格系统的对应关系: