주먀

교차검증 본문

카테고리 없음

교차검증

주먀 2023. 6. 13. 11:32

교차검증
: 1. 기존의 검증방법은 고정되어있는 훈련세트로 학습을 하고 고정되어있는 테스트세트로 검증
  2. 검증을 한 후 성능이 좋지않을 때 하이퍼 파라미터 튜닝을 하고 다시 학습 후 검증 단계를 반복 --> 모델의 성능을 향상시키기 위해서 
  1, 2의 과정에서 나타나는 문제는 ==> 검증하려고 남겨둔 테스트 세트에도 과대적합이 발생  

훈련데이터 - 검증데이터 - 평가데이터 
훈련 : 데이터를 학습
검증 : 모델이 잘 만들어졌는지를 확인
평가 : 모델이 고정되어 있는 데이터에 맞게 학습이 된 건지를 판단하기 위해서 가장 마지막에 한번만 사용

데이터 분할 
전체데이터 : 학습(5), 검증(3), 평가(2) 비율로 사용

검증데이터 필요성 
- 기존의 방식은 test가 여러번 사용되기 때문에 모델의 입장에서는 test는 새로운 데이터가 아님 ==> 테스트 세트에 과대적합
- 검증데이터 세트를 만들어서(기존의 테스트 역할) 검증데이터 세트에서 좋은 score가 나왔다면 마지막으로 test에서 확인
--> 모델이 잘 만들어졌는지를 제대로 확인하는 과정 
단점) 데이터가 적을 경우 학습이 제대로 안됨(과소적합)

교차검증 : 전체 데이터를 train과 test로만 나눔
              - 학습할 때마다 다른 데이터를 사용, 검증도 매 단계에서 다른 데이터를 사용
              - cross_val_score().mean() 
              - 앞으로는 7. 평가단계에서 score() 대신 cross_val_score().mean() 사용하여 모델 평가

 

[머신러닝 학습과정]
1. 문제정의 : 어떤문제 어떻게 해결할 것인지 정의
2. 데이터 수집 : 
    - 문제정의를 해결하기 위한 데이터 수집
    - data = pd.DataFrame('가지고 온 데이터')
3. 데이터 전처리 
    - 결측치, 이상치 확인하고 수정
    - data.info() : 결측치 확인
    - data.describe() : 이상치 확인
4. 탐색적 데이터 분석(EDA)
    - 많이 생략이 되는 과정
    - 데이터를 그래프로 시각화, 기술통계값을 확인해서 데이터를 살펴보는 과정 
5. 모델 선택 및 하이퍼 파라미터 튜닝
    - 사용할 모델 불러와서 파라미터를 수정하기
    - knn_model = KNe~~~~(n_neighbors = 3) 
    - tree_model = Deci~~~(max_depth = 3)
    - 데이터 분리(문제/정답-인덱서, 훈련/평가-train_test_split 함수이용)
    - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
6. 학습
    - 모델이 규칙을 찾기위한 과정
    - 훈련데이터로 학습
    - tree_model.fit(X_train, y_train)
7. 평가
    - 모델 자체 평가
    - 훈련/평가용 데이터의 점수를 확인하여 과대적합/과소적합 여부 판단
    - (교차검증 X) : tree_model.score(X_train, y_train) 
                         tree_model.score(X_test, y_test)
      (교차검증 O) : cross_val_score(X_train, y_train)
                         cross_val_score(X_test, y_test)
     - 모델이 예측하는 값 확인
     - tree_model.predict([[이차원형태의 데이터]])
    

+

C:\Users\smhrd\MachineLearning\data