1. 程式人生 > >斯坦福機器學習公開課筆記(十三)--推薦系統

斯坦福機器學習公開課筆記(十三)--推薦系統

授課老師:Andrew Ng

1、problem formulation(問題產生)

在平時購物的時候我們都會看到網站把向我們推薦的商品放在醒目位置,其實這就是推薦系統。現在考慮一個電影推薦系統的例子,我們擁有一些使用者對於一些電影的評分,如下:


從上面可以看到,使用者對電影的評分分為從05這六個等級,有些使用者沒有看過某部電影,故對該電影的評價未知。分析之下能發現電影列表中的電影可以分為兩個類別,上面三部都是愛情片,下面兩部為動作片。現在的問題是,如何根據使用者對電影的評分給使用者推薦電影?

2、content-based recommendations(基於內容的推薦)

現在我們擁有使用者對電影的評分,同時我們也需要知道電影的特徵,基於內容的推薦的前提就是獲取待推薦物品的特徵資訊。針對上面的例子,可以認為這些電影中只含有兩類特徵,一種是romance

,一種是action,特徵評分越高,證明該電影越傾向於這一特徵,提取特徵後得到的列表如下:


其中x1代表每部電影的romance等級,x2代表action等級,x(1)代表《love at last》這部電影的特徵資訊,其餘類似,這樣我們就把電影轉換成了向量形式。和機器學習中的其他方法類似,我們對向量增加一維常量1,最後把每部電影轉換為一個3*1的向量。現在,光有電影的特徵是不夠的,如果要預測使用者對電影的評分,顯然還需要知道使用者的喜好,這裡用theta表示:


可以看到,theta也是一個3*1的向量,第一維依然是常量,後兩維是對兩類電影的喜好,theta(1)代表第一個使用者自己的喜好。有了這些資訊後,就可以用

theta*x來預測某個使用者對於某部電影的評分情況了。不過通常情況下theta值不可能一下子看出來,是需要通過學習得到的,問題轉換為求出theta,寫成更規範的形式如下:


和迴歸類似,寫出代價函式,然後用梯度下降求解:



通過這樣,我們就能求出theta

3、collaborative filtering(協同過濾)

上面求出了theta,不過細細分析後會發現關於x也是我們人為指定的,如果不指定電影的特徵資訊應該如下:


為了求出x,我們需要指定出theta,接下來還是那一套老路:


這下我們犯難了,thetax都沒給,那怎麼求?這是一個雞生蛋蛋生雞的問題!這就是協同過濾要解決的難題。


4、collaborative filtering algorithm(協同過濾演算法)

先對之前提出的問題進行一下總結:


可以發現,合併之後引數變成了xtheta兩類,針對這個代價函式梯度下降時只能交替處理xtheta


這樣就能夠在不知道xtheta的情況下進行求解了。

5、vectorization:low rank matrix factorization(向量化-小秩矩陣分解)

其實在獲取上面使用者對電影的評分之後,可以用矩陣的形式進行表述:


其實Y矩陣中的元素都是通過thetax計算得來,展開如下:


上面的矩陣可以分解為Xtheta兩個向量,這就是小秩矩陣分解。如果要尋找哪兩種電影最相近,可以通過計算X向量中兩個值的差值來判斷,差值越小,則越相近:


6、implementational detail:Mean normalization(標準化)

現在我們在原來的資料上增加一列:


在這裡Eve還沒有對任何電影評過分,我們只能假設他對所有電影的評分都為0。此時,我們對其評分進行預測,得到的結果都為0。針對這種情況,我們先對Y進行標準化處理:


在求出均值後,對Y進行變換,用標準化後的Y來進行計算,得到的結果要加上均值,這樣就能確保Eve的評分不會一直為0,這樣還是比較有道理的。

------------------------------------------------------弱弱的分割線----------------------------------------------------

這一講主要介紹了推薦系統是怎麼回事,關鍵是要學習兩個向量,物品特徵向量和使用者偏好向量。協同過濾的思想就是在不知道這兩個向量時用梯度下降的方法對其進行求解。在把資料矩陣化之後,可以用矩陣分解的方法求解,關於具體做法很遺憾這裡沒有講,最常見的恐怕是SVD方法,關於SVD的具體內容可以看這裡:

另外給出一個具體的例子-電影推薦系統:

相關推薦

斯坦福機器學習開課筆記 十三 推薦系統

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                授課老師:Andrew Ng1、problem formulation(問題產生)在平時購物的時候我們都會看到網站把向我們推薦的商品放在醒目位置,其實這就是推薦

斯坦福機器學習開課筆記(十三)--推薦系統

授課老師:Andrew Ng 1、problem formulation(問題產生) 在平時購物的時候我們都會看到網站把向我們推薦的商品放在醒目位置,其實這就是推薦系統。現在考慮一個電影推薦系統的例子,我們擁有一些使用者對於一些電影的評分,如下: 從上面可以看到,使

斯坦福機器學習開課筆記(十五)--[應用]照片OCR技術

1、problem description and pipeline(問題描述和流水線) OCR是optical character recognition的縮寫,翻譯過來就是光學字元辨識。照片中的OCR技術其實就是識別中照片中存在的字元,例如下面這幅圖: 關於過程

斯坦福機器學習開課筆記(一)--單變數線性迴歸

授課老師:Andrew Ng 1、model representation(建立模型) 考慮一個問題,如果給定一些房屋售價和房屋面積的資料,現在要預測給定其他面積時的房屋售價,那該怎麼辦?其實這是一個線性迴歸問題,給定的資料作為訓練樣本,用其訓練得到一個表示售價和麵積關

