斯坦福NG機器學習聽課筆記-推薦系統(recommender system)

推薦系統(recommender system)

Problem Formulation:

RecommenderSystems:爲什麼講它有兩個原因:首先它是一個很重要的機器學習應用方向,在很多公司中佔據了重要作用,像亞馬遜之類網站都是很好的建立推薦系統促進商品銷售。其次推薦系統有機器學習中一些big idea,通過學習推薦系統學習機器學習中的big idea。接着描述一個電影評級的例子(整篇博客都將以電影評級爲實例)。


電影評級有5級,打問號的是不知道的信息,推薦系統需要做的就是在已知數據上去預測打問號下的數據是什麼。直觀上我們可以分塊發現Alice Bob 偏向於看愛情片,而後面兩位偏向於看動作電影,這些是在數據上比較直白的信息獲取(這就是後面說到的我們已知特徵向量情況)。還有需要注意上圖中形式化描述整個課程都是以這個爲基礎的。

習題:就是讓大家熟悉NG對電影評級中各個變量參數表示。



Content Based Recommendations:

先看一下如果進行未評級電影預測的流程:


上圖中右邊可以看到我們把所有電影通過romance action 兩個特徵來進行描述,我們對空白位置預測思想方法就是:對每一個user 我們學習參數(怎麼學習這個參數後面說),然後再通過上圖參數向量與特徵向量乘積值來判斷。

習題:


上題只需要把參數向量代入與特徵向量相乘和已知數據比較,擬合合適的就成立。

這個問題的形式化描述:


如何學習參數向量,利用線性迴歸方法。

目標函數是:


因爲m(j) 是常數進行簡化目標函數:


上面公式第一個是描述某一個用戶的,而下面公式是對所有user 求和使得目標函數最小。這裏求目標函數最小值就類似線性迴歸中方法,梯度下降法:


總結:這個算法我們假設我們已經擁有特徵,我們知道電影用什麼特徵可以來進行描述。但是有很多電影我們可能無法通過特徵向量來進行描述,下面方法解決這裏提到的問題。

Collaborative Filtering:

這裏問題條件就改變了,我們現在無法獲得電影特徵描述,但是我們可以獲得不同用戶對不同電影愛好也就是theta參數向量。


習題:已知theta向量求特徵值。


需要優化的目標函數:


習題:梯度下降法迭代求解。


下面對Collaborative filtering 形式化描述真正的協同過濾比這個複雜,這裏只是首先就行一個概念上的認知。


前面我們提到了兩種方法:第一種是一直特徵集描述,然後估計theta ,第二種是一直theta 去估計特徵集。我們可以交叉使用這兩種方法來更好估計特徵與theta參數。這裏計算性能不高接下來會講到這個問題的計算優化。

CollaborativeFiltering Algorithm:

前面說到我們可以迭代優化theta和特徵向量,但是這樣性能比較低,所以現在考慮提升算法性能。同時對兩種方法進行求解。


上圖就是把兩種方法優化函數進行合併得到總的目標函數。

算法流程圖:


習題:


Vectorization Low rank matrix factorization:

這裏主要講的就是通過兩個向量相乘構造Predicted ratings matrix


習題:


向量化後有一個很大的便利之處就是推薦發現相似的電影或者網站推薦相似物品。我們只需要計算兩個物品特徵向量之間的距離,距離越小意味着肯定是更加相似的東西。


Implementationaldetail : Mean normalization

我們加入新的一個user Eve,通過上面說的計算theta 和電影評分,我們發下如下圖:


我們發現Eve對所有電影評分都是0,顯然這樣結果是不合適的,現在需要解決這個問題。

上面我們說了當一個user對電影沒有任何評級時,我們很難處理,用前面說到算法執行得到都爲0。現在我們改進方法如下圖:


當theta與X(i)乘積爲0 ,但是在加上均值所以像Eve這樣用戶我們不會把他評分都設定爲0。

你可以用Mean Normalization 對數據進行預處理。這樣可能會使得算法得到一些改進提高。

習題:











發佈了166 篇原創文章 · 獲贊 54 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章