Notice
Recent Posts
Today
Total
«   2024/07   »
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
관리 메뉴

나름개발블로그

Hands-On ML 7장 본문

A/ML

Hands-On ML 7장

성남개발자 2020. 9. 15. 15:51

chapter 7

앙상블 학습과 랜덤 포레스트

여러개의 예측기로 부터 예측 결과를 모아 이용 하는

투표 기반 분류기

다수결의 투표로 정해지는 분류기를 직접투표(Hard voting) 이라고 한다.

모든 분류기에서 확률 계산이 가능할떄 , 예측확률을 평균내어 가장 높은 클래스를 선택하는 방식은 간접투표 (soft voting)이라고 한다.

배깅과 페이스팅

배깅(bagging) : 훈련 세트에서 중복을 허용하여 샘플링하는 방식

페이스팅(pasting) : 중복을 허용하지 않고 셈플링 하는 방식

sklearn의 배깅과 페이스팅

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

bag_clf = BaggingClassifier(
	DecisionTreeClassifier(),n_etimator=500,max_sample=100,
	bootstrap=True, n_jobs=-1)
...

배깅이 페이스팅보다 편향이 조금 더 높다.

oob 평가

bootstrap= true(중복허용 ,배깅) 로 하여 훈련하면 선택되지 않은 훈련 샘플을 oob(out of bag) 이라고 한다.

oob_score=True 로 지정하면 oob 샘플을 이용하여 평가에 사용한다 .

랜덤 패치와 랜덤 서브스페이스

BaggingClassifer 는 특성 샘플링도 지원 한다.

훈련 특성과 샘플을 모두 샘플링하는 것을 램덤 패치 방식 (random pathces method)라 한다.

훈련 샘플을 모두 사용하고 특성을 샘플링하는 것을 랜덤 서브스페이스 방식(random subspaces method )라고 한다.

랜덤 포레스트 (RandomForest)

랜덤 포레스트는 일반적으로 배깅 방법(또는 페이스팅)을 적용한 결정 트리의 앙상블이다.

랜덤 포레스트 알고리즘은 트리의 노들르 분할할떄 전체 특성 주에서 최선의 특성을 찾는대신 무작위로 선택한 특성 후보 중에서 최적의 특성을 찾는 식으로 무작위성을 더 주입!

편향이 늘어나지만 분산을낮추게 된다.

엑스트라 트리

극단적으로 무작위한 트리의 랜덤 프로테트를 익스트림 랜덤 트리 앙상블 이라고 부릅니다.

특성 중요도

랜덤 포레스트의 또 다른 장점은 특성의 상대적 중요도를 측정하기 쉽다이다.

부스팅

부스팅(boosting) 은 약한 학습기를 여러 개 연결하여 강한 학습기를 만드는 앙상블 방법을 말한다.

앞의 모델을 보완해나가면서 일련의 예측기를 학습시키는 것

에이다부스트

sklearn 은 SAMME을 사용한다. (잘모르겟심)

from sklearn.ensemble import AdaBoostClassifier

ada_clf = AdaBoostClassifier(
	...
	algorithm="SAMME.R",learning_rate=0.5)
)

그레이디언트 부스팅

에이다부스트처럼 반복마다 샘플의 가중치를 수정하는 대신 이전 예측기가 만든 잔여 오차에 새로운 예측기를 학습 시킨다.

from sklearn.ensemble import GradientBoostingRegressor

gbrt = GradientBoostingRegressor(max_depth=2,n_estimators=3,learning_rate=1.0)
gbrt.fit(X,y)

learning_rate 매개변수가 각트리의 기여 정도를 조절한다. 낮게 설정하면 학습 하귀에해 많은 트리가 필요하지만 일반적으로 성능은 좋아짐.

최적의 트리 수를 찾기위해서 조기 종료 기법을 사용 할 수 있다.

스태킹

속한 모든 예측기의 예측을 투표가아닌 취합하는 방식(마지막 예측기가 blender 또는 meta learner)라고 한다.

블랜더를 학습시키는 일반적인 방법은 홀드 아웃세트를 이용하는 것 .

'A > ML' 카테고리의 다른 글

Hands-On ML 9장  (0) 2020.09.21
Hands-On ML 8장  (0) 2020.09.16
Hands-On ML 6장  (0) 2020.09.14
Hands-On ML 5장  (0) 2020.09.13
Hands-On ML 4장  (0) 2020.09.12
Comments