일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- Oracle
- 빅분기
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- SQL
- 오라클
- 프로그래머스
- 데이터베이스
- 기초다지기
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 인공지능기초다지기
- 난생처음 R코딩&데이터 분석 저서
- AI 플랫폼을 활용한 데이터 분석
- 네이버부스트캠프
- 부스트코스
- PY4E
- Ai
- r
- 정보처리기사
- DB
- 코딩테스트
- boostcoures
- boostcourse
- 빅데이터분석기사
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- python
- 이기적
- 코딩테스트 python
- Machine Learning
- Today
- Total
매일공부
[Machine Learning] 오차행렬 - 모델 평가&분류 확인 본문
* 모델 성능 평가 - 실제값과 모델에 의해 예측된 값을 비교하여 두 값의 오차를 구하는 것
* 모델 평가 목적
- 과적합을 방지하고 최적의 모델을 찾기 위해
- 오차가 작을수록 좋은 모형
* 모델 성능 평가는 지도학습에서만 사용되며, 분석 방법에 따른 성능 평가 지표는 다르게 사용됨
분류 분석 평가 지표 confusion matrix
- 이진 분류
- confusion matrix (오차 행렬)
예측
True(P) False(N)
정 True TP FN
답 False FP TN
- 정확률 accuracy : (TP+TN) / (TP+FN+FP+TN)
> 올바르게 예측한 데이터 수 / 전체 데이터수
> from sklearn.metrics import accuracy_score (labels, pred)
> 불균형한 레이블 값이 분포된 데이터에서 모델의 성능이 좋지 못하더라도 정확도가 높을 수 있다
> 정확률은 종속변수의 비율에 영향을 받아서 9:1 비율의 데이터에서 정확률 90%가 넘는 함정이 있음
> 불균형한 데이터를 다룰 때 모델의 신뢰도가 낮다
예) 99개의 데이터 라벨이 0, 1개의 데이터 라벨이 1인 경우 0만 예측하는 모델의 정확도는 99%가 되므로...
- 정밀도 precision : TP / (TP+FP)
> from sklearn.metrics import precision_score
> 모델이 Positive로 예측한 것들 중에 실제 Positive이 데이터 비율
> 양성 예측도
> 음성 데이터를 양성으로 잘못 판단하면 업무상 영향이 큰 경우 ex) 스팸
- 재현율 recall, 민감도 sentitivity : TP / TP+FN
> from sklearn.metrics import recall_score
> 실제 Positive 데이터 중에서 Positive로 예측한 비율
> 양성 데이터를 음성 데이터로 잘못 판단하면 업무상 영향이 큰 경우 ex)암진단
- 특이도 specificity : TN / FP+TN
> 실제 Negative데이터 중에서 Negative로 예측한 비율
>> 정밀도와 재현률은 반비례관계
정밀도와 재현율의 성능 지표를 모두 올리는 것은 한계가 있음(trade off관계)
- predict_proba() : 개별 데이터별로 예측 확률을 반환
- precision_recall_curve() : 정밀도와 재현율의 임계값의 변화에 따라 평가 지표 변화를 곡선 형태의 그래프로 시각화하는데 이용
- 저편향/저분산(Low Bias/Low Vaiance)
: 예측 결과가 실제 결과에 매우 잘 근접, 예측 변동 큼x, 특정 부분에 집중 => 아주 뛰어난 성능
- 저편향/고분산(Low Bias/High Vaiance)
: 예측 결과가 실제 결과에 비교적 근접, 예측 결과가 실제 결과를 중심으로 꽤 넓은 부분에 분포
- 고편향/저분산(High Bias/Low Vaiance)
: 정확한 결과에서 벗어남, 예측이 특정 부분에 집중
- 고편향/고분산(High Bias/High Vaiance)
: 정확한 결과에서 벗어남, 예측이 넓은 부분에 집중
>> 편향과 분산은 트레이드오프(trade-off, tradeoff) 관계
- f1-score : ((정밀도 * 재현률) / (정밀도 + 재현률)) * 2
> from sklearn.metrics import f1_score
> 정밀도와 재현률의 수치를 적절하게 조합하여 사용되는 성능 지표
> 정밀도와 재현율의 조화 평균
- ROC curve
: FPR (False Positive Rate)이 변할 때 TPR (True Positive Rate) 이 어떻게 변하는지를 나타내는 곡선
: TPR 민감도 = TP / (TP + FN) 재현율과 동일
: FPR = FP / (FP + TN) = 1 - TPR
: from sklearn.metrics import roc_curve, roc_auc_score
: 임계값 (Threshold) 1 - 확률이 1일때만 True 라고 예측하기 때문에 FP (실제 False인데 True라고 예측하는 경우) = 0
: 임계값 (Threshold) 0 - 확률이 모두 True 라고 예측하기 때문에 TN (실제 False인데 False 라고 예측하는 경우) = 0
: roc_curve () - ROC 곡선으로 모델의 성능을 확인 .
- AUC score
: ROC 커브의 아래 면적
: 0.5미만은 의미 없는 모형
: 1에 가까울수록 좋은 모형
>> y의 1에 가까울수록 더 좋은 성능
> 분포가 겹칠수록 직선에 가까워짐
분류가 제대로 되었는지 알 수 있는 가장 간단한 지표?
sklearn.metrics.confusion_matrix(y_origin, y_predict)
=> 히트맵으로 표현 가능
- 전체 합 = 샘플 수
- 각 행의 합 = 원본 분류 샘플 수
- 각 열의 합 = 예측한 분류 샘플 수
- 주대각선 합 = 참 분류된 샘플 수
- 주대각선 제외 합 = 오분류된 샘플 수
sklearn.metrics.classification_report()
* 내용참고&출처 : 태그에서 수강한 수업을 복습 목적으로 정리한 내용입니다.
'IT > ML' 카테고리의 다른 글
[sklearn] Data Preprocessing (0) | 2022.11.21 |
---|---|
[sklearn] 사이킷런 (scikit-learn) 주요 모듈 (0) | 2022.11.20 |
[Machine Learning] 비계층적 군집분석; K-means, DBSCAN (0) | 2022.11.18 |
[Machine Learning] 군집분석; Hierarchical clustering (0) | 2022.11.17 |
[Machine Learning] Sampling (0) | 2022.11.11 |