본문 바로가기

Kaggle

Kaggle - Bike Sharing Demand : Hyperparameter Tuning (하이퍼파라미터 튜닝)

반응형

https://steadiness-193.tistory.com/230

 

Kaggle - Bike Sharing Demand : Evaluation (Random Forest, Cross-validation)

https://steadiness-193.tistory.com/228 Kaggle - Bike Sharing Demand : EDA & Feature Engineering 데이터 출처 https://www.kaggle.com/c/bike-sharing-demand/data 컬럼 설명 자료형 datetime 일시 연-월-일..

steadiness-193.tistory.com

 

위 포스팅에서 만들어낸 내용을 토대로

 

랜덤포레스트의 옵션들인, 하이퍼파라미터의 적절한 값을 찾아보자.

 

 

 

 

[Coarse Search]

Random Search를 베이스로 하며, 이론상으로 존재 가능한 모든 하이퍼파라미터 범위를 집어넣는다.

가장 좋은 하이퍼파라미터를 찾는 것보단, 좋지 않은 하이퍼파라미터를 소거하는 전략

 

 

 

[RandomForestRegressor]


n_estimatiors : 트리의 갯수, 높을 수록 정확도가 높아지나 시간이 오래 걸린다.


n_jobs : 병렬처리 여부, -1을 입력하면 컴퓨터에 존재하는 모든 코어를 사용한다.


random_state : 결과를 고정시킴, Seed Number와 같은 개념


max_depth : 트리의 깊이, 지정한 수만큼 가지를 깊게 뻗음

max_features : Feature Sampling,
0.0 - 0.1사이의 값을 넣을 수 있으며 트리 생성 시 전체 feature에서 지정한 비율 만큼만 feature를 사용함

 

 

하이퍼파라미터 튜닝은 max_dapth와 max_features 두 가지를 중점으로 진행한다.

 

 

 

 

 

참고용 포스팅

 

https://steadiness-193.tistory.com/225

 

Numpy - random : normal, uniform, randint, choice

정규분포로부터 무작위 표본 추출 - normal np.random.normal(평균, 표준편차, 크기) * 평균은 0, 표준편차는 1이 기본값 np.random.normal 난수 50개 생성 균등분포로부터 무작위 표본추출 - uniform np.random..

steadiness-193.tistory.com

 

 

 

 

 

Coarse Search

 

 

필요 라이브러리 불러오기

 

 

 

이전 포스팅에서 했던 Evaluation을 하는 것인데

 

max_depth와 max_features만 랜덤하게 넣어줘서 평가하는 것이다.

 

 

n_estimators는 높을 수록 좋으나, 실행 속도 고려 차원에서 적당한 값을 준다.

 

랜덤서치는 보통 100번 반복한다.

 

 

 

 

 

결과가 낮은 순으로 정렬을 했다.

 

살펴보니 max_depth는 60 이상이 많이 보이고 

 

max_features는 0.7 이상이 많아 보인다.

 

 

 

 

 

[Fine Search]

Random Search 베이스지만,

Coarse Search에서 찾아낸 좋은 범위만을 집어넣어 다시 한번 진행.

 

 

 

Fine Search

 

 

 

 

 

위 데이터프레임에서 0, 1번째 컬럼의 0번째 값이 가장 좋은 하이퍼파라미터인 것을 알 수 있다.

 

 

 

 

 

 

 

모델에 하이퍼파라미터 집어넣기

 

 

하이퍼파라미터 튜닝이 끝나면 n_estimators는 최대한 높은 값을 준다.

 

 

반응형