Anomaly Detection - Week_9_part1
Density Estimation
異常檢測是一個非監督是學習的演算法,用於發現可能不應該屬於一個已定義的組中的數據。
Problem Motivation
假設給定資料集x(1), x(2), x(3),...,x(m),假設我們的資料都正常且屬於同一類,我們想知道新的資料是不是異常且不屬於同一類,換句話說就是要測試這個資料是否屬於該資料組的機率如何。正常來說,我們所建構的模型應該能根據該測試的資料的位置,並告訴我們告訴屬於這一組資料集的可能性p(x)。
下面是某飛機內零件的資料特徵,下面在藍色圈內的數據屬於該資料集的可能性較高,若是越外圍越偏遠的資料,其屬於該數據的機率越低。
這種方式稱作密度估計,數學上的表達式為下面:
異常偵測可應用於很多方面,例如可以應用於網站欺騙行為的偵測,蒐集使用者的行為,建立異常偵測的機率模型,如果機率小於閥值則判定你並非一般使用者。
另一種則是用於檢測工廠產品品質的偵測,偵測產品是否為良品。
再者還可用來監測數據中心電腦的異常行為,紀錄每台電腦的記憶體使用、CPU使用率、網路流量、每秒的硬碟存取數,來判斷電腦是否中毒或被駭客入侵。
本章節主要是複習一下高斯分布的基本概念,如果我們認為變數x符合高斯分布,我們會用x ~ N(𝜇, 𝜎2)此符號來代表,其高斯機率密度函數如下,不用強記需要上網查即可:
在此公式中,𝜇是資料集的平均,代表常態分佈的中心,𝜎是資料集的標準差,代表高斯分布的寬度,可利用該已知的資料集來求出這些數據,然後描述該高斯分布,其公式如下:
--------------------------------------------------------------------------------------------------------------------------
Algorithm
關於異常偵測的演算法的概念主要是密度估計,密度估計主要是每個特徵的本身的機率相乘,首先要先計算每個特徵的平均和標準差,接著再把每個特徵值的機率相乘,下面是異常偵測的主要公式:
上面這個希臘字母pi,就是代表連續相乘,就如同sigma是代表連續相加,下面就是演算法的大致流程,先是找尋具有異常指示性的特徵,然後算出每個特徵的機率,接著給定某個機率閥值,若新的樣本小於給定的機率閥值,則代表新的樣本屬於異常樣本,跟該資料集部是同一個。
--------------------------------------------------------------------------------------------------------------------------
Building an Anomaly Detection System
Developing and Evaluating an Anomaly Detection System
異常檢測演算法是一個非監督是學習演算法,也就代表我們無法根據其變數y的值,來告訴我們資料是否真的是異常。我們需要另一種方法來幫助我們來檢驗演算法是否有效。當我們開發一個異常檢測系統時,我們從有標記(正常或異常)的數據著手,我們從中選擇一部分的正常數據用於建構訓練資料集,然後用剩下的正常數據和異常數據的混合數據構成交叉檢驗資料即和測試資料集。
假設我們有1000台正常數據引擎的數據,有20台異常引擎的數據,那我們會這樣分配數據:
Anomaly Detection vs. Supervised Learning
在我們建構異常檢測系統也使用有標記的數據,與跟我們之前學到的監督式學習有點相似,下面的比較有助於採用監督式學習的分類還是非監督式學習的異常檢測。
Choosing What Features to Use
對於異常偵測演算法而言影響效率最大的因素之一就是特徵的選擇,所以這章節會來介紹該如何選擇特徵。
異常檢測是建立在假設特徵符合高斯分布,如果資料分布不是呈現高斯分布,異常檢測演算法也能夠工作,但是最好還是將資料轉換成高斯分布,例如使用對數函數轉換成 x_new = log( x + c ),其中 c 為非負常數,或者 x_new = x c,c 為 0 - 1 之間的一個分數等方法。如同下例:
Multivariate Gaussian Distribution (Optional)
Multivariate Gaussian Distribution
假設我們有兩個相關的特徵,而且這兩個特徵的值域範圍較寬,這種情況下,一般的高斯分布模型可能無法很好地辨別出異常數據。其原因在於,一般的高斯分布模型嘗試的是去同時追住兩個特徵的偏差(Bias),因始會創造出一個比較大的判定邊界造成誤判。
下圖是兩個相關的特徵,粉紅色的線(根據 Ɛ 的不同範圍可大可小)是一般高斯分布模型獲得的判定邊界,很明顯綠色的X代表的數據點很可能是異常值,但是其p(x)值卻仍然在正常範圍內。多元高斯分布將創建途中藍色曲線所示的判定邊界。
在一般高斯分布模型中,我們計算p(x)的方法是如同下方公式:
通過分別計算每個特徵所對應的機率,然後將其累乘起來,在多元高斯分布模型中,我們將構造特徵的協方差矩陣(共變異數矩陣Covariance matrix),用所有的特徵一起計算p(x)。首先我們要先計算所有特徵的平均值,然後再計算協方差矩陣:
P.S:其中 𝝁 是一個向量,其每一個單位都是原特徵矩陣中一行數據的平均值。最後我們計算多元高斯分布的p(x):
P.S: | Σ | 是代表行列式,在octave中用det(sigma)計算,Σ-1是反(逆)矩陣
下面我們來看看協方差(covariance matrix)是如何影響高斯機率模型?
以上為六個不同類型的機率模型,分別為(A) ~ (F)六種不同狀況
(A) 是一般的高斯分布機率模型
(B) 令特徵1擁有較小的偏差,同時保持特徵2的偏差,x1軸向改變
(C) 令特徵2有比較大的偏差,同時保持特徵1的偏差,x2軸項改變
(D) 不改變兩個特徵的原有偏差的基礎上,增加兩者之間的正相關
(E) 不改變兩個特徵的原有偏差的基礎上,增加兩者之間的負相關
(F) 其模型的中心點根據其平均值大小所改變,偏差與相關性皆不增加或減少
上一章節介紹的多元高斯分布機率函數,發現一般的高斯分布機率函數其實是多元高斯分布機率函數的特例,高斯多元分布機率函數若加上一個限制就等於一般的高斯分布機率函數,該限制就是其行列式矩陣為非對角線元素為0的矩陣,並把一般的高斯分布機率函數的標準差帶入行列式對角線的元素。
緊接著下面列出一般高斯分布機率函數的模型和多元高斯分布機率函數模型的不同之處,做個比較:
--------------------------------------------------------------------------------------------------------------------------
異常檢測是一個非監督是學習的演算法,用於發現可能不應該屬於一個已定義的組中的數據。
Problem Motivation
假設給定資料集x(1), x(2), x(3),...,x(m),假設我們的資料都正常且屬於同一類,我們想知道新的資料是不是異常且不屬於同一類,換句話說就是要測試這個資料是否屬於該資料組的機率如何。正常來說,我們所建構的模型應該能根據該測試的資料的位置,並告訴我們告訴屬於這一組資料集的可能性p(x)。
下面是某飛機內零件的資料特徵,下面在藍色圈內的數據屬於該資料集的可能性較高,若是越外圍越偏遠的資料,其屬於該數據的機率越低。
異常偵測可應用於很多方面,例如可以應用於網站欺騙行為的偵測,蒐集使用者的行為,建立異常偵測的機率模型,如果機率小於閥值則判定你並非一般使用者。
另一種則是用於檢測工廠產品品質的偵測,偵測產品是否為良品。
再者還可用來監測數據中心電腦的異常行為,紀錄每台電腦的記憶體使用、CPU使用率、網路流量、每秒的硬碟存取數,來判斷電腦是否中毒或被駭客入侵。
--------------------------------------------------------------------------------------------------------------------------
Gaussian Distribution
Gaussian Distribution
本章節主要是複習一下高斯分布的基本概念,如果我們認為變數x符合高斯分布,我們會用x ~ N(𝜇, 𝜎2)此符號來代表,其高斯機率密度函數如下,不用強記需要上網查即可:
在此公式中,𝜇是資料集的平均,代表常態分佈的中心,𝜎是資料集的標準差,代表高斯分布的寬度,可利用該已知的資料集來求出這些數據,然後描述該高斯分布,其公式如下:
--------------------------------------------------------------------------------------------------------------------------
Algorithm
關於異常偵測的演算法的概念主要是密度估計,密度估計主要是每個特徵的本身的機率相乘,首先要先計算每個特徵的平均和標準差,接著再把每個特徵值的機率相乘,下面是異常偵測的主要公式:
上面這個希臘字母pi,就是代表連續相乘,就如同sigma是代表連續相加,下面就是演算法的大致流程,先是找尋具有異常指示性的特徵,然後算出每個特徵的機率,接著給定某個機率閥值,若新的樣本小於給定的機率閥值,則代表新的樣本屬於異常樣本,跟該資料集部是同一個。
--------------------------------------------------------------------------------------------------------------------------
Building an Anomaly Detection System
Developing and Evaluating an Anomaly Detection System
異常檢測演算法是一個非監督是學習演算法,也就代表我們無法根據其變數y的值,來告訴我們資料是否真的是異常。我們需要另一種方法來幫助我們來檢驗演算法是否有效。當我們開發一個異常檢測系統時,我們從有標記(正常或異常)的數據著手,我們從中選擇一部分的正常數據用於建構訓練資料集,然後用剩下的正常數據和異常數據的混合數據構成交叉檢驗資料即和測試資料集。
假設我們有1000台正常數據引擎的數據,有20台異常引擎的數據,那我們會這樣分配數據:
- 6000台正常引擎的數據做為訓練資料集
- 2000台正常引擎和10台異常引擎作為交叉檢驗資料集,用來確認 𝜀
- 2000台正常引擎和10台異常引擎作為測試資料集,用來做最後的模型精度評估
具體的檢驗方法如下:
- 根據測試資料集,我們用特徵的平均值和標準差建構p(x)的機率函數
- 使用交叉檢驗資料集,檢測不同的 𝜀 作為評估的閥值,並預測數據是否異常,緊接著看計算出來的F1值或者查準率(precsion)和召回率(recall)的比例來選擇 𝜀
- 選擇出 𝜀 後,針對測試資料集進行預測,計算異常檢驗系統的F1值或者查準率與召回率之比值
--------------------------------------------------------------------------------------------------------------------------
在我們建構異常檢測系統也使用有標記的數據,與跟我們之前學到的監督式學習有點相似,下面的比較有助於採用監督式學習的分類還是非監督式學習的異常檢測。
| 異常檢測 | 監督式學習 | |
| 大致分類 | 非常少量的正向類樣本(異常數據 y = 1),大量的負向類樣本 (正常數據 y = 0) | 同時有大量的正向類樣本和負向類樣本 |
| 詳細原因 | 許多不同種類的異常,非常難根據少量的正向類來訓練模型,未來遇到的異常可能與掌握的異常非常不同。例如:造成異常的特徵今天只蒐集到10種,但實際上造成異常的特徵可能有100種,所以無法單就10種造成異常的特徵去訓練模型,這樣改天遇到新的異常就沒辦法準確預測。 | 有足夠的正向類樣本,足夠運用於訓練模型,未來的正向類樣本可能與訓練資料集非常相似 |
| 實際案例 | 1.詐騙行為檢測(fraud dectection) 2.工廠產線品管(飛機引擎品質) 3.數據中心的電腦運行狀況 | 1.郵件過濾器 2.天氣預報 3.腫瘤分類 |
--------------------------------------------------------------------------------------------------------------------------
對於異常偵測演算法而言影響效率最大的因素之一就是特徵的選擇,所以這章節會來介紹該如何選擇特徵。
異常檢測是建立在假設特徵符合高斯分布,如果資料分布不是呈現高斯分布,異常檢測演算法也能夠工作,但是最好還是將資料轉換成高斯分布,例如使用對數函數轉換成 x_new = log( x + c ),其中 c 為非負常數,或者 x_new = x c,c 為 0 - 1 之間的一個分數等方法。如同下例:
--------------------------------------------------------------------------------------------------------------------------
Multivariate Gaussian Distribution
假設我們有兩個相關的特徵,而且這兩個特徵的值域範圍較寬,這種情況下,一般的高斯分布模型可能無法很好地辨別出異常數據。其原因在於,一般的高斯分布模型嘗試的是去同時追住兩個特徵的偏差(Bias),因始會創造出一個比較大的判定邊界造成誤判。
下圖是兩個相關的特徵,粉紅色的線(根據 Ɛ 的不同範圍可大可小)是一般高斯分布模型獲得的判定邊界,很明顯綠色的X代表的數據點很可能是異常值,但是其p(x)值卻仍然在正常範圍內。多元高斯分布將創建途中藍色曲線所示的判定邊界。
在一般高斯分布模型中,我們計算p(x)的方法是如同下方公式:
通過分別計算每個特徵所對應的機率,然後將其累乘起來,在多元高斯分布模型中,我們將構造特徵的協方差矩陣(共變異數矩陣Covariance matrix),用所有的特徵一起計算p(x)。首先我們要先計算所有特徵的平均值,然後再計算協方差矩陣:
P.S:其中 𝝁 是一個向量,其每一個單位都是原特徵矩陣中一行數據的平均值。最後我們計算多元高斯分布的p(x):
P.S: | Σ | 是代表行列式,在octave中用det(sigma)計算,Σ-1是反(逆)矩陣
下面我們來看看協方差(covariance matrix)是如何影響高斯機率模型?
以上為六個不同類型的機率模型,分別為(A) ~ (F)六種不同狀況
(A) 是一般的高斯分布機率模型
(B) 令特徵1擁有較小的偏差,同時保持特徵2的偏差,x1軸向改變
(C) 令特徵2有比較大的偏差,同時保持特徵1的偏差,x2軸項改變
(D) 不改變兩個特徵的原有偏差的基礎上,增加兩者之間的正相關
(E) 不改變兩個特徵的原有偏差的基礎上,增加兩者之間的負相關
(F) 其模型的中心點根據其平均值大小所改變,偏差與相關性皆不增加或減少
--------------------------------------------------------------------------------------------------------------------------
Anomaly Detection using the Multivariate Gaussian Distribution上一章節介紹的多元高斯分布機率函數,發現一般的高斯分布機率函數其實是多元高斯分布機率函數的特例,高斯多元分布機率函數若加上一個限制就等於一般的高斯分布機率函數,該限制就是其行列式矩陣為非對角線元素為0的矩陣,並把一般的高斯分布機率函數的標準差帶入行列式對角線的元素。
緊接著下面列出一般高斯分布機率函數的模型和多元高斯分布機率函數模型的不同之處,做個比較:
--------------------------------------------------------------------------------------------------------------------------
留言
張貼留言