共用方式為


PCA 型異常偵測元件

警告

此元件 已被取代 ,因為其相依性 NimbusML 專案已不再主動維護。 因此,此元件將不會收到未來的更新或安全性修補程式。 我們打算在即將推出的版本中移除此元件。 建議使用者移轉至替代解決方案,以確保持續支持和安全性。

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

此元件可協助您在一個類別中輕鬆取得定型數據,例如有效的交易,但難以取得目標異常的足夠範例的案例中建置模型。

例如,若要偵測詐騙交易,您通常沒有足夠的詐騙範例來訓練。 但您可能會有許多良好的交易範例。 PCA 型異常偵測元件藉由分析可用的功能來判斷構成「一般」類別的內容,以解決問題。 接著,元件會套用距離計量來識別代表異常的情況。 此方法可讓您使用現有的不平衡數據來定型模型。

深入了解主體元件分析

PCA 是機器學習中的既定技術。 它經常用於探勘數據分析,因為它會顯示數據的內部結構,並說明數據中的變異數。

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

針對異常偵測,會分析每個新的輸入。 異常偵測算法會計算其預測特徵值,以及標準化重建錯誤。 正規化錯誤會當做異常分數使用。 錯誤愈高,實例就越異常。

如需 PCA 運作方式及異常偵測實作的詳細資訊,請參閱下列檔:

如何設定 PCA 型異常偵測

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

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

    如果您知道如何設定模型,請選取 [單一參數 ] 選項,並提供一組特定的值作為自變數。

  3. 針對 要在 PCA 中使用的元件數目,指定您想要的輸出功能或元件數目。

    要包含的元件數目決定,是使用 PCA 之實驗設計的重要部分。 一般指引是,您不應該包含與變數相同的 PCA 元件數目。 相反地,您應該從較小的元件開始,並增加它們,直到符合某些準則為止。

    當輸出元件 數目小於 數據集中可用的功能數據行數目時,會取得最佳結果。

  4. 指定隨機 PCA 定型期間要執行的過度取樣量。 在異常偵測問題中,不平衡的數據難以套用標準 PCA 技術。 藉由指定一些過度取樣,您可以增加目標實例的數目。

    如果您指定 1,則不會執行過度取樣。 如果您指定任何高於 1 的值,則會產生額外的樣本,以用於定型模型。

    根據您是否使用參數掃掠,有兩個選項:

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

    注意

    您無法檢視過度取樣的數據集。 如需如何搭配 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 來近似包含一般類別的子空間。 子空間是由與數據共變數矩陣的頂端 eigenvalue 相關聯的 eigenvectors 所跨越。

針對每個新的輸入,異常偵測器會先計算其在特徵向量上的投影,然後計算標準化重建錯誤。 此錯誤是異常分數。 錯誤愈高,實例就越異常。 如需如何計算一般空間的詳細資訊,請參閱維琪百科: 主體元件分析

下一步

請參閱 Azure 機器學習 可用的元件集。

如需設計工具元件專屬的錯誤清單,請參閱 設計 工具的例外狀況和錯誤碼。