1분류 모델 평가 메트릭
제조 현장의 AI 모델은 정확도뿐만 아니라 정밀도(Precision)와 재현율(Recall)의 균형이 중요합니다. 불량 예측 모델의 경우, 정상 제품을 불량으로 판정하면 비용 손실이 발생하고, 불량을 놓치면 품질 문제가 발생합니다.
Confusion Matrix - 불량 감지 모델
실제 불량 정확히 탐지
정상을 불량으로 오판
불량을 놓침 (위험!)
정상을 정상으로 판정
TP/(TP+FP)
TP/(TP+FN)
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 등의 메트릭으로 평가합니다. 각 메트릭은 오차에 대한 민감도가 다릅니다.
Mean Absolute Error
Root Mean Square Error
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시계열 특화 메트릭
제조 현장의 예지보전, 불량 조기 경보 시스템은 탐지 지연 시간과 조기 경보 정확도가 중요합니다. 단순 정확도만으로는 시스템의 실용성을 평가할 수 없습니다.
# === 시계열 이상탐지 평가 수도코드 ===
# 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 테스트 및 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)을 가질 수 있습니다. 공정하지 않은 모델은 현장 수용성이 낮고, 특정 조건에서 성능이 급격히 저하될 수 있습니다.
영향: 구형 설비 사용 기업의 불만, 불공정한 평가
영향: 야간 작업자의 신뢰도 하락, 3교대 운영 어려움
영향: 신입 교육 효과 저하, 진입 장벽 증가
영향: 신제품 초기 품질 문제, 맞춤 생산 어려움
# === 모델 편향 검출 수도코드 ===
# 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 등으로 분석