PCA 型異常偵測元件

本文說明如何使用 Azure Machine Learning 設計工具中的 PCA 型異常偵測元件,根據主體元件分析 (PCA) 來建立異常偵測模型。

當您很容易從某個類別取得定型資料 (例如有效交易),但難以取得充足目標異常範例的情況下,此元件可協助您建立模型。

例如,若要偵測詐騙交易,您有時沒有充足的詐騙範例來進行定型。 但您可能會有許多良好交易的範例。 PCA 型異常偵測元件會藉由分析可用的功能來判斷構成「正常」類別的內容,藉以解決此問題。 元件接著會套用距離度量來識別代表異常狀況的案例。 這種方法可讓您使用現有的不平衡資料來定型模型。

進一步了解主體元件分析

PCA 是機器學習中已建立的技術。 PCA 常用於探索資料分析,因為它會顯示資料的內部結構,並說明資料中的變異數。

PCA 藉由分析包含多個變數的資料來運作。 它會尋找變數之間的關聯性,並決定最適合擷取結果中差異的值組合。 這些組合的特徵值會用來建立更精簡的特徵空間,稱為主體元件

針對異常偵測,系統會分析每個新的輸入。 異常偵測演算法會計算其在特徵向量上的投影,以及正規化的重建錯誤。 此正規化錯誤即為異常分數。 錯誤越高,表示實例越異常。

如需有關 PCA 運作方式以及異常偵測執行方式的詳細資訊,請參閱下列文章:

如何設定 PCA 型異常偵測

  1. 在設計工具中,將 PCA 型異常偵測元件新增至管線。 您可以在 [異常偵測] 類別中找到此元件。

  2. 在元件的右面板中,選取 [定型模式] 選項。 指出您是否要使用一組特定參數來定型模型,或使用參數掃掠來尋找最佳參數。

    若您知道要如何設定模型,請選取 [單一參數] 選項,並提供一組特定值做為引數。

  3. 針對在 PCA 中使用的元件數目,請指定需要的輸出特徵或元件數目。

    要包含多少個元件的決策,是使用 PCA 的實驗設計很重要的一部分。 就一般指引而言,您不應包含與變數相同的 PCA 元件數目。 相反地,您應先使用較少的元件,然後再增加元件直到符合某些準則為止。

    當輸出元件的數目小於資料集中可用的特徵資料行數目時,就會取得最佳結果。

  4. 指定隨機 PCA 定型期間要執行的超取樣量。 在異常偵測的問題中,不平衡資料會讓您難以套用標準 PCA 技術。 藉由指定某些超取樣量,您可以增加目標執行個體的數目。

    若您指定 1,則不會執行任何超取樣。 若您指定任何大於 1 的值,則會產生額外的樣本以用於定型模型。

    有兩個選項,取決於您是否使用參數掃掠而定:

    • 隨機化 PCA 的超取樣參數:輸入單一整數,代表在一般類別上超取樣少數類別的比率。 (當您使用單一參數定型方法時,即可使用此選項。)

    注意

    您無法檢視超取樣資料集。 如需有關如何搭配使用超取樣與 PCA 的詳細資訊,請參閱技術提示

  5. 選取 [啟用輸入特徵平均正規化] 選項,將所有輸入特徵正規化為零的平均值。 通常建議將 PCA 正規化或調整為零,因為 PCA 的目標是要最大化變數之間的差異。

    預設會選取這個選項。 若已透過不同的方法或縮放將值正規化,請取消其選取。

  6. 連線已標記的定型資料集和其中一個定型元件。

    如果您將 [建立定型器模式] 選項設定為 [單一參數],請使用定型異常偵測模型元件。

  7. 提交管線。

結果

定型完成後,您可以儲存定型的模型。 或者,您可以將其連線至評分模型元件,以預測異常分數。

如要評估異常偵測模型的結果:

  1. 確定兩個資料集都有可用的分數資料行。

    若您嘗試評估異常偵測模型,並收到錯誤「評分資料集中沒有分數資料行要比較」,表示您使用的是包含標籤資料行但沒有機率分數的一般評估資料集。 選擇符合異常偵測模型之結構描述輸出的資料集,其中包括評分標籤評分機率資料行。

  2. 確認已標示標籤資料行。

    有時,與標籤資料行相關聯的中繼資料會在管線圖表中移除。 若發生這種情況,當您使用評估模型元件來比較兩個異常偵測模型的結果時,可能會收到錯誤:「評分資料集中沒有標籤資料行。」或者,您可能會收到錯誤:「評分資料集中沒有標籤資料行可供比較。」

    您可以在評估模型元件之前加入編輯中繼資料元件,以避免這些錯誤。 使用資料行選取器選擇類別資料行,然後在 [欄位] 清單中選取 [標籤]。

  3. 使用執行 Python 指令碼 元件,將標籤資料行類別調整為 [1 (正數、正常)] 和 [0 (負數、異常)]。

    label_column_name = 'XXX'
    anomaly_label_category = YY
    dataframe1[label_column_name] = dataframe1[label_column_name].apply(lambda x: 0 if x == anomaly_label_category else 1)
    

技術說明

此演算法會使用 PCA 來估算包含一般類別的子空間。 子空間是由與資料共變數矩陣之最高特徵值相關聯的特徵向量所合併。

針對每個新輸入,異常偵測器會先計算它在特徵向量上的投影,然後計算正規化重構錯誤。 此錯誤是異常分數。 錯誤越高,表示執行個體越異常。 如需如何計算一般空間的詳細資訊,請參閱維基百科:主體元件分析

後續步驟

請參閱 Azure Machine Learning 可用的元件集

請參閱設計工具的例外狀況和錯誤碼,以取得設計工具元件特定的錯誤清單。