ML&DL&AI/ML

ML 모델 성능 평가(K-fold cross-validation, GridSearchCV)

Hoon0211 2023. 8. 21. 09:44
728x90

1. 모델 성능 평가

- 일반적인 경우

  • 전체 데이터 100%
    • Train Data 80%
    • Test Data 20%

 

 

- 데이터의 분할과 용도

  • 전체 데이터 100%
    • Train Data 60~70%
    • Validation Data 15~20%
    • Test Data 15~20%

 

* 해결방안 : 검증 Data를 하나로 고정하지 않고 Test 데이터의 모든 부분을 사용

 

 

 

2. K-fold cross-validation

  • Test 데이터를 k개의 그룹으로 나누기
  • K-1개의 그룹을 학습에 사용
  • 나머지 1개의 그룹을 이용해서 평가 수행
  • 2번, 3번 과정을 k번 반복
  • 모든 결과의 평균을 구하기

 

 

- 장점과 단점

  • 장점
    • 모든 Test 데이터 셋을 평가에 활용할 수 있다.
      • 평가에 사용되는 데이터 편중을 막을 수 있다.
      • 특정 평가 데이터 셋에 overfit 되는 것을 방지할 수 있다
         
    • 모든 Test 데이터 셋을 훈련에 활용 할 수 있다.
      • 정확도를 향상시킬 수 있다.
      • 데이터 부족으로 인한 underfitting을 방지할 수 있다.
         
    • 데이터 세트 크기가 충분하지 않은 경우에도 유홍하게 사용 가능하다.
       
  • 단점
    • 여러번 학습하고 평가하는 과정을 거치기 때문에 모델 훈련/평가 시간이 오래 걸린다.

 

 

- 동작 방법

 

 

- 사용법

  • cross_val_score()함수
from sklearn.model_selection import cross_val_score
score = cross_val_score(모델, X, y, cv=나눌 개수)
score

 

 

 

3. GridSearchCV를 이용한 모델의 성능 개선

  • sklearn 라이브러리에서 제공해주는 모델 성능 개선 함수
  • 사용자가 모델과 hyper parameter들을 지정
  • GridSearchCV 함수가 순차적으로 hyper parameter들을 변경해가면서 학습과 평가를 수행
  • 가장 성능이 좋은 hyper paramete를 제시
# 가장 높은 성능일 때의 모델에 대한 파라미터 조합 확인
print(grid.best_params_)
{'max_depth' : 3, 'max_leaf_nodes' : 4 ...}

model_best = DecisionTreeClassifier(max_depth=3,max_leaf_nodes = 4 ...}

model_best.fit(X_train,y_train)
# feature_importances 이용, 영향력 높은 특성 확인

 

 

- 사용방법

  • from sklearn.model_selection import = Kfold, GirdSerchCV

 

728x90
댓글수0