第十六章 異常檢測(cè)

該系列文章為作儿,觀看“吳恩達(dá)機(jī)器學(xué)習(xí)”系列視頻的學(xué)習(xí)筆記豆茫。雖然每個(gè)視頻都很簡(jiǎn)單迅箩,但不得不說(shuō)每一句都非常的簡(jiǎn)潔扼要溉愁,淺顯易懂。非常適合我這樣的小白入門饲趋。

本章含蓋

  • 16.1 問(wèn)題動(dòng)機(jī)
  • 16.2 高斯分布
  • 16.3 算法
  • 16.4 開發(fā)和評(píng)估異常檢測(cè)系統(tǒng)
  • 16.5 異常檢測(cè) VS 監(jiān)督學(xué)習(xí)
  • 16.6 選擇要使用的功能
  • 16.7 多變量高斯分布
  • 16.8 使用多變量高斯分布的異常檢測(cè)

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

在接下來(lái)的一系列視頻中拐揭,我將向大家介紹異常檢測(cè)(Anomaly detection)問(wèn)題撤蟆。這是機(jī)器學(xué)習(xí)算法的一個(gè)常見應(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è)試缔赠。

如果更正式的定義交洗,異常檢測(cè)問(wèn)題,那么我們有一些數(shù)據(jù) x^(1) 到 x^(m)橡淑,我們通常假定這 m 個(gè)樣本都是正常的,或者說(shuō)不是異常的咆爽。 然后梁棠,我們需要一個(gè)算法來(lái)告訴我們一個(gè)新的樣本數(shù)據(jù) x_test 是否是異常置森。我們需要采取的方法是,給定無(wú)標(biāo)簽訓(xùn)練集符糊,我們將對(duì)數(shù)據(jù)建模凫海,即 p(x)。也就說(shuō)男娄,我們將對(duì) x 的分布概率建模行贪,其中 x 是這些特征變量,例如飛機(jī)引擎模闲。因此建瘫,當(dāng)我們建立了 x 的概率模型之后,對(duì)于新的飛機(jī)引擎尸折,也就是 x_test啰脚,如果概率 p 低于閾值 ε。那么就將其標(biāo)記為“異呈导校”(即橄浓,p(x_test) < ε);否則亮航,任務(wù)它是正常的(即荸实,p(x_test) >= ε)。

當(dāng) x_test 落到中心那個(gè)圈內(nèi)時(shí)缴淋,p(x_test)的值會(huì)很大准给。

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

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

欺詐檢測(cè):x^(i)=用戶的第 i個(gè)活動(dòng)特征

模型p(x) 為我們其屬于一組數(shù)據(jù)的可能性沦辙,通過(guò)p(x)<ε檢測(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)陌兑。

異常檢測(cè)算法的應(yīng)用案例:

異常檢測(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)的磁盤數(shù)量,CPU的負(fù)載慧瘤,網(wǎng)絡(luò)的通信量等戴已。根據(jù)這些特征可以構(gòu)建一個(gè)模型,用來(lái)判斷某些計(jì)算機(jī)是不是有可能出錯(cuò)了锅减。

16.2 高斯分布

在這個(gè)視頻中糖儡,我將介紹高斯分布,也稱為正態(tài)分布上煤⌒萃妫回顧高斯分布的基本知識(shí)。


假設(shè) x 是一個(gè)實(shí)數(shù)的隨機(jī)變量劫狠。如果 x 的概率分布服從高斯分布拴疤,其中均值為 μ,方差為 σ 平方独泞。
σ:標(biāo)準(zhǔn)差呐矾,它確定了高斯分布概率密度函數(shù)的寬度;而懦砂,σ^2 稱之為“方差”蜒犯。
那么,將它記作 x ~ N(μ, σ^2)


高斯分布有兩個(gè)參數(shù)荞膘,一個(gè)是均值 μ罚随,一個(gè)是方差 σ^2。參數(shù) μ 控制曲線的中心位置羽资;σ 控制曲線的寬度淘菩,因此,參數(shù) σ 有時(shí)也稱作“一個(gè)標(biāo)準(zhǔn)差”屠升。這條鐘型曲線決定了 x 取不同值時(shí)的概率潮改。因此,x 取中心這些值的時(shí)候腹暖,輸出的概率相當(dāng)大汇在。

??這個(gè)代表 x 的概率分布,這個(gè)概率由 μ 和 σ^2 決定脏答。

高斯分布例子:

因?yàn)檫@是一個(gè)概率分布糕殉,所以陰影部分的積分一定為 1亩鬼。這是概率分布的一個(gè)特征。所以“ μ = 0阿蝶;σ = 0.5 ”的圖像比“ μ = 0辛孵;σ = 1 ”的圖像更高(即,只有一半的標(biāo)準(zhǔn)差赡磅,但是它有兩倍的高)。

接下來(lái)宝与,我們來(lái)討論下參數(shù)估計(jì)的問(wèn)題焚廊。
那么,什么是參數(shù)估計(jì)問(wèn)題习劫?
假設(shè)咆瘟,我們有一個(gè)數(shù)據(jù)集,其中有 m 個(gè)樣本诽里,從 x^(1) 到 x^(m)袒餐,假設(shè)它們都是實(shí)數(shù)。圖中的橫軸是樣本 x 的值谤狡。
而灸眼,參數(shù)估計(jì)問(wèn)題就是,假設(shè)我猜測(cè)這些樣本墓懂,來(lái)自一個(gè)高斯分布的總體焰宣,假設(shè)我猜測(cè)每個(gè)樣本 x^(i) 服從高斯分布。但是捕仔,我不知道高斯部分的兩個(gè)參數(shù) μ 和 σ^2 的值是多少匕积?參數(shù)的估計(jì)問(wèn)題就是,給定數(shù)據(jù)集榜跌,我希望能找到能夠估算出 μ 和 σ^2 的值闪唆。

均值參數(shù) μ 的估計(jì)方式:

方差參數(shù) σ^2 的估計(jì)方式:

注:機(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ì)。

16.3 算法

使用高斯分布來(lái)構(gòu)建一個(gè)異常檢測(cè)算法诱告。


異常檢測(cè)算法:

對(duì)于給定的數(shù)據(jù)集 x^(1), x^(2), ..., x^(m)撵枢,我們要針對(duì)每一個(gè)特征計(jì)算 μ 和 σ^2 的估計(jì)值。


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

“Π(大寫希臘字母π)” 表示“乘積式潜必,即,一些列數(shù)值的乘積”
當(dāng)p(x)<ε時(shí)沃但,為異常磁滚。btw,??這個(gè)估計(jì)問(wèn)題的分布項(xiàng) p(x) 宵晚,有時(shí)也稱作是“密度估計(jì)問(wèn)題”

整理一下:這就是我們的異常檢測(cè)算法
  1. 選擇特征量垂攘,或是想出一些特征量 x_i,它們能夠幫助我們指出哪些反常的樣本淤刃。通常來(lái)說(shuō)晒他,會(huì)選擇那些能夠描述你所想的能夠描述你所收集的數(shù)據(jù)的一般特性的特征。
  2. 給出訓(xùn)練集逸贾,也就是 m 個(gè)未標(biāo)記的樣本陨仅,從 x^(1) 到 x^(m)。之后铝侵,我們進(jìn)行參數(shù)擬合灼伤,μ_1 到 μ_n,(σ_1)^2 到 (σ_n)^2哟沫。
  3. 最后饺蔑,給定一個(gè)樣本,計(jì)算該樣本的 p(x)嗜诀。如果猾警,這個(gè)概率值很小,那么你就將這一項(xiàng)標(biāo)注為異常
應(yīng)用這種方法的一個(gè)案例

??的三維圖表示的是密度估計(jì)函數(shù)隆敢,z軸為根據(jù)兩個(gè)特征的值所估計(jì)p(x)值发皿。

事實(shí)上,我們可以改良這個(gè)方法拂蝎。意思是穴墅,看這個(gè)三維曲面圖,你可以看出所有的 x_1 和 x_2 值其所在位置都是比較高的温自,對(duì)應(yīng)的是無(wú)異常的情況玄货。相反偶芍,所有那些更遠(yuǎn)的點(diǎn)(粉色圈外的點(diǎn))蜈垮,所有這些點(diǎn)其概率都相當(dāng)小址晕,所以我們會(huì)將這些點(diǎn)標(biāo)注為異常站叼。因此,可以定義某個(gè)范圍震叙,看起來(lái)可能是這樣??(粉絲圈)

我們選擇一個(gè)ε栈雳,將p(x)=ε作為我們的判定邊界怯邪,當(dāng)p(x)>ε時(shí)預(yù)測(cè)數(shù)據(jù)為正常數(shù)據(jù),否則為異常丙者。
在這段視頻中复斥,我們介紹了如何擬合p(x),也就是 x 的概率值械媒,以開發(fā)出一種異常檢測(cè)算法目锭。同時(shí),在這節(jié)課中纷捞,我們也給出了通過(guò)給出的數(shù)據(jù)集擬合參數(shù)侣集,進(jìn)行參數(shù)估計(jì),得到參數(shù) μ 和 σ兰绣,然后檢測(cè)新的樣本,確定新樣本是否是異常编振。
在接下來(lái)的課程中缀辩,我們將深入研究這一算法,同時(shí)更深入地介紹踪央,怎樣讓算法工作地更加有效臀玄。

16.4 開發(fā)和評(píng)估異常檢測(cè)系統(tǒng)

實(shí)數(shù)評(píng)估的重要性。它的主要思想是畅蹂,當(dāng)你為某個(gè)應(yīng)用開發(fā)一個(gè)學(xué)習(xí)算法時(shí)健无,你需要進(jìn)行一系列的選擇,比如液斜,選擇使用什么特征累贤,等等。如果你有某種方法少漆,通過(guò)返回一個(gè)實(shí)數(shù)臼膏,來(lái)評(píng)估你的算法,那么對(duì)這些選擇做出決定示损,往往會(huì)容易很多渗磅。比如,現(xiàn)在有一個(gè)新特性检访,你需要決定該不該納入這個(gè)特征始鱼?如果你分別在納入該特征和不納入該特征情況下運(yùn)行算法,然后算法返回一個(gè)數(shù)字脆贵,來(lái)告訴你這個(gè)特征對(duì)算法的影響是好是壞医清。這樣的話,你就能更簡(jiǎn)單地決定要不要納入這個(gè)特征丹禀。

so状勤,為了能夠快速地開發(fā)出這樣一個(gè)算法評(píng)估系統(tǒng)鞋怀。這里有一個(gè)很好的方法,來(lái)評(píng)估一個(gè)異常檢測(cè)系統(tǒng)持搜。
假設(shè)密似,我們有一些帶標(biāo)簽的數(shù)據(jù),這些數(shù)據(jù)中有正常的數(shù)據(jù)葫盼,也有異常的數(shù)據(jù)残腌。用 y = 0 表示正常樣本,用 y = 1 表示異常樣本贫导。

那么異常檢測(cè)算法的開發(fā)過(guò)程抛猫,以及評(píng)估方法。如下所示:

假設(shè)有一個(gè)訓(xùn)練集孩灯,并將它看作是無(wú)標(biāo)簽的闺金。所以它是一個(gè)很大的正常樣本的集合。通常來(lái)說(shuō)峰档,我把它們看作是無(wú)異常樣本败匹,即便遛進(jìn)了一些異常樣本也沒(méi)關(guān)系。接下來(lái)讥巡,我們要定義一個(gè)交叉驗(yàn)證集和測(cè)試集掀亩,用來(lái)評(píng)估這個(gè)異常檢測(cè)算法。具體來(lái)說(shuō)欢顷,對(duì)交叉驗(yàn)證集和測(cè)試集槽棍,我們假設(shè)在交叉驗(yàn)證集和測(cè)試集中包含一些已知是異常的樣本。所以抬驴,在測(cè)試集中我們有一些標(biāo)簽是 y = 1 的樣本炼七。

具體的例子:

例如:我們有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)集,我們嘗試使用不同的ε值作為閥值鳖链,并預(yù)測(cè)數(shù)據(jù)是否異常姆蘸,根據(jù)F1值或者查準(zhǔn)率與查全率的比例來(lái)選擇 ε
    因?yàn)椋覀兊臄?shù)據(jù)很傾斜(即芙委,大部分?jǐn)?shù)據(jù)的 y 都等于 0)逞敷。那么分類正確率就不是一個(gè)好的評(píng)價(jià)指標(biāo)。相比之下灌侣,如果我們用的是 true positive推捐,false positive,false negative侧啼,true negative 的比率牛柒;或者計(jì)算出算法的正確率和召回率堪簿;或者計(jì)算出想F_1-score,它是一個(gè)實(shí)數(shù)皮壁,來(lái)總結(jié)和反映精度椭更。
    通過(guò)這些方法,你就可以評(píng)估你的異常檢測(cè)算法蛾魄,在交叉驗(yàn)證和測(cè)試集樣本中的表現(xiàn)虑瀑。

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

16.5 異常檢測(cè) VS 監(jiān)督學(xué)習(xí)

前面我們構(gòu)建的異常檢測(cè)系統(tǒng)也使用了帶標(biāo)記的數(shù)據(jù)扔水,與監(jiān)督學(xué)習(xí)有些相似痛侍,下面的對(duì)比有助于選擇采用監(jiān)督學(xué)習(xí)還是異常檢測(cè):
  1. 它的正常樣本數(shù)量很少(即,y = 1 的例子魔市,這表示它是一個(gè)異常樣例)恋日,數(shù)量大致在 0 ~ 20 個(gè),或者50個(gè)嘹狞,那么你可以考慮使用一個(gè)異常檢測(cè)算法。與此相反誓竿,在一個(gè)典型的異常檢測(cè)算法中磅网,我們經(jīng)常會(huì)有一個(gè)比起正常樣本數(shù)量大得多的負(fù)樣本(即,y = 0 的樣本)筷屡,我們可以用這些龐數(shù)量的負(fù)樣本來(lái)擬合出 p(x) 的值涧偷。因此在許多異常檢測(cè)應(yīng)用中,有這樣一個(gè)思想:你有很多少的正樣本和很多的負(fù)樣本毙死,當(dāng)我們?cè)谔幚砉烙?jì)p(x)的值燎潮,擬合所有的高斯參數(shù)的過(guò)程中,我們只需要負(fù)樣本就夠了扼倘。所以确封,如果你有大量的負(fù)樣本,我們?nèi)匀豢梢院芎玫臄M合p(x)的值再菊。
    與此相反爪喘,對(duì)于監(jiān)督學(xué)習(xí)來(lái)說(shuō),更典型的情況是:在合理范圍內(nèi)會(huì)有大量的正樣本和負(fù)樣本纠拔。

  2. 還有另外一種人們經(jīng)潮#考慮異常檢查算法的方法,對(duì)于異常檢測(cè)應(yīng)用來(lái)說(shuō)稠诲,經(jīng)常有許多不同類型的異常侦鹏。因此诡曙,如果是這種情況,你有很少數(shù)量的正樣本略水,那么對(duì)一個(gè)算法就很難价卤,很難去從你的小數(shù)量的正樣本中去學(xué)習(xí)異常是什么。尤其是聚请,未來(lái)可能出現(xiàn)的異耻瘢看起來(lái)可能會(huì)與已有的截然不同。如果是這種情況驶赏,那么更有可能的是對(duì)負(fù)樣本用高斯分布模型p(x)來(lái)建模炸卑,而不是費(fèi)盡心思的對(duì)正樣本建模。
    相反煤傍,在一些其他問(wèn)題中盖文,你有足夠數(shù)量的正樣本,或是一個(gè)已經(jīng)能識(shí)別正樣本的算法蚯姆。尤其是五续,假如你認(rèn)為未來(lái)可能出現(xiàn)的正樣本與你當(dāng)前訓(xùn)練集中的正樣本類似。那么龄恋,這種情況下疙驾,使用一個(gè)監(jiān)督學(xué)習(xí)算法會(huì)更合理。它能查看大量正樣和大量負(fù)樣本來(lái)學(xué)到相應(yīng)特征郭毕,并且能夠嘗試區(qū)分正樣本和負(fù)樣本

希望這節(jié)課能讓你明白一個(gè)學(xué)習(xí)問(wèn)題的什么樣的特征它碎,能讓你把這個(gè)問(wèn)題當(dāng)作是一個(gè)異常檢測(cè),或者是一個(gè)監(jiān)督學(xué)習(xí)的問(wèn)題显押。二者的關(guān)鍵不同在于扳肛,在異常檢測(cè)中,我們通常只有少量的正樣本乘碑,因此對(duì)于一個(gè)學(xué)習(xí)算法而言挖息,它是不可能從這些正樣本中學(xué)習(xí)到足夠的知識(shí)的。所以我們要做的兽肤,是使用大量負(fù)樣本套腹,讓這個(gè)算法學(xué)到足夠多的內(nèi)容,從那些負(fù)樣本中學(xué)習(xí)p(x)的值资铡。我們保留小數(shù)量的正樣本沉迹,來(lái)評(píng)估我們的算法。這個(gè)算法用于交叉驗(yàn)證或測(cè)試集害驹。

另外鞭呕,對(duì)于很多技術(shù)公司可能會(huì)遇到的一些問(wèn)題,通常來(lái)說(shuō),正樣本的數(shù)量很少葫松,甚至有時(shí)候是0瓦糕,也就是說(shuō),出現(xiàn)了太多沒(méi)見過(guò)的不同的異常類型腋么,那么對(duì)于這些問(wèn)題咕娄,通常應(yīng)該使用的算法就是異常檢測(cè)算法。

異常檢測(cè)算法珊擂,例子:欺詐行為檢測(cè) 生產(chǎn)(例如飛機(jī)引擎)檢測(cè)數(shù)據(jù)中心的計(jì)算機(jī)運(yùn)行狀況
監(jiān)督學(xué)習(xí)算法圣勒,例子:郵件過(guò)濾器 天氣預(yù)報(bào) 腫瘤分類

16.6 選擇要使用的功能

事實(shí)上,當(dāng)你應(yīng)用異常檢測(cè)時(shí)摧扇,其中有一個(gè)因素對(duì)運(yùn)行有很大影響圣贸,那就是你使用什么特征,或者說(shuō)選擇什么特征扛稽,來(lái)實(shí)現(xiàn)異常檢測(cè)算法吁峻。

如何設(shè)計(jì)和選擇異常檢測(cè)算法的特征?在张?
在我們的異常檢測(cè)算法中用含,我們所做的其中一件事是,使用高斯分布來(lái)對(duì)特征建模帮匾。


異常檢測(cè)假設(shè)特征符合高斯分布啄骇,如果數(shù)據(jù)的分布不是高斯分布,異常檢測(cè)算法也能夠工作瘟斜,但是最好還是將數(shù)據(jù)轉(zhuǎn)換成高斯分布(因?yàn)檫@么做的話缸夹,算法也許能運(yùn)行的更好),例如使用對(duì)數(shù)函數(shù):x=log(x+c)哼转,其中 c 為非負(fù)常數(shù); 或者 x=x^c槽华,c為 0-1 之間的一個(gè)分?jǐn)?shù)壹蔓,等方法。這些參數(shù) c 都是可調(diào)的猫态,目的是讓你的數(shù)據(jù)更符合一個(gè)高斯分布佣蓉。
我們用擬合后的 x 來(lái)計(jì)算高斯分布的參數(shù) μ 和 σ^2

如何得到異常檢測(cè)算法的特征?亲雪?
我們通常用的辦法是勇凭,通過(guò)一個(gè)誤差分析。我的意思是义辕,這跟我們之前討論監(jiān)督學(xué)習(xí)時(shí)虾标,誤差分析的步驟類似的。我們先完整的訓(xùn)練出一個(gè)算法灌砖,然后在一組交叉驗(yàn)證上運(yùn)行算法璧函,然后找出那些預(yù)測(cè)出錯(cuò)的樣本傀蚌。并看看我們能否找到一些其他的特征來(lái)幫助學(xué)習(xí)算法,讓那些在交叉驗(yàn)證中判斷出錯(cuò)的樣本表現(xiàn)的更好蘸吓。



舉例:在一個(gè)正常樣本很多善炫,異常樣本很少的情況下。
一個(gè)常見的問(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è)誤差分析:


最后擂涛,我想與你分享一些,我平時(shí)在為異常檢測(cè)算法選擇特征變量時(shí)的一些思考:


通常來(lái)說(shuō)聊记,我選擇特征的方法是撒妈,我會(huì)選那些,既不會(huì)特別特別大排监,也不會(huì)特別特別小的特征狰右,對(duì)于那些我認(rèn)為很可能異常的樣本。
我們通秤叽玻可以通過(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è)算法馒稍,捕捉到各種不同的異常情況皿哨。

16.7 多變量高斯分布

舉例:


兩個(gè)特征,x_1 CPU 負(fù)載纽谒;x_2 內(nèi)存使用

假如证膨,我們的存在這么一個(gè)樣本(綠色)


對(duì)應(yīng) CPU Load 為 0.4 ;Memory Use 為 1.5鼓黔。將這個(gè)樣本分別帶入 x_1(CPU Load)和 x_2(Memory Use)的高斯分布圖央勒,對(duì)應(yīng)的結(jié)果都不太差,因此這個(gè)異常樣本在此異常檢測(cè)中會(huì)被識(shí)別為“正常的樣本”澳化。崔步。。

我們發(fā)現(xiàn)缎谷,異常檢測(cè)算法不能識(shí)別這個(gè)藍(lán)色的橢圓井濒。它認(rèn)為同一個(gè)粉色圈類的樣本具有相同的概率。

假使我們有兩個(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)色曲線所示的判定邊界甲献。

解決方案:使用“多元高斯分布”宰缤,或者叫做“多元正態(tài)分布”

具體做法:我們有特征變量 x ,它屬于 R^n竟纳。我們不要為 p(x_1)撵溃、p(x_2)分別建模疚鲤,而是要建立一個(gè)整體的 p(x) 模型锥累。多元高斯分布的參數(shù)是 μ 和 ∑(協(xié)方差矩陣)
| ∑ | :??叫做矩陣的行列式,它是一個(gè)矩陣的數(shù)學(xué)函數(shù)集歇。

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

我們首先計(jì)算所有特征的平均值,然后再計(jì)算協(xié)方差矩陣:

注:其中μ 是一個(gè)向量鹅心,其每一個(gè)單元都是原特征矩陣中一行數(shù)據(jù)的均值吕粗。最后我們計(jì)算多元高斯分布的p(x):
多元高斯分布的例子:

假設(shè),我們有兩個(gè)特征變量 x_1 和 x_2

對(duì)應(yīng)于特定的 x_1 和 x_2旭愧,這個(gè)面的高度颅筋,就是 p(x) 的值。

在??此參數(shù)設(shè)定下:當(dāng)输枯,x_1 和 x_2 都等于 0 時(shí)议泵,p(x)取到最大值。

多元高斯分布的一個(gè)很棒的事情是桃熄,你可以用它先口,給數(shù)據(jù)的相關(guān)性建立模型。

??非對(duì)角線上的元素瞳收,你會(huì)得到一種不同的高斯分布碉京。所以當(dāng)我將非對(duì)角線的元素,從 0.5 增加到 0.8 時(shí)缎讼,我會(huì)得到一個(gè)更加窄和高的收夸,沿著 x = y 這條線的分布。然后血崭,這個(gè)等高線圖告訴我們 x 和 y 看起來(lái)是一起增加的卧惜。即,x_1 和 x_2 同時(shí)處于高概率時(shí)夹纫,p(x)才處于高概率咽瓷。。

當(dāng) 協(xié)方差矩陣∑ 的非對(duì)角線上的元素舰讹,設(shè)置成負(fù)數(shù)時(shí)茅姜,得到的模型是,大部分的概率都在 x_1 和 x_2 負(fù)相關(guān)的區(qū)域上 所以大多數(shù)的概率都落在 x_1 等于 -x_2 附近的區(qū)域月匣,而不是 x1 = x_2钻洒。

另外,你還看有改變 平均參數(shù) μ

圖1:峰值在 x_1 = x_2 = 0 處
圖2:峰值在 x_1 = 0锄开;x_2 = 0.5 處
圖3:峰值在 x_1 = 1.5素标;x_2 = -0.5 處

所以改變參數(shù) μ 值,就是在移動(dòng)整個(gè)分布的中心

上圖是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)性

16.8 使用多變量高斯分布的異常檢測(cè)

多元高斯分布的參數(shù)擬合

假如我有一組樣本,從 x^1 到 x^m欠母,這些樣本的每一個(gè)都是 n 維向量(x ∈ R^n)疾就。并且,我的樣本是服從多元高斯分布的艺蝴。
??這和我們之前使用PCA猬腰,即,主成分分析算法的時(shí)候?qū)懙?∑ 是一樣的猜敢。
完整步驟:
  1. 首先姑荷,用我們的數(shù)據(jù)集來(lái)擬合該模型。即缩擂,通過(guò)設(shè)定 μ 和 ∑ 來(lái)擬合 p(x)鼠冕。
  2. 接下來(lái),當(dāng)你有一個(gè)新的樣本 x胯盯,即一個(gè)測(cè)試樣本懈费。我們需要用擬合出來(lái)的多元高斯分布的公式來(lái)計(jì)算p(x)。如果得到的 p(x) 很胁┠浴(即憎乙,p(x) < ε),就標(biāo)記該樣本為異常叉趣。
多元高斯分布 和 原始模型 有著怎樣的關(guān)系了泞边?

原始模型:

原始模型 對(duì)比 多元高斯模型,原始模型的輪廓(等高線)總是軸對(duì)其的疗杉。所以阵谚,你不能對(duì)不同特征之間的關(guān)系進(jìn)行建模。

事實(shí)上烟具,?? 3 個(gè)服從高斯分布的樣本梢什,你都可以用原始模型來(lái)擬合。也就是說(shuō)朝聋,原始模型是特殊的多元高斯模型嗡午。(即,當(dāng) ∑ 的非對(duì)角線上元素都是 0 時(shí) )玖翅,而對(duì)角線上元素翼馆,也就對(duì)應(yīng)原始模型的 σ^2

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

原高斯分布模型被廣泛使用著猜极,如果特征之間在某種程度上存在相互關(guān)聯(lián)的情況中姜,我們可以通過(guò)構(gòu)造新新特征的方法來(lái)捕捉這些相關(guān)性。
如果訓(xùn)練集不是太大跟伏,并且沒(méi)有太多的特征丢胚,我們可以使用多元高斯分布模型。

  1. 其實(shí)受扳,原始模型被用的更頻繁一些携龟。反之,多元高斯模型用得要更少一些勘高,但它在捕捉特征間的關(guān)系方面有著很多優(yōu)點(diǎn)峡蟋。
    假設(shè),你想要進(jìn)行異常檢測(cè)华望,你有一些不同的特征 x_1蕊蝗、x_2 等。你想通過(guò)異常檢測(cè)的組合值來(lái)捕捉異常樣本赖舟。
    如果你使用原始模型來(lái)捕捉這樣的組合值蓬戚,你就需要?jiǎng)?chuàng)建一個(gè)額外的特征來(lái)表示這個(gè)多個(gè)特征間關(guān)系的組合值,將其作為一個(gè)新的特征宾抓。
    而對(duì)比之下子漩,多元高斯模型,就能自動(dòng)地捕捉這種不同特征之間的關(guān)系石洗。

  2. 不過(guò)原始模型也有它的優(yōu)點(diǎn)痛单,原始模型的一個(gè)巨大優(yōu)勢(shì)就是,它的計(jì)算成本比較低劲腿。也就是說(shuō)旭绒,它能適應(yīng)巨大規(guī)模的 n(即,適應(yīng)數(shù)量巨大的特征)焦人。當(dāng) n = 10000 甚至 n = 100000 的時(shí)候挥吵。原始模型都能運(yùn)行得很好。
    而對(duì)比之下花椭,對(duì)于多元高斯模型忽匈,因?yàn)樾枰?jì)算 ∑ 的逆矩陣,而 ∑ 是一個(gè) n*n 的矩陣矿辽,因此它的計(jì)算成本比較高丹允,特別是在 大規(guī)模的 n 的情況下郭厌,它的計(jì)算成本將會(huì)非常高昂。所以雕蔽,多元高斯模型能適應(yīng)于的 n 值范圍比較小折柠。

  3. 最后,對(duì)于原始模型批狐,即時(shí)你有一個(gè)較小的扇售,有一定相關(guān)性的訓(xùn)練集,它也能順利運(yùn)行嚣艇。即便 n 的值只有 50承冰、100 這樣。
    而對(duì)于食零,多元高斯分布困乒,這個(gè)算法有一些數(shù)學(xué)性質(zhì),也就是你必須保證 m > n贰谣,否則顶燕,在估計(jì) ∑ 時(shí)會(huì)導(dǎo)致 ∑ 矩陣不可逆。這將導(dǎo)致你無(wú)法使用多元高斯分布冈爹。

原則:我會(huì)使用多變量高斯分布涌攻,當(dāng)且僅當(dāng) m 遠(yuǎn)大于 n。這算是一種频伤,狹義的數(shù)學(xué)要求恳谎。比如,m 大于 10倍的n憋肖。因痛。

ps:因?yàn)?∑ 大多時(shí)候是一個(gè)對(duì)稱矩陣,所以它的參數(shù)個(gè)數(shù)更接近于 n^2 / 2 (理論上岸更,∑ 矩陣的參數(shù)個(gè)數(shù)為 n^2)

如果鸵膏,你在擬合多元高斯模型的時(shí)候,發(fā)現(xiàn)協(xié)方差矩陣 ∑ 是奇異矩陣(即怎炊,∑ 矩陣不可逆)谭企。那么,通常是兩種情況:
① 一種是评肆,你沒(méi)有滿足 m > n 的條件
② 第二種是债查,你存在冗余的特征。比如瓜挽,x_1 = x_2 或 x_3 = x_4 + x_5 盹廷,這里的“x_1” 和 “x_3”都是冗余特征。即久橙,x_1 俄占、x_3 都是滿足線性相關(guān)的特征 管怠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缸榄,隨后出現(xiàn)的幾起案子渤弛,更是在濱河造成了極大的恐慌,老刑警劉巖碰凶,帶你破解...
    沈念sama閱讀 212,332評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鹿驼,居然都是意外死亡欲低,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門畜晰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事福荸∥狗郑” “怎么了?”我有些...
    開封第一講書人閱讀 157,812評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵块蚌,是天一觀的道長(zhǎng)闰非。 經(jīng)常有香客問(wèn)我,道長(zhǎng)峭范,這世上最難降的妖魔是什么财松? 我笑而不...
    開封第一講書人閱讀 56,607評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮纱控,結(jié)果婚禮上辆毡,老公的妹妹穿的比我還像新娘。我一直安慰自己甜害,他們只是感情好舶掖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尔店,像睡著了一般眨攘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚣州,一...
    開封第一講書人閱讀 49,919評(píng)論 1 290
  • 那天期犬,我揣著相機(jī)與錄音,去河邊找鬼避诽。 笑死龟虎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沙庐。 我是一名探鬼主播鲤妥,決...
    沈念sama閱讀 39,071評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼佳吞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了棉安?” 一聲冷哼從身側(cè)響起底扳,我...
    開封第一講書人閱讀 37,802評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贡耽,沒(méi)想到半個(gè)月后衷模,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,256評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒲赂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評(píng)論 2 327
  • 正文 我和宋清朗相戀三年阱冶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滥嘴。...
    茶點(diǎn)故事閱讀 38,712評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡木蹬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出若皱,到底是詐尸還是另有隱情镊叁,我是刑警寧澤,帶...
    沈念sama閱讀 34,389評(píng)論 4 332
  • 正文 年R本政府宣布走触,位于F島的核電站晦譬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏互广。R本人自食惡果不足惜蛔添,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兜辞。 院中可真熱鬧迎瞧,春花似錦、人聲如沸逸吵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扫皱。三九已至足绅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韩脑,已是汗流浹背氢妈。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留段多,地道東北人首量。 一個(gè)月前我還...
    沈念sama閱讀 46,473評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親加缘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸭叙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評(píng)論 2 350

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