Week9

第9周

十五僵井、異常檢測(cè)(Anomaly Detection)

15.1 問(wèn)題的動(dòng)機(jī)

參考文檔: 15 - 1 - Problem Motivation (8 min).mkv

在接下來(lái)的一系列視頻中赋焕,我將向大家介紹異常檢測(cè)(Anomaly detection)問(wèn)題忱辅。這是機(jī)器學(xué)習(xí)算法的一個(gè)常見(jiàn)應(yīng)用蒿讥。這種算法的一個(gè)有趣之處在于:它雖然主要用于非監(jiān)督學(xué)習(xí)問(wèn)題达椰,但從某些角度看麻蹋,它又類似于一些監(jiān)督學(xué)習(xí)問(wèn)題跛溉。

什么是異常檢測(cè)呢?為了解釋這個(gè)概念,讓我舉一個(gè)例子吧:

假想你是一個(gè)飛機(jī)引擎制造商芳室,當(dāng)你生產(chǎn)的飛機(jī)引擎從生產(chǎn)線上流出時(shí)专肪,你需要進(jìn)行QA(質(zhì)量控制測(cè)試),而作為這個(gè)測(cè)試的一部分堪侯,你測(cè)量了飛機(jī)引擎的一些特征變量嚎尤,比如引擎運(yùn)轉(zhuǎn)時(shí)產(chǎn)生的熱量,或者引擎的振動(dòng)等等伍宦。

這樣一來(lái)芽死,你就有了一個(gè)數(shù)據(jù)集,從x^{(1)}x^{(m)}次洼,如果你生產(chǎn)了m個(gè)引擎的話关贵,你將這些數(shù)據(jù)繪制成圖表,看起來(lái)就是這個(gè)樣子:

這里的每個(gè)點(diǎn)卖毁、每個(gè)叉揖曾,都是你的無(wú)標(biāo)簽數(shù)據(jù)。這樣亥啦,異常檢測(cè)問(wèn)題可以定義如下:我們假設(shè)后來(lái)有一天炭剪,你有一個(gè)新的飛機(jī)引擎從生產(chǎn)線上流出,而你的新飛機(jī)引擎有特征變量x_{test}翔脱。所謂的異常檢測(cè)問(wèn)題就是:我們希望知道這個(gè)新的飛機(jī)引擎是否有某種異常奴拦,或者說(shuō),我們希望判斷這個(gè)引擎是否需要進(jìn)一步測(cè)試届吁。因?yàn)榇硌绻雌饋?lái)像一個(gè)正常的引擎,那么我們可以直接將它運(yùn)送到客戶那里疚沐,而不需要進(jìn)一步的測(cè)試站玄。

給定數(shù)據(jù)集 x^{(1)},x^{(2)},..,x^{(m)},我們假使數(shù)據(jù)集是正常的濒旦,我們希望知道新的數(shù)據(jù) x_{test} 是不是異常的株旷,即這個(gè)測(cè)試數(shù)據(jù)不屬于該組數(shù)據(jù)的幾率如何。我們所構(gòu)建的模型應(yīng)該能根據(jù)該測(cè)試數(shù)據(jù)的位置告訴我們其屬于一組數(shù)據(jù)的可能性 p(x)尔邓。

上圖中晾剖,在藍(lán)色圈內(nèi)的數(shù)據(jù)屬于該組數(shù)據(jù)的可能性較高,而越是偏遠(yuǎn)的數(shù)據(jù)梯嗽,其屬于該組數(shù)據(jù)的可能性就越低齿尽。

這種方法稱為密度估計(jì),表達(dá)如下:

$$
if \quad p(x)
\begin{cases}
< \varepsilon & anomaly \

=\varepsilon & normal
\end{cases}
$$

欺詐檢測(cè):

x^{(i)} = {用戶的第i個(gè)活動(dòng)特征}

模型p(x) 為我們其屬于一組數(shù)據(jù)的可能性灯节,通過(guò)p(x) < \varepsilon檢測(cè)非正常用戶循头。

異常檢測(cè)主要用來(lái)識(shí)別欺騙绵估。例如在線采集而來(lái)的有關(guān)用戶的數(shù)據(jù),一個(gè)特征向量中可能會(huì)包含如:用戶多久登錄一次卡骂,訪問(wèn)過(guò)的頁(yè)面国裳,在論壇發(fā)布的帖子數(shù)量,甚至是打字速度等全跨。嘗試根據(jù)這些特征構(gòu)建一個(gè)模型缝左,可以用這個(gè)模型來(lái)識(shí)別那些不符合該模式的用戶。

再一個(gè)例子是檢測(cè)一個(gè)數(shù)據(jù)中心浓若,特征可能包含:內(nèi)存使用情況渺杉,被訪問(wèn)的磁盤(pán)數(shù)量,CPU的負(fù)載挪钓,網(wǎng)絡(luò)的通信量等是越。根據(jù)這些特征可以構(gòu)建一個(gè)模型,用來(lái)判斷某些計(jì)算機(jī)是不是有可能出錯(cuò)了碌上。

15.2 高斯分布

參考視頻: 15 - 2 - Gaussian Distribution (10 min).mkv

在這個(gè)視頻中英妓,我將介紹高斯分布,也稱為正態(tài)分布绍赛。回顧高斯分布的基本知識(shí)辑畦。

