人工智慧如何偵測異常情況?

人工智慧如何偵測異常情況?

異常檢測是數據操作中默默無聞的英雄——就像火災發生前發出低語的煙霧警報器。

簡單來說:人工智慧會學習「正常」狀態的特徵,給新事件一個異常評分閾值決定是否需要人工幹預(或自動屏蔽) 。問題在於,當你的數據具有季節性、混亂性、波動性,並且偶爾出錯時,你如何定義「正常」。 [1]

您可能想閱讀以下文章:

🔗為什麼人工智慧會對社會造成危害?
探討了人工智慧廣泛應用所帶來的倫理、經濟和社會風險。

🔗 AI 系統實際用水量是多少?
解釋了資料中心冷卻、訓練需求和對環境用水的影響。

🔗什麼是 AI 資料集以及它為何重要?
定義了資料集、標註、來源及其在模型效能中的作用。

🔗人工智慧如何從複雜資料中預測趨勢
涵蓋模式識別、機器學習模型和現實世界的預測用途。


“人工智慧如何檢測異常?” 

好的答案不應僅僅是羅列演算法,還應解釋演算法的運作機制,以及將其應用於真實、不完美的數據時的具體表現。最佳解釋如下:

  • 展示基本要素:特徵基線分數閾值。 [1]

  • 比較實用族:距離族、密度族、單一類族、隔離族、機率族、重構族。 [1]

  • 處理時間序列異常:「正常」取決於一天中的時間、一週中的哪一天、發布日期和假日。 [1]

  • 將評估視為一項真正的約束:誤報不僅令人惱火,還會損害信任。 [4]

  • 要考慮可解釋性以及人機交互,因為「這很奇怪」並不是根本原因。 [5]


核心機制:基線、分數、閾值🧠

大多數異常檢測系統——無論多麼複雜——都可歸結為三個組成部分:

1) 表徵(又稱:模型所看到

原始訊號很少能滿足需求。要麼設計特徵(滾動統計量、比率、滯後、季節性變化),要麼學習表示(嵌入、子空間、重構)。 [1]

2)評分(又名:這有多「奇怪」?)

常見的評分方法包括:

  • 基於距離:距離鄰居越遠 = 可疑。 [1]

  • 基於密度的分析:局部密度低=可疑(LOF 就是典型例子)。 [1]

  • 單類邊界:學習「正常」狀態,標記超出正常範圍的內容。 [1]

  • 機率性的:在擬合模型下可能性低 = 可疑。 [1]

  • 重建誤差:如果一個在正常資料集上訓練的模型無法重建正常資料集,那麼它很可能會有偏差。 [1]

3)閾值設定(又稱:何時敲響警鐘)

閾值可以是固定的、基於分位數的、按段劃分的或成本敏感的——但它們應該根據警報預算和下游成本進行校準

一個非常實用的細節:scikit-learn 的異常值/新穎性偵測器會顯示原始分數,然後應用一個閾值(通常透過污染式假設來控制)將分數轉換為正常值/異常值判斷。 [2]


快速定義,避免日後痛苦🧯

兩個差別可以避免你犯一些不易察覺的錯誤:

  • 異常值檢測:您的訓練資料可能已經包含異常值;演算法無論如何都會嘗試對「密集正常區域」進行建模。

  • 新奇性檢測:假設訓練資料乾淨;你需要判斷觀測值是否符合已學習到的正常模式。 [2]

此外:新穎性檢測通常被視為單類分類—對正常情況進行建模,因為異常樣本稀少或未定義。 [1]

 

人工智慧異常故障

無需人工幹預,你真的會用到的工具🧰

當標籤稀缺時(這種情況幾乎總是存在),以下是實際流程中會出現的工具:

  • 隔離森林:在許多表格問題中,它是一種強大的預設方法,在實踐中被廣泛使用,並在 scikit-learn 中實現。 [2]

  • 單類 SVM :雖然有效,但對參數調優和假設非常敏感;scikit-learn 明確指出需要仔細進行超參數調優。 [2]

  • 局部異常值因子(LOF) :經典的基於密度的評分方法;當「正常」值不是一個規則的色塊時,這種方法非常有效。 [1]

團隊每週都會重新發現一個實際的陷阱:LOF 的行為取決於你是在訓練集上進行異常值檢測還是在新數據上進行新穎性檢測——scikit-learn 甚至要求novelty=True才能安全地對未見過的數據進行評分。 [2]


即使數據不穩定,依然可靠的基準方法🪓

如果你正處於「我們只需要一些不會讓我們徹底迷失方向的東西」的階段,那麼可靠的統計數據就被低估了。

修正後的 z 分數利用中位數MAD(中位數絕對偏差)來降低對極端值的敏感度。 NIST 的 EDA 手冊記錄了修正後的 z 分數形式,並指出一個常用的「潛在異常值」經驗法則是,絕對值大於3.5 。 [3]

這並不能解決所有異常問題,但通常是強而有力的第一道防線,尤其適用於雜訊較大的指標和早期階段的監控。 [3]


時間序列的現實:「正常」取決於時間 ⏱️📈

時間序列異常情況很棘手,因為關鍵在於上下文:中午出現峰值可能是預期之內的;凌晨 3 點出現同樣的峰值則可能意味著發生了火災。因此,許多實際系統使用時間感知特徵(滯後、季節性變化、滾動視窗)和相對於預期模式的偏差來模擬常態性。 [1]

如果只能記住一條規則:在將一半流量判定為「異常」之前,先將基線流量(小時/天/地區/服務等級)細分


評估:罕見事件陷阱🧪

異常檢測常常如同“大海撈針”,這使得評估變得異常困難:

  • 當陽性結果很少時,ROC 曲線看起來可能非常完美,具有欺騙性。

  • 對於不平衡資料集,精確率-召回率視圖通常更具參考價值,因為它側重於正類的性能。 [4]

  • 從操作層面來說,你還需要設定警報預算:人類每小時實際能夠處理多少警報而不至於怒而放棄? [4]

透過滾動視窗進行回測可以幫助你發現經典的失敗模式:「它在上個月的發行版上運行得非常完美。」[1]


解釋性與根本原因:展示你的工作成果🪄

不加解釋就發出警報,就像收到一張神秘明信片。有點用,但令人沮喪。

可解釋性工具可以透過指出哪些特徵對異常評分貢獻最大,或提供「需要做出哪些改變才能使其看起來正常?」之類的解釋來提供幫助。 《可解釋機器學習》一書是一本紮實而嚴謹的指南,介紹了常用方法(包括 SHAP 式歸因)及其局限性。 [5]

目標不僅是讓利害關係人感到安心——而是為了更快地進行分類處理,減少重複事件的發生。


部署、漂移和回饋循環🚀

模型並非存在於投影片中,而是存在於管道中。

一個常見的「生產第一個月」的故事:偵測器主要標記部署、批次作業和缺失資料…這仍然很有用,因為它迫使你將「資料品質事件」與「業務異常」區分開來。

實際操作中:

  • 監測漂移情況,並根據行為變化進行重新訓練/重新校準。 [1]

  • 記錄分數輸入和模型版本,以便重現頁面跳躍的原因。 [5]

  • 收集用戶回饋(有用的警報與無用的警報),以便隨時調整閾值和分段。 [4]


安全角度:入侵偵測系統與行為分析🛡️

安全團隊通常會將異常偵測理念與基於規則的偵測結合:既有「正常主機行為」的基線,也有針對已知惡意模式的特徵碼和策略。 NIST 的 SP 800-94(最終版)仍然是入侵偵測和防禦系統考量的廣泛引用框架;它還指出,2012 年的草案「修訂版 1」從未成為最終版本,後來被廢止。 [3]

翻譯:在需要的地方使用機器學習,但不要拋棄枯燥的規則——它們之所以枯燥是因為它們有效。


比較表格:常用方法一覽📊

工具/方法 最適合 為什麼它(在實踐中)有效
穩健/修正的z分數 簡單的指標,快速的基線 當您只需要“足夠好”且誤報較少時,第一輪檢測結果就足夠強了。 [3]
隔離森林 表格,混合特徵 預設實現穩定可靠,在實務上被廣泛應用。 [2]
單類SVM 緊湊的“正常”區域 基於邊界的新穎性檢測;參數調優至關重要。 [2]
局部異常值因子 流形法線 與鄰近區域的密度對比可以捕捉到局部異常現象。 [1]
重構誤差(例如,自編碼器樣式) 高維度模式 以正常情況進行訓練;較大的重建誤差可以標示偏差。 [1]

作弊秘訣:從穩健的基準模型 + 枯燥的無監督方法開始,然後只在值得的地方增加複雜性。


迷你行動指南:從零到警報🧭

  1. 從操作層面定義「異常」 (延遲、詐欺風險、CPU 頻繁使用、庫存風險)。

  2. 首先設定一個基線(穩健統計或分段閾值)。 [3]

  3. 首先選擇一個無監督模型

  4. 設定預警閾值並設定預警預算,如果正面事件很少發生,則採用公關式思維進行評估。 [4]

  5. 新增解釋說明和日誌記錄,以便每個警報都可重現和可偵錯。 [5]

  6. 回測、發布、學習、重新校準——波動是正常的。 [1]

你絕對可以在一周內完成……前提是你的時間戳不是用膠帶和希望勉強粘在一起的。 😅


最後總結-太長了,我沒看完🧾

人工智慧透過學習「正常」的實際影像來檢測異常情況,對偏差進行評分,並標記超過閾值的情況。最好的系統並非靠花俏的功能取勝,而是靠校準:分段基線、警報預算、可解釋的輸出以及將雜訊警報轉化為可靠訊號的回饋迴路。 [1]


參考

  1. Pimentel等人(2014)-新奇性檢測綜述(PDF,牛津大學)閱讀更多

  2. scikit-learn 文件 -異常值和新奇性檢測 閱讀更多

  3. NIST/SEMATECH 電子手冊 -異常值偵測 (閱讀更多)和 NIST CSRC - SP 800-94(最終版):入侵偵測和防禦系統 (IDPS) 指南 (閱讀更多)

  4. Saito 和 Rehmsmeier (2015) -在不平衡資料集上評估二元分類器時,精確率-召回率圖比 ROC 圖更具資訊量(PLOS ONE)閱讀更多

  5. Molnar -可解釋機器學習(網路書籍)閱讀更多

在官方 AI 助理商店尋找最新的 AI

關於我們

返回博客