ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🤖 ML 코드 입문 - 교차 검증 및 StartifiedKFold
    머신러닝 2024. 2. 26. 20:41

    머신러닝에서 모델의 성능을 평가하기 위해선 교차 검증이 중요하다.

    일반적으로 단순히 학습 데이터와 테스트 데이터를 나누어 모델을 평가하는 것보다 교차 검증을 사용하는 것이 더 신뢰할 수 있는 결과를 제공한다.

    이를 통해 모델의 일반화 성능을 더 정확하게 예측할 수 있다.

     

    교차 검증은 주어진 데이터를 여러 번 반복해서 나누고, 각 반복에서 모델을 학습 및 평가하는 방식이다.

    이러한 반복적인 과정을 통해 모델의 성능을 평균화하여 보다 일반화된 성능을 추정할 수 있다.

     

    Stratifield K-Fold 교차 검증은 기존의 K-Fold 교차 검증에서 각 폴드가 원본 데이터의 클래스 비율을 유지하도록 보장한다. 이 방법은 데이터가 불균형하게 분포되어 있는 경우 모델 평가에 더 신뢰할 수 있는 결과를 제공한다.

    특히, 분류 문제에서 클래스 간의 비율이 다른 다른 경우에 유용하다.

    따라서 교차 검증은 모델의 일반화 성능을 신뢰할 수 있는 방식으로 평가하기 위해 필수적이며, Stratified K-Fold는 클래스 불균형이 있는 데이터셋에서 모델을 공정하게 평가하는 데 유용하다.

     

     

    - Stratified K-Fold 교차 검증을 사용하는 방법

     

    1. 데이터를 불러온다.

    2. 필요한 경우 데이터를 전처리한다.(특성 스케일링, 결측치 처리 등)

    3. 사이킷런의 StratifiedKFold 클래스를 임포트 한다.

    4. 분류 문제에서는 입력 특성(X)과 타겟 변수(y)를 준비한다.

    5. StratifiedKFold 객체를 생성한다. 이때, 폴드 수(k)를 지정한다.

    6. split() 메서드를 사용하여 데이터를 k개의 폴드로 나눈다.

    7. 각 폴드에서 모델을 학습하고 평가한다.

    8. 모델의 성능 지표를 기록하고 평균을 내어 전체 성능을 평가한다.

     

    [예시]

    from sklearn.model_selection import StratifiedKFold
    from sklearn.model_seletion import cross_val_score
    from sklearn.linear_model import LogisticRegression
    import numpy as np
    
    # 예제 데이터를 불러온다
    X, y = load_data()
    
    # Stratified K-Fold 객체를 생성한다
    skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
    
    # 분류기를 정의한다(로지스틱 회귀 분류기 예시)
    clf = LogisticRegression()
    
    # 교차 검증을 수행
    scores = cross_val_score(clf, X, y, cv=skf, scoring='accuracy')
    
    # 각 폴드의 정확도를 출력
    print("각 폴드의 정확도:", scores)
    
    # 평균 정확도를 출력
    print("평균 정확도", np.mean(scores))

     

     

Designed by Tistory.