通常如果我們認(rèn)為變量 x 符合高斯分布 x \sim N(\mu, \sigma^2)則其概率密度函數(shù)為:
p(x,\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)
我們可以利用已有的數(shù)據(jù)來(lái)預(yù)測(cè)總體中的μσ^2的計(jì)算方法如下:
\mu=\frac{1}{m}\sum\limits_{i=1}^{m}x^{(i)}

\sigma^2=\frac{1}{m}\sum\limits_{i=1}^{m}(x^{(i)}-\mu)^2

高斯分布樣例:

注:機(jī)器學(xué)習(xí)中對(duì)于方差我們通常只除以m而非統(tǒng)計(jì)學(xué)中的(m-1)吗蚌。這里順便提一下,在實(shí)際使用中纯出,到底是選擇使用1/m還是1/(m-1)其實(shí)區(qū)別很小蚯妇,只要你有一個(gè)還算大的訓(xùn)練集,在機(jī)器學(xué)習(xí)領(lǐng)域大部分人更習(xí)慣使用1/m這個(gè)版本的公式暂筝。這兩個(gè)版本的公式在理論特性和數(shù)學(xué)特性上稍有不同箩言,但是在實(shí)際使用中,他們的區(qū)別甚小焕襟,幾乎可以忽略不計(jì)陨收。

15.3 算法

參考視頻: 15 - 3 - Algorithm (12 min).mkv

在本節(jié)視頻中,我將應(yīng)用高斯分布開(kāi)發(fā)異常檢測(cè)算法鸵赖。

異常檢測(cè)算法:

對(duì)于給定的數(shù)據(jù)集 x^{(1)},x^{(2)},...,x^{(m)}务漩,我們要針對(duì)每一個(gè)特征計(jì)算 \mu\sigma^2 的估計(jì)值。

\mu_j=\frac{1}{m}\sum\limits_{i=1}^{m}x_j^{(i)}

\sigma_j^2=\frac{1}{m}\sum\limits_{i=1}^m(x_j^{(i)}-\mu_j)^2

一旦我們獲得了平均值和方差的估計(jì)值它褪,給定新的一個(gè)訓(xùn)練實(shí)例饵骨,根據(jù)模型計(jì)算 p(x)

p(x)=\prod\limits_{j=1}^np(x_j;\mu_j,\sigma_j^2)=\prod\limits_{j=1}^1\frac{1}{\sqrt{2\pi}\sigma_j}exp(-\frac{(x_j-\mu_j)^2}{2\sigma_j^2})

當(dāng)p(x) < \varepsilon時(shí),為異常茫打。

下圖是一個(gè)由兩個(gè)特征的訓(xùn)練集居触,以及特征的分布情況:

下面的三維圖表表示的是密度估計(jì)函數(shù)妖混,z軸為根據(jù)兩個(gè)特征的值所估計(jì)p(x)值:

我們選擇一個(gè)\varepsilon,將p(x) = \varepsilon作為我們的判定邊界轮洋,當(dāng)p(x) > \varepsilon時(shí)預(yù)測(cè)數(shù)據(jù)為正常數(shù)據(jù)制市,否則為異常。

在這段視頻中砖瞧,我們介紹了如何擬合p(x)息堂,也就是 x的概率值,以開(kāi)發(fā)出一種異常檢測(cè)算法块促。同時(shí)荣堰,在這節(jié)課中,我們也給出了通過(guò)給出的數(shù)據(jù)集擬合參數(shù)竭翠,進(jìn)行參數(shù)估計(jì)振坚,得到參數(shù) \mu\sigma,然后檢測(cè)新的樣本斋扰,確定新樣本是否是異常渡八。

在接下來(lái)的課程中,我們將深入研究這一算法传货,同時(shí)更深入地介紹屎鳍,怎樣讓算法工作地更加有效。

15.4 開(kāi)發(fā)和評(píng)價(jià)一個(gè)異常檢測(cè)系統(tǒng)

參考視頻: 15 - 4 - Developing and Evaluating an Anomaly Detection System (13 min). mkv

異常檢測(cè)算法是一個(gè)非監(jiān)督學(xué)習(xí)算法问裕,意味著我們無(wú)法根據(jù)結(jié)果變量 y 的值來(lái)告訴我們數(shù)據(jù)是否真的是異常的逮壁。我們需要另一種方法來(lái)幫助檢驗(yàn)算法是否有效。當(dāng)我們開(kāi)發(fā)一個(gè)異常檢測(cè)系統(tǒng)時(shí)粮宛,我們從帶標(biāo)記(異晨或正常)的數(shù)據(jù)著手,我們從其中選擇一部分正常數(shù)據(jù)用于構(gòu)建訓(xùn)練集巍杈,然后用剩下的正常數(shù)據(jù)和異常數(shù)據(jù)混合的數(shù)據(jù)構(gòu)成交叉檢驗(yàn)集和測(cè)試集忧饭。

例如:我們有10000臺(tái)正常引擎的數(shù)據(jù),有20臺(tái)異常引擎的數(shù)據(jù)筷畦。 我們這樣分配數(shù)據(jù):

6000臺(tái)正常引擎的數(shù)據(jù)作為訓(xùn)練集

2000臺(tái)正常引擎和10臺(tái)異常引擎的數(shù)據(jù)作為交叉檢驗(yàn)集

2000臺(tái)正常引擎和10臺(tái)異常引擎的數(shù)據(jù)作為測(cè)試集

