from sklearn.cross_validation import train_test_split
Xtrain, Xtest, ytrain, ytest = train_test_split(X_df, y_df, random_state=1)
머신 러닝에서 데이터를 모델 학습용과, 테스트용으로 나누는 이유는 모델의 예측도를 높이기 위해서이다.
모델의 정확도 평가에 테스트 데이터를 사용하면, 모델이 테스트 데이터에도 "적합"하게 된다.
따라서, 모델이 새로운 데이터에 대해 어떻게 수행하는지 평가할 수 있는 기회를 잃게 된다. 이를 "data leakage"라고 한다.
이를 막기 위해 전체 데이터셋을 학습용 데이터(Train set), 검증용 데이터(CV set), 테스트 데이터(Test set) 세 가지 하위 집합으로 나눈다.
일반적으로 비율은 60:20:20으로 나눈다.
검증 데이터 집합(Cross Validation Set)은 모델 개발의 마지막에 모델의 최종 평가를 위해 사용한다.
훈련된 데이터와 다른 데이터를 사용해 모델을 평가함으로써, 좋은 성능을 가지는 모델을 만들 수 있다.
데이터를 겹쳐지지 않게, 무작위로 k개의 집단으로 나눈 후,
k개의 집단에 대해 테스트를 한 후 나온 k개의 결과에 대해 결과를 종합한다.
k는 우리가 직접 지정할 수 있지만, 통상적으로 5, 10으로 많이 사용한다.
k가 적어질수록 bias는 커지고, k가 커질수록 variance가 커진다. 또한 k가 크다면 시간도 많이 걸릴 걸린다.
CV(Cross Validation)은 어떤 머신 러닝 모델을 사용해야 결과가 좋을지에도 사용할 수 있고,
모델에 가장 적합한 매개변수(절편, 기울기 등)를 찾을 수도 있다.
'머신러닝, 딥러닝' 카테고리의 다른 글
랜덤포레스트 모델의 결측값 대체 방법 (0) | 2021.02.05 |
---|---|
Ridge Regression (0) | 2021.02.03 |
일반화(Generalize)란? (0) | 2021.02.01 |
선형회귀에서 2차원 array를 사용하는 이유 (0) | 2021.01.30 |
다중 선형 회귀(Multiple Linear Regression) (0) | 2021.01.30 |