๐ ๋ชฉ์ฐจ (Table of Contents)
1. ์๋ก : AI ๋ชจ๋ธ ํ๊ฐ์ ์ ํผ๋ ํ๋ ฌ์ด ํต์ฌ์ธ๊ฐ?
AI๊ฐ ์๋ฃ ์ง๋จ, ๊ธ์ต ์ฌ๊ธฐ ํ์ง, ์์จ์ฃผํ ๋ฑ ๊ณ ์ ๋ขฐ์ฑ(High-Reliability)์ ์๊ตฌํ๋ ๋ถ์ผ์ ๊น์์ด ์นจํฌํ ์๋ก "๋ด ๋ชจ๋ธ์ด ์ ๋ง ์ ๋๋ก ์๋ํ๊ณ ์๋๊ฐ?"๋ผ๋ ์ง๋ฌธ์ ํผํ ์ ์๋ ๊ณผ์ ๊ฐ ๋ฉ๋๋ค.
ํผ๋ ํ๋ ฌ(Confusion Matrix)์ [์์ธก๊ฐ vs ์ค์ ๊ฐ]์ 2ร2 ๋งคํธ๋ฆญ์ค๋ก ์๊ฐํํ์ฌ ์ค๋ฅ ์ ํ์ ํ๋์ ํ์ ํ๊ฒ ๋๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. 2025๋ ์ดํ ์ ์ธ๊ณ์ ์ผ๋ก "AI ์ ๋ขฐ๋ ์ธ์ฆ"์ด ์ ๋ํ๋๋ฉด์, ์ด ์งํ๋ ๋ฒ์ ยท์์ ์ ํ์ ์์๋ก ์๋ฆฌ ์ก์ ๊ฒ์ ๋๋ค.
2. ํต์ฌ ๊ฐ๋ : ํผ๋ ํ๋ ฌ ํด๋ถํ๊ธฐ
ํ์ค ์ด์ง ๋ถ๋ฅ(Binary Classification)์์๋ ๋ค์ 4๊ฐ์ง ์ ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๋ถํดํฉ๋๋ค.
| Predicted Positive | Predicted Negative | |
|---|---|---|
| Actual Positive | True Positive (TP) | False Negative (FN) (Missed Alarm) |
| Actual Negative | False Positive (FP) (False Alarm) |
True Negative (TN) |
์ฃผ์ ํ์ ์งํ
- Accuracy:
(TP+TN)/Total- ์ ์ฒด ์ค ๋ง์ถ ๋น์จ. - Precision:
TP/(TP+FP)- "์๋์ด ์ธ๋ ธ์ ๋, ์ง์ง์ธ๊ฐ?" (์คํธ ํํฐ) - Recall (Sensitivity):
TP/(TP+FN)- "์ค์ ์ํ์ ๋์น์ง ์์๋๊ฐ?" (์ ์ง๋จ) - F1-Score:
Harmonic Mean- ์ ๋ฐ๋์ ์ฌํ์จ์ ์กฐํ ํ๊ท . - MCC:
Matthews Correlation Coefficient- ๋ถ๊ท ํ ๋ฐ์ดํฐ์์ ๊ฐ์ฅ ์ ๋ขฐํ ์ ์๋ ์งํ (-1 ~ +1).
* Tip: Negative ๋ฐ์ดํฐ๊ฐ 90%์ธ ์ํฉ์์ Accuracy 95%๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๋๋ Recall๊ณผ MCC๊ฐ ํต์ฌ์ ๋๋ค.
3. ์ต์ ๋ํฅ: ์๊ฐํ์ ์๋ํ์ ์งํ
2024๋ ์ดํ, ํผ๋ ํ๋ ฌ์ ๋จ์ํ ํ๋ฅผ ๋์ด ์ค๋ช ๊ฐ๋ฅ์ฑ(XAI) ๋๊ตฌ๋ก ์งํํ๊ณ ์์ต๋๋ค.
-
๐ ๋ฉํฐ ์๊ฐํ ๋์๋ณด๋
Plotly, Streamlit์ ํ์ฉํด PR Curve์ Confusion Matrix๋ฅผ ์ฐ๋ํ์ฌ ์๊ณ๊ฐ(Threshold) ๋ณํ์ ๋ฐ๋ฅธ ์ฑ๋ฅ์ ์ค์๊ฐ ์ถ์ ํฉ๋๋ค. -
๐ง XAI ๊ฒฐํฉ (SHAP)
SHAP ๊ฐ์ ํผ๋ ํ๋ ฌ ์ ์ ๋งคํํ์ฌ, "์ FP(์คํ)๊ฐ ๋ฐ์ํ๋์ง" ์์ธ์ ์ญ์ถ์ ํฉ๋๋ค. -
โ๏ธ Macro/Micro Avg
๋ค์ค ํด๋์ค(Multi-class) ๋ฌธ์ ์์ ํด๋์ค๋ณ ๋ถ๊ท ํ์ ๋ณด์ ํ๊ธฐ ์ํด ํ๊ท ์ฐ์ถ ๋ฐฉ์์ ์ธ๋ถํํฉ๋๋ค.
4. ์ค๋ฌด ์ ์ฉ ๋ฐฉ์: ์ด๋์, ์ด๋ป๊ฒ ์ธ๊น?
FN(๋ฏธํ)์ ์๋ช ์ํ. Recall 99% ์ด์์ ๋ชฉํ๋ก ํ๋ฉฐ, ์ ๊ธฐ์ ์ผ๋ก ํ๋ ฌ์ ์ฌ๊ณ์ฐํด ๋ฐ์ดํฐ ๋๋ฆฌํํธ๋ฅผ ๊ฐ์ํฉ๋๋ค.
FP(์คํ)๋ ์ ๋ฌด ๋ฐฉํด. Precision 98% ์ด์์ ์ ์งํ๋ฉฐ, ์ค์ํ ๋ฉ์ผ์ด ์ฐจ๋จ๋์ง ์๋๋ก ์๊ณ๊ฐ์ ๋ณด์์ ์ผ๋ก ์ค์ ํฉ๋๋ค.
Precision๊ณผ Recall์ ๊ท ํ์ด ์ค์. MCC์ ROC-AUC๋ฅผ ํจ๊ป ์ ์ํ์ฌ ๋ชจ๋ธ์ ์ ๋ฐ์ ์ธ ๊ฑด์ ์ฑ์ ์ฆ๋ช ํฉ๋๋ค.
๐ป Python Code: ์ค์๊ฐ ์ ๋ฐ์ดํธ ์์
import numpy as np
from sklearn.metrics import confusion_matrix
from collections import deque
# ์ต๊ทผ 1,000๊ฑด ์ ์ฅ (Sliding Window)
window = deque(maxlen=1000)
def update_metrics(y_true, y_pred):
window.append((y_true, y_pred))
y_t, y_p = zip(*window)
cm = confusion_matrix(y_t, y_p, labels=[0, 1])
return cm
5. ์ ๋ฌธ๊ฐ ์ธ์ฌ์ดํธ (Insight)
๐ก Technical Caution
๋ถ๊ท ํ ๋ฐ์ดํฐ์ ํจ์ :
ํด๋์ค ๋ถ๊ท ํ์ด ์ฌํ ๋ ํผ๋ ํ๋ ฌ ์์น๋ง ๋งน์ ํ์ง ๋ง์ธ์. ๋ฐ๋์ Class Weight๋ฅผ ์ ์ฉํ๊ณ , F1-Score์ MCC๋ฅผ ๋ฉ์ธ KPI๋ก ์ผ์์ผ ํฉ๋๋ค.
๐ฎ Future View (3~5๋ )
EU AI Act ๋ฑ์ ๊ท์ ๋ก ์ธํด "์ฑ๋ฅ ์งํ์ ํฌ๋ช ์ฑ"์ด ๋ฒ์ ์๊ตฌ์ฌํญ์ด ๋ฉ๋๋ค. AutoML ํ๋ซํผ์ด ๋น์ฆ๋์ค ๋ชฉํ(๋น์ฉ ์ ๊ฐ vs ์์ )์ ๋ฐ๋ผ ์ต์ ์ ์๊ณ๊ฐ๊ณผ ํผ๋ ํ๋ ฌ์ ์๋์ผ๋ก ์ ์ํ๋ ๊ธฐ๋ฅ์ด ํ์ค์ด ๋ ๊ฒ์ ๋๋ค.
6. ๊ฒฐ๋ก : AI ์๋์ ๋์นจ๋ฐ
ํผ๋ ํ๋ ฌ์ ๋จ์ํ "๋งํ๋๊ฐ"๋ฅผ ๋์ด "์ ํ๋ ธ๋๊ฐ"๋ฅผ ์ง๋จํ๋ ํต์ฌ ๋๊ตฌ์ ๋๋ค. ์ ํ๋, ์ ๋ฐ๋, ์ฌํ์จ, MCC ๋ฑ ๋ค์ํ ์งํ๋ฅผ ์กฐํฉํ๊ณ ์ต์ XAI ๊ธฐ๋ฒ๊ณผ ๊ฒฐํฉํ ๋, ๋น๋ก์ ๋ชจ๋ธ์ ์ ๋ขฐ์ฑ์ ํ๋ณดํ ์ ์์ต๋๋ค.
์ค๋ ์๊ฐํ ํ๊ณผ ์ฝ๋๋ฅผ ํ์ฉํด, ์ฌ๋ฌ๋ถ์ AI ํ๋ก์ ํธ์ ํฌ๋ช ์ฑ, ์ฑ ์์ฑ, ์ฑ๋ฅ์ด๋ผ๋ ์ธ ์ถ์ ๋์์ ๋ง์กฑ์ํค๋ ๊ฒฌ๊ณ ํ ํ๊ฐ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํด ๋ณด์ธ์.