具體的評(píng)價(jià)方法如下:

  1. 根據(jù)測(cè)試集數(shù)據(jù)词裤,我們估計(jì)特征的平均值和方差并構(gòu)建p(x)函數(shù)

  2. 對(duì)交叉檢驗(yàn)集,我們嘗試使用不同的\varepsilon值作為閥值鳖宾,并預(yù)測(cè)數(shù)據(jù)是否異常亚斋,根據(jù)F1值或者查準(zhǔn)率與查全率的比例來(lái)選擇 \varepsilon

  3. 選出 \varepsilon 后,針對(duì)測(cè)試集進(jìn)行預(yù)測(cè)攘滩,計(jì)算異常檢驗(yàn)系統(tǒng)的F1值帅刊,或者查準(zhǔn)率與查全率之比

15.5 異常檢測(cè)與監(jiān)督學(xué)習(xí)對(duì)比

參考視頻: 15 - 5 - Anomaly Detection vs. Supervised Learning (8 min).mkv

之前我們構(gòu)建的異常檢測(cè)系統(tǒng)也使用了帶標(biāo)記的數(shù)據(jù),與監(jiān)督學(xué)習(xí)有些相似漂问,下面的對(duì)比有助于選擇采用監(jiān)督學(xué)習(xí)還是異常檢測(cè):

兩者比較:

異常檢測(cè) 監(jiān)督學(xué)習(xí)
非常少量的正向類(異常數(shù)據(jù) y=1), 大量的負(fù)向類(y=0 同時(shí)有大量的正向類和負(fù)向類
許多不同種類的異常赖瞒,非常難女揭。根據(jù)非常 少量的正向類數(shù)據(jù)來(lái)訓(xùn)練算法。 有足夠多的正向類實(shí)例栏饮,足夠用于訓(xùn)練 算法吧兔,未來(lái)遇到的正向類實(shí)例可能與訓(xùn)練集中的非常近似。
未來(lái)遇到的異撑坻遥可能與已掌握的異常境蔼、非常的不同。
例如: 欺詐行為檢測(cè) 生產(chǎn)(例如飛機(jī)引擎)檢測(cè)數(shù)據(jù)中心的計(jì)算機(jī)運(yùn)行狀況 例如:郵件過(guò)濾器 天氣預(yù)報(bào) 腫瘤分類

希望這節(jié)課能讓你明白一個(gè)學(xué)習(xí)問(wèn)題的什么樣的特征伺通,能讓你把這個(gè)問(wèn)題當(dāng)做是一個(gè)異常檢測(cè)箍土,或者是一個(gè)監(jiān)督學(xué)習(xí)的問(wèn)題。另外罐监,對(duì)于很多技術(shù)公司可能會(huì)遇到的一些問(wèn)題吴藻,通常來(lái)說(shuō),正樣本的數(shù)量很少弓柱,甚至有時(shí)候是0沟堡,也就是說(shuō),出現(xiàn)了太多沒(méi)見(jiàn)過(guò)的不同的異常類型矢空,那么對(duì)于這些問(wèn)題航罗,通常應(yīng)該使用的算法就是異常檢測(cè)算法。

15.6 選擇特征

參考視頻: 15 - 6 - Choosing What Features to Use (12 min).mkv

對(duì)于異常檢測(cè)算法屁药,我們使用的特征是至關(guān)重要的粥血,下面談?wù)勅绾芜x擇特征:

異常檢測(cè)假設(shè)特征符合高斯分布,如果數(shù)據(jù)的分布不是高斯分布者祖,異常檢測(cè)算法也能夠工作,但是最好還是將數(shù)據(jù)轉(zhuǎn)換成高斯分布绢彤,例如使用對(duì)數(shù)函數(shù):x= log(x+c)七问,其中 c 為非負(fù)常數(shù); 或者 x=x^c茫舶,c為 0-1 之間的一個(gè)分?jǐn)?shù)械巡,等方法。(編者注:在python中饶氏,通常用np.log1p()函數(shù)讥耗,log1p就是 log(x+1),可以避免出現(xiàn)負(fù)數(shù)結(jié)果疹启,反向函數(shù)就是np.expm1())

誤差分析:

一個(gè)常見(jiàn)的問(wèn)題是一些異常的數(shù)據(jù)可能也會(huì)有較高的p(x)值古程,因而被算法認(rèn)為是正常的台腥。這種情況下誤差分析能夠幫助我們台舱,我們可以分析那些被算法錯(cuò)誤預(yù)測(cè)為正常的數(shù)據(jù)浙巫,觀察能否找出一些問(wèn)題劣摇。我們可能能從問(wèn)題中發(fā)現(xiàn)我們需要增加一些新的特征,增加這些新特征后獲得的新算法能夠幫助我們更好地進(jìn)行異常檢測(cè)茁裙。

異常檢測(cè)誤差分析:

我們通程猎遥可以通過(guò)將一些相關(guān)的特征進(jìn)行組合,來(lái)獲得一些新的更好的特征(異常數(shù)據(jù)的該特征值異常地大或形钭丁)掉蔬,例如,在檢測(cè)數(shù)據(jù)中心的計(jì)算機(jī)狀況的例子中矾瘾,我們可以用CPU負(fù)載與網(wǎng)絡(luò)通信量的比例作為一個(gè)新的特征女轿,如果該值異常地大,便有可能意味著該服務(wù)器是陷入了一些問(wèn)題中霜威。

