[吳恩達機器學習筆記]16推薦系統5-6協同過濾算法/低秩矩陣分解/均值歸一化
16.推薦系統 Recommender System
以爲有用的話,歡迎一塊兒討論相互學習~Follow Me
16.5 向量化:低秩矩陣分解Vectorization_ Low Rank Matrix Factorization
示例
當給出一件產品時,你可否找到與之相關的其它產品。
一位用戶最近看上一件產品,有沒有其它相關的產品,你能夠推薦給他
協同過濾算法
我將要作的是:實現一種選擇的方法,寫出 協同過濾算法 的預測狀況
咱們有關於五部電影的數據集,我將要作的是,將這些用戶的電影評分,進行分組並存。咱們有五部電影,以及四位用戶,那麼 這個矩陣 Y 就是一個 5 行 4 列的矩陣,它將這些電影的用戶評分數據都存在矩陣裏:
使用 協同過濾算法 對參數進行學習,並使用公式\((\theta^{(n_u)})^{T}(x^{(n_m)})\) 對推薦的結果進行預測,獲得一個預測值的矩陣,這個矩陣的預測結果和用戶評分數據矩陣Y中數據一一對應:
低秩矩陣分解
你也能夠將電影的特徵按照樣本的順序1,2,3...\(n_m\) 按行排列成矩陣X,將用戶的特徵按照用戶的順序1,2,3...\(n_u\) 按行排列成矩陣\(\theta\) 按照\(X\theta^T\) 公式進行計算,也能夠獲得上述 評分預測矩陣 ,這種方法稱爲 低秩矩陣分解
電影推薦
通過以上操做,咱們會學習到電影的一些特徵,也許這些特徵不是人所能理解的,可是其真的在某種程度上反映了電影的不一樣特色,例若有的反映了電影的 愛情度 ,動做度 ,喜劇度 等等
如今既然你已經對特徵參數向量進行了學習,那麼咱們就會有一個 很方便的方法 來度量兩部電影之間的類似性。例如說:電影 i 有一個特徵向量 \(x^{(i)}\) ,你是否能找到一部不一樣的電影j,保證兩部電影的 特徵向量之間的距離 \(x^{(i)}\) 和 \(x^{(j)}\) 很小 ,那就能頗有力地代表電影 i 和電影 j在某種程度上有類似,至少在某種意義上,某些人喜歡電影 i,或許更有可能也對電影 j 感興趣。 \[||x^{(i)}-x^{(j)}||^2\]
當用戶在看某部電影 i 的時候,若是你想找 5 部與電影很是類似的電影,爲了能給用戶推薦 5 部新電影,你須要作的是找出電影 j,在這些不一樣的電影中與咱們要找的電影 i 的距離最小的5部電影,這樣你就能給你的用戶推薦部不一樣的可能喜歡電影了。
16.6 推行工做上的細節:均值歸一化Implementational Detail_ Mean Normalization
示例引入
有一個沒有給任何電影評分的用戶Eve,加上以前的四個用戶,假設電影的特徵數爲n=2,使用改進的 協同過濾算法(即向量爲n維,沒有截距項\(\theta_0= 1\) ) ,想經過 協同過濾算法 預測Eve用戶的偏好特徵\(\theta^{(5)}\) ,以下圖所示:
因爲Eve沒有對任何一部電影評過度,因此r(i,j)=1的條件不知足,因此整個式子對\(\theta^{(5)}\) 的值有影響的只剩下 正則項 爲了使整個式子最小,則會使正則化項儘量的爲0,因此 \(\theta^{(5)}\) 最終的結果是0即\(\theta^{(5)}=\left[\begin{matrix}0\\0\end{matrix}\right]\) ,這樣對於預測Eve用戶的偏好特徵是沒有意義的.因此最後經過\((\theta^{(5)})^{T}x^{(i)}=0\) 計算Eve想要看電影的結果也是沒有意義的,由於不管\(x^{i}\) 的值是何值,結果均爲0.
用平均值代替新用戶的值
如上分析所示,若是新用戶在沒有對任何電影進行評分的情況下使用協同過濾算法進行預測,最終 得不到任何有意義的結果 ,此時咱們想到,對於新用戶,咱們可使用每部電影的評分平均值來代替
首先須要對結果 Y 矩陣進行均值歸一化處理,將每個用戶對某一部電影的評分減去全部 用戶對該電影評分的平均值:
而後咱們利用這個新的 Y 矩陣來訓練算法,若是咱們要用新訓練出的算法來預測評分,則須要將平均值\(\mu\) 從新加回去 ,即計算\[(\theta^{(j)})^{T}x^{(i)}+\mu_i\] 爲最終評分.對於 Eve,雖然\((\theta^{(5)})^{T}x^{(i)}\) 仍等於0,可是加上平均值後,咱們的新模型會認爲她給每部電影的評分都是 該電影的平均分
歡迎關注本站公眾號,獲取更多信息