1) 정보 이득
..앤트로피 개념
정보이득 지수 = 1-엔트로피 지수
2) 지니계수: 불평등 지수
지니계수 낮을수록 균일한 데이터
If true/ else
쉽고 직관적
과적합(overfitting)
sol) 트리크기를 사전에 제한
- max_depth, max_features..
중요한 feature들만 선택해서 학습,예측하는게 나을 수도
- feature_importance: 중요한 feature 찾아내기
* 스마트 워치끼고 어떤 행동을 하는지 찾아낸다
다양한 분류기의 예측 결과를 도합
이질적인 모델들을 섞는 게 전체 성능에 도움이 될 수 ㅇ
1. 보팅
하드 보팅: 다수의 classifier 간 다수결
소프트보팅: class별 확률 결정 by predict_proba()
* 위스콘신 유방암 데이터 예측
(cf) kNeighborsClassifier에서 n_neighbors는 내 주변의 몇개의 이웃들을 참조해서 이 데이터를 예측할 건지
2. 배깅 | 랜덤 포레스트가 대표적
여러개의 결정트리 분류기가 전체 데이터에서 배깅방식으로 각자 데이터를 샘플링해 개별적으로 학습 수행
-> 이후 모든 분류기를 보팅으로 예측 결정
비교적 빠른 수행속도
bootstrapping: 전체 데이터 세트를 중첩되게 분리하는 것
한 서브세트에 [1233346889]와 같이 한 데이터가 여러개씩 들어있음
* 사용자 행동인지 데이터 예측
(cf) 개별 피쳐들의 중요도 시각화
Random forest의 feature_importances_: 중요도 순서로 ndarray로 반환
-> series로 변환
3. 부스팅
여러개의 학습기를 "순차적"으로 학습,예측하면서 "잘못 에측한 데이터"에 가중치 부여해 오류를 개선해나가며 학습시키기
-> 수행시간 오래걸림
GBM (Gradient Boost Machine)
가중치 업데이트에 경사하강법을 이용
GradientBoostingClassifier 클래스
learning_rate: GBM 학습 진행시에 적용되는 학습률
n_estimators: weak learner의 개수
subsample: weak learner가 학습에 사용하는 데이터 샘플링 비율
XGBoost(extra gradient boost)
빠른 수행시간
다양한 성능향상기능: 규제, tree pruning(가지치기)
다양한 편의기능: 조기 중단, 자체 내장된 교차검증, 결손값 자체 처리
LightGBM
더 빠르고 더 작은 메모리 사용
카테고리형 feature의 자동변환, 최적분활
leaf 중심트리 분할 방식(leaf wise(<->균형트리분할방식))
https://miro.medium.com/max/2590/1*5gY5IdU6PO4JCqQoEDtdMA.png
언더샘플링: 많은 레이블을 가진 데이터 세트를
적은 레이블을 가진 데이터 세트 수준으로 감소 샘플링
원본데이터-> k최근접 이웃으로 데이터 신규증식 -> 신규증식하여 오버샘플링 완료
데이터 로그 변환: 약간식 성능 좋아짐
이상치 데이터 제거: 정밀도 up, 재현율 up
SMOTE 오버 샘플링: 정밀도 down, 재현율 up
기반 모델들이 예측한 값들을 Stacking 형태로 만들어서
메타 모달들이 이를 학습하고 예측하는 모델
step1: 각 기반 모델 별로 학습하고, 학습/테스트 데이터를 예측한 결과값을 기반으로
메타 모델을 위한 학습용/테스트용 데이터를 생성한다
step2: 스텝1에서
모델을 구성하는 주요 피처들을 선택
불필요한 다수의 피처들로 인해 모델 성능을 떨어뜨릴 가능성을 제거
설명가능한 모델이 될 수 있도록 피처들을 선별
피처값의 분포, Null의 개수, 피처간 높은 상관도(겹치는거 제거), 결정값과의 독립성 등을 고려
모델의 피처중요도 기반
모델의 최초학습 후 feature 중요도 선정
feature중요도가 낮은 속성들을 차례대로 제거, 반복적으로 학습.평가 수행하여
최적의 feature추출
수행시간이 너무 오래걸린다..
모델 최초 학습 후 선정된 피처 중요도에 따라 평균.중앙값의 특정 비율 이상인 피처들을 선택
ref: "파이썬 머신러닝 완벽가이드", 권철민, 위키북스