在這段視頻中谈喳,我們介紹了如何選擇特征,以及對(duì)特征進(jìn)行一些小小的轉(zhuǎn)換戈泼,讓數(shù)據(jù)更像正態(tài)分布婿禽,然后再把數(shù)據(jù)輸入異常檢測(cè)算法。同時(shí)也介紹了建立特征時(shí)大猛,進(jìn)行的誤差分析方法扭倾,來(lái)捕捉各種異常的可能。希望你通過(guò)這些方法挽绩,能夠了解如何選擇好的特征變量膛壹,從而幫助你的異常檢測(cè)算法,捕捉到各種不同的異常情況唉堪。

15.7 多元高斯分布(選修)

參考視頻: 15 - 7 - Multivariate Gaussian Distribution (Optional) (14 min).mkv

假使我們有兩個(gè)相關(guān)的特征模聋,而且這兩個(gè)特征的值域范圍比較寬,這種情況下唠亚,一般的高斯分布模型可能不能很好地識(shí)別異常數(shù)據(jù)链方。其原因在于,一般的高斯分布模型嘗試的是去同時(shí)抓住兩個(gè)特征的偏差灶搜,因此創(chuàng)造出一個(gè)比較大的判定邊界祟蚀。

下圖中是兩個(gè)相關(guān)特征,洋紅色的線(根據(jù)ε的不同其范圍可大可懈盥簟)是一般的高斯分布模型獲得的判定邊界前酿,很明顯綠色的X所代表的數(shù)據(jù)點(diǎn)很可能是異常值,但是其p(x)值卻仍然在正常范圍內(nèi)鹏溯。多元高斯分布將創(chuàng)建像圖中藍(lán)色曲線所示的判定邊界罢维。

在一般的高斯分布模型中,我們計(jì)算 p(x) 的方法是:
通過(guò)分別計(jì)算每個(gè)特征對(duì)應(yīng)的幾率然后將其累乘起來(lái)丙挽,在多元高斯分布模型中言津,我們將構(gòu)建特征的協(xié)方差矩陣攻人,用所有的特征一起來(lái)計(jì)算 p(x)

我們首先計(jì)算所有特征的平均值悬槽,然后再計(jì)算協(xié)方差矩陣:
p(x)=\prod_{j=1}^np(x_j;\mu,\sigma_j^2)=\prod_{j=1}^n\frac{1}{\sqrt{2\pi}\sigma_j}exp(-\frac{(x_j-\mu_j)^2}{2\sigma_j^2})

\mu=\frac{1}{m}\sum_{i=1}^mx^{(i)}

\Sigma = \frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu)(x^{(i)}-\mu)^T=\frac{1}{m}(X-\mu)^T(X-\mu)

注:其中\mu 是一個(gè)向量怀吻,其每一個(gè)單元都是原特征矩陣中一行數(shù)據(jù)的均值。最后我們計(jì)算多元高斯分布的p\left( x \right):
p(x)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)
其中:

|\Sigma|是定矩陣初婆,在 Octave 中用 det(sigma)計(jì)算

\Sigma^{-1} 是逆矩陣蓬坡,下面我們來(lái)看看協(xié)方差矩陣是如何影響模型的:

上圖是5個(gè)不同的模型,從左往右依次分析:

  1. 是一個(gè)一般的高斯分布模型

  2. 通過(guò)協(xié)方差矩陣磅叛,令特征1擁有較小的偏差屑咳,同時(shí)保持特征2的偏差

  3. 通過(guò)協(xié)方差矩陣,令特征2擁有較大的偏差弊琴,同時(shí)保持特征1的偏差

  4. 通過(guò)協(xié)方差矩陣兆龙,在不改變兩個(gè)特征的原有偏差的基礎(chǔ)上,增加兩者之間的正相關(guān)性

  5. 通過(guò)協(xié)方差矩陣敲董,在不改變兩個(gè)特征的原有偏差的基礎(chǔ)上紫皇,增加兩者之間的負(fù)相關(guān)性

多元高斯分布模型與原高斯分布模型的關(guān)系:

可以證明的是,原本的高斯分布模型是多元高斯分布模型的一個(gè)子集腋寨,即像上圖中的第1聪铺、2、3萄窜,3個(gè)例子所示铃剔,如果協(xié)方差矩陣只在對(duì)角線的單位上有非零的值時(shí),即為原本的高斯分布模型了查刻。

原高斯分布模型和多元高斯分布模型的比較:

原高斯分布模型 多元高斯分布模型
不能捕捉特征之間的相關(guān)性 但可以通過(guò)將特征進(jìn)行組合的方法來(lái)解決 自動(dòng)捕捉特征之間的相關(guān)性
計(jì)算代價(jià)低键兜,能適應(yīng)大規(guī)模的特征 計(jì)算代價(jià)較高 訓(xùn)練集較小時(shí)也同樣適用
必須要有 m>n,不然的話協(xié)方差矩陣\Sigma不可逆的穗泵,通常需要 m>10n? 另外特征冗余也會(huì)導(dǎo)致協(xié)方差矩陣不可逆

原高斯分布模型被廣泛使用著普气,如果特征之間在某種程度上存在相互關(guān)聯(lián)的情況,我們可以通過(guò)構(gòu)造新新特征的方法來(lái)捕捉這些相關(guān)性火欧。

如果訓(xùn)練集不是太大棋电,并且沒(méi)有太多的特征茎截,我們可以使用多元高斯分布模型苇侵。

