數據挖掘筆記(7)-離羣點檢測

離羣點檢測是爲了發現數據集中與其它大部分數據顯著不同的數據點,建模的的時候通常將離羣點視爲噪聲丟棄。離羣點雖然會影響建模的準確率,但是在特定的應用中,離羣點蘊含着更大的研究價值,比如從銀行卡刷卡記錄數據的離羣點分析某用戶是否存在異常刷卡行爲,再比如運動員上場比賽前的體能特徵數據中離羣點分析該運動員是否嗑藥了。下面來介紹幾種常用的離羣點檢測方法:

一、基於統計模型的離羣點檢測
通過估計概率分佈的參數來建立一個概率分佈模型,如果數據點不能很好的擬合該模型,那就意味着它可能不服從該概率分佈,那它就可能是一個離羣點。
(1)一元正太分佈中的離羣點檢測
正太分佈是統計學最常用的分佈之一,對於很多的數據集的某些屬性都可以假定它服從正太分佈,建立正太分佈模型來檢查離羣點。
正太分佈的概率密度如下:
在這裏插入圖片描述
其中總體均值μ和總體標準差σ屬於未知參數,可以通過樣本信息(給定的數據集)來估計,樣本均值X拔是總體均值μ的無偏估計,修正樣本方差是總計方差的無偏估計。
得到估計參數μ^ 和 σ^後我們就得到了正太概率分佈模型,可以接着利用標準化X=(X-μ)/σ將正太概率分佈模型變爲標準正太分佈模型。
對於N(0,1)分佈來說,數據點出現在尾部的概率很小,通常來講數據點出現在正負3倍的標準差之外的區域的概率很小,僅有0.0027,所以說可以將離均值超過3倍標準差的值視爲離羣點。

(2)混合模型的離羣點檢測
混合模型:
混合模型是一種特殊的統計模型,它包含多個概率分佈,每一個分佈對應一個簇(數據集中的一部分數據),而每個分佈的參數就是對該簇的相關描述。通常混合模型的概率分佈統一取正太分佈,但是每個分佈的參數不同。
混合模型的參數求解:
(一般用EM算法迭代來求參數集合A,這裏講一點點原理)
假定混合模型中有K個概率分佈,每個概率分佈的權重用Wj (1<= j <=K)表示且所有權重之和等於1,每個概率分佈的參數用αj 表示,A={α1,α2,…,αk}是所有參數的集合,現有m個樣本用χ={x1,x2,…,xm}表示,接下來用極大似然法求模型參數。

① 在所以參數已知的情況下(賦初值),任一樣本 x 來自第 j 個分佈的概率爲p(x ; αj),則可得任一樣本 x 來自該混合模型的概率爲:
在這裏插入圖片描述
② 計算樣本集χ={x1,x2,…,xm}中的樣本都是來自該混合模型的概率:
在這裏插入圖片描述
③ 將過程②中的概率進行轉化,便於求對數似然。樣本集χ={x1,x2,…,xm}中的樣本都是來自該混合模型等價於將樣本集分成k個子集,每個子集對應一個概率分佈,用Mj (1<= j <=K)表示這k個子集,PMj(x)表示第 j 個子集對應的概率分佈,所以化簡②式的概率公式如下:
在這裏插入圖片描述
④ 求對數似然函數
似然函數如下:
在這裏插入圖片描述
對數似然爲:
在這裏插入圖片描述
⑤ 使得④式中的對數似然取最大值對應的參數集合A就是該混合模型的最佳參數。

用於離羣點檢測的混合模型:
用於離羣點檢測的混合模型認爲數據集χ={x1,x2,…,xm}可以分爲兩個部分,一個是M(x)代表大多數正常數據的分佈,另一個是N(x)代表離羣點數據的分佈,M通常由數據集信息估計得到,N通常取均勻分佈。所以用於離羣點檢測的混合模型可取如下結構:
在這裏插入圖片描述
用於離羣點檢測混合模型的參數求解(最大化似然函數):
在這裏插入圖片描述
在這裏插入圖片描述
求出最佳參數集合A之後就得到了較優的混合模型,對數據集中的數據點進行測試,那些擬合效果不是很好的數據點可能是離羣點。

(3)基於統計模型的離羣點檢測的優缺點
在數據集龐大並且數據分佈已知的情況採用基於統計模型的離羣點檢測會非常有效而且可靠。但是對於數據分佈未知或者多維的數據集來說,用該方法來檢驗離羣點可能達不到理想的效果。

二、基於鄰近度的離羣點檢測
(1)思想
基於鄰近度的離羣點檢測的思想非常簡單,一般來講離羣點肯定遠離大部分正常的數據,通過計算每個數據點的k-最近鄰距離來度量該數據點是否遠離大部分的數據點,並且用每個數據點的k-最近鄰距離作爲該數據點的離羣點得分,距離越大,離羣點得分越大,所以離羣點的最大值是距離函數的能取到的最大值,離羣點的最小值則爲0。算出每個數據點的k-最近鄰距離之後,通過給定的距離閾值就可以篩選出離羣點。
數據點的k-最近鄰距離指的是該數據點與第k個離它最近的數據點的距離,距離的計算一般採用歐氏距離。
(2)基於鄰近度的離羣點檢測的優缺點
該方法雖然理解起來簡單,但是一般需要O(m 2)的時間(m爲數據點個數),對於大型數據集來說代價太大。此外,該方法的距離閾值使用的是全局閾值,對於具有不同密度區域的數據集該方法可能會找不出局部離羣點
如下圖:
圖中C點是全局離羣點,因爲C點距離兩個簇都遠,基於鄰近度的離羣點檢測肯定會檢測出C點。而D點離一個簇很遠,離另一個簇很近,所以它是局部離羣點,D點的k-最近鄰距離肯定小於我們給定的距離閾值,所以D點最終不會被視爲離羣點。
在這裏插入圖片描述
三、基於密度的離羣點檢測
(1)思想
基於密度的離羣點檢測認爲離羣點一般都來自低密度區域,計算每個數據點周圍的密度,通過給定密度的閾值檢測離羣點。
(2)計算每個數據點周圍的密度
①基於鄰近度的密度
該方法定義每個數據點周圍的密度爲它到最近的k個數據點的距離的平均數的倒數,所以距離越小,密度越高。
公式如下:
N(x,k)爲距離數據點x最近的k個數據點的集合,|N(x,k)|爲該集合數據元素的個數。
在這裏插入圖片描述
②基於計數的密度
該方法定義每個數據點周圍的密度爲以該數據點爲圓心,d爲半經的圓內包含的數據點的個數。所以d的選擇顯的尤爲重要,如果d太小,正常點具有的密度可能很小。
③基於相對密度的密度
該方法用每個數據點的相對密度作爲它周圍的密度。
每個數據點的相對密度定義爲該數據點密度與k個最近鄰數據點的平均密度之比。
公式如下:
在這裏插入圖片描述
(3)基於密度的離羣點檢測的優缺點
與基於鄰近度的離羣點檢測方法一樣,基於密度的離羣點檢測方法必然都具有O(m2)的時間複雜度,對於大型數據集代價太大,並且基於鄰近度的密度和基於計數的密度對於具有不同密度區域的數據裏來說並不適合,基於相對密度的密度給出了數據點是離羣點程度的定量度量,即使是具有不同密度區域的數據集,該密度也能達到很好度量效果。

四、基於聚類的離羣點檢測
聚類算法可以將內部結構相關的數據點聚集在一起形成一個簇,所以聚類當然可以找出內部結構與其它大部分數據點不相關的離羣點。
(1)思想
①一種簡單的方法
一種簡單的基於聚類的離羣點檢測方法是永遠丟棄遠離其它簇的小簇,這時候需要確定怎樣纔算是‘遠離’,怎樣纔算是‘小簇’。關於’遠離’可以定義爲如果一個簇與它最鄰近的簇的距離超過給定的最大距離閾值,那麼就認爲這個簇‘遠離’其它的所有簇,關於‘小簇’可以定義爲如果該簇包含的數據點個數小於給定的最小簇大小閾值,那麼就認爲這個簇是個‘小簇’。所以如果一個簇被認爲是遠離其它簇的小簇,那麼有理由懷疑這個‘小簇’內的數據點都是離羣點。
②一種更系統的方法
一種更系統的基於聚類的離羣點檢測方法是先聚類所有數據點,然後評估每個數據點屬於簇的程度。該方法對基於原型的聚類(比如k-means)比較適合,因爲它可以通過計算數據點到它的簇中心的距離度量該數據點屬於該簇的程度,也相當於是把數據點到它的簇中心的距離作爲該數據點的離羣點得分,距離越大,得分越高,越被認爲是離羣點。

(2)基於聚類的離羣點檢測需要處理的問題

①評估對象屬於簇的程度
該問題面向基於原型的聚類,雖然它把數據點到它的簇中心的距離作爲該數據點的離羣點得分,但是如果數據集具有不同密度區域,使用該方法來評估效果不佳,因爲小密度區域中的數據點的離羣點得分肯定普遍要小。
解決辦法:
要採用數據點到簇原型的相對距離來度量對象屬於簇的程度,這對於具有不同密度區域的數據集同樣適合。

簇質心: 簇的質心與計算距離時採用的距離函數有關。
當距離函數採用曼哈頓距離,簇的質心爲簇的中位數
當距離函數採用平方歐幾里德距離,簇的質心爲簇的均值。
當距離函數採用餘弦距離,簇的質心爲簇的均值。
當距離函數採用Bregman 散度,簇的質心爲簇的均值。

相對距離: 數據點到簇質心的距離與簇內所有數據點到簇質心的距離的中位數之比。

②選擇簇的個數
像k-means等這類聚類算法不能自動確定簇的個數,所以用這類算法來進行離羣點檢測必然依賴於簇個數的選擇。比如有一個包含10個數據點的小簇,數據點之間捱得很近,當指定的簇個數比較少時,這個小簇可能作爲某個大簇的一部分,因爲大簇相對來說密度小,數據點之間比較分散,所以這個小簇很可能被認爲是離羣點簇;當指定的簇個數比較多時,這個小簇就可能被認爲是一個正常的簇。

解決辦法:
方法一:選擇不同的簇個數重複分析離羣點
方法二:找出大量的小簇,因爲小簇趨向於更加凝聚,如果在存在大量小簇的情況下一個數據點被認爲離羣點,則它多半是真的離羣點。

(3)基於聚類的離羣點檢測的優缺點

  • 聚類算法是對含有離羣點的數據集進行聚類,由於離羣點對於聚類形成的簇有很大影響,所以用聚類形成的簇來分析離羣點會影響離羣點的質量。
  • 通過找‘小簇’的方法來找離羣點帶有主觀色彩,最小簇大小閾值和最大距離閾值的給定決定了離羣點的質量。
  • 通過衡量數據點屬於該簇的程度來找離羣點和基於鄰近度檢測離羣點方法一樣,具有O(m2)的時間複雜度。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章