Written on
·
702
0
random_state 값 지정은 반복 연산 시에 동일한 결과를 얻어 볼 수 있게 한다는 걸로 알고 있습니다.
정확하게 어떤 프로세스에 의해서 동일한 결과를 얻는지 궁금합니다.
또한 타이타닉 생존자 예측 실습에서 결정트리, RandomForest,로지스틱 회귀를 비교 하는 과정에서
dt_clf = DecisionTreeClassifier(random_state=11)
rf_clf = RandomForestClassifier(random_state=11)
lr_clf = LogisticRegression()
로지스틱 회귀에서만 random_state 값을 지정해주지 않았는지 궁금합니다.
Answer 1
0
안녕하십니까,
사이킷런의 분류와 회귀의 많은 estimator 클래스들은 random_state를 이용하여 수행시 마다 동일한 결과를 얻도록 합니다. 주로 np.random()이나 python의 random 함수의 seed 값으로 적용되어 사용됩니다.
random_state가 어떨때 사용되는지는 각 분류/회귀 알고리즘 별로 다릅니다.
RandomForest같은 경우 bagging 으로 데이터를 추출하는데 주로 random_state값으로 np.random 값을 고정해서 사용되는 것으로 알고 있습니다. 비슷하게 tree 계열 알고리즘은 feature들이나 전체 학습 데이터의 특정 서브세트들을 추려 내는데 random_state로 random함을 고정시키는데 사용됩니다. boosting 계열의 경우는 초기 weight 값 설정에도 random_state 값이 있으면 이를 이용하는 것으로 알고 있습니다.
Logistic Regression의 경우는 살짝 random_state가 어디에 적용되는지 의문이 들기도 합니다. 알고리즘 로직상 random_state 적용될 수 있는 부분이 적을 것이라고 생각됩니다. solver 파라미터 값에 따라 random_state를 적용해서 결과 값을 고정시키거나, random_state값을 적용하지 않아도 결과 값이 고정되는 정도로만 알고있습니다.
감사합니다.