1분류 모델 평가 메트릭

제조 현장의 AI 모델은 정확도뿐만 아니라 정밀도(Precision)재현율(Recall)의 균형이 중요합니다. 불량 예측 모델의 경우, 정상 제품을 불량으로 판정하면 비용 손실이 발생하고, 불량을 놓치면 품질 문제가 발생합니다.

Confusion Matrix - 불량 감지 모델

실제 불량
실제 정상
예측 불량
85
True Positive
실제 불량 정확히 탐지
12
False Positive
정상을 불량으로 오판
예측 정상
8
False Negative
불량을 놓침 (위험!)
895
True Negative
정상을 정상으로 판정
Precision
87.6%
불량으로 예측한 것 중 실제 불량 비율
TP/(TP+FP)
Recall
91.4%
실제 불량 중 탐지한 비율
TP/(TP+FN)
F1 Score
89.4%
Precision과 Recall의 조화평균
2×P×R/(P+R)
# === 분류 모델 평가 수도코드 === # 1. Confusion Matrix 계산 함수 confusion_matrix(실제값, 예측값): TP = 실제_불량 AND 예측_불량 // 정탐 FP = 실제_정상 AND 예측_불량 // 오탐 FN = 실제_불량 AND 예측_정상 // 누락 (위험!) TN = 실제_정상 AND 예측_정상 // 정상 판정 반환 {TP, FP, FN, TN} # 2. 핵심 메트릭 계산 함수 classification_metrics(실제값, 예측값): Precision = TP / (TP + FP) // 불량 예측 정확도 Recall = TP / (TP + FN) // 실제 불량 탐지율 F1 = 2 * P * R / (P + R) // 조화 평균 반환 {Precision, Recall, F1} # 3. 임계값 분석 (확률 기반) 함수 threshold_analysis(확률값, 임계값_목록): 임계값 에 대해: 예측 = (확률 >= 임계값) ? 불량 : 정상 Precision, Recall 계산 반환 임계값별_성능_결과 # 사용 예시 평가기 = 생성(실제값, 예측값, 확률값) 메트릭 = 평가기.classification_metrics() // 결과: {precision: 87.6%, recall: 91.4%, f1: 89.4%}
제조 현장의 메트릭 선택 전략

Precision 중시: 정상 제품을 불량으로 판정하는 비용이 클 때 (예: 고가 제품 폐기)
Recall 중시: 불량을 놓치는 리스크가 클 때 (예: 안전 관련, 고객 클레임)
F1 Score: 두 메트릭의 균형이 필요할 때 (대부분의 일반 품질 검사)

2회귀 모델 평가

공정 파라미터 예측, 에너지 소비 예측 등 연속값을 예측하는 회귀 모델은 MAE, RMSE, MAPE 등의 메트릭으로 평가합니다. 각 메트릭은 오차에 대한 민감도가 다릅니다.

MAE
2.3°C
평균 절대 오차
Mean Absolute Error
RMSE
3.1°C
평균 제곱근 오차
Root Mean Square Error
MAPE
4.5%
평균 절대 백분율 오차
Mean Absolute % Error
# === 회귀 모델 평가 수도코드 === # 1. 핵심 회귀 메트릭 계산 함수 regression_metrics(실제값, 예측값): MAE = 평균(|실제 - 예측|) // 평균 절대 오차 RMSE = 제곱근(평균((실제-예측)²)) // 큰 오차에 민감 MAPE = 평균(|실제-예측|/실제)*100 // 상대적 오차(%) R² = 1 - (오차제곱합/총변동) // 설명력 (1에 가까울수록 좋음) 반환 {MAE, RMSE, MAPE, R²} # 2. 잔차 분석 (오차 패턴 확인) 함수 residual_analysis(실제값, 예측값): 잔차 = 실제값 - 예측값 평균잔차 = 평균(잔차) // 0에 가까워야 함 표준편차 = 표준편차(잔차) 최대과대추정 = 최대(잔차) 최대과소추정 = 최소(잔차) 반환 잔차_통계 # 사용 예시: 온도 예측 모델 평가기 = 생성(실제온도, 예측온도) 메트릭 = 평가기.regression_metrics() // 결과: MAE=2.3°C, RMSE=3.1°C, MAPE=4.5%
메트릭 선택 가이드

MAE: 모든 오차를 동일하게 취급, 이해하기 쉬움
RMSE: 큰 오차에 더 민감, 이상치 영향을 크게 받음
MAPE: 상대적 오차, 스케일 다른 값들 비교 가능
제조 권장: MAE(주요) + RMSE(이상치 확인) + MAPE(상대 정확도)

3시계열 특화 메트릭

제조 현장의 예지보전, 불량 조기 경보 시스템은 탐지 지연 시간조기 경보 정확도가 중요합니다. 단순 정확도만으로는 시스템의 실용성을 평가할 수 없습니다.

2.5분
평균 탐지 지연
15분
평균 사전 경보
88%
조기 경보 적중률
5%
오경보 비율
# === 시계열 이상탐지 평가 수도코드 === # 1. 탐지 지연/조기경보 시간 계산 함수 detection_delay(실제이상시각, 예측시각, 허용오차=10분): 실제이상 에 대해: 시간차 = 예측시각 - 실제이상시각 만약 |시간차| <= 허용오차: 만약 시간차 < 0: 조기경보목록.추가(|시간차|) // 미리 예측 아니면: 지연목록.추가(시간차) // 늦게 탐지 반환 { 평균지연시간, 평균조기경보시간, 탐지율 = 탐지건수 / 전체이상건수 } # 2. 오경보 비율 계산 함수 false_alarm_rate(예측시각목록, 실제이상목록): 예측 에 대해: 만약 전후 10분 내 실제이상 존재: 정탐 += 1 아니면: 오경보 += 1 오경보율 = 오경보 / 전체예측 * 100 반환 오경보율 # 사용 예시: 예지보전 모델 // 15분 사전경보, 3분 지연, 1건 오경보 → 탐지율 100%, 오경보율 25%
시계열 평가의 핵심

