異常值檢測算法三:3sigma模型


離散度


    標准差是反應一組數據離散程度最常用的一種量化形式,是表示精確度的重要指標。說起標准差首先得搞清楚它出現的目的。我們使用方法去檢測它,但檢測方法總是有誤差的,所以檢測值並不是其真實值。檢測值與真實值之間的差距就是評價檢測方法最有決定性的指標。但是真實值是多少,不得而知。因此怎樣量化檢測方法的准確性就成了難題。這也是臨床工作質控的目的:保證每批實驗結果的准確可靠。

雖然樣本的真實值是不可能知道的,但是每個樣本總是會有一個真實值的,不管它究竟是多少。可以想象,一個好的檢測方法,其檢測值應該很緊密的分散在真實值周圍。如果不緊密,與真實值的距離就會大,准確性當然也就不好了,不可能想象離散度大的方法,會測出准確的結果。因此,離散度是評價方法的好壞的最重要也是最基本的指標

一組數據怎樣去評價和量化它的離散度呢?人們使用了很多種方法:

極差 :

  • 最直接也是最簡單的方法,即最大值-最小值(也就是極差)來評價一組數據的離散度。這一方法在日常生活中最為常見,比如比賽中去掉最高最低分就是極差的具體應用。

離均差的平方和

  • 由於誤差的不可控性,因此只由兩個數據來評判一組數據是不科學的。所以人們在要求更高的領域不使用極差來評判。其實,離散度就是數據偏離平均值的程度。因此將數據與均值之差(我們叫它離均差)加起來就能反映出一個准確的離散程度。和越大離散度也就越大。但是由於偶然誤差是成正態分布的,離均差有正有負,對於大樣本離均差的代數和為零的。為了避免正負問題,在數學有上有兩種方法:平均絕對偏差, 離均差平方求期望(即方差,即均差平方求期望,即均差平方和除以數量)是一個層面上的意思
    • 一種是取絕對值,也就是常說的離均差絕對值之和。
    • 而為了避免符號問題,數學上最常用的是另一種方法--平方,這樣就都成了非負數。因此,離均差的平方和成了評價離散度一個指標

方差(S2)

  • 由於離均差的平方和與樣本個數有關,只能反應相同樣本的離散度,而實際工作中做比較很難做到相同的樣本,因此為了消除樣本個數的影響,增加可比性,將標准差(這里應該改為:離均差的平方)求平均值,這就是我們所說的方差成了評價離散度的較好指標。樣本量越大越能反映真實的情況,而算數均值卻完全忽略了這個問題,對此統計學上早有考慮,在統計學中樣本的均差多是除以自由度(n-1),它的意思是樣本能自由選擇的程度。當選到只剩一個時,它不可能再有自由了,所以自由度是n-1。

標准差(SD)

  • 由於方差是數據的平方,與檢測值本身相差太大,人們難以直觀的衡量,所以常用方差開根號換算回來這就是我們要說的標准差。  在統計學中樣本的均差多是除以自由度(n-1),它是意思是樣本能自由選擇的程度。當選到只剩一個時,它不可能再有自由了,所以自由度是n-1。

變異系數(CV)

  • 標准差能很客觀准確的反映一組數據的離散程度,但是對於不同的檢目,或同一項目不同的樣本,標准差就缺乏可比性了,因此對於方法學評價來說又引入了變異系數CV。一組數據的平均值及標准差常常同時做為參考的依據。在直覺上,如果數值的中心以平均值來考慮,則標准差為統計分布之一“自然”的測量。

標准差與平均值定義公式

  • 方差 s^2 = [(x1-x)^2+(x2-x)^2+......(xn-x)^2]/(n) (x為平均數)
  • 標准差 = 方差的算術平方根
  • 在實驗中單次測量總是難免會產生誤差,為此我們經常測量多次,然后用測量值的平均值表示測量的量,並用誤差條來表征數據的分布,其中誤差條的高度為±標准誤。

