第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ù)集,從到
次洼,如果你生產(chǎn)了
個(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ī)引擎有特征變量翔脱。所謂的異常檢測(cè)問(wèn)題就是:我們希望知道這個(gè)新的飛機(jī)引擎是否有某種異常奴拦,或者說(shuō),我們希望判斷這個(gè)引擎是否需要進(jìn)一步測(cè)試届吁。因?yàn)榇硌绻雌饋?lái)像一個(gè)正常的引擎,那么我們可以直接將它運(yùn)送到客戶那里疚沐,而不需要進(jìn)一步的測(cè)試站玄。
給定數(shù)據(jù)集 ,我們假使數(shù)據(jù)集是正常的濒旦,我們希望知道新的數(shù)據(jù)
是不是異常的株旷,即這個(gè)測(cè)試數(shù)據(jù)不屬于該組數(shù)據(jù)的幾率如何。我們所構(gòu)建的模型應(yīng)該能根據(jù)該測(cè)試數(shù)據(jù)的位置告訴我們其屬于一組數(shù)據(jù)的可能性
尔邓。
上圖中晾剖,在藍(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è):
模型 為我們其屬于一組數(shù)據(jù)的可能性灯节,通過(guò)
檢測(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)為變量 符合高斯分布
則其概率密度函數(shù)為:
我們可以利用已有的數(shù)據(jù)來(lái)預(yù)測(cè)總體中的和
的計(jì)算方法如下:
高斯分布樣例:
注:機(jī)器學(xué)習(xí)中對(duì)于方差我們通常只除以而非統(tǒng)計(jì)學(xué)中的
吗蚌。這里順便提一下,在實(shí)際使用中纯出,到底是選擇使用
還是
其實(shí)區(qū)別很小蚯妇,只要你有一個(gè)還算大的訓(xùn)練集,在機(jī)器學(xué)習(xí)領(lǐng)域大部分人更習(xí)慣使用
這個(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ù)集 务漩,我們要針對(duì)每一個(gè)特征計(jì)算
和
的估計(jì)值。
一旦我們獲得了平均值和方差的估計(jì)值它褪,給定新的一個(gè)訓(xùn)練實(shí)例饵骨,根據(jù)模型計(jì)算 :
當(dāng)時(shí),為異常茫打。
下圖是一個(gè)由兩個(gè)特征的訓(xùn)練集居触,以及特征的分布情況:
下面的三維圖表表示的是密度估計(jì)函數(shù)妖混,軸為根據(jù)兩個(gè)特征的值所估計(jì)
值:
我們選擇一個(gè),將
作為我們的判定邊界轮洋,當(dāng)
時(shí)預(yù)測(cè)數(shù)據(jù)為正常數(shù)據(jù)制市,否則為異常。
在這段視頻中砖瞧,我們介紹了如何擬合息堂,也就是
的概率值,以開(kāi)發(fā)出一種異常檢測(cè)算法块促。同時(shí)荣堰,在這節(jié)課中,我們也給出了通過(guò)給出的數(shù)據(jù)集擬合參數(shù)竭翠,進(jìn)行參數(shù)估計(jì)振坚,得到參數(shù)
和
,然后檢測(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é)果變量 的值來(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à)方法如下:
根據(jù)測(cè)試集數(shù)據(jù)词裤,我們估計(jì)特征的平均值和方差并構(gòu)建
函數(shù)
對(duì)交叉檢驗(yàn)集,我們嘗試使用不同的
值作為閥值鳖宾,并預(yù)測(cè)數(shù)據(jù)是否異常亚斋,根據(jù)
值或者查準(zhǔn)率與查全率的比例來(lái)選擇
選出
后,針對(duì)測(cè)試集進(jìn)行預(yù)測(cè)攘滩,計(jì)算異常檢驗(yàn)系統(tǒng)的
值帅刊,或者查準(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ù) |
同時(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ù):七问,其中
為非負(fù)常數(shù); 或者
茫舶,
為 0-1 之間的一個(gè)分?jǐn)?shù)械巡,等方法。(編者注:在python中饶氏,通常用
np.log1p()
函數(shù)讥耗,就是
,可以避免出現(xiàn)負(fù)數(shù)結(jié)果疹启,反向函數(shù)就是
np.expm1()
)
誤差分析:
一個(gè)常見(jiàn)的問(wèn)題是一些異常的數(shù)據(jù)可能也會(huì)有較高的值古程,因而被算法認(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)很可能是異常值,但是其值卻仍然在正常范圍內(nèi)鹏溯。多元高斯分布將創(chuàng)建像圖中藍(lán)色曲線所示的判定邊界罢维。
在一般的高斯分布模型中,我們計(jì)算 的方法是:
通過(guò)分別計(jì)算每個(gè)特征對(duì)應(yīng)的幾率然后將其累乘起來(lái)丙挽,在多元高斯分布模型中言津,我們將構(gòu)建特征的協(xié)方差矩陣攻人,用所有的特征一起來(lái)計(jì)算 。
我們首先計(jì)算所有特征的平均值悬槽,然后再計(jì)算協(xié)方差矩陣:
注:其中 是一個(gè)向量怀吻,其每一個(gè)單元都是原特征矩陣中一行數(shù)據(jù)的均值。最后我們計(jì)算多元高斯分布的
:
其中:
是定矩陣初婆,在 Octave 中用
det(sigma)
計(jì)算
是逆矩陣蓬坡,下面我們來(lái)看看協(xié)方差矩陣是如何影響模型的:
上圖是5個(gè)不同的模型,從左往右依次分析:
是一個(gè)一般的高斯分布模型
通過(guò)協(xié)方差矩陣磅叛,令特征1擁有較小的偏差屑咳,同時(shí)保持特征2的偏差
通過(guò)協(xié)方差矩陣,令特征2擁有較大的偏差弊琴,同時(shí)保持特征1的偏差
通過(guò)協(xié)方差矩陣兆龙,在不改變兩個(gè)特征的原有偏差的基礎(chǔ)上,增加兩者之間的正相關(guān)性
通過(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í)也同樣適用 |
必須要有 |
原高斯分布模型被廣泛使用著普气,如果特征之間在某種程度上存在相互關(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ù), 和
撕攒。在這段視頻中陡鹃,讓我們用這些想法烘浦,并應(yīng)用它們制定一個(gè)不同的異常檢測(cè)算法。
要回顧一下多元高斯分布和多元正態(tài)分布:
分布有兩個(gè)參數(shù)萍鲸, 和
闷叉。其中
這一個(gè)
維向量和
的協(xié)方差矩陣,是一種
的矩陣脊阴。而這里的公式
的概率握侧,如按
和參數(shù)化
,和你的變量
和
嘿期,你可以得到一個(gè)范圍的不同分布一樣品擎,你知道的,這些都是三個(gè)樣本备徐,那些我們?cè)谝郧暗囊曨l看過(guò)了萄传。
因此,讓我們談?wù)剠?shù)擬合或參數(shù)估計(jì)問(wèn)題:
我有一組樣本是一個(gè)
維向量蜜猾,我想我的樣本來(lái)自一個(gè)多元高斯分布秀菱。我如何嘗試估計(jì)我的參數(shù)
和
以及標(biāo)準(zhǔn)公式?
估計(jì)他們是你設(shè)置 是你的訓(xùn)練樣本的平均值瓣铣。
并設(shè)置:
這其實(shí)只是當(dāng)我們使用PCA算法時(shí)候答朋,有 時(shí)寫(xiě)出來(lái)。所以你只需插入上述兩個(gè)公式棠笑,這會(huì)給你你估計(jì)的參數(shù)
和你估計(jì)的參數(shù)
梦碗。所以,這里給出的數(shù)據(jù)集是你如何估計(jì)
和
蓖救。讓我們以這種方法而只需將其插入到異常檢測(cè)算法洪规。那么,我們?nèi)绾伟阉羞@一切共同開(kāi)發(fā)一個(gè)異常檢測(cè)算法循捺?
首先斩例,我們把我們的訓(xùn)練集,和我們的擬合模型从橘,我們計(jì)算念赶,要知道,設(shè)定
和描述的一樣
恰力。
如圖叉谜,該分布在中央最多,越到外面的圈的范圍越小踩萎。
并在該點(diǎn)是出路這里的概率非常低停局。
原始模型與多元高斯模型的關(guān)系如圖:
其中:協(xié)方差矩陣為:
原始模型和多元高斯分布比較如圖:
十六、推薦系統(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)作片砚哆,我們可以看出Alice和Bob似乎更傾向與愛(ài)情片独撇, 而 Carol 和 Dave 似乎更傾向與動(dòng)作片。并且沒(méi)有一個(gè)用戶給所有的電影都打過(guò)分。我們希望構(gòu)建一個(gè)算法來(lái)預(yù)測(cè)他們每個(gè)人可能會(huì)給他們沒(méi)看過(guò)的電影打多少分纷铣,并以此作為推薦的依據(jù)卵史。
下面引入一些標(biāo)記:
代表用戶的數(shù)量
代表電影的數(shù)量
如果用戶j給電影
評(píng)過(guò)分則
代表用戶
給電影
的評(píng)分
代表用戶
評(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è)特征啄踊,如代表電影的浪漫程度忧设,
代表電影的動(dòng)作程度。
則每部電影都有一個(gè)特征向量颠通,如是第一部電影的特征向量為[0.9 0]址晕。
下面我們要基于這些特征來(lái)構(gòu)建一個(gè)推薦系統(tǒng)算法。
假設(shè)我們采用線性回歸模型顿锰,我們可以針對(duì)每一個(gè)用戶都訓(xùn)練一個(gè)線性回歸模型斩箫,如是第一個(gè)用戶的模型的參數(shù)。
于是撵儿,我們有:
用戶
的參數(shù)向量
電影
的特征向量
對(duì)于用戶 和電影
乘客,我們預(yù)測(cè)評(píng)分為:
代價(jià)函數(shù)
針對(duì)用戶 ,該線性回歸模型的代價(jià)為預(yù)測(cè)誤差的平方和淀歇,加上正則化項(xiàng):
其中 表示我們只計(jì)算那些用戶
評(píng)過(guò)分的電影易核。在一般的線性回歸模型中,誤差項(xiàng)和正則項(xiàng)應(yīng)該都是乘以
浪默,在這里我們將
去掉牡直。并且我們不對(duì)方差項(xiàng)
進(jìn)行正則化處理。
上面的代價(jià)函數(shù)只是針對(duì)一個(gè)用戶的纳决,為了學(xué)習(xí)所有用戶碰逸,我們將所有用戶的代價(jià)函數(shù)求和:
如果我們要用梯度下降法來(lái)求解最優(yōu)解,我們計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù)后得到梯度下降的更新公式為:
16.3 協(xié)同過(guò)濾
參考視頻: 16 - 3 - Collaborative Filtering (10 min).mkv
在之前的基于內(nèi)容的推薦系統(tǒng)中阔加,對(duì)于每一部電影饵史,我們都掌握了可用的特征,使用這些特征訓(xùn)練出了每一個(gè)用戶的參數(shù)胜榔。相反地胳喷,如果我們擁有用戶的參數(shù),我們可以學(xué)習(xí)得出電影的特征夭织。
但是如果我們既沒(méi)有用戶的參數(shù)吭露,也沒(méi)有電影的特征,這兩種方法都不可行了尊惰。協(xié)同過(guò)濾算法可以同時(shí)學(xué)習(xí)這兩者讲竿。
我們的優(yōu)化目標(biāo)便改為同時(shí)針對(duì)和
進(jìn)行泥兰。
對(duì)代價(jià)函數(shù)求偏導(dǎo)數(shù)的結(jié)果如下:
注:在協(xié)同過(guò)濾從算法中,我們通常不使用方差項(xiàng)题禀,如果需要的話鞋诗,算法會(huì)自動(dòng)學(xué)得。
協(xié)同過(guò)濾算法使用步驟如下:
初始
為一些隨機(jī)小值
使用梯度下降算法最小化代價(jià)函數(shù)
在訓(xùn)練完算法后投剥,我們預(yù)測(cè)
為用戶
給電影
的評(píng)分
通過(guò)這個(gè)學(xué)習(xí)過(guò)程獲得的特征矩陣包含了有關(guān)電影的重要數(shù)據(jù),這些數(shù)據(jù)不總是人能讀懂的担孔,但是我們可以用這些數(shù)據(jù)作為給用戶推薦電影的依據(jù)江锨。
例如,如果一位用戶正在觀看電影 糕篇,我們可以尋找另一部電影
啄育,依據(jù)兩部電影的特征向量之間的距離
的大小。
16.4 協(xié)同過(guò)濾算法
參考視頻: 16 - 4 - Collaborative Filtering Algorithm (9 min).mkv
協(xié)同過(guò)濾優(yōu)化目標(biāo):
給定拌消,估計(jì)
:
給定挑豌,估計(jì)
:
同時(shí)最小化和
:
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)該算法你可以做的其他事情。
舉例子:
當(dāng)給出一件產(chǎn)品時(shí)鹦筹,你能否找到與之相關(guān)的其它產(chǎn)品铝阐。
一位用戶最近看上一件產(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è)矩陣 就是一個(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ō):電影 有一個(gè)特征向量
政恍,你是否能找到一部不同的電影
,保證兩部電影的特征向量之間的距離
和
很小达传,那就能很有力地表明電影
和電影
在某種程度上有相似篙耗,至少在某種意義上迫筑,某些人喜歡電影
,或許更有可能也對(duì)電影
感興趣宗弯「迹總結(jié)一下,當(dāng)用戶在看某部電影
的時(shí)候蒙保,如果你想找5部與電影非常相似的電影辕棚,為了能給用戶推薦5部新電影,你需要做的是找出電影
邓厕,在這些不同的電影中與我們要找的電影
的距離最小逝嚎,這樣你就能給你的用戶推薦幾部不同的電影了。
通過(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é)果 矩陣進(jìn)行均值歸一化處理玖雁,將每一個(gè)用戶對(duì)某一部電影的評(píng)分減去所有用戶對(duì)該電影評(píng)分的平均值:
然后我們利用這個(gè)新的 矩陣來(lái)訓(xùn)練算法够掠。
如果我們要用新訓(xùn)練出的算法來(lái)預(yù)測(cè)評(píng)分,則需要將平均值重新加回去茄菊,預(yù)測(cè)疯潭,對(duì)于Eve,我們的新模型會(huì)認(rèn)為她給每部電影的評(píng)分都是該電影的平均分面殖。