탐지 지연: 이상을 얼마나 빨리 감지하는가? (짧을수록 좋음)
조기 경보: 이상 발생 전 얼마나 미리 예측하는가? (길수록 좋음, 단 정확해야 함)
오경보 비율: 실제 이상이 아닌데 경보를 울린 비율 (낮을수록 좋음)
목표: 조기 경보는 길게, 오경보는 적게!

4A/B 테스트와 점진적 배포

새로운 AI 모델을 전체 시스템에 바로 적용하는 것은 위험합니다. A/B 테스트Canary 배포로 모델 성능을 실시간 검증하면서 점진적으로 확대합니다.

A/B 테스트 결과 - 불량 예측 모델 v2.0
Control (기존 v1.5)
탐지율 84.2%
오탐율 8.5%
평균 응답시간 120ms
사용자 만족도 7.2/10
Treatment (신규 v2.0) ✓
탐지율 91.7% (+7.5%p)
오탐율 5.2% (-3.3%p)
평균 응답시간 95ms (-25ms)
사용자 만족도 8.6/10 (+1.4)
🧪
Shadow Mode
실제 배포 없이 예측만 수행
0% 트래픽
🐤
Canary
소수 사용자에게 먼저 배포
5% 트래픽
📊
Gradual Rollout
점진적으로 확대
50% 트래픽
🚀
Full Release
전체 배포 완료
100% 트래픽
# === A/B 테스트 및 Canary 배포 수도코드 === # 1. A/B 테스트 트래픽 라우팅 함수 route_traffic(사용자ID, 분할비율=0.5): 해시값 = hash(사용자ID) % 100 만약 해시값 < 분할비율*100: 반환 "Treatment" // 신규 모델 아니면: 반환 "Control" // 기존 모델 # 2. 통계적 유의성 검증 함수 statistical_significance(control결과, treatment결과): t통계량, p값 = t_test(control결과, treatment결과) 만약 p값 < 0.05: 반환 "통계적으로 유의미한 차이" 승자 = 평균(treatment) > 평균(control) ? Treatment : Control 반환 {t통계량, p값, 승자} # 3. Canary 배포 (점진적 확대) 배포단계 = [5%, 25%, 50%, 100%] 롤백조건 = {에러율 > 10%, 지연시간 50%↑} 함수 should_proceed(현재메트릭): 만약 롤백조건 충족: 반환 "롤백", 원인 아니면: 현재단계 += 1 반환 "진행", 다음배포비율

5모델 공정성과 편향 검증

제조 AI 모델은 특정 설비, 작업자, 시간대에 대해 편향(Bias)을 가질 수 있습니다. 공정하지 않은 모델은 현장 수용성이 낮고, 특정 조건에서 성능이 급격히 저하될 수 있습니다.

설비 편향 (Equipment Bias)
문제: 신형 설비 데이터로만 학습하여 구형 설비에서 성능 저하
영향: 구형 설비 사용 기업의 불만, 불공정한 평가
해결: 설비 유형별 데이터 균형 확보, 설비 ID를 feature로 명시적 학습
시간 편향 (Temporal Bias)
문제: 주간 데이터만 학습하여 야간 근무에서 오작동
영향: 야간 작업자의 신뢰도 하락, 3교대 운영 어려움
해결: 시간대별 데이터 수집, 계절/요일별 변동 고려
경험 편향 (Experience Bias)
문제: 숙련공 작업 패턴만 학습하여 신입 작업자 지원 부족
영향: 신입 교육 효과 저하, 진입 장벽 증가
해결: 다양한 숙련도 작업자 데이터 확보, 단계별 가이드 제공
제품 편향 (Product Bias)
문제: 주력 제품 데이터 집중으로 다품종 소량 생산 대응 미흡
영향: 신제품 초기 품질 문제, 맞춤 생산 어려움
해결: Few-shot learning 적용, 제품 특성 메타데이터 활용
# === 모델 편향 검출 수도코드 === # 1. 그룹별 성능 격차 분석 함수 group_performance_gap(민감속성): 그룹 에 대해: 정확도 = 해당그룹_예측정확도() 성능목록[그룹] = 정확도 성능격차 = 최대성능 - 최소성능 편향존재 = (격차 > 10%) ? True : False 반환 {성능격차, 편향존재, 최저성능그룹} # 2. 불균등 영향 비율 (80% 규칙) 함수 disparate_impact_ratio(민감속성): 그룹 에 대해: 불량예측비율 = 예측(불량) / 전체 DI비율 = 최소비율 / 최대비율 공정성통과 = (DI비율 >= 0.8) ? True : False 반환 {DI비율, 공정성통과} # 3. 종합 편향 리포트 민감속성 = [설비ID, 근무시간대, 작업자경험] 속성 에 대해: 성능격차 = group_performance_gap(속성) DI비율 = disparate_impact_ratio(속성) 리포트[속성] = {성능격차, 편향존재, DI비율, 공정성통과} // 결과 예시: 설비ID 편향검사 - 성능격차 12%, 편향존재=True
편향 완화 전략

1. 데이터 재샘플링: 과소 대표 그룹 데이터 증강 (오버샘플링)
2. 공정성 제약 학습: 학습 시 그룹 간 성능 격차를 손실함수에 포함
3. 후처리 조정: 그룹별로 다른 임계값 적용하여 공정성 확보
4. 설명 가능성: 그룹별 성능 차이의 원인을 SHAP 등으로 분석