인프런 커뮤니티 질문&답변

맹고님의 프로필 이미지
맹고

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

앙상블 학습의 개요와 보팅(Voting)의 이해

random_state에 관해 질문드립니다

해결된 질문

작성

·

665

0

일반적으로 train_test_split() 함수에 random_state를 지정하는 이유는 학습 데이터셋과 테스트 데이터셋을 분리할 때 매 수행마다 동일한 데이터셋으로 분리하기 위함이라고 알고 있습니다.

 

그런데 DecisionTreeClassifier()객체를 생성할 때 안에 random_state를 넣어주는 이유는 무엇인가요?

 

DeicisonTreeClassifier과 train_test_split() 둘다 random_state를 넣어줘야 하나요? 만약 그렇다면 radom_state가 각각 사용되는 의미가 다른가요? 다르다면 어떻게 다른지 여쭙고 싶습니다.

 

선생님, 날씨도 더운데 답변해주시느라 너무 감사합니다ㅜㅜ

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

train_test_split()에서 사용되는 random_state 인자는 데이터를 train과 test 데이터 세트로 특정 비율로 분할 할때 random 하게 섞어서 분할을 하게 되는데, 이때 random 분할을 수행시 마다 동일하게 적용하기 위해서 random seed값을 random_state로 지정하는 것입니다.

DecisionTreeClassifier에서 사용되는 random_state는 random을 고정한다는 자체는 동일한데, 역할이 다릅니다. DecisionTreeClassifier는 트리 기반의노드를 분할시마다 분할 기준등이 동일하게 발생할 경우 random하게 feature들을 선택하는 특성이 있는데, 이때 random을 고정하는 역할을 합니다. 그래서 이때의 random_state는 수행시마다 동일하게 feature가 분할하는 역할을 수행하게 만들어 줍니다.

인자명만 같을 뿐, 완전히 다른 역할을 수행합니다.

좋은 질문 감사합니다(제 컨디션 걱정도 감사합니다 ^^)

맹고님의 프로필 이미지
맹고
질문자

답변 너무너무 감사합니다! 혹시 그렇다면 RandomForestClassifier의 random_state도 DeicisonTreeClassifier의 random_state와 비슷한 기능을 한다고 봐도 되는걸까요??

권 철민님의 프로필 이미지
권 철민
지식공유자

네, 비슷합니다. 다만 randomforest에서 random_state는 추가적으로 하나 더 역할을 수행합니다.

하나는 DecisionTreeClassifier의 random_state와 동일한 역할, 다른 하나는 bootstrapping 방식으로 데이터를 sampling 할때의 randomness를 고정하는 역할을 수행합니다.

맹고님의 프로필 이미지
맹고

작성한 질문수

질문하기