15.8 使用多元高斯分布進(jìn)行異常檢測(cè)(可選)

參考視頻: 15 - 8 - Anomaly Detection using the Multivariate Gaussian Distribution (Optional) (14 min).mkv

在我們談到的最后一個(gè)視頻,關(guān)于多元高斯分布企锌,看到的一些建立的各種分布模型榆浓,當(dāng)你改變參數(shù),\mu\Sigma撕攒。在這段視頻中陡鹃,讓我們用這些想法烘浦,并應(yīng)用它們制定一個(gè)不同的異常檢測(cè)算法。

要回顧一下多元高斯分布和多元正態(tài)分布:

分布有兩個(gè)參數(shù)萍鲸, \mu\Sigma闷叉。其中\mu這一個(gè)n維向量和 \Sigma 的協(xié)方差矩陣,是一種n\times n的矩陣脊阴。而這里的公式x的概率握侧,如按 \mu 和參數(shù)化 \Sigma,和你的變量 \mu\Sigma嘿期,你可以得到一個(gè)范圍的不同分布一樣品擎,你知道的,這些都是三個(gè)樣本备徐,那些我們?cè)谝郧暗囊曨l看過(guò)了萄传。

因此,讓我們談?wù)剠?shù)擬合或參數(shù)估計(jì)問(wèn)題:

我有一組樣本{{{ x^{(1)},x^{(2)},...,x^{(m)}} }}是一個(gè)n維向量蜜猾,我想我的樣本來(lái)自一個(gè)多元高斯分布秀菱。我如何嘗試估計(jì)我的參數(shù) \mu\Sigma 以及標(biāo)準(zhǔn)公式?

估計(jì)他們是你設(shè)置 \mu 是你的訓(xùn)練樣本的平均值瓣铣。

\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}
并設(shè)置\Sigma
\Sigma=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu)(x^{(i)}-\mu)^T
這其實(shí)只是當(dāng)我們使用PCA算法時(shí)候答朋,有 \Sigma 時(shí)寫(xiě)出來(lái)。所以你只需插入上述兩個(gè)公式棠笑,這會(huì)給你你估計(jì)的參數(shù) \mu 和你估計(jì)的參數(shù) \Sigma梦碗。所以,這里給出的數(shù)據(jù)集是你如何估計(jì) \mu\Sigma蓖救。讓我們以這種方法而只需將其插入到異常檢測(cè)算法洪规。那么,我們?nèi)绾伟阉羞@一切共同開(kāi)發(fā)一個(gè)異常檢測(cè)算法循捺?

首先斩例,我們把我們的訓(xùn)練集,和我們的擬合模型从橘,我們計(jì)算p(x)念赶,要知道,設(shè)定\mu和描述的一樣\Sigma恰力。

如圖叉谜,該分布在中央最多,越到外面的圈的范圍越小踩萎。

并在該點(diǎn)是出路這里的概率非常低停局。

原始模型與多元高斯模型的關(guān)系如圖:

其中:協(xié)方差矩陣\Sigma為:

原始模型和多元高斯分布比較如圖:

十六、推薦系統(tǒng)(Recommender Systems)

16.1 問(wèn)題形式化

參考視頻: 16 - 1 - Problem Formulation (8 min).mkv

在接下來(lái)的視頻中,我想講一下推薦系統(tǒng)董栽。我想講推薦系統(tǒng)有兩個(gè)原因:

第一码倦、僅僅因?yàn)樗菣C(jī)器學(xué)習(xí)中的一個(gè)重要的應(yīng)用。在過(guò)去幾年锭碳,我偶爾訪問(wèn)硅谷不同的技術(shù)公司袁稽,我常和工作在這兒致力于機(jī)器學(xué)習(xí)應(yīng)用的人們聊天,我常問(wèn)他們擒抛,最重要的機(jī)器學(xué)習(xí)的應(yīng)用是什么运提,或者,你最想改進(jìn)的機(jī)器學(xué)習(xí)應(yīng)用有哪些闻葵。我最常聽(tīng)到的答案是推薦系統(tǒng)∶癖茫現(xiàn)在,在硅谷有很多團(tuán)體試圖建立很好的推薦系統(tǒng)槽畔。因此栈妆,如果你考慮網(wǎng)站像亞馬遜,或網(wǎng)飛公司或易趣厢钧,或iTunes Genius鳞尔,有很多的網(wǎng)站或系統(tǒng)試圖推薦新產(chǎn)品給用戶。如早直,亞馬遜推薦新書(shū)給你寥假,網(wǎng)飛公司試圖推薦新電影給你,等等霞扬。這些推薦系統(tǒng)糕韧,根據(jù)瀏覽你過(guò)去買過(guò)什么書(shū),或過(guò)去評(píng)價(jià)過(guò)什么電影來(lái)判斷喻圃。這些系統(tǒng)會(huì)帶來(lái)很大一部分收入萤彩,比如為亞馬遜和像網(wǎng)飛這樣的公司。因此斧拍,對(duì)推薦系統(tǒng)性能的改善雀扶,將對(duì)這些企業(yè)的有實(shí)質(zhì)性和直接的影響。

