공부/머신러닝

교차검증, (k-fold cross validation)

김지똥 2024. 3. 24. 14:49

교차검증( Cross-validatio)

 

 

1.      cross_val_score cross_validate

cross_val_score와 cross_validate는 모두 scikit-learn 라이브러리에서 제공되는 교차검증 기능을 활용하는 함수.

 

1)    cross_val_score:

가장 간단한 형태의 교차검증을 수행하는 함수.

주어진 모델과 데이터에 대해 K-Fold Cross-Validation을 수행하고, 각 폴드에서의 성능 지표(예: 정확도)를 반환.

사용법: cross_val_score(estimator, X, y, cv=None, scoring=None)와 같이 사용하며, cv 매개변수에는 교차검증 분할기(KFold, StratifiedKFold 등)를 지정할 수 있다.

 

 

 

2)    cross_validate:

 cross_val_score와 달리, 여러 성능 지표를 반환할 수 있다.

각 폴드에서의 여러 성능 지표(예: 정확도, 정밀도, 재현율 등)와 각 폴드에서의 학습 시간과 테스트 시간을 포함한 정보를 반환한다.

사용법: cross_validate(estimator, X, y, cv=None, scoring=None, return_train_score=False)와 같이 사용하며, scoring 매개변수에는 사용하고자 하는 성능 지표를 지정할 수 있다. 또한 return_train_score 매개변수를 True로 설정하면 각 폴드에서의 학습 데이터에 대한 성능 지표도 반환한다.

 

 

cross_val_score는 단일 성능 지표를 반환하는 반면 cross_validate는 여러 성능 지표와 추가 정보를 반환한다는 점이 가장 큰 차이

 

 

 

2. 이진분류 다중분류

1) 이진 분류(Binary Classification):

 

이진 분류는 두 개의 클래스 중 하나로 예측하는 문제이다.

예를 들어, 스팸 메일 분류, 암 진단 등이 이진 분류 문제의 예시이다.

일반적으로는 양성(positive) 클래스와 음성(negative) 클래스로 구분된다.

평가 지표로는 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1-score 등이 주로 사용된다.

 

 

2) 다중 분류(Multiclass Classification):

 

다중 분류는 세 개 이상의 클래스 중 하나로 분류하는 문제이다.

예를 들어, 손글씨 숫자 분류, 동물 종 분류 등이 다중 분류 문제의 예시이다.

클래스 수가 3개 이상이므로, 클래스 간의 관계도 고려되어야 한다.

평가 지표로는 정확도(Accuracy), 다중 클래스에 대한 정밀도(Precision), 재현율(Recall), F1-score 등이 사용된다.

 

 

 

3) Precision, recall, F1-score가 NaN(Not a Number) 값으로 나오는 이유.

 

  •     분모가 0인 경우: Precision, recall, F1-score를 계산할 때 분모가 0이 되는 경우가 있다. 예를 들어, 이진 분류에서 양성 클래스에 대한 예측된 값이 없어서 해당 클래스에 속하는 데이터가 없는 경우가 있다.
  •    분자와 분모가 모두 0인 경우: 분모와 분자가 모두 0이 되는 경우에는 Precision, recall, F1-score를 계산할 수 없다. 이는 양성 및 음성 클래스에 대한 모든 예측값이 잘못된 경우 또는 모든 데이터가 다중 분류에서 동일한 클래스에 속하는 경우에 발생할 수 있다.

4) Precision, recall, F1-score의 계산 방식

 

  • 이진 분류 평가 지표 계산 방식:
    • Precision: TP / (TP + FP)
    • Recall: TP / (TP + FN)
    • F1-score: 2 * (precision * recall) / (precision + recall)
  • 다중 분류 평가 지표 계산 방식:
    • Macro 평균: 각 클래스별 precision, recall, F1-score을 계산한 후 이를 각각의 평균으로 계산한다.
    • Micro 평균: 전체 예측값과 실제값에 대해 각각 TP, FP, FN을 계산하여 이를 합산한 후 precision, recall, F1-score을 계산한다.
    • Weighted 평균: 각 클래스별 데이터의 가중치를 고려하여 평균을 계산한다. 종종 클래스별 데이터의 불균형을 고려하기 위해 사용된다.