티스토리 뷰
요즈음 캐글 타이타닉 score 을 올리기 위하여 홀로 고군분투하고 있다 -.-
그래서 다른 사람들이 올려놓은 Kernel 을 보다가 요새 Ensemble 부분을 한번 가볍게 훑어보고 있다.
처음 들어보는 단어들이 많이 헷갈려서 한번 정리해보고자 한다.
출처) https://www.youtube.com/watch?v=2Mg8QD0F1dQ
1. Bagging 이란?
- 머신러닝 Ensemble 방법 중 하나
- Classification 과 regression 모두 사용 가능
- 오버피팅 방지를 해주며, Variance를 감소하게 해준다.
- 주로 Decision Tree 에서 많이 사용하지만, 어떤 알고리즘에도 사용 가능하다.
Train Data 에서 복원추출로 m 개의 데이터셋을 만들고, 각 m 개의 hypothesis 를 만든다.
최종 결정은 m 개의 hypothesis값을 가지고 평균값이나 , voting 을 하여 결정한다.
이렇게 되면, 다양한 데이터셋이 반영되기 때문에, overfitting 이 방지되는 장점이 있다.
2. Bagging 은 Bootstrapping 방법으로 샘플링 하는 것이 핵심
그럼 Bootstrapping 은 뭐니?
: Train Data 에서 임의의 복원추출을 하는 것.
위의 그림과 같이 Train Data 에서 복원추출로 m 개의 데이터셋을 만든다.
3. 하나의 model 유형에 대한 다양한 hypothesis 구성
추출한 m개의 데이터 셋으로, 하나의 model유형에 대한 다양한 m개의 model (hypothesis 라고 볼 수 있겠다)을 만든다.
그리고 이 만들어진 m개의 model 들로 voting, mean 등으로 최종 값을 결정한다
4. 장점
다양한 데이터셋에 강한 model 이 탄생한다.
5. 사용
sklearn.ensemble
.BaggingClassifier
- class
sklearn.ensemble.
BaggingClassifier
(base_estimator=None, n_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False, warm_start=False, n_jobs=None, random_state=None, verbose=0)[source]¶
출처) https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html
best_estimator : 평가할 하나의 model 유형
n_estimators : Bootstrapping 을 몇개 할래? (즉, 데이터셋을 몇개 만들래?)
max_samples : train 으로 넣어준 데이터에서 몇% 를 샘플링할래?
max_feature : feature 들 중에서, 최대 몇개의 feature 를 사용할까?
oob_score : bagging 실행 시에, 데이터셋에 포함 안된 데이터로 성능 측정 여부
6. 사용예
예측 성능이 높아지지는 않았지만, 사용 방법을 아는데에 의미를 두었다.
knn = KNeighborsClassifier()
knn.fit(X_train, Y_train)
knn.score(X_test, Y_test)
Bagging KNN
model = BaggingClassifier(base_estimator=KNeighborsClassifier(n_neighbors=5))
model.fit(X_train, Y_train)
print('The accuracy for bagged KNN is:', model.score(X_test, Y_test) )
'머신러닝' 카테고리의 다른 글
kaggle 타이타닉 가공데이터 상관관계 분석 (0) | 2018.12.21 |
---|---|
[Ensemble_2] RandomForest (랜덤포레스트) (0) | 2018.11.15 |
kaggle 타이타닉 EDA (0) | 2018.10.25 |
[데이터전처리_3] Category Data 처리 (0) | 2018.10.17 |
[데이터전처리_2] missing value 처리 (0) | 2018.10.17 |
- Total
- Today
- Yesterday
- M1M2비율
- M1/M2
- 리치고
- 마연굴
- 블록해쉬구현
- 연금등록
- Forgiving
- ChatGPT
- 원계열
- 환매시점
- Dash 와 html 차이
- 말잔
- 환율데이터
- 통화량 데이타
- Dash.html
- 김성일 작가님
- 주소를 위경도 변환
- 객사오
- 위경도변환
- 프로그래스바 표시
- 블록해쉬
- 경제는 어떻게 움직이는가
- 리치고 주식
- 내 연금조회
- 연금저축
- 계정조정계열
- pandas apply
- dash
- 환율이평선
- 경제주체별 M2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |