【机器学习】异常检测算法(I)
在給定的數(shù)據(jù)集,我們假設(shè)數(shù)據(jù)是正常的 ,現(xiàn)在需要知道新給的數(shù)據(jù)Xtest中不屬于該組數(shù)據(jù)的幾率p(X)。
異常檢測(cè)主要用來(lái)識(shí)別欺騙,例如通過(guò)之前的數(shù)據(jù)來(lái)識(shí)別新一次的數(shù)據(jù)是否存在異常,比如根據(jù)一個(gè)用戶以前的使用習(xí)慣(數(shù)據(jù))來(lái)判斷這次使用的用戶是不是以前的用戶。或者根據(jù)之前CPU正常運(yùn)行時(shí)候的的用量數(shù)據(jù)來(lái)判斷當(dāng)前狀態(tài)下的CPU是否正常工作。
這里我們通過(guò)密度估計(jì)來(lái)進(jìn)行判斷:if ? P(X) >ε時(shí)候,為normal(正常)<ε?的時(shí)候?yàn)楫惓?。
我們用x(i)來(lái)表示用戶的第i個(gè)特征,模型P(x)= 我們其屬于一組數(shù)據(jù)的可能性
在這里我們會(huì)用到高斯分布(二項(xiàng)分布),在高斯分布中,我們 對(duì)于方差通常只除以m來(lái)得到μ和σ而不是統(tǒng)計(jì)學(xué)中的m-1
異常檢測(cè)算法:
對(duì)于給定的數(shù)據(jù)集x(1)...x(m),我們要針對(duì)每一個(gè)特征計(jì)算出μ和σ的估計(jì)值。
一旦我們獲得了平均值和方差的估計(jì)值,給定的一個(gè)新的訓(xùn)練實(shí)例,根據(jù)模型計(jì)算我們就可以得出p(x)
我們選擇一個(gè)?ε,將p(x)=ε作為我們的判定邊界,當(dāng)p(x)> ε的時(shí)候預(yù)測(cè)數(shù)據(jù)為正常數(shù)據(jù),否則為異常數(shù)據(jù)。
異常檢測(cè)算是一個(gè)非監(jiān)督學(xué)習(xí)算法,這意味著我們無(wú)法根據(jù)結(jié)果變量Y 的值來(lái)告訴我們是否異常,我們可以從帶標(biāo)記的數(shù)據(jù)著手,選取一部分正常的數(shù)據(jù)用來(lái)訓(xùn)練和構(gòu)建,然后用剩下的正常樣本和測(cè)試樣本混合構(gòu)成交叉檢驗(yàn)集和測(cè)試集。
在這里我們舉一個(gè)栗子,用來(lái)更詳細(xì)的描述異常檢測(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)集,我們嘗試使用不同的 ε 值作為閥值,并預(yù)測(cè)數(shù)據(jù)是否異常,根據(jù) F1
值或者查準(zhǔn)率與查全率的比例來(lái)選擇 ε
3. 選出 ε 后,針對(duì)測(cè)試集進(jìn)行預(yù)測(cè),計(jì)算異常檢驗(yàn)系統(tǒng)的 F1 值, 或者查準(zhǔn)率與查全
率之比
之前我們構(gòu)建的異常檢測(cè)系統(tǒng)也使用了帶標(biāo)記的數(shù)據(jù),與監(jiān)督學(xué)習(xí)有些相似,下面的對(duì)
比有助于選擇采用監(jiān)督學(xué)習(xí)還是異常檢測(cè):
兩者比較:
?
轉(zhuǎn)載于:https://www.cnblogs.com/KID-XiaoYuan/p/7388274.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的【机器学习】异常检测算法(I)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ORACLE中的varchar2()与n
- 下一篇: iOS 9 学习系列: Xcode Co