ML & DL

random_state

x_train, x_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=16)
모델 학습을 위해 데이터셋을 구성할 때 자주 보이는 random_state는 무엇일까? 

 

  • 데이터셋을 train, test로 나눌 때 자동으로 무작위로 섞게 된다. (shuffle=False 파라미터를 설정하지 않는다면)
  • 여기에서 무작위란 어떤 특정한 숫자로부터 시작한 난수처럼 보이는 수열을 말한다.
  • 수열이 시작되는 특정한 숫자시드(seed)라고 한다.
  • 이 시드를 수동으로 설정한 후, 동일한 시드를 사용하면 동일하게 나눠진 데이터를 얻을 수 있다.
  • 따라서 데이터를 섞되, 일정하게 섞고 싶을 때 사용하는 것이 seed이다.
  • seed를 설정하는 파라미터가 random_state이다.
(참고) stratify 파라미터란?
  • label당 데이터의 분포를 일정하게 고정하는 파라미터이다.
    • stratify(labels)
  • 예를 들어 label=[0, 1]이라면, 매 split을 진행할 때마다 0과 1의 비율을 train, test 셋에서 일정하게 유지시킨다.
  • 분류 (classification) 모델에서 중요한 파라미터이다.
  • scikit-learn 공식문서 설명 : 클래스 label을 이용해 계층적으로 데이터를 분할한다.
반응형