正態分布


     正態分布(Normal distribution),也稱“常態分布”,又名高斯分布(Gaussian distribution),正態曲線呈鍾型,兩頭低,中間高,左右對稱因其曲線呈鍾形,因此人們又經常稱之為鍾形曲線。若隨機變量X服從一個數學期望為 μ、方差為 σ^2 的正態分布,記為N(μ,σ^2)。其概率密度函數為正態分布的期望值μ決定了其位置,其標准差σ決定了分布的幅度。當μ = 0,σ = 1時的正態分布是標准正態分布

正態分布具有兩個參數 μ 和 σ^2 的連續型隨機變量的分布:

  • 第一個參數 μ: 是服從正態分布的隨機變量的均值
  • 第二個參數σ^2:是此隨機變量的方差,所以正態分布記作N(μ,σ2)

其中:

  • μ 是正態分布的位置參數,描述正態分布的集中趨勢位置。概率規律為取與μ鄰近的值的概率大,而取離μ越遠的值的概率越小。正態分布以X=μ為對稱軸,左右完全對稱。正態分布的期望、均數、中位數、眾數相同,均等於μ
  • σ 描述正態分布資料數據分布的離散程度σ越大,數據分布越分散,σ越小,數據分布越集中。也稱為是正態分布的形狀參數,σ越大,曲線越扁平,反之,σ越小,曲線越瘦高

普通正態分布轉換標准正態分布公式


  •  正態分布是由兩個參數 μ 與 σ 確定的。對於任意一個服從 N ( μ , σ 2 ) 分布的隨機變量 X,經過下面的變換以后都可以轉化為 μ = 0 , σ = 1 的標准正態分布(standard normal distribution)。轉換公式為:

示例:

   某專業招收研究生20名,其中有10名免費,報考人數為1000人,考試滿分為500分。經過考試后才知道此專業考試總平均成績為μ=300分,如果招收研究生的分數線確定為350分,試問,現在某人考360分,他有沒有可能被錄取為免費生? 

  • 研究生考試成績X~N(μ,σ²),由已知 μ=300,而 σ 未知。研究生考試分數超過 350分 的考生頻率應該近似等於事件 (X≥350) 的概率
  • 所以有 P(X≥350) = 20/1000=0.02,即 P(X<350) = 0.98,即 Φ((350-300)/σ)= 0.98
  • 查標准正態分布表 Φ(2.05) = 0.9798 ≈ 0.98,如下圖
  • 所以取 50/σ = 2.05,解得 σ = 50/2.05
  • 此人能否被錄取為免費生,需估計一下他的排名,也就是算一下分數高於360分的概率,再乘以總人數就可以知道他的排名情況
  • 因為 P(X≥360) = 1 - P(X<360) = 1 - Φ(60/σ) = 1 - Φ(60×2.05/50) = 1-Φ(2.46) = 1 - 0.9931 = 0.0069
  • 所以研究生考試分數不低於360分的考生大概有:1000 × 0.0069 = 6.9 ≈ 7(人)
  • 因此,在研究生考試中,該考得360分的考生大約排第7名,所以他有可能是免費生。

 

3sigma模型 


 檢測異常,一般情況下超過一個閾值(threshold),那我們就可以粗略的認為這是一個異常數據,那閾值怎么定義:

  • 第一:通過經驗值,比如設置 threshold > 1000
  • 第二:假設每次事件都是獨立的且沒有上下文關聯,我們可以采用3sigma模型來檢測

算法
   數據需要服從正態分布。在3∂原則下,異常值如超過3倍標准差,那么可以將其視為異常值正負3∂的概率是99.7%,那么距離平均值3∂之外的值出現的概率為P(|x-u| 3∂) = 0.003,屬於極個別的小概率事件。如果數據不服從正態分布,也可以用遠離平均值的多少倍標准差來描述
檢測這一段時間的統計數據,假如符合正態分布,計算均值與方差。如果后來的統計值不在這個范圍3sigma范圍內,就可以認為這個值是異常值。

 

 

 

