주먀
교차검증 본문
교차검증
: 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