Skip to content

Commit

Permalink
add model evaluation
Browse files Browse the repository at this point in the history
  • Loading branch information
camila-buzzni committed Apr 21, 2024
1 parent 85754ec commit 5f1c5fd
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 17 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
이런 정보들이 함께 저장되어야 추후에 '해당 모델의 성능을 **재현** 할 수 있다.'
- Tool: [MLflow](https://mlflow.org/), PyTorch, Pandas, ...

### [Model Validation](./model-validation/README.md)
### [Model Validation/Evaluation/Testing](./model-validation/README.md)

- Tool: [Scikit-learn](https://scikit-learn.org/)

Expand Down Expand Up @@ -145,7 +145,7 @@ Related Engineering:

Related Engineering:

- [Model Validation](#model-validation)
- [Model Validation/Evaluation/Testing](#model-validationevaluationtesting)

3-1. Model Validation

Expand Down
Binary file added assets/img/confusion-matrix.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/k-fold.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Model Validation (모델 평가)
# Model Validation/Evaluation/Testing

## Intro

### 1. Model Validation의 필요성
### 1. Model Validation/Evaluation/Testing 의 필요성

전통적인 Software 개발시의 테스트를 어떻게 했는지 생각해보자.
내가 백엔드 개발을 할 때는 2가지 방식으로 테스트를 했었다.
Expand All @@ -14,31 +14,23 @@
특히, AI 모델의 경우 S/W개발과는 다른 것이 input이 같아도 output(즉, 예측 값)이 조금씩 다를 수 있는데, 이를 어떻게 '테스트' 할 수 있는가???
그래서 모델 평가는 이것만을 위한 지표가 따로 있다.

아래 블로그에 자세히 정리해 두었다.

1. [Evaluation1 - 분류 모델 성능 지표 (Accuracy, Confusion Matrix, Precision, Recall, F1 score, ROC AUC )](https://libertegrace.tistory.com/entry/Evaluation1)
2. [Evaluation2. 회귀의 성능 평가 지표(MAE, MSE, RMSE, R제곱)](https://libertegrace.tistory.com/entry/Evaluation2)

그래서

- model validation 지표를 도출해내고
- Model Validation/Evaluation/Testing 지표를 도출해내고
- 이를 자동화 하는 시스템을 만들어내는 것이 필요해진다.

이를 도와주는 Tool이 대표적으로

### 모델 평가의 종류

1. Model Validation
## Model Validation

- 학습 과정의 오류를 조기 진단.
- ![img](../assets/img/model-validation.png)
- ![img](../assets/img/overfitting-underfitting.png)

2. Model Evaluation
## [Model Evaluation](evaluation.md)

- 모델의 출력 분호 및 다양한 매트릭으로 정밀 분석

3. Behavior Testing
## Behavior Testing

- 서비스 UX 측면의 동작을 반영한 실제 시나리오 모델 결과를 테스트

- [Sklearn 익히기 - train/test data set 분리 및 Cross Validation](https://libertegrace.tistory.com/entry/Sklearn-%EC%9D%B5%ED%9E%88%EA%B8%B0-trainvaltest-data-set-%EB%B6%84%EB%A6%AC-%EB%B0%8F-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC)
101 changes: 101 additions & 0 deletions model-validation-evaluation-testing/evaluation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Model Evaluation

## Model Evaluation이란

- 머신러닝 또는 딥러닝 모델의 성능을 평가하고 검증하는 과정
- 모델이 학습 데이터에 대해서만 잘 작동하는지, 아니면 새로운 이전에 본 적 없는 데이터에 대해서도 잘 동작하는지 일반화가 잘 되었는지를 평가
- 이를 위해 다양한 Evaluation Metrics을 사용하여 모델의 예측 성능을 평가

## Model Evaluation 방법

- Holdout: 데이터를 Training set와 Test set로 한 번만 분할
- Cross Validation: 데이터를 여러 부분으로 나누어, 한 부분을 Test Set로 사용하고 나머지 부분으로 모델을 학습시킨다. 이 과정을 각 부분마다 반복한다.
- K-Fold Cross validation
- Stratified K-Fold Cross validation
- Leave-One-Out
- Leave-P-Out

### 1. Holdout

정의

- 데이터를 Training set와 Test set로 한 번만 분할
- 일반적으로 데이터의 70~80%는 훈련에 사용하고, 나머지 20~30%는 테스트에 사용

특징

- 장점 : 간단하고 빠르게 실행
- 단점: 데이터 셋의 크기가 작은 경우, Test set의 결과가 불안정 할 수 있음, 데이터 분할의 random한 특성으로 결과가 크게 달라질 수 있음

### 2. K-Fold

![img](../assets/img/k-fold.png)

정의

- 데이터를 K개의 부분(Fold)로 나눈 후, 각 Fold를 한 번 씩 Test Set로 사용하고
나머지 K-1개 Fold를 훈련 세트로 사용.
- 이 과정을 K번 반복

특징

- 장점 : 모든 데이터 포인트가 훈련과 테스트에 모두 사용되므로 결과가 더 안정적
- 단점 : 모델을 K번 학습해야 하므로 계산 비용이 높음

### 3. Stratified K-Fold

정의

- K-Fold CV의 변형으로, 각 Fold에서 클래스 비율이 전체 데이터셋의 클래스 비율과 동일하게 유지하도록 유지

특징

- 장점 : Class Imbalance가 있는 데이터 셋에 효과적
- 단점 : K-Fold CV와 마찬가지로 계산 비용 높음

### 4. Leave-One-Out

정의

- K-Fold의 매우 특수한 경우
- N개의 **데이터 포인트**가 있을 때, 하나의 데이터 포인트를 Test로 사용하고 나머지 N-1개를 훈련에 사용
- 이 과정을 N번 반복

특징

- 장점 : 작은 데이터셋에 효과적
- 단점 : 매우 높은 계산 비용이 발생. 각 데이터 포인트에 대해 모델을 재학습

### 5. Leave-P-Out

정의

- N개의 데이터 포인트 중 P개를 테스트로 사용하고 나머지를 훈련에 사용 P=1이면 LOO와 동일
- 가능한 모든 조합에 대해 반복

특징

- 장점 : LOO의 변형으로, P개의 데이터 포인트에 대한 영향을 조사 가능
- 단점 : 계산 비용이 아주 높음

## Model Evaluation에 사용하는 Metrics

### 1. Confusion Matrix

![img](../assets/img/confusion-matrix.png)

- 실제 클래스와 모델이 예측한 클래스 간의 관계를 2x2 테이블로 나타낸 것
- 분류 문제에서 주로 사용된다

### 나머지

- [Evaluation1 - 분류 모델 성능 지표 (Accuracy, Confusion Matrix, Precision, Recall, F1 score, ROC AUC )](https://libertegrace.tistory.com/entry/Evaluation1)
- [Evaluation2. 회귀의 성능 평가 지표(MAE, MSE, RMSE, R제곱)](https://libertegrace.tistory.com/entry/Evaluation2)

- Accuracy
- Precision
- Recall
- F1-Score
- MSE
- MAE
- R-squared

1 comment on commit 5f1c5fd

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MODEL METRICS

Training variance explained: 33.0%
Test variance explained: 32.0%

Data viz

feature_importance
residuals

Please sign in to comment.