Corgi Dog Bark

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Train_Test_Split & Holdout Sampling
    머신러닝(MACHINE LEARNING)/간단하게 이론(Theory...) 2021. 4. 22. 13:41
    반응형

    Holdout Sampling

    holdout Sampling 이란, 데이터를 Training 과 Test 로 나눠서 모델링을 하고, 평가하는 방법이다. 가장 일반적인 모델 생성을 위한 Sampling 방법이며, Training 데이터와 Test를 나누는 비율은 일반적으로 8:2, 7:3등의 비율을 사용한다. 

     

     

     

    Why are Training , Validation, Holdout_sampling sets important?

    자 그러면, 도대체 왜 training, validation, holdout_sample 이 중요한지 알아보자. 우리는 데이터에 대해서 현재의 데이터에 맞게 세팅된 모델이 필요한 것이 아닌, 내가 미래의 데이터를 수집하는데에 있어 필요한 모델을 알고 싶다. 따라서 데이터 학습에 필요한 데이터를 줄때, 내가 가진 모든 데이터를 주게 되면, 자칫 overfitting이 발생할 수 있다. 따라서 적당한 데이터를  traing , validataion set 으로 나누어 거쳐, 평가를 이루는 것이다.

     

     

     

    Sample Example

    사이킷 런에서는 holdout_samping을 구현시키기 위해, 간단한 모듈을 지원하는데 바로 sklearn.model_selection 에 있는 train_test_split 이다.

    https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

     

    sklearn.model_selection.train_test_split — scikit-learn 0.24.1 documentation

     

    scikit-learn.org

    sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)[source]

    train_test_split에는 여러 feature 값이 존재하는데,

    • array : 같은 length 즉 shape[0] 이 같은 녀석들을 집어서 넣어주고, *arrays 로 표현되어, shape[0] 값만 같으면, 무한히 집어넣을 수 있다. ( 여기서는 X,y 를 넣어주었다.)
    • train_size : 원하는 train_size 값 이고 0 - 1.0. 사이의 값들을 집어넣어준다.
    • test_size : 원하는 test_size 값 이고 0 - 1.0. 사이의 값들을 집어넣어준다.
    • random_state : 셔플링을 진행할때, random_state 값을 넣어주는 것이고, 굳이 안넣어도 상관없지만, 나중에 같은 데이터로 진행되었을 때, random_state 값이 바뀌게 되면, 값이 달라지게 되니 조심하자.
    • shuffle : 데이터를 split 하기 전에 섞을건지, 말건지 정하는 값 (default = False -> 당연히 데이터를 맘대로 섞으면 안되니깐...)

    그럼 이제 return 값을 살펴보자.

    • splitting : 값은 list,length = 2*len(arrays) 로 train_test split 된 값들이 return 된다. 즉 X값(data값) 과 Y(target값)을 train_test_split의 인자로 주게 되면 X_train, Y_train(train 의 훈련 데이터 쌍, data,target) 그리고 X_test,Y_test(test하고 싶은 data,target 쌍을 준다.) 

    그래서 결론은!!

    X_train, X_test, Y_train, Y_test = train_test_split(X(data) ,y ,test_size = 0.2, random_state = --) 로 많이쓴다.

    예시를 살펴보자 (python code)

     

     

    반응형

    댓글

Designed by Tistory.