본문 바로가기

PerfectGuide_ML_Q&A

random_state의 기능?

(PerfectGuide 강의 질문답변 정리)

 

scikit learn에서 사용하는 random_state 인자는 수행시마다 동일한 결과를 얻기 위해 적용합니다.

train_test_split(..., test_size=0.2) 과 같은 함수는 80% train, 20% test 데이터 세트를 추출합니다. 하지만 추출된 데이터는 수행을 할때마다 다를수 있습니다. random하게 80%, 20%를 추출하기 때문입니다.

가령 1~ 100까지 일련번호로 된 100개의 데이터를 train_test_split(.., test_size=0.2) 로 수행하면 해당 함수를 첫번째 수행할 때는 1~80 번이 train, 81~100번이 test가 될 수 있지만, 다시 수행하면 이번에 21~100번이 train, 1~20번이 test가 될 수 있습니다. 80%, 20% 로 나누는건 동일하지만 함수를 수행 시마다 추출한 레코드들을 달라질수 있습니다. 내부적으로 80%, 20% 로 나눌때 random 함수를 적용합니다.

random_state=1 이라고 하면 바로 이 random 함수의 seed 값을 고정시키기 때문에 여러번 수행하더라도 같은 레코드를 추출합니다. random 함수의 seed값을 random_state라고 생각하시면 됩니다.

제가 강의에 사용된 train/test 데이터세트를 여러분도 동일하게 사용할 수 있도록 random_state를 고정값으로 할당했습니다. 그렇지 않으면 제가 설명드리는 데이터 세트와 여러분이 수행하는 데이터 세트는 80%, 20%는 맞더라도 서로 다른 레코드로 추출되기 때문입니다.

random_state를 어떤 값으로 해도 상관없습니다.

이는 random값을 고정하는 역할만 수행합니다.