교차검증(Cross-Validation)

2024. 3. 21. 01:48AI/기계학습

- 교차검증이란?

데이터를 여러 번 나누고, 매번 서로 다른 부분 집합을 사용하여 모델을 반복적으로 훈련하고 나머지 데이터를 사용하여 모델을 테스트합니다.

훈련데이터가 많지 않을 때 모델이 훈련 데이터에 과적합(overfitting)되는 것을 방지하고, 일반화 성능을 측정하는데 유용합니다.

 

- 교차검증을 수행하는 함수

 

1. cross_val_score

  • k-fold 교차검증을 사용하고, k는 분석가 지정할 수 있다.
  • 이 함수는 모델, 입력 데이터, 타겟 레이블과 함께 교차 검증 방법(예: KFold, StratifiedKFold)을 인자로 받아, 각 폴드에 대한 성능 점수를 반환다.
  • 클래스의 불균형 상관없이 알아서 잘 확인하고 편하게 사용할 수 있다.
  • cross_val_score 주요 매개변수, cross_val_score(모델, x, y, cv= , scoring=?)
    • estimator : 분류 모형 또는 회귀 모형 객체 (DTC, DTR 등등)
    • X : 피쳐 데이터 세트
    • y : 레이블 데이터 세트
    • scoring : 예측 성능 평가 지표 (accuracy : 분류, r-squre: 회귀 등)
    • cv : 교차 검증 폴드 수
    • n_jobs: 사용할 CPU 코어 수 (-1인 경우 최대한 많이 사용)

 

2. cross_validate, cross_validate(모델, x, y, cv=?, scroing=?, return_train_score=True) 

  • 여러가지 추가 정보들을 확인할 수 있다. 테스트 훈련시간이나, 테스트 시간 등, 정밀도 재현율, 다른 평가지표 한 번에 볼 수 있음
  • 기능적으로 좀 더 세부적으로 볼 수 있다

 

- 이중분류 평가지표

이중분류의 평가지표는 다음의 예시처럼 통상적으로 알고 있는 방법이다.

Accuracy : (TP+TN)/(TP+FN+FP+TN)

Sensitivity : TP/(TP+FN)

Precision : TP/(TP+FP)

cf) '이중분류'란? Model이 Training Data로 가중치와 편향을 학습하고 새롭게 들어온 Sample이 Class 2개 중에 어느 곳에 속하는지 알려주는 것. e.g. 사진을 한 장 주었을 때(새로운 Sample) 이 사진이 고양이인지(class1) 강아지인지(class2) 분류해라.

- 다중분류의  평가지표

다중분류는 이진분류의 평가지표 계산 방법과 다르다.

e.g. iris dataset은 다중분류가 된다. 이진분류로 생각하는 평가지표에서 nan이 결과로 나온다.

  • 다중분류의 precision, recall, f1스코어 등 평가지표 계산 방법

1. Macro 평균 (Macro Average)

Macro 평균은 각 클래스의 precision, recall, F1 스코어를 각각 계산한 후, 이를 클래스의 수로 나눈 값의 평균을 구함 

Macro 평균은 클래스의 크기와 상관없이 각 클래스에 대해 동일한 가중치를 부여

 

2. Micro 평균 (Micro Average)

Micro 평균은 모든 클래스의 TP, FP, FN 값을 합하여 전체적인 precision, recall, F1 스코어를 계산

Micro 평균은 각 샘플의 중요도에 따라 가중치를 부여

 

3. Weighted 평균 (Weighted Average)

Weighted 평균은 Macro 평균과 유사하지만, 클래스의 크기에 따라 가중 평균을 계산

Weighted 평균은 클래스의 크기에 따라 각 클래스에 가중치를 부여하여 계산

'AI > 기계학습' 카테고리의 다른 글

K-최근접 이웃, K-Nearest Neighbors (K-NN)  (0) 2023.01.05
군집  (0) 2022.11.28
차원축소(PCA)  (0) 2022.11.24
회귀분석(Regression Analysis)  (0) 2022.11.15
Machine Learning1 - 정의와 종류  (0) 2022.11.10