강의

멘토링

커뮤니티

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

Yoonseok Choi님의 프로필 이미지
Yoonseok Choi

작성한 질문수

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

랜덤포레스트 파라미터에 관해 질문 드립니다.

작성

·

934

0

안녕하세요. 강의 너무 재미있게 보고있고 큰 도움이 되고 있습니다.

1. 랜덤포레스트를 공부하는데 n_jobs 라는 파라미터가 보입니다.

설명에는 n_jobs=-1이라고 하면 모든 CPU코어를 이용해 학습한다고 나오는데 -1로 설정하면 최대의 효율로 학습을 한다는건가요?? 만약에 다른 숫자로 설정하면 어떻게 되는지 궁금합니다.

2. 그리고 쥬피터 4.4 랜덤포레스트에서 grid_cv를 통해 rf_clf의 파라미터를 튜닝합니다.

params = {

    'n_estimators':[100],

    'max_depth' : [6, 8, 10, 12], 

    'min_samples_leaf' : [8, 12, 18 ],

    'min_samples_split' : [8, 16, 20]

}

이걸 토대로 최적 하이퍼 파라미터를 확인하고,

rf_clf1 = RandomForestClassifier(n_estimators=300, max_depth=10, min_samples_leaf=8, \

                                 min_samples_split=8, random_state=0)

다시 n_estimators = 300으로 랜덤포레스트 분류기를 생성(?)하는데 n_estimators의 값이 바껴도 최적 하이퍼 파라미터 값으로 받은 나머지 파라미터들이 여전히 최적의 파라미터 값으로 사용될 수 있는건가요???

항상 친절하고 빠른 답변 너무 감사합니다. 10만원이라는 비용이 굉장히 저렴하게 느껴질 정도로 만족스럽습니다.

감사합니다

답변 2

0

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

안녕하십니까,

잘 듣고 계시다니 저도 기쁩니다.

1. n_jobs=-1 을 여러개의 CPU 코어가 있는 시스템에서는 모든 CPU 코어를 사용하여 병렬로 RandomForest 트리를 생성하는데 사용합니다. 보통 RandomForest의 fit()을 호출하면 1개 CPU 코어만을 사용하는데. n_jobs=2면 2개 cpu core, n_jobs=-1이면 모든 cpu core를 병렬로 사용하여 n_estimators갯수로 주어진 RandomForest 트리를 병렬로 빠르게 만들어서 학습 수행이 가능합니다.  단 병렬로 트리를 만들어서  학습 수행 속도만 빠르게 하는 방식입니다.

2. 살짝 어려운 질문이군요.  n_estimators의 값이 바뀌어도 최적 하이퍼 파라미터의 값이 여전히  최적 하이퍼 파라미터를 100% 유지한다고 장담할 수는 없습니다. 파라미터에 따라 영항을 받을 수도 있습니다. 하지만 상대적으로 다른 파라미터에 비해 덜 받기 때문에 일반적으로 하이퍼 파라미터 튜닝 시 수행 시간이 너무 오래 걸린다면 상대적으로 적은 n_estimators의 값으로 최적화를 시킨 뒤 n_estimators의 값을 변화 시키면서 다시 확인하는 방법을 취합니다.

3. 부정 손실은 loss가 negative가 되는 것을 한글로 옮기다보니 적합한 단어가 없어서 그렇게 지었습니다.  Boosting 계열의 tree들은 손실을 계속 감소시키는 방향으로 branch를 split하면서 tree depth를 확장해 나갑니다(최대 max_depth까지). 그리고 max_depth에 도달하지 않았는데 loss가 0을 지나 -까지 되면 더 이상 확장하지 않습니다.

그런데 이렇게 loss를 기반으로  tree의 depth를 조절하는 알고리즘을 적용할 경우 loss에만 최적화 되면서 tree가 unbalance되거나 불필요하게 split을 하는 현상이 종종 발생할 수 있습니다.  반면에 xgboost의 경우 일단 max_depth까지 tree가 확장되더라도 다시 tree를 거꾸로 타고 가면서 하이퍼 파라미터의 제어 조건에 맞는 split을 검증하면서 불필요한 하위 tree들을 제거 해주는 방식으로 tree pruning을 수행합니다. 

감사합니다.

0

Yoonseok Choi님의 프로필 이미지
Yoonseok Choi
질문자

그리고 xtboost에서 부정손실이 무슨의미인가요

Yoonseok Choi님의 프로필 이미지
Yoonseok Choi

작성한 질문수

질문하기