機器學習開課筆記(9):異常檢測和推薦系統

異常檢測(Anomaly Detection) 基本假設:多數情況下資料點落入正常的取值範圍,但是當異常行為發生時,資料點的取值落入正常取值範圍之外(如圖1所示)。所以可以利用高斯分佈,計算行為發生的概率,如果是概率小於給定閾值,則認為發生了異常行為。基本過程是利用訓練資料點建立模型$p(x)$,對於新的資

斯坦福機器學習開課--整理筆記(…

跟老闆聊了很久之後,決定換一個研究方向,本來想專門寫一篇博文說說資料探勘與機器學習,後來轉念也想也算了,畢竟之前還是有很多可以用上的知識,這幾天準備把Andrew大牛的機器學習公開課重新刷一遍,簡單做一下筆記好了。 第一課是基本介紹,略過。 第二課:監督學習應用.梯度下降: 這節課主要探究的是監督

機器學習開課筆記第九周之大數據梯度下降算法

機器學習 nbsp gradient min 三種 依次 再看 獲得 mini 一,隨機梯度下降法(Stochastic Gradient Descent) 當訓練集很大且使用普通梯度下降法(Batch Gradient Descent)時,因為每一次\(\theta\)

廣義線性模型 - Andrew Ng機器學習開課筆記1.6

sans luci art 能夠 tro ron 便是 import grand 在分類問題中我們如果: 他們都是廣義線性模型中的一個樣例,在理解廣義線性模型之前須要先理解指數分布族。 指數分

斯坦福機器學習開課

視訊 http://open.163.com/movie/2008/1/M/C/M6SGF6VB4_M6SGHFBMC.html 相關筆記 http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in

機器學習開課筆記(8):k-means聚類和PCA降維

K-Means演算法 非監督式學習對一組無標籤的資料試圖發現其內在的結構,主要用途包括: 市場劃分(Market Segmentation) 社交網路分析(Social Network Analysis) 管理計算機叢集(Organize Computer Clusters) 天文學資料分析(A

機器學習開課筆記(7):支援向量機

支援向量機(Support Vector Machine, SVM) 考慮logistic迴歸,對於$y=1$的資料,我們希望其$h_\theta(x) \approx 1$,相應的$\theta^Tx \gg 0$; 對於$y=0$的資料,我們希望$h_\theta(x) \approx 0$,相應的$\

機器學習開課筆記(1):機器學習簡介及一元線性迴歸

初步介紹 監督式學習: 給定資料集並且知道其正確的輸出應該是怎麼樣的,即有反饋(feedback),分為 迴歸 (Regressioin): map輸入到連續的輸出值。 分類 (Classification):map輸出到離散的輸出值。 非監督式學習: 給定資料集,並不知道其正確的輸出是什麼,

機器學習開課筆記(6):應用機器學習的建議

應用機器學習的建議 1. 評估學習演算法 在實際中應用學習演算法時,如何評估一個學習演算法的好壞?進一步地,如果學習的演算法的效果不太好,如何改進學習演算法?例如,對於一個簡單的線性擬合模型,改進演算法效果的策略包括: 採用更多的訓練例項訓練模型 採用更小的特徵集合 增加額外的特徵 嘗試高次項

機器學習開課筆記(10):大規模機器學習

批梯度下降 (Batch Gradient Descent) 以線性迴歸為例,用梯度下降演算法進行引數更新的公式為$$\theta_j=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$可

機器學習開課筆記(5):神經網路(Neural Network)——學習

這一章可能是Andrew Ng講得最不清楚的一章,為什麼這麼說呢?這一章主要講後向傳播(Backpropagration, BP)演算法,Ng花了一大半的時間在講如何計算誤差項$\delta$,如何計算$\Delta$的矩陣,以及如何用Matlab去實現後向傳播,然而最關鍵的問題——為什麼要這麼計算?前面計算

機器學習開課筆記(2):多元線性迴歸

多元線性迴歸 一元線性迴歸只有一個特徵$x$,而多元線性迴歸可以有多個特徵$x_1, x_2, \ldots, x_n$ 假設 (Hypothesis):$h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\ldots+\theta_nx_n$ 引數 (Para

機器學習開課筆記(4):神經網路(Neural Network)——表示

動機(Motivation) 對於非線性分類問題,如果用多元線性迴歸進行分類,需要構造許多高次項,導致特徵特多學習引數過多,從而複雜度太高。 神經網路(Neural Network) 一個簡單的神經網路如下圖所示,每一個圓圈表示一個神經元,每個神經元接收上一層神經元的輸出作為其輸入,同時其輸出訊號到下一

吳恩達機器學習開課學習筆記(一)

吳恩達機器學習公開課學習筆記(一) 一些規範表達形式 線性迴歸/單變數線性迴歸 代價函式 公開課連結: https://study.163.com/course/courseLearn.htm?courseId=1004570029#/lea

【Andrew NG 機器學習開課】CS229:Introduction、Linear Regression

這份筆記來源於Andrew NG在Coursera上的公開課和講義。 Introduction 機器學習問題 (一)有監督學習(Supervised Learning) 基本思想是:given the right answer for each example i

斯坦福---機器學習】複習筆記之樸素貝葉斯演算法

本講大綱: 1.樸素貝葉斯(Naive Bayes) 2.神經網路(Neural Networks) 3.支援向量機(Support vector machines) 1.樸素貝葉斯 前面講的主要是是二元值的特徵,更一般化的是xi可以取{1,2,3