異常檢測 第五部分 高維異常

2021-10-17 11:25:07 字數 2519 閱讀 9894

本章內容為高維異常檢測。

在實際場景中,經常會遇到幾十上百維的資料。以工業生產資料為例,由於涉及到生產製造環節的流程與裝置數以百計。同時,3c產品本身又有著數目眾多的資料維度產出。這樣實際場景中的高維資料中,維度**和資料稀疏資料不平衡問題是致命性的。高維異常檢測演算法在實際場景中有著極為重要的應用需求和意義。

在實際場景中,很多資料集都是多維度的。隨著維度的增加,資料空間的大小(體積)會以指數級別增長,使資料變得稀疏,這便是維度詛咒的難題。維度詛咒不止給異常檢測帶來了挑戰,對距離的計算,聚類都帶來了難題。例如基於鄰近度的方法是在所有維度使用距離函式來定義區域性性,但是,在高維空間中,所有點對的距離幾乎都是相等的(距離集中),這使得一些基於距離的方法失效。在高維場景下,乙個常用的方法是子空間方法。

整合是子空間思想中常用的方法之一,可以有效提高資料探勘演算法精度。整合方法將多個演算法或多個基檢測器的輸出結合起來。其基本思想是一些演算法在某些子集上表現很好,一些演算法在其他子集上表現很好,然後整合起來使得輸出更加魯棒。整合方法與基於子空間方法有著天然的相似性,子空間與不同的點集相關,而整合方法使用基檢測器來探索不同維度的子集,將這些基學習器集合起來。

下面來介紹兩種常見的整合方法:

feature bagging,基本思想與bagging相似,只是物件是feature。feature bagging屬於整合方法的一種。整合方法的設計有以下兩個主要步驟:

1.選擇基檢測器。這些基本檢測器可以彼此完全不同,或不同的引數設定,或使用不同取樣的子資料集。feature bagging常用lof演算法為基演算法。

2.分數標準化和組合方法:不同檢測器可能會在不同的尺度上產生分數。例如,平均k近鄰檢測器會輸出原始距離分數,而lof演算法會輸出歸一化值。另外,儘管一般情況是輸出較大的異常值分數,但有些檢測器會輸出較小的異常值分數。因此,需要將來自各種檢測器的分數轉換成可以有意義的組合的歸一化值。分數標準化之後,還要選擇乙個組合函式將不同基本檢測器的得分進行組合,最常見的選擇包括平均和最大化組合函式。

基探測器的設計及其組合方法都取決於特定整合方法的特定目標。很多時候,我們無法得知資料的原始分布,只能通過部分資料去學習。除此以外,演算法本身也可能存在一定問題使得其無法學習到資料完整的資訊。這些問題造成的誤差通常分為偏差和方差兩種。

方差:是指演算法輸出結果與演算法輸出期望之間的誤差,描述模型的離散程度,資料波動性。

偏差:是指**值與真實值之間的差距。即使在離群點檢測問題中沒有可用的基本真值

孤立森林(isolation forest)演算法是周志華教授等人於2023年提出的異常檢測演算法,是機器學習中少見的專門針對異常檢測設計的演算法之一,方法因為該演算法時間效率高,能有效處理高維資料和海量資料,無須標註樣本,在工業界應用廣泛。

孤立森林屬於非引數和無監督的演算法,既不需要定義數學模型也不需要訓練資料有標籤。孤立森林查詢孤立點的策略非常高效。假設我們用乙個隨機超平面來切割資料空間,切一次可以生成兩個子空間。然後我們繼續用隨機超平面來切割每個子空間並迴圈,直到每個子空間只有乙個資料點為止。直觀上來講,那些具有高密度的簇需要被切很多次才會將其分離,而那些低密度的點很快就被單獨分配到乙個子空間了。孤立森林認為這些很快被孤立的點就是異常點。

怎麼來切這個資料空間是孤立森林的核心思想。因為切割是隨機的,為了結果的可靠性,要用整合(ensemble)的方法來得到乙個收斂值,即反覆從頭開始切,平均每次切的結果。孤立森林由t棵孤立的數組成,每棵樹都是乙個隨機二叉樹,也就是說對於樹中的每個節點,要麼有兩個孩子節點,要麼乙個孩子節點都沒有。樹的構造方法和隨機森林(random forests)中樹的構造方法有些類似。流程如下:

從訓練資料中隨機選擇乙個樣本子集,放入樹的根節點;

隨機指定乙個屬性,隨機產生乙個切割點v,即屬性a的最大值和最小值之間的某個數;

根據屬性a對每個樣本分類,把a小於v的樣本放在當前節點的左孩子中,大於等於v的樣本放在右孩子中,這樣就形成了2個子空間;

在孩子節點中遞迴步驟2和3,不斷地構造左孩子和右孩子,直到孩子節點中只有乙個資料,或樹的高度達到了限定高度。

獲得t棵樹之後,孤立森林的訓練就結束,就可以用生成的孤立森林來評估測試資料。

孤立森林檢測異常的假設是:異常點一般都是非常稀有的,在樹中會很快被劃分到葉子節點,因此可以用葉子節點到根節點的路徑長度來判斷一條記錄是否是異常的。和隨機森林類似,孤立森林也是採用構造好的所有樹的平均結果形成最終結果的。在訓練時,每棵樹的訓練樣本是隨機抽樣的。從孤立森林的樹的構造過程看,它不需要知道樣本的標籤,而是通過閾值來判斷樣本是否異常。因為異常點的路徑比較短,正常點的路徑比較長,孤立森林根據路徑長度來估計每個樣本點的異常程度。

孤立森林也是一種基於子空間的方法,不同的分支對應於資料的不同區域性子空間區域,較小的路徑對應於孤立子空間的低維

1.feature bagging可以降低方差

2.孤立森林的優勢在於:

孤立森林不適用於超高維資料,因為鼓勵森林每次都是隨機選取維度,如果維度過高,則會存在過多噪音。

譯 Reduce(軟體編寫)(第五部分)

本文講的是 譯 reduce 軟體編寫 第五部分 array.reduce reducer accumulator any,current any any,initialvalue any accumulator any 2,4,6 reduce acc,n acc n,0 12const summ...

Python學習手冊(第五部分 模組)

注意 匯入只發生一次!如果需要乙個模組的 通過某種匯入後再一次執行,需要使用內建函式reload來實現。最好使用import直接匯入模組,使用from import 語句匯入的變數名可能會有問題。import匯入模組包的語句中的目錄路徑只能是以點號間隔的變數。相對匯入與絕對匯入 絕對匯入的格式為 i...

Job 儲存和持久化 第五部分

十.使用資料庫儲存 scheduler 資訊 載入 job 到資料庫中 在前面有一節,使用記憶體儲存 scheduler 資訊 我們談到關於在使用 ramjobstore 時如何載入 job 和 trigger 資訊到記憶體中。那麼 job 和 trigger 又是如何載入到資料庫中的呢?存在以下幾...