◆ 랜덤포레스트
- 전체 샘플에서 랜덤샘플을 선택하는 방식
- 그레이언트 디센트의 샘플링과 동일
- 선택된 샘플이 다시 셋트로 돌아오며 이 방법을 부트스트랩 샘플링이라고 함
- 깊이가 얕고 트리를 많이 생성하는게 목적이다보니, 루트를 씌운 갯수만큼의 특성만 사용하여 최선의 분할을 선택해서 가지치기를 함
- 그 다음, 각 트리의 클래스별 확률을 평균내어 가장 높은 확률을 가진 클래스를 예측값으로 사용
● 데이터 준비
● 랜덤포레스트 모델
from sklearn.ensemble import RandomForestClassifier
● 훈련값 확인
rf.feature_importances_ # 컬럼별 중요도
● OutOfBag 샘플 테스트
rf.oob_score_ # OutOfBag : 붓트스트랩(일정 개수 랜덤축출 후 학습) 후 남는 샘플 -> 검증시 사용
rf = RandomForestClassifier(oob_score=True)
rf.fit()
rf.oob_score_ # 검증 점수
◆ 엑스트라 트리 - 잘 사용 안함
- 아무 질문으로 트리를 만듬
from sklearn.ensemble import ExtraTreesClassifier
et = ExtraTreesClassifier()
◆ 그레디언트 부스팅
- 그레디언트 부스팅은 경사 하강 알고리즘에서 학습법을 트리 모델을 사용하여 손실을 줄이는 알고리즘
- 깊이가 3인 트리를 100개 만드는 디폴트값을 가지고 있음
- 분류기 중에서 손실함수의 최적화된 SGD와 분류 성능이 강력한 트리를 앙상블하여 오버피팅에도 강하고 성능도 매우 강력함
- HGB, XGB, LightGBM 등 속함
from sklearn.ensemble import GradientBoostingClassifier
gb = GradientBoostingClassifier(n_estimators= , learning_rate= )
# n_estimators : 트리 개수 / learning_rate : 경사하강 정도
◆ 히스토그램 기반 부스팅(HGB)
- 각 특성의 히스토그램(빈도)에서 구간별로 학습 - 빈도까지 고려(빈도에 대한 질문으로 데이터를 나눔)
- NULL값 처리가 쉬움 - 한 구간이 Null값에 대한 빈도 표시
- 히스토그램 기반 부스팅은 특성 중요도 못뽑음 -> 퍼뮤테이션 임포턴스 추출
from sklearn.ensemble import HistGradientBoostingClassifier
hgb = HistGradientBoostingClassifier()
● 퍼뮤테이션 임포턴스
- 첫번째 특성을 무작위로 섞고, 그 외의 특성을 무작위로 섞은 뒤 기존의 데이터셋의 점수와 얼만큼의 차이가 나는지 확인하는 방법론( 특성을 하나씩 인덱스를 섞은 후 정확도를 원래 데이터의 정확도의 차이를 각각 비교)
- 차이가 클수록 해당 특성이 모델에 미치는 영향이 크다는 것을 증명함
- HGB외에도 중요도를 뽑을 수 없는 모델에서 특성 중요도를 뽑을때 유용하게 사용됨
from sklearn.inspection import permutation_importance
hgb.fit()
result = permutation_importance(hgb, train, target, n_repeats= ) # n_repeats : 반복횟수
result.importances_mean
◆ XGB
from xgboost import XGBClassifier
xgb = XGBClassifier(tree_method='hist') # tree_method='hist' : 트리를 형성할때 빈도도 고려(HGB의 특징)
◆ LightGBM
from lightgbm import LGBMClassifier
lgb = LGBMClassifier()
'데이터 분석' 카테고리의 다른 글
k-평균 알고리즘 (0) | 2023.12.18 |
---|---|
Clustering(군집 분석) (0) | 2023.12.18 |
Cross_Validation(교차검증) & GridSearchCV (0) | 2023.12.13 |
Decision_Tree(의사결정나무) (0) | 2023.12.12 |
Stochastic Gradient Descent(SGD, 확률적 경사 하강법) (0) | 2023.12.12 |