置信度和置信區間

  •  3σ原則又稱為拉依達准則,該准則具體來說,就是先假設一組檢測數據只含有隨機誤差,對原始數據進行計算處理得到標准差,然后按一定的概率確定一個區間,認為誤差超過這個區間的就屬於異常值
  • 正態分布狀況下,數值分布表:

 

 

示例說明

   做企業污染源檢測,為了檢測傳感器是否正常,或者企業排放污染異常,你需要對傳感器值做異常值的檢測,假設企業每天排放污染是獨立的,那么就可以使用簡單粗暴的3sigma模型來檢測。

   要知道企業的污染物排放是跟一個企業生產有關系的,如果一個企業正常生產那么污染物的排放量是不會相差太多。也就是說企業污染物排放量,會在一個范圍內波動。對一個月的排放量,做一個簡單的柱狀圖統計,x軸為排放量,y軸為排放次數。

 

 

通過圖可以觀察出,本月的排放還是挺符合正態分布的。如果取一個月的排放量為樣本,那么就是樣本容量為30,如果擴大采樣數,進行統計的話。很明顯可以看出,36.8為均值。如下圖

 

 

采樣估計 

    現在讓你去評估該企業一天正常排放量是多少?假設企業真實污染物正常一天排放量為36.8。然后我們隨機抽取一天,結果為30.2,你就說該企業正常排放量為30.2,這樣顯然不能讓人認同。但是如果做了多天的樣本抽樣得出,[20,50]這個區間為污染物正常一天排放量的范圍,顯然這樣更容易讓人接受。但是能夠讓人多大程度接受呢?假設為95%,那么這里就引入置信區間[30.2,38.3]置信度95%的概念。顯然把所有天的排放量都采集回來做正常排放量估計是不合適的,因為每天都有新的數據加入,所以只能夠以樣本估計整體。

置信區間置信度案例解釋

置信區間相信你有個大概想法,就是為認為這個排放量是正常的區間唄,那就是真實企業污染物正常排放量36.8,落在這個區間的概率嗎?答案是否定的。為了幫助你理解這個拗口的話,

  • 錯誤的理解計算置信度的方式是,統計在區間[30.2,38.3]的排放量的總個數除36.8的排放天數,結果為95%。
  • 實際上正確的求解置信度的方式是,假設樣本容量1000天,重新計算均值與方差,得到置信區間反復取這樣的樣本容量為1000 天 100次,那么就得到100個置信區間,這100個置信區間有95次包含了真實值36.8,95/100=95%,所以就得到置信度為95%。

但是這里又有個疑問,平時做置信區間的時候沒有做100次啊,一般做一次,就得出了置信度為95%的置信區間。引入一個例子,把置信區間比喻為黑箱子里的球,有黑白兩種顏色,抽樣100次,統計得出95%為黑球,5%為白球。現在找另外一個人重黑箱子中抽一個球,問這個求是黑球的概率是多少?答案很顯然 95%,所以我們經常只做一次抽樣,得到置信區間就可以說,這個置信區間有95%的概率包含真實值。

那么異常值檢測的思路就很清晰了,抽取一個月的數據,計算出置信區間,也就是說如果某天的排放量不在這個區間內,那么就可以說這天的值只有5%是一天正常的排放量,可能性很小那么就認為它是異常值。

 

代碼示例 


  如前面所述,3sigma原理可以簡單描述為:若數據服從正態分布,則異常值被定義為一組結果值中與平均值的偏差超過三倍標准差的值。即在正態分布的假設下,距離平均值三倍[公式](為標准差)之外的值出現的概率很小(如下式),因此可認為是異常值。

若數據不服從正態分布,也可以用遠離平均值的多少倍標准差來描述(這就使該原理可以適用於不同的業務場景,只是需要根據經驗來確定 k sigma中的k值,這個k值就可以認為是閾值)

示例代碼參見: https://zhuanlan.zhihu.com/p/36297816 

參考資料



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM