🗺️ AI 學習與考證地圖
非監督式學習 · 異常偵測

異常偵測:找出那 0.1% 不對勁的資料

信用卡被盜刷、工廠馬達快壞掉、公司網路有人在偷資料——這些事共同的難處是:壞事極少、沒人幫你貼標籤、而且你不知道下一次壞事長什麼樣。異常偵測就是專門處理「在一大群正常裡抓少數怪咖」的一門技術。這一頁讓你親手調門檻,看誤報與漏抓怎麼拉鋸。

z-score / IQRkNN / LOFIsolation ForestAutoencoder 重建誤差Precision / Recall門檻取捨

💡一句話定義

異常偵測(Anomaly Detection,又稱離群值偵測 Outlier Detection)=先學會「正常長什麼樣」,再把跟正常差太多的資料點挑出來。它不是硬背「異常長什麼樣」(因為異常太少、也常是沒見過的新型態),而是替每個點算一個「怪異程度分數」,分數超過門檻就舉旗示警。

你每天都在被它保護:銀行在你刷卡 0.2 秒內判斷「這筆跟你平常的消費模式差多少」;機台的震動感測器一偏離常態就通知維修;防毒軟體看到程式行為怪怪的就隔離它。

🎮互動:異常偵測實驗室

下面是一團正常點(灰色)加上幾個真正的異常點(用菱形標記)。選一種方法、拉動門檻,看系統把哪些點判為異常:紅色=抓對(TP)、橘色=誤報(FP,正常被當異常)、黃框=漏抓(FN,異常沒被抓到)。右邊即時算 Precision、Recall、F1。

🔬 四種方法,同一組資料
① 選方法
② 門檻(越嚴格=抓越少)
2.5
③ 資料長相
5%
1.0
正常,判正常(TN) 異常,抓到(TP) 正常,誤報(FP) 異常,漏抓(FN) ◆=真正的異常點

📊 這個門檻下的成績

–Precision
抓到的裡面幾成是真的
–Recall
真異常被抓到幾成
–F1
兩者的調和平均
判異常
判正常
真異常
0
0
真正常
0
0
–Accuracy(看起來很高吧?)
–被判異常的點數
玩法建議:①把門檻拉到最嚴(右邊)→ Precision 高、Recall 低(寧可放過);拉到最鬆 → 反過來。②把「異常比例」調高到 15%,看 z-score 跟 IQR 誰先失準(異常太多會把平均數與標準差「拉歪」,這叫遮蔽效應 masking,IQR 用中位數較耐拉)。③把雜訊調大,kNN 距離法的誤報會增加,因為正常點本身也散開了。④ Isolation Forest 每次重新產生資料都會重建隨機樹,分數會略有不同——它本來就是隨機演算法。

🤔為什麼它不是「一般的二元分類」?

既然要分「正常/異常」,直接訓練一個分類器不就好了?問題出在資料的長相:

面向一般二元分類(例:貓 vs 狗)異常偵測(例:正常交易 vs 詐欺)
兩類比例大致平衡,或至少都有一定數量極度不平衡:異常常 <1%,甚至 0.01%
標籤每筆都有異常常常沒標籤(沒人知道哪筆是詐欺,直到客訴)
異常的長相兩類各自有穩定模式異常五花八門又會變:今天的詐欺手法跟去年不同,學「異常長怎樣」很快過時
學習目標學兩類的分界線學正常的範圍,範圍外都算異常(one-class 思維)
評估Accuracy 多半夠用Accuracy 幾乎無意義,要看 Precision / Recall / F1 / PR-AUC
輸出類別通常是異常分數+一個可調的門檻
一句話記:分類學「A 跟 B 差在哪」,異常偵測學「正常長怎樣」。所以異常偵測常被歸在非監督式學習底下——不需要異常的標籤也能做。

🧭三種設定:有沒有標籤、有哪種標籤

🏷️監督式(Supervised)
正常與異常都有標籤。本質上是極度不平衡的二元分類,要配合重抽樣、類別權重。缺點:只能抓「看過的那種異常」。
🧼半監督式(Semi-supervised)/單類別
只有正常資料(或只確定其中一部分是正常)。模型只學「正常的樣子」,偏離就算異常:One-class SVM、Autoencoder 都是這一路。最常見的實務設定。
🔍非監督式(Unsupervised)
完全沒標籤,假設「異常很少、而且跟大多數長得不一樣」,直接從資料結構找離群:z-score、IQR、kNN、LOF、Isolation Forest、DBSCAN 噪音點。
考題怎麼問:「公司有大量正常機台運作紀錄,但故障紀錄極少且型態未知,應採何種設定?」→ 半監督/單類別(只學正常)。「完全沒有任何標籤」→ 非監督。「有充足的歷史詐欺標籤」→ 監督式不平衡分類。

🧰方法家族:五種「算怪異分數」的思路

① 統計法:離平均太遠就是怪

$z=\dfrac{x-\mu}{\sigma}$,$|z|>3$ 視為異常  IQR 法:$xQ_3+1.5\,\text{IQR}$,$\text{IQR}=Q_3-Q_1$ z-score 假設資料接近常態、且平均數與標準差沒被異常點拉歪;IQR 用四分位數(中位數系),對極端值較不敏感。多維資料可改用馬氏距離(Mahalanobis distance)。細節見 離群值偵測。

② 距離/密度法:附近沒鄰居就是怪

③ 隔離法:Isolation Forest——怪咖很容易被「切」出來

隨機切割(每刀:隨機選軸、隨機選位置) 離群點 第 1 刀 第 2 刀 → 單獨隔離 ✔ 正常點擠在一起,要切很多刀才分得開 路徑長度 h(x) = 被隔離前切了幾刀 ◆ 離群點:平均 2~3 刀 h 短 → 分數高 → 異常 ● 正常點:平均 7~9 刀 分數 s(x) = 2^(−E[h(x)] / c(n)),接近 1 很異常、 接近 0.5 以下算正常;c(n) 是平均路徑的正規化常數。 種很多棵隨機樹取平均 → 森林。

直覺:離群點孤零零待在空曠處,隨便切一兩刀就被單獨關進一格;正常點擠在人群裡,要切很多刀才隔得開。所以「被隔離所需的切割次數(路徑長度)越短,越可能是異常」。優點:不用算距離、高維也快、線性時間、對比例不敏感,是目前工業界最常用的預設方法之一。想看故事版?Isolation Forest 漫畫。

④ 重建誤差法:Autoencoder——學會畫正常,畫不出來的就是怪

自編碼器(Autoencoder)是一個「壓縮再還原」的神經網路:只用正常資料訓練它把輸入壓成低維向量再還原回來。因為它只看過正常,遇到異常輸入時還原得很差——重建誤差(reconstruction error)就是異常分數。適合高維資料(影像瑕疵檢測、感測器多通道)。VAE 是它的機率版本,PCA 重建誤差則是線性的簡化版。

⑤ 時序異常:跟「自己的過去」比

感測器、網站流量、股價這類時間序列,異常不是「離全體平均遠」,而是「離預期的下一刻遠」。做法:用 ARIMA/LSTM/Prophet 預測下一個值,實際值與預測值的差(殘差)太大就是異常;或用滑動視窗統計、季節性分解。常見型態:點異常(突波)、情境異常(半夜流量像白天)、集體異常(一段時間整體漂移)。

方法怪異分數怎麼算優點弱點
z-score / IQR離平均/四分位數多遠簡單、可解釋、一維超好用假設單峰;多維、多群失效;z 會被極端值拉歪
kNN 距離到第 k 近鄰的距離直覺、無分布假設O(n²)、高維距離失靈、密度不均會誤判
LOF我的密度 ÷ 鄰居的密度處理不同密度的群k 難選、計算重
Isolation Forest隨機切割的路徑長度快、高維可用、工業預設對「夾在兩群中間」的異常較弱;隨機性
Autoencoder重建誤差高維/影像/多感測器需要夠多正常資料;訓練成本;若訓練集混入異常會學壞
時序預測殘差實際 − 預測抓情境異常、漂移依賴預測模型品質;季節性要先處理

📏評估:Accuracy 是陷阱,門檻是取捨

拉拉看詐欺比例,看「一律判正常」這個什麼都不做的模型,Accuracy 有多漂亮:

0.10%
99.90%「全部判正常」的 Accuracy
0%它的 Recall(一筆詐欺都沒抓到)
10每 10,000 筆中漏掉的詐欺

所以異常偵測要看的是只跟「異常」這一類有關的指標(詳見Accuracy & F1):

🎯Precision 精確率
我舉旗的這些,有幾成真的是異常?低=誤報多,客服被灌爆、工程師半夜被叫醒。
🕸️Recall 召回率
所有真異常,我抓到幾成?低=漏抓多,詐欺溜走、機台真的壞掉。
⚖️F1
Precision 與 Recall 的調和平均,一個數字看兩邊;也可用 F2 加重 Recall。
📈PR-AUC
掃過所有門檻畫 Precision–Recall 曲線下的面積。極度不平衡時比 ROC-AUC 更誠實,因為 ROC 的假陽性率分母是「所有正常」,大到誤報幾千筆也看不出來。

門檻怎麼選?看誤報與漏抓各自的成本

情境漏抓(FN)的代價誤報(FP)的代價門檻傾向
信用卡詐欺損失一筆錢(可事後理賠)卡被鎖、顧客抓狂、客服成本折衷;高額交易放鬆、小額收緊
飛機引擎/醫療設備災難性多檢查一次寧可誤報:門檻放鬆、追求高 Recall
資安入侵警報資料外洩SOC 人員警報疲勞(alert fatigue),真的來了反而被忽略分級:高分自動阻擋、中分人工看
產線品檢瑕疵品流出好品被丟掉看瑕疵品外流成本 vs 報廢成本
常見誤區:①把 Accuracy 當 KPI;②在含有異常的資料上算平均與標準差(遮蔽效應),或拿混了異常的資料訓練 Autoencoder;③門檻用「固定 3σ」而不看業務成本;④沒處理概念漂移——正常會隨季節、促銷、系統更新而變,模型要定期重訓;⑤特徵沒標準化,距離法被量尺大的特徵綁架;⑥把「少數但正常」的新客群當異常(公平性問題)。

🏭應用情境:考題最愛的四個場景

💳信用卡/金融詐欺
特徵:金額、時間、地點、商家類別、跟持卡人歷史的偏離。即時打分、超門檻就二次驗證。異常比例常 <0.2%。
⚙️設備預測性維護
震動、溫度、電流時序;用 Autoencoder 或時序殘差偵測「開始不正常」的早期徵兆,在故障前排維修,取代定期換零件。
🛡️資安入侵/網路異常
流量、登入行為、API 呼叫模式。未知攻擊沒有簽章,只能靠「跟平常不一樣」抓(UEBA、NIDS)。
🔍製造品質檢測
只用良品影像訓練重建模型,瑕疵區域重建誤差高就定位出來;解決「瑕疵樣本太少、型態太多」的痛點。

其他:醫療(心電圖異常搏動)、電商(刷單、假評論)、日誌監控(伺服器錯誤率突升)、資料清理前的離群值處理(跟前面離群值偵測相呼應——同一套工具,一個用來「丟掉」,一個用來「警報」)。

✅自我檢測

🎯重點整理

📝 iPAS 考點提醒

異常偵測在 iPAS 中級科目三(機器學習技術與應用之「非監督式學習」)是固定考點,初級則以情境題出現:「信用卡盜刷偵測屬於哪類應用?」→ 異常偵測,通常歸非監督式(無標籤、學正常找偏離);若題目明說有充足的詐欺標籤,則是不平衡的監督式分類。中級會往下問:三種設定(監督/半監督只學正常/非監督)怎麼選;方法原理——z-score 與 IQR 的差別(IQR 用四分位數較耐極端值)、kNN/LOF 看距離與局部密度、DBSCAN 的噪音點、Isolation Forest「路徑長度短=異常」、Autoencoder 重建誤差;評估為何不能用 Accuracy、要看 Precision/Recall/F1/PR-AUC,以及門檻如何依漏抓與誤報成本調整。易混點:離群值「清理」(資料前處理)與異常「偵測」(應用目標)用同一套工具但目的不同;ROC-AUC 在極度不平衡時會過於樂觀,PR-AUC 較誠實。情境題常見:預測性維護(只有正常紀錄→單類別)、資安入侵(未知攻擊→非監督)、品檢(良品訓練→重建誤差)。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

異常偵測屬於監督式還是非監督式學習?

多數設定是非監督或半監督(只學正常),因為異常極少、常無標籤、型態未知;若有充足的異常標籤,就變成極度不平衡的監督式分類。

異常偵測和一般二元分類差在哪?

分類學「兩類的分界」,兩類都要有足夠樣本;異常偵測學「正常的範圍」,範圍外都算異常,不需要異常樣本,輸出通常是分數加門檻。

z-score 和 IQR 哪個比較好?

z-score 假設接近常態,且平均與標準差會被異常拉歪(遮蔽效應);IQR 用四分位數,對極端值較穩健。多維資料兩者都不夠,要用距離、密度或隔離法。

Isolation Forest 的原理是什麼?

隨機選特徵、隨機選切點反覆切割;離群點孤立在空曠處,幾刀就被單獨隔離,路徑長度短;正常點要切很多刀。路徑越短,異常分數越高。

Autoencoder 怎麼做異常偵測?

只用正常資料訓練「壓縮再還原」的網路;異常輸入它沒學過,還原得差,重建誤差大就判為異常。適合影像、多感測器等高維資料。

為什麼異常偵測不能用 Accuracy?

異常只佔 0.1% 時,全部判正常就有 99.9% 準確率卻一個都沒抓到。要看 Precision(誤報少)、Recall(漏抓少)、F1、PR-AUC。

門檻要怎麼選?

看漏抓與誤報各自的成本:安全攸關(引擎、醫療)寧可誤報、追求高 Recall;人工審核成本高的場景提高 Precision 或分級處理。門檻是業務決策,不是固定的 3σ。

🧭 相關主題

← 返回 AI 學習與考證地圖