推薦系統(tǒng)是個(gè)有趣的問(wèn)題肆汹,在學(xué)術(shù)機(jī)器學(xué)習(xí)中因此愚墓,我們可以去參加一個(gè)學(xué)術(shù)機(jī)器學(xué)習(xí)會(huì)議,推薦系統(tǒng)問(wèn)題實(shí)際上受到很少的關(guān)注昂勉,或者浪册,至少在學(xué)術(shù)界它占了很小的份額。但是硼啤,如果你看正在發(fā)生的事情议经,許多有能力構(gòu)建這些系統(tǒng)的科技企業(yè),他們似乎在很多企業(yè)中占據(jù)很高的優(yōu)先級(jí)谴返。這是我為什么在這節(jié)課討論它的原因之一煞肾。

我想討論推薦系統(tǒng)地第二個(gè)原因是:這個(gè)班視頻的最后幾集我想討論機(jī)器學(xué)習(xí)中的一些大思想,并和大家分享嗓袱。這節(jié)課我們也看到了籍救,對(duì)機(jī)器學(xué)習(xí)來(lái)說(shuō),特征是很重要的渠抹,你所選擇的特征蝙昙,將對(duì)你學(xué)習(xí)算法的性能有很大的影響。因此梧却,在機(jī)器學(xué)習(xí)中有一種大思想奇颠,它針對(duì)一些問(wèn)題,可能并不是所有的問(wèn)題放航,而是一些問(wèn)題烈拒,有算法可以為你自動(dòng)學(xué)習(xí)一套好的特征。因此广鳍,不要試圖手動(dòng)設(shè)計(jì)荆几,而手寫(xiě)代碼這是目前為止我們常干的。有一些設(shè)置赊时,你可以有一個(gè)算法吨铸,僅僅學(xué)習(xí)其使用的特征,推薦系統(tǒng)就是類型設(shè)置的一個(gè)例子祖秒。還有很多其它的诞吱,但是通過(guò)推薦系統(tǒng),我們將領(lǐng)略一小部分特征學(xué)習(xí)的思想竭缝,至少狐胎,你將能夠了解到這方面的一個(gè)例子,我認(rèn)為歌馍,機(jī)器學(xué)習(xí)中的大思想也是這樣握巢。因此,讓我們開(kāi)始討論推薦系統(tǒng)問(wèn)題形式化松却。

我們從一個(gè)例子開(kāi)始定義推薦系統(tǒng)的問(wèn)題暴浦。

假使我們是一個(gè)電影供應(yīng)商,我們有 5 部電影和 4 個(gè)用戶晓锻,我們要求用戶為電影打分歌焦。

前三部電影是愛(ài)情片,后兩部則是動(dòng)作片砚哆,我們可以看出AliceBob似乎更傾向與愛(ài)情片独撇, 而 CarolDave 似乎更傾向與動(dòng)作片。并且沒(méi)有一個(gè)用戶給所有的電影都打過(guò)分。我們希望構(gòu)建一個(gè)算法來(lái)預(yù)測(cè)他們每個(gè)人可能會(huì)給他們沒(méi)看過(guò)的電影打多少分纷铣,并以此作為推薦的依據(jù)卵史。

下面引入一些標(biāo)記:

n_u 代表用戶的數(shù)量

n_m 代表電影的數(shù)量

r(i, j) 如果用戶j給電影 i 評(píng)過(guò)分則 r(i,j)=1

y^{(i, j)} 代表用戶 j 給電影i的評(píng)分

m_j代表用戶 j 評(píng)過(guò)分的電影的總數(shù)

16.2 基于內(nèi)容的推薦系統(tǒng)

參考視頻: 16 - 2 - Content Based Recommendations (15 min).mkv

在一個(gè)基于內(nèi)容的推薦系統(tǒng)算法中,我們假設(shè)對(duì)于我們希望推薦的東西有一些數(shù)據(jù)搜立,這些數(shù)據(jù)是有關(guān)這些東西的特征以躯。

在我們的例子中,我們可以假設(shè)每部電影都有兩個(gè)特征啄踊,如x_1代表電影的浪漫程度忧设,x_2 代表電影的動(dòng)作程度。

則每部電影都有一個(gè)特征向量颠通,如x^{(1)}是第一部電影的特征向量為[0.9 0]址晕。

下面我們要基于這些特征來(lái)構(gòu)建一個(gè)推薦系統(tǒng)算法。
假設(shè)我們采用線性回歸模型顿锰,我們可以針對(duì)每一個(gè)用戶都訓(xùn)練一個(gè)線性回歸模型斩箫,如{{\theta }^{(1)}}是第一個(gè)用戶的模型的參數(shù)。
于是撵儿,我們有:

\theta^{(j)}用戶 j 的參數(shù)向量

x^{(i)}電影 i 的特征向量

對(duì)于用戶 j 和電影 i乘客,我們預(yù)測(cè)評(píng)分為:(\theta^{(j)})^T x^{(i)}

代價(jià)函數(shù)

針對(duì)用戶 j,該線性回歸模型的代價(jià)為預(yù)測(cè)誤差的平方和淀歇,加上正則化項(xiàng):
\min_{\theta (j)}\frac{1}{2}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2}\left(\theta_{k}^{(j)}\right)^2

其中 i:r(i,j)表示我們只計(jì)算那些用戶 j 評(píng)過(guò)分的電影易核。在一般的線性回歸模型中,誤差項(xiàng)和正則項(xiàng)應(yīng)該都是乘以1/2m浪默,在這里我們將m去掉牡直。并且我們不對(duì)方差項(xiàng)\theta_0進(jìn)行正則化處理。

上面的代價(jià)函數(shù)只是針對(duì)一個(gè)用戶的纳决,為了學(xué)習(xí)所有用戶碰逸,我們將所有用戶的代價(jià)函數(shù)求和:
\min_{\theta^{(1)},...,\theta^{(n_u)}} \frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2
如果我們要用梯度下降法來(lái)求解最優(yōu)解,我們計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù)后得到梯度下降的更新公式為:

\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_{k}^{(i)} \quad (\text{for} \, k = 0)

\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\left(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_{k}^{(i)}+\lambda\theta_k^{(j)}\right) \quad (\text{for} \, k\neq 0)

16.3 協(xié)同過(guò)濾

參考視頻: 16 - 3 - Collaborative Filtering (10 min).mkv

在之前的基于內(nèi)容的推薦系統(tǒng)中阔加,對(duì)于每一部電影饵史,我們都掌握了可用的特征,使用這些特征訓(xùn)練出了每一個(gè)用戶的參數(shù)胜榔。相反地胳喷,如果我們擁有用戶的參數(shù),我們可以學(xué)習(xí)得出電影的特征夭织。

\mathop{min}\limits_{x^{(1)},...,x^{(n_m)}}\frac{1}{2}\sum_{i=1}^{n_m}\sum_{j{r(i,j)=1}}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x_k^{(i)})^2
但是如果我們既沒(méi)有用戶的參數(shù)吭露,也沒(méi)有電影的特征,這兩種方法都不可行了尊惰。協(xié)同過(guò)濾算法可以同時(shí)學(xué)習(xí)這兩者讲竿。

我們的優(yōu)化目標(biāo)便改為同時(shí)針對(duì)x\theta進(jìn)行泥兰。
J(x^{(1)},...x^{(n_m)},\theta^{(1)},...,\theta^{(n_u)})=\frac{1}{2}\sum_{(i:j):r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x_k^{(j)})^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2

對(duì)代價(jià)函數(shù)求偏導(dǎo)數(shù)的結(jié)果如下:

x_k^{(i)}:=x_k^{(i)}-\alpha\left(\sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\theta_k^{j}+\lambda x_k^{(i)}\right)

\theta_k^{(i)}:=\theta_k^{(i)}-\alpha\left(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}x_k^{(i)}+\lambda \theta_k^{(j)}\right)

注:在協(xié)同過(guò)濾從算法中,我們通常不使用方差項(xiàng)题禀,如果需要的話鞋诗,算法會(huì)自動(dòng)學(xué)得。
協(xié)同過(guò)濾算法使用步驟如下:

  1. 初始 x^{(1)},x^{(1)},...x^{(nm)},\ \theta^{(1)},\theta^{(2)},...,\theta^{(n_u)}為一些隨機(jī)小值

  2. 使用梯度下降算法最小化代價(jià)函數(shù)

  3. 在訓(xùn)練完算法后投剥,我們預(yù)測(cè)(\theta^{(j)})^Tx^{(i)}為用戶 j 給電影 i 的評(píng)分

通過(guò)這個(gè)學(xué)習(xí)過(guò)程獲得的特征矩陣包含了有關(guān)電影的重要數(shù)據(jù),這些數(shù)據(jù)不總是人能讀懂的担孔,但是我們可以用這些數(shù)據(jù)作為給用戶推薦電影的依據(jù)江锨。

例如,如果一位用戶正在觀看電影 x^{(i)}糕篇,我們可以尋找另一部電影x^{(j)}啄育,依據(jù)兩部電影的特征向量之間的距離\left\| {{x}^{(i)}}-{{x}^{(j)}} \right\|的大小。

16.4 協(xié)同過(guò)濾算法

參考視頻: 16 - 4 - Collaborative Filtering Algorithm (9 min).mkv

協(xié)同過(guò)濾優(yōu)化目標(biāo):

給定x^{(1)},...,x^{(n_m)}拌消,估計(jì)\theta^{(1)},...,\theta^{(n_u)}
\min_{\theta^{(1)},...,\theta^{(n_u)}}\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2

給定\theta^{(1)},...,\theta^{(n_u)}挑豌,估計(jì)x^{(1)},...,x^{(n_m)}

同時(shí)最小化x^{(1)},...,x^{(n_m)}\theta^{(1)},...,\theta^{(n_u)}
J(x^{(1)},...,x^{(n_m)},\theta^{(1)},...,\theta^{(n_u)})=\frac{1}{2}\sum_{(i,j):r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x_k^{(i)})^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2

\min_{x^{(1)},...,x^{(n_m)} \\\ \theta^{(1)},...,\theta^{(n_u)}}J(x^{(1)},...,x^{(n_m)},\theta^{(1)},...,\theta^{(n_u)})

16.5 向量化:低秩矩陣分解

參考視頻: 16 - 5 - Vectorization_ Low Rank Matrix Factorization (8 min).mkv

在上幾節(jié)視頻中,我們談到了協(xié)同過(guò)濾算法墩崩,本節(jié)視頻中我將會(huì)講到有關(guān)該算法的向量化實(shí)現(xiàn)氓英,以及說(shuō)說(shuō)有關(guān)該算法你可以做的其他事情。

舉例子:

  1. 當(dāng)給出一件產(chǎn)品時(shí)鹦筹,你能否找到與之相關(guān)的其它產(chǎn)品铝阐。

  2. 一位用戶最近看上一件產(chǎn)品,有沒(méi)有其它相關(guān)的產(chǎn)品铐拐,你可以推薦給他徘键。

我將要做的是:實(shí)現(xiàn)一種選擇的方法,寫(xiě)出協(xié)同過(guò)濾算法的預(yù)測(cè)情況遍蟋。

我們有關(guān)于五部電影的數(shù)據(jù)集吹害,我將要做的是,將這些用戶的電影評(píng)分虚青,進(jìn)行分組并存到一個(gè)矩陣中它呀。

我們有五部電影,以及四位用戶棒厘,那么 這個(gè)矩陣 Y 就是一個(gè)5行4列的矩陣钟些,它將這些電影的用戶評(píng)分?jǐn)?shù)據(jù)都存在矩陣?yán)铮?/p>

Movie Alice (1) Bob (2) Carol (3) Dave (4)
Love at last 5 5 0 0
Romance forever 5 ? ? 0
Cute puppies of love ? 4 0 ?
Nonstop car chases 0 0 5 4
Swords vs. karate 0 0 5 ?

推出評(píng)分:

找到相關(guān)影片:

現(xiàn)在既然你已經(jīng)對(duì)特征參數(shù)向量進(jìn)行了學(xué)習(xí),那么我們就會(huì)有一個(gè)很方便的方法來(lái)度量?jī)刹侩娪爸g的相似性绊谭。例如說(shuō):電影 i 有一個(gè)特征向量x^{(i)}政恍,你是否能找到一部不同的電影 j,保證兩部電影的特征向量之間的距離x^{(i)}x^{(j)}很小达传,那就能很有力地表明電影i和電影 j 在某種程度上有相似篙耗,至少在某種意義上迫筑,某些人喜歡電影 i,或許更有可能也對(duì)電影 j 感興趣宗弯「迹總結(jié)一下,當(dāng)用戶在看某部電影 i 的時(shí)候蒙保,如果你想找5部與電影非常相似的電影辕棚,為了能給用戶推薦5部新電影,你需要做的是找出電影 j邓厕,在這些不同的電影中與我們要找的電影 i 的距離最小逝嚎,這樣你就能給你的用戶推薦幾部不同的電影了。

通過(guò)這個(gè)方法详恼,希望你能知道补君,如何進(jìn)行一個(gè)向量化的計(jì)算來(lái)對(duì)所有的用戶和所有的電影進(jìn)行評(píng)分計(jì)算。同時(shí)希望你也能掌握昧互,通過(guò)學(xué)習(xí)特征參數(shù)挽铁,來(lái)找到相關(guān)電影和產(chǎn)品的方法。

16.6 推行工作上的細(xì)節(jié):均值歸一化

參考視頻: 16 - 6 - Implementational Detail_ Mean Normalization (9 min).mkv

讓我們來(lái)看下面的用戶評(píng)分?jǐn)?shù)據(jù):

如果我們新增一個(gè)用戶 Eve敞掘,并且 Eve 沒(méi)有為任何電影評(píng)分叽掘,那么我們以什么為依據(jù)為Eve推薦電影呢?

我們首先需要對(duì)結(jié)果 Y矩陣進(jìn)行均值歸一化處理玖雁,將每一個(gè)用戶對(duì)某一部電影的評(píng)分減去所有用戶對(duì)該電影評(píng)分的平均值:

然后我們利用這個(gè)新的 Y 矩陣來(lái)訓(xùn)練算法够掠。
如果我們要用新訓(xùn)練出的算法來(lái)預(yù)測(cè)評(píng)分,則需要將平均值重新加回去茄菊,預(yù)測(cè)(\theta^{(j)})^T x^{(i)}+\mu_i疯潭,對(duì)于Eve,我們的新模型會(huì)認(rèn)為她給每部電影的評(píng)分都是該電影的平均分面殖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末竖哩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脊僚,更是在濱河造成了極大的恐慌相叁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辽幌,死亡現(xiàn)場(chǎng)離奇詭異增淹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乌企,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)虑润,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人加酵,你說(shuō)我怎么就攤上這事拳喻】薜保” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵冗澈,是天一觀的道長(zhǎng)钦勘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)亚亲,這世上最難降的妖魔是什么彻采? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捌归,結(jié)果婚禮上肛响,老公的妹妹穿的比我還像新娘。我一直安慰自己陨溅,他們只是感情好终惑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绍在。 她就那樣靜靜地躺著门扇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偿渡。 梳的紋絲不亂的頭發(fā)上臼寄,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音溜宽,去河邊找鬼吉拳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛适揉,可吹牛的內(nèi)容都是我干的留攒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嫉嘀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炼邀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起剪侮,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拭宁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瓣俯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杰标,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年彩匕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腔剂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驼仪,死狀恐怖桶蝎,靈堂內(nèi)的尸體忽然破棺而出驻仅,到底是詐尸還是另有隱情,我是刑警寧澤登渣,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布噪服,位于F島的核電站,受9級(jí)特大地震影響胜茧,放射性物質(zhì)發(fā)生泄漏粘优。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一呻顽、第九天 我趴在偏房一處隱蔽的房頂上張望雹顺。 院中可真熱鬧,春花似錦廊遍、人聲如沸嬉愧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)没酣。三九已至,卻和暖如春卵迂,著一層夾襖步出監(jiān)牢的瞬間裕便,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工见咒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留偿衰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓改览,卻偏偏與公主長(zhǎng)得像下翎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宝当,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容