Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 시그모이드함수
- 멋사 ai
- 데이터분석가
- ai school
- 머신러닝
- 데이터마케팅분석
- 앨리스
- 파이썬
- RFM분석
- 기초100제
- 코드업 기초100제
- 멋쟁이사자처럼
- 데이터분석
- 코드업
- OneHotEncoding
- RFM
- ai 스쿨 7기
- AI 데이터 분석 트랙
- 코딩테스트
- 캐글데이터분석
- 딥러닝
- Python
- 멋쟁이사자처럼 ai school 7기
- 소프트맥스함수
- 고객데이터분석
- 코드업100제
- 2022 AI 온라인 실무 교육
- 고객세그먼트
- 데이터 분석
- Onehot인코딩
Archives
- Today
- Total
초봉5센티미터
🌳랜덤포레스트 - 매개변수 정리 본문
728x90
랜덤포레스트란?
이미지출처: https://ko.wikipedia.org/wiki/%EB%9E%9C%EB%8D%A4_%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8
랜덤포레스트는 결정 트리를 배깅 방식으로 결합한 모델
나무(Tree)가 모여 숲(Forest)를 이루듯 결정 트리가 모여 랜덤 포레스트를 구성
결정 트리와 마친가지로 랜덤 포레스트도 분류와 회귀 문제에 모두 적용 가능
랜덤포레스트 과정
1. 결정 트리를 랜덤하게 만든다
- 랜덤 샘플 사용: 트리의 훈련 데이터는 부트스트랩 샘플이다. (복원추출)
- 랜덤 특성 사용: 무작위 특성을 기본적으로 sqrt(n)개 선택하여 최선의 분할을 찾는다
- 랜덤하게 뽑으므로 과대적합을 방지하며 검증/테스트 세트에서 안정적 성능
2. 랜덤 결정 트리들의 숲을 만든다.
- 기본적으로 100개의 결정트리
3. 각 결정 트리의 예측을 평균내어 최종 예측을 생성
예시코드
분류
# RandomForestClassifier
from sklearn.ensemble import RandomForestClassifier
RandomForestClassifier(n_estimators=100, criterion="gini", max_depth=None,
min_samples_split = 2, min_samples_leaf = 1, min_weight_fraction_leaf = 0.0,
max_featrues = "sqrt", max_leaf_nodes = None, min_impurity_decrease = 0.0,
boostrap = True, oob_score = False, n_jobs = None, random_state = None,
verbose = 0, warm_start = False, class_weight = None, ccp_alpha = 0.0, max_samples = None)
회귀
# RandomForestRegressor
from sklearn.ensemble import RandomForestRegressor
RandomForestRegressor(n_estimators = 100, criterion = "squared_error", max_depth = None,
min_samples_split = 2, min_samples_leaf = 1, min_weight_fraction_leaf = 0.0,
max_featrues = 1.0, max_leaf_nodes = None, min_impurity_decrease = 0.0,
boostrap = True, oob_score = False, n_jobs = None, random_state = None,
verbose = 0, warm_start = False, ccp_alpha = 0.0, max_samples = None)
파라미터 기본값 및 설명
- n_estimators =100
- 랜덤 포레스트를 구성할 트리 개수를 지정
- 기본값 100
- criterion: ‘gini’
- 분할 시 사용할 불순도 측정 지표
- ‘gini’를 전달하면 지니 불순도를 활용해 분할
- ‘entropy’를 전달하면 정보 이득 방법으로 분할
- 기본값 = ‘gini’
- boostrap = True
- 트리를 만들 때 부트스트랩 샘플을 사용할지 여부
- False 이면 전체 데이터 세트가 각 트리를 만드는데 사용
- 기본값 = True
- max_samples = None
- 부트스트랩이 True인 경우 각 기본 추정기를 훈련하기 위해 X에서 추출할 샘플 수
- int 또는 float
- 없음(기본값)이면 X.shape[0]샘플을 그린다.
- int이면 max_samples샘플을 그린다
- float이면 max_samples * X.shape[0] 샘플을 그린다. 따라서 max_samples는 간격(0.0, 1.0) 내에 있어야 한다
- 기본값 = None
- max_features = ‘auto’
- 분할에 사용할 피처 개수
- 정수형으로 전달하면 피처 개수를 의미
- 실수형으로 전달하면 전체 피처 개수 중 분할에 사용될 피처 개수 비율을 의미
- ‘auto’나 ‘sqrt’를 전달하면 sqrt(전체 피처 개수)가 분할에 사용될 피처 개수
- ‘log2’를 전달하면 log2(전체 피처 개수)가 분할에 사용될 피처 개수
- None를 전달하면 전체 피처를 분할에 사용
- 기본값 = None
- oob_score = False
- 일반화 점수를 추정하기 위해 외부 샘플을 사용할지 여부.
- bootstrap=True인 경우에만 사용가능
- 기본값 = False
- max_depth = None
- 트리의 최대 깊이
- max_depth를 규정하지 않으면 모든 말단 노드의 불순도가 0이 되거나
- 노드에 있는 데이터 수가 min_samples_split보다 작을때 까지 트리가 깊어진다.
- 기본값 = None
- min_samples_split = 2
- 노드 분할을 위한 최소 데이터 개수
- 노드 내 데이터 개수가 이 값보다 작으면 더 이상 분할하지 않음
- 정수형으로 전달하면 최소 데이터 개수를 의미
- 실수형으로 전달하면 전체 데이터 개수 중 최소 데이터 개수 비율을 의미
- ex) 전체 데이터 개수 100, min_samples_split 0.1로 지정시 10개가 노드 분할을 위한 최소 데이터 개수
- 기본값 = 2
- min_samples_leaf = 1
- 말단 노드가 되기 위한 최소 데이터 개수
- 분할 후 노드 내 데이터 개수가 이값보다 작으면 더 이상 분할하지 않음
- 정수형으로 전달하면 최소 데이터 개수를 의미
- 실수형으로 전달하면 전체 데이터 개수 중 최소 데이터 개수 비율을 의미
- 기본값 = 1
- max_leaf_nodes = None
- 가장 빠른 방법으로 max_leaf_nodes를 사용하여 트리를 성장
- None의 경우 무제한 수의 리프 노드
- 기본값 = None
- min_impurity_decrease = 0.0
- 이 분할이 이 값 이상으로 불순물의 감소를 일으키는 경우, 노드는 분할
'Machine Learning' 카테고리의 다른 글
혼동행렬(Confusion Matrix) (0) | 2022.11.24 |
---|---|
Support Vector Machine (0) | 2022.11.22 |
⚡️One-Hot-Encoding (0) | 2022.11.10 |
🌲Decision Tree(결정트리) (0) | 2022.10.27 |
4. 머신러닝(지도학습-분류) (0) | 2022.08.22 |
Comments