使用孤立森林進行無監督的離群檢測
孤立森林是 一種無監督演算法的異常檢測,可以快速檢測資料集中的異常值。
孤立森林是一種簡單但非常有效的演算法,能夠非常快速地發現數據集中的異常值。理解這個演算法對於處理表格資料的資料科學家來說是必須的,所以在本文中將簡要介紹演算法背後的理論及其實現。
由於其演算法非常的簡單並且高效,所以 Scitkit Learn 已經將其進行了高效的實現,我們可以直接呼叫使用。但在直接進入示例之前,還是需要介紹其背後的理論,這樣才可以深入的瞭解該演算法的。
一些理論
1、什麼是異常?
異常(異常值)可以描述為資料集中與其他資料或觀察結果顯著不同的資料點。發生這種情況的原因有幾個:
- 異常值可能表示錯誤資料不正確或實驗可能未正確執行。
- 異常值可能是由於隨機變化或可能表明某些科學上有趣的東西。
2、為什麼要進行異常檢測?
我們之所以想要找出和深入研究異常,是因為這些資料點要麼會浪費的時間和精力,要麼可以讓我們識別出有意義的東西。
在簡單線性迴歸的情況下,錯誤的異常值會增加模型的方差,並進一步降低模型對資料的把握能力。異常值導致迴歸模型(尤其是線性模型)學習對異常值的偏差理解。
孤立森林如何工作
其他的方法一直在嘗試構建正常資料的配置檔案(分佈、規律等),然後進一步將哪些不符合配置檔案的資料點識別為異常。
而孤立森林的亮點在於它可以使用“孤立”規則來直接檢測異常(一個數據點與其餘資料的距離)。這意味著該演算法可以像其他與距離相關的模型(例如 K-Nearest Neighbors)一樣以線性時間複雜度執行。
該演算法是通過以異常值最明顯的特點為中心來進行工作:
- 只會有幾個異常值
- 有異常值肯定與其他值不同
孤立森林通過引入(一組)二叉樹來實現,該二叉樹通過隨機選擇一個特徵然後隨機選擇該特徵的分割值來遞迴地生成分割槽。分割槽過程將一直持續,直到它將所有資料點與其餘樣本分開。
因為每棵樹的例項中只選擇一個特徵。可以說決策樹的最大深度實際上是一,所以孤立森林的基本估計器實際上是一個具有各種資料子集的極其隨機的決策樹(ExtraTrees)。
孤立森林中的一棵樹的示例如下:
上圖異常值的屬性,可以觀察到與正常樣本相比異常值平均需要更少的分叉就能將它們隔離。每個資料點將在X輪之後根據它們被隔離的容易程度獲得分數,有異常分數的資料點將被標記為異常。
完整文章:
https://www.overfit.cn/post/079d4e026b3d42fd9131f14036a6a0f1