Top 23 스태킹 앙상블 Best 275 Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 스태킹 앙상블 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: 스태킹 앙상블 스태킹 기법, 보팅 스태킹, 블렌딩 스태킹, 스태킹이란, CV 스태킹, 배깅 부스팅 스태킹, 딥러닝 앙상블, StackingClassifier


앙상블 학습자
앙상블 학습자


[머신러닝 완벽가이드] 스태킹 앙상블

  • Article author: kimdingko-world.tistory.com
  • Reviews from users: 5724 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [머신러닝 완벽가이드] 스태킹 앙상블 스태킹 앙상블¶ · 스태킹(Stacking)은 개별 알고리즘의 예측한 데이터를 기반으로 다시 예측을 수행하는 방법입니다. · 스태킹 방식에 사용되는 모델은 크게 … …
  • Most searched keywords: Whether you are looking for [머신러닝 완벽가이드] 스태킹 앙상블 스태킹 앙상블¶ · 스태킹(Stacking)은 개별 알고리즘의 예측한 데이터를 기반으로 다시 예측을 수행하는 방법입니다. · 스태킹 방식에 사용되는 모델은 크게 … 스태킹 앙상블¶ 스태킹(Stacking)은 개별 알고리즘의 예측한 데이터를 기반으로 다시 예측을 수행하는 방법입니다. 정리하면 개별 알고리즘이 예측한 결과를 최종 메타 데이터 세트로 만들어 별도의 ML 알고리즘..AI/RPA Developer
  • Table of Contents:
[머신러닝 완벽가이드] 스태킹 앙상블
[머신러닝 완벽가이드] 스태킹 앙상블

Read More

꿈 많은 사람의 이야기

  • Article author: lsjsj92.tistory.com
  • Reviews from users: 17952 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 꿈 많은 사람의 이야기 스태킹 앙상블(stacking ensemble)은 캐글(kaggle)에서 점수를 조금이라도 더 높이고자 할 때 사용하는 앙상블 방법입니다. …
  • Most searched keywords: Whether you are looking for 꿈 많은 사람의 이야기 스태킹 앙상블(stacking ensemble)은 캐글(kaggle)에서 점수를 조금이라도 더 높이고자 할 때 사용하는 앙상블 방법입니다. 포스팅 개요 머신러닝과 딥러닝에서 자주 사용하는 알고리즘이 있습니다. 특히, 머신러닝쪽에서 많이 사용하는데 그것은 앙상블(ensemble)이라는 방법입니다. 앙상블(ensemble)은 크게 보팅(voting), 배깅(bagging..나의 IT 공부 히스토리와 지식 공유 창고
  • Table of Contents:

꿈 많은 사람의 이야기

머신러닝 스태킹 앙상블(stacking ensemble) 이란 – 스태킹 앙상블 기본편(stacking ensemble basic) 본문

포스팅 개요

포스팅 본문

결론

티스토리툴바

꿈 많은 사람의 이야기
꿈 많은 사람의 이야기

Read More

04-10. 스태킹 앙상블

  • Article author: velog.io
  • Reviews from users: 21116 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 04-10. 스태킹 앙상블 1. 스태킹 앙상블 … 스태킹(Stacking)은 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출한다는 점에서 배깅(Bagging) 및 부스팅(Boosting)과 … …
  • Most searched keywords: Whether you are looking for 04-10. 스태킹 앙상블 1. 스태킹 앙상블 … 스태킹(Stacking)은 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출한다는 점에서 배깅(Bagging) 및 부스팅(Boosting)과 … 위키북스의 파이썬 머신러닝 완벽 가이드 책을 토대로 공부한 내용입니다.
  • Table of Contents:

파이썬 머신러닝 완벽 가이드

1 스태킹 앙상블

2 기본 스태킹 모델

3 CV 세트 기반의 스태킹

04-10. 스태킹 앙상블
04-10. 스태킹 앙상블

Read More

[Machine learning] 스태킹 알고리즘 (Stacking algorithm) – 앙상블, 배깅, 부스팅 정리 200728

  • Article author: huidea.tistory.com
  • Reviews from users: 12813 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Machine learning] 스태킹 알고리즘 (Stacking algorithm) – 앙상블, 배깅, 부스팅 정리 200728 앙상블 기법은 머신러닝 모델의 성능을 향상할 때 많이 쓰이는 기법으로, 하나의 모델이 아닌 여러 학습 모델을 활용해 학습을 진행시키는 것이다. 앙상블 … …
  • Most searched keywords: Whether you are looking for [Machine learning] 스태킹 알고리즘 (Stacking algorithm) – 앙상블, 배깅, 부스팅 정리 200728 앙상블 기법은 머신러닝 모델의 성능을 향상할 때 많이 쓰이는 기법으로, 하나의 모델이 아닌 여러 학습 모델을 활용해 학습을 진행시키는 것이다. 앙상블 … index 1. 스태킹 알고리즘의 개념 2. 코드 예제 3. 앙상블 – 스태킹, 배깅, 부스팅 4. 스태킹의 장단점 5. 단점을 보완하는 CV세트기반 스태킹 6. 코드예제 1. 스태킹 알고리즘 여러 모델들을 활용해 각각의 예측..
  • Table of Contents:

1 스태킹 알고리즘

2 코드 (출처 파이썬 머신러닝 완벽 가이드 p280)

3 앙상블 – 스태킹 배깅 부스팅

4 스태깅의 장점 단점

5 CV 세트기반 스태킹

+) CV 세트기반 스태킹 코드 (참고용)

결론

태그

관련글

댓글4

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

[Machine learning] 스태킹 알고리즘 (Stacking algorithm) - 앙상블, 배깅, 부스팅 정리 200728
[Machine learning] 스태킹 알고리즘 (Stacking algorithm) – 앙상블, 배깅, 부스팅 정리 200728

Read More

앙상블 학습 (Ensemble Learning) – Stacking

  • Article author: casa-de-feel.tistory.com
  • Reviews from users: 5281 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 앙상블 학습 (Ensemble Learning) – Stacking 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민 지음) 교재를 공부하며 작성한 글입니다. 안녕하세요! 오늘은 앙상블 학습의 스태킹에 대해 알아 … …
  • Most searched keywords: Whether you are looking for 앙상블 학습 (Ensemble Learning) – Stacking 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민 지음) 교재를 공부하며 작성한 글입니다. 안녕하세요! 오늘은 앙상블 학습의 스태킹에 대해 알아 … *해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민 지음) 교재를 공부하며 작성한 글입니다. 안녕하세요! 오늘은 앙상블 학습의 스태킹에 대해 알아보겠습니다. 1. 스태킹이란? 2. 과적합 개선을 위한 CV 세트..꾸준하게 : )
  • Table of Contents:

앙상블 학습 (Ensemble Learning) – Stacking

티스토리툴바

앙상블 학습 (Ensemble Learning) - Stacking
앙상블 학습 (Ensemble Learning) – Stacking

Read More

[ML] 스태킹(Stacking) 완벽 정리

  • Article author: hwi-doc.tistory.com
  • Reviews from users: 12935 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [ML] 스태킹(Stacking) 완벽 정리 이 포스팅만 읽으면 스태킹을 쉽게 이해할 수 있도록 정리해봤습니다 🙂 천천히 읽어 … from sklearn.ensemble import RandomForestClassifier from … …
  • Most searched keywords: Whether you are looking for [ML] 스태킹(Stacking) 완벽 정리 이 포스팅만 읽으면 스태킹을 쉽게 이해할 수 있도록 정리해봤습니다 🙂 천천히 읽어 … from sklearn.ensemble import RandomForestClassifier from … 이 포스팅만 읽으면 스태킹을 쉽게 이해할 수 있도록 정리해봤습니다 🙂 천천히 읽어볼까요? 순서 스태킹의 핵심 개념 스태킹의 원리  목표 기본모델 최종모델 코드 1. 스태킹의 핵심 개념 스태킹은 여러 가지 모..
  • Table of Contents:

‘Study docMachine Learning’ Related Articles

티스토리툴바

[ML] 스태킹(Stacking) 완벽 정리
[ML] 스태킹(Stacking) 완벽 정리

Read More

[ML] 스태킹(Stacking) 완벽 정리

  • Article author: dacon.io
  • Reviews from users: 9824 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [ML] 스태킹(Stacking) 완벽 정리 스태킹은 여러 모델을 동일한 교차검증 폴드로 학습한 후, 각 모델의 교차검증 예측 값을 입력으로 사용하여 새로운 모델을 학습하는 앙상블 기법 … …
  • Most searched keywords: Whether you are looking for [ML] 스태킹(Stacking) 완벽 정리 스태킹은 여러 모델을 동일한 교차검증 폴드로 학습한 후, 각 모델의 교차검증 예측 값을 입력으로 사용하여 새로운 모델을 학습하는 앙상블 기법 … 이 포스팅만 읽으면 스태킹을 쉽게 이해할 수 있도록 정리해봤습니다 🙂 천천히 읽어볼까요? 순서 스태킹의 핵심 개념 스태킹의 원리  목표 기본모델 최종모델 코드 1. 스태킹의 핵심 개념 스태킹은 여러 가지 모..
  • Table of Contents:

‘Study docMachine Learning’ Related Articles

티스토리툴바

[ML] 스태킹(Stacking) 완벽 정리
[ML] 스태킹(Stacking) 완벽 정리

Read More

스태킹 앙상블

  • Article author: www.koreascience.or.kr
  • Reviews from users: 2411 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 스태킹 앙상블 본 논문은 기존 스태킹 기법을 개선한 다중 스태킹 앙상블(Multiple Stacking Ensemble) 학습. 기법을 제안한다. 다중 스태킹 앙상블 기법의 학습 구조는 딥러닝 구조 … …
  • Most searched keywords: Whether you are looking for 스태킹 앙상블 본 논문은 기존 스태킹 기법을 개선한 다중 스태킹 앙상블(Multiple Stacking Ensemble) 학습. 기법을 제안한다. 다중 스태킹 앙상블 기법의 학습 구조는 딥러닝 구조 …
  • Table of Contents:
스태킹 앙상블
스태킹 앙상블

Read More

[바람돌이/머신러닝] 앙상블(Ensemble Learning)(3) – 스태킹(Stacking) 이론 : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 46974 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [바람돌이/머신러닝] 앙상블(Ensemble Learning)(3) – 스태킹(Stacking) 이론 : 네이버 블로그 오늘은 앙상블 기법 중 스태킹(Stacking)에 대해서 정리하겠습니다. 스태킹은 기존 부스팅처럼 어떤 알고리즘의 방식보다는 학습의 구조라고 생각할 … …
  • Most searched keywords: Whether you are looking for [바람돌이/머신러닝] 앙상블(Ensemble Learning)(3) – 스태킹(Stacking) 이론 : 네이버 블로그 오늘은 앙상블 기법 중 스태킹(Stacking)에 대해서 정리하겠습니다. 스태킹은 기존 부스팅처럼 어떤 알고리즘의 방식보다는 학습의 구조라고 생각할 …
  • Table of Contents:

카테고리 이동

[바람돌이의 빅데이터]

이 블로그 
[파이썬머신러닝]데이터 분석
 카테고리 글

카테고리

이 블로그 
[파이썬머신러닝]데이터 분석
 카테고리 글

[바람돌이/머신러닝] 앙상블(Ensemble Learning)(3) - 스태킹(Stacking) 이론 : 네이버 블로그
[바람돌이/머신러닝] 앙상블(Ensemble Learning)(3) – 스태킹(Stacking) 이론 : 네이버 블로그

Read More


See more articles in the same category here: 607+ tips for you.

꿈 많은 사람의 이야기

포스팅 개요

머신러닝과 딥러닝에서 자주 사용하는 알고리즘이 있습니다.

특히, 머신러닝쪽에서 많이 사용하는데 그것은 앙상블(ensemble)이라는 방법입니다. 앙상블(ensemble)은 크게 보팅(voting), 배깅(bagging), 부스팅(boosting)으로 나뉘어지는데 추가로 스태킹(stacking)이라는 방법도 있습니다.

스태킹 앙상블(stacking ensemble)은 캐글(kaggle)에서 점수를 조금이라도 더 높이고자 할 때 사용하는 앙상블 방법입니다.

이번 포스팅은 이러한 머신러닝 스태킹 앙상블(stacking ensemble)에 대해서 기본적인 구조를 알아보는 포스팅입니다.

참고 출처는 아래와 같습니다.

그 외 open 되어 있는 캐글 코드를 사용했습니다.

본문에 나와있는 코드는 아래 github에 올려두었습니다.

github.com/lsjsj92/machine_learning_basic

포스팅 본문

스태킹 앙상블은 개별적인 여러 알고리즘을 사용하는 형태라서 일종의 앙상블(ensemble)로 불립니다.

하지만, 기존의 머신러닝 앙상블 방법과 조금 차이점이 있습니다.

먼저, 기존의 방식을 알아야 합니다.

기존의 머신러닝 모델 훈련 방법

기존의 머신러닝 훈련 방법은 아래 사진과 같습니다.

반응형

그림을 간단하게 설명하면

X_train, y_train을 사용하여 model training

validation이 있다면 중간중간 평가

X_test를 이용해 최종 예측 -> predict 값 get

y_test와 predict 값을 이용해 최종 평가

와 같이 됩니다.

스태킹 앙상블의 훈련 방법 – 기본편

그러나 스태킹 앙상블(stacking ensemble)은 조금 구조가 다릅니다.

바로, 개별 모델이 예측한 데이터를 다시 training set으로 사용해서 학습 한다는 것입니다.

즉, 100% 예시가 맞지는 않지만 간단하게 설명하면 아래와 같습니다.

(참고로 스태킹 앙상블의 기본적인 구조를 설명합니다. CV 기반은 다음 포스팅에서 다룹니다.)

원본 데이터의 train, test가 존재

원본 training data를 3개의 머신러닝 모델이 학습

각 모델마다 X_test를 넣어서 예측 후 predict를 뽑아냄 (3개의 predict된 값)

3개의 predict를 다시 학습 데이터로 사용

최종 model을 하나 선정해 학습

최종 평가

따라서 stacking ensemble을 할 때는 2가지 개념의 모델이 필요합니다.

1. 개별 모델들(복수)

2. 최종 모델(하나)

단순하게 생각한 stacking ensemble basic 구조는 아래와 같습니다.

조금 더 자세히 보았을 때 스태킹 앙상블의 기본 구조는 아래와 같습니다.

아마도 코드로 보면 좀 더 명확히 보일 것 같습니다.

파이썬으로 스태킹 앙상블 기본 코드를 구현해보죠

파이썬으로 구현한 스태킹 앙상블 기본 코드 – Python stacking ensemble

파이썬으로 스태킹 앙상블 기본 코드를 구현합니다.

sklearn에서 제공해주는 암(cancer) 데이터를 활용합니다.

데이터를 가지고와서 train_test_split으로 데이터를 구분하겠습니다.

여기까지는 전통적인 머신러닝 방법입니다. 데이터를 train과 test로 나누는 것이니까요

이제 여러 머신러닝 모델들을 생성해봅니다.

스태킹 앙상블에서는 2가지 개념의 머신러닝 모델이 필요하다고 말씀드렸습니다.

저는 개별 모델은 SVM, 랜덤 포레스트(random forest), 로지스틱 회귀(logistic regression)을 사용했습니다.

최종 모델은 LightGBM을 사용했습니다.

300×250

위 사진과 같이 개별 모델들과 최종 모델을 만들어줍니다.

그리고 각각 fit을 통해 X_train값과 y_train 값을 훈련시켜줍니다.

훈련을 했으면 이제 predict을 해야겠죠?

predict를 수행합니다. 개별 모델들의 predict를 다 따로 저장해야 합니다.

즉, svm의 predict와 random forest의 predict 등을 모두 저장해야합니다.

이렇게 변수에 저장하면됩니다

자! 이제 이것을 합쳐주어야 합니다.

이 합쳐주는 과정이 데이터를 쌓는 듯한 모습(stacking)이라서 stacking ensemble이라고 불리우는 것 같더군요

new_data = np.array([svm_pred, rf_pred, lr_pred])와 같이 쌓으시면 됩니다.

아니면 np.concatenate를 사용하셔도 되구요.

단, stacking을 할 때 데이터의 shape에 주의해야 합니다.

3개의 모델을 stacking 하고, 이 값은 predict로 나온 값이기 때문에 row는 X_test와 일치해야 합니다.

즉, 여기서 X_test의 row는 114개입니다. 이 114개의 데이터가 다시 새로운 훈련(training) 데이터가 됩니다.

따라서 (114, 3)의 모양이 되어야 합니다.

데이터를 살펴보면 위와 같이 될 것입니다.

이제 마지막 최종 모델을 사용해서 훈련만 하면 끝!

이렇게 하면 스태킹 앙상블의 기본적인 방법을 활용하여 모델을 구현한 것입니다.

여기까지 이해가 되셨을까요?

스태킹 앙상블(stacking ensemble)은 캐글(kaggle) 대회에서 많이 사용하는 방법 중 하나입니다.

그리고 계속 설명드렸듯이 기존 방법과는 살~짝 다릅니다.

맨 처음 보여드렸던 사진에서는 기존의 머신러닝, 딥러닝 훈련 방법을 그림으로 표현했는데요

스태킹 앙상블의 기본 구조를 활용하면 아래 그림처럼 됩니다.

이렇게 말이죠!

결론

스태킹 앙상블(stacking ensemble)은 기존의 머신러닝, 딥러닝 훈련 방법과 조금 다른 구조를 가지고 있습니다.

또한, 주로 kaggle과 같은 대회에서 많이 사용하는 방법입니다.

하지만, 여기서 문제점이 있습니다.

위의 글은 계속 강조 드렸지만 스태킹 앙상블의 기본적인 방법을 설명드린 것입니다.

이러한 기본적인 스태킹 앙상블은 과적합(overfitting)의 문제점이 있어 사용하지 않습니다. 보통 CV 기반(KFold 등)의 stacking ensemble을 사용합니다.

다음 포스팅에서는 저 CV 기반의 stacking ensemble에 대해서 알아보겠습니다.

반응형

그리드형

04-10. 스태킹 앙상블

기본 스태킹 앙상블 모델로 위스콘신 암 dataset에 적용시켜 보겠다.

import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import AdaBoostClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.linear_model import LogisticRegression from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score cancer_data = load_breast_cancer() X_data = cancer_data.data y_label = cancer_data.target X_train , X_test , y_train , y_test = train_test_split(X_data , y_label , test_size=0.2 , random_state=0) # 개별 ML 모델을 위한 Classifier 생성. knn_clf = KNeighborsClassifier(n_neighbors=4) rf_clf = RandomForestClassifier(n_estimators=100, random_state=0) dt_clf = DecisionTreeClassifier() ada_clf = AdaBoostClassifier(n_estimators=100) # 최종 Stacking 모델을 위한 Classifier생성. lr_final = LogisticRegression(C=10) # 개별 모델들을 학습. knn_clf.fit(X_train, y_train) rf_clf.fit(X_train , y_train) dt_clf.fit(X_train , y_train) ada_clf.fit(X_train, y_train) # 학습된 개별 모델들이 각자 반환하는 예측 데이터 셋을 생성하고 개별 모델의 정확도 측정. knn_pred = knn_clf.predict(X_test) rf_pred = rf_clf.predict(X_test) dt_pred = dt_clf.predict(X_test) ada_pred = ada_clf.predict(X_test) print(‘KNN 정확도: {0:.4f}’.format(accuracy_score(y_test, knn_pred))) print(‘랜덤 포레스트 정확도: {0:.4f}’.format(accuracy_score(y_test, rf_pred))) print(‘결정 트리 정확도: {0:.4f}’.format(accuracy_score(y_test, dt_pred))) print(‘에이다부스트 정확도: {0:.4f}’.format(accuracy_score(y_test, ada_pred)))

[output] 스태킹에 사용될 개별 모델은 KNN, 랜덤 포레스트, 결정 트리, 에이다부스트이며 최종 모델은 로지스틱 회귀 모델이다. 먼저 개별 알고리즘으로 부터 예측 정확도를 출력해보았다. 예측된 예측값을 column level로 옆으로 붙인 후 feature 값을 만들어 최종 모델에서 학습 데이터로 다시 사용하겠다.

pred = np.array([knn_pred, rf_pred, dt_pred, ada_pred]) # transpose를 이용해 행과 열의 위치 교환. 컬럼 레벨로 각 알고리즘의 예측 결과를 피처로 만듦. pred = np.transpose(pred) lr_final.fit(pred, y_test) final = lr_final.predict(pred) print(‘최종 메타 모델의 예측 정확도: {0:.4f}’.format(accuracy_score(y_test , final)))

[output] 최종 메타 모델에서 학습하고 예측한 결과, 정확도가 97.37%로 개별 모델 정확도보다 향상되었다.

[Machine learning] 스태킹 알고리즘 (Stacking algorithm) – 앙상블, 배깅, 부스팅 정리 200728

728×90

반응형

index

1. 스태킹 알고리즘의 개념

2. 코드 예제

3. 앙상블 – 스태킹, 배깅, 부스팅

4. 스태킹의 장단점

5. 단점을 보완하는 CV세트기반 스태킹

6. 코드예제

1. 스태킹 알고리즘

여러 모델들을 활용해 각각의 예측 결과를 도출한 뒤 그 예측 결과를 결합해 최종 예측 결과를 만들어내는 것

따라서 스태킹 알고리즘에는 총 2가지 단계가 있는데

단계 1. n 개의 모델로 학습 데이터로 학습 모델 생성

단계 2. n 개의 모델에서 학습을 마친 뒤 예측한 값들을 합쳐서 최종 예측

단계 1 과정에서 해당되는게 아래 그림의 Regression models 이고

단계 2 과정에 해당 되는게 Meta-regressor이다.

아래의 사진은 회귀 예측을 기준으로 그림을 도식화 했는데 만약 분류 문제라면

Regression 을 Classification 워딩으로 바꿔서 이해 여기서 중요한 건 2번 학습을 거치는 개괄 구조다.

따라서 우리는 모델을 설계할 때,

단계1 에 사용할 여러가지 모델들과 /

단계1 의 결과를 취합한 뒤 결과를 도출할 단계 2의 마지막 모델을 뭘로 할지 정해야 한다.

코드를 통해 살펴보면

2. 코드 (출처 파이썬 머신러닝 완벽 가이드 p280)

단계 1. n 개의 모델 각각 학습데이터로 학습 진행

import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import AdaBoostClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.linear_model import LogisticRegression from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score cancer_data = load_breast_cancer() X_data = cancer_data.data y_label = cancer_data.target X_training , X_testing , y_training , y_testing = train_test_split(X_data , y_label , test_size=0.2 , random_state=0) # 개별 ML 모델을 위한 Classifier 생성. knn_clf = KNeighborsClassifier(n_neighbors=4) #K최근접이웃 rf_clf = RandomForestClassifier(n_estimators=100, random_state=0)#랜덤포레스트 dt_clf = DecisionTreeClassifier() #결정트리 ada_clf = AdaBoostClassifier(n_estimators=100) #아다부스트 # 개별 모델들을 학습. knn_clf.fit(X_training, y_training) rf_clf.fit(X_training , y_training) dt_clf.fit(X_training , y_training) ada_clf.fit(X_training, y_training) # 학습된 개별 모델들이 각자 반환하는 예측 데이터 셋을 생성하고 개별 모델의 정확도 측정. knn_pred = knn_clf.predict(X_testing) rf_pred = rf_clf.predict(X_testing) dt_pred = dt_clf.predict(X_testing) ada_pred = ada_clf.predict(X_testing) print(‘KNN 정확도: {0:.4f}’.format(accuracy_score(y_testing, knn_pred))) print(‘랜덤 포레스트 정확도: {0:.4f}’.format(accuracy_score(y_testing, rf_pred))) print(‘결정 트리 정확도: {0:.4f}’.format(accuracy_score(y_testing, dt_pred))) print(‘에이다부스트 정확도: {0:.4f} :’.format(accuracy_score(y_testing, ada_pred)))

사용된 학습 데이터는 위스콘신 유방암 분류 데이터 이며, 악성/양성 두가지로 분류해야하는 분류 데이터셋이다.

단계 1에서는 해당 데이터를 분류하는 모델로 4가지를 선택했다.

K 최근접이웃(KNeighborsClassifier), 랜덤포레스트(RandomForestClassifie),

결정트리(DecisionTreeClassifier), 아다부스트(AdaBoostClassifier)

그리고 각 모델들의 학습 시킨뒤 (fit) 시험 데이터로 (X_testing) 모델을 분류한 결과의 정확도를 확인했다.

단계 2. n 개의 모델에서 학습을 마친 뒤 예측한 값들을 합쳐서 최종 예측

이제 전 단계에서 시험데이터를 통해 예측된 결과를 합쳐 최종 분류기에 넣는 과정이다.

# 시험데이터로 예측한 4가지 모델의 결과를 합침 pred = np.array([knn_pred, rf_pred, dt_pred, ada_pred]) print(pred.shape) # transpose를 이용해 행과 열의 위치 교환. 컬럼 레벨로 각 알고리즘의 예측 결과를 피처로 만듦. pred = np.transpose(pred) print(pred.shape) # 최종 분류기 모델 생성 lr_final = LogisticRegression(C=10) # 최종 분류기 학습 및 예측 lr_final.fit(pred, y_testing) final = lr_final.predict(pred) print(‘최종 메타 모델의 예측 정확도: {0:.4f}’.format(accuracy_score(y_testing , final)))

사용된 최종 분류기 모델은 로지스틱 회귀모델이다. (잊지말자 로지스틱 회귀모델은 회귀모델로 이름을 맨들었으나, 분류 모델인것을…)

해당 모델의 인풋으로 들어가는 것은

단계 1에서 생성된 각 모델의 예측 결과가 통합된 어레이 형태의 값이다. 해당 어레이를 출력해보면 값은 아래와 같다.

Q. 그렇다면 질문, 4가지 모델에서 학습 할때 사용된 데이터 피쳐들, 학습 파라미터들은 단계2의 로지스틱 모델에서 활용되지 않는 것인가?

그렇다. 단순히 모델의 결과값이 새로운 인풋이 되는 것임.

3. 앙상블 – 스태킹, 배깅, 부스팅

앙상블 기법은 머신러닝 모델의 성능을 향상할 때 많이 쓰이는 기법으로, 하나의 모델이 아닌 여러 학습 모델을 활용해 학습을 진행시키는 것이다. 앙상블 기법에는 부스팅(boosting), 배깅(bagging) 그리고 스태킹이 있다. 스태킹의 친구들인 배깅과 부스팅을 살펴보자면.

Bagging 배깅 출처 : Data Mining: Accuracy and Error Measures for Classification and Prediction Random sampling 을 통해 한 데이터를 랜덤샘플링 한 뒤, 동일한 여러개의 모델로 학습을 진행하고, 각 모델의 예측결과를 취합하여 하나의 결과를 내는 방법.

=> 각각의 모델들은 랜덤 샘플링한 데이터로 학습, 종류는 같은 모델임

(의사결정트리1/ 의사결정트리2 … 의사결정트리N)

==>이걸 랜덤 포레스트라고 부른다.

Boosting 부스팅 Bagging 의변형으로

이전모델이 예측하지 못한 데이터에 대해 가중치를 두어서 다음 모델이 더 잘 학습 할 수 있도록 하는 방법

bias 를 감소시키는 방법

=> 오답에 가중치를 부여해서 재학습 하는 방식 (오답노트개념)

ex. XGboost, Gradient Boost, AdaBoost

+) 배깅은 마지막에 각 모델들의 결과값을 어떻게 취합하나? 보팅으로!

즉, 배깅은 그림에서 보는 것과 같이 데이터를 부분 부분 랜덤 샘플링하여 각 데이터들을 학습시키는 여러 개의 분류기를 만들고,

여러개의 분류기에서 나온 결과를 voting(투표) 하여 테스트 데이터의 성능을 평가한다.

가령 개고양이를 분류하는 문제를 배깅으로 풀고 배깅으로 생성한 모델이 3개인데 특정 사진을 입력했을 때

모델1 : 개, 모델2: 고양이, 모델 3: 고양이 라고 각각 예측했을 경우 보팅에 따라 고양이로 결론내려진다.

** 여기서 주의!

일반적인 voting 은 동일한 데이터셋 (100%)를 활용해 다 다른 모델을 학습하고 각 모델의 결과를 투표를 통해서 결정하는데

배깅의 보팅은 랜덤 샘플링한 일부의 데이터셋을 활용해 다 같은 모델을 학습하고 각 모델의 결과를 투표를 통해서 결정

부스팅/ 배깅 은 편향 분산 모델의 일반화 과적합과 같은 개념과도 다 연결되어있는 중요한 컨셉이라서 이부분은 나중에 한번더

깊게 다뤄보도록 하겠고.. 다시 스태킹으로 돌아와서…..

4. 스태깅의 장점 단점

장점 : 단일 모델로 했을때 보다 성능이 확연히 향상된다.

단점 : 과적합 (overfitting)

스태킹은 여러 모델들의 학습 결과로 메타 학습을 거치기 때문에 학습 데이터에 한에서 우수한 성능을 보일수 밖에 없다. 따라서 주로 캐글 경진대회에서 마지막 성능 올리기의 치트키로 쓰이는 기법들 중 하나다.

하지만 학습데이터와 도메인이 다르거나 분산이 다른 데이터가 들어오게 된다면

모델의 예측/분류 성능은 현저히 떨어지게 된다.

왜냐면 스태킹은 두 단계 (1. n개의 모델생성 2. n개의 모델 결과로 메타 학습) 을 거치며,

학습데이터에 과적합 되었기 때문이다.

따라서 이를 보완하기 위해 2번째 단계에서 교차 검증 과정을 추가하는 방법이 있는데 이게 바로 CV 세트기반 스태킹이다.

여기서 교차 검증은 이 포스팅을 참고~!

https://huidea.tistory.com/30?category=879541

5. CV 세트기반 스태킹

이는 앞서 말한 스태킹 학습 과정에서 교차 검증(Cross validation)을 추가한 것인데, 하나씩 살펴보자면

설명을 위해 스태킹에서 쓰이는 모델은 앞에서 본 네가지의 모델이라 하고 임의로 1,2,3,4 모델로 칭하겠음

단계 1. 4개의 모델 각각 학습 데이터로 학습을 진행한 후 시험데이터의 예측 결과 4개를 생성.

*** 이때 각각의 모델에 교차 검증 적용함

가령 1번 모델에서 교차검증 3번을 적용하면 전체 데이터 셋은 3개의 폴드로 나눠짐

각 폴드별 예측한 결과 값 (result_a), 그리고 3개의 폴드 결과값의 평균 값 (result_b) 총 두가지 결과 값이 한 모델에서 생성됨

이때 result_a 가 2단계 메타 모델의 학습데이터로, result_b가 2단계 메타 모델의 테스트 데이터로 활용

총 4가지 모델은 3개의 폴드로 교차 검증 학습을 거쳤기에

result_a의 개수는 한 모델별 3개, 총 (3*4) 12개며 이것이 메타모델의 학습 데이터로 활용된다

result_b의 개수는 한 모델별 1개, 총 (1*4) 4개며 이것이 메타모델의 시험 데이터가 된다.

단계 2. 메타 모델은 result_a로 학습을 마친 뒤 result_b로 성능을 평가받는다.

출처 : https://blog.naver.com/PostView.nhn?blogId=ckdgus1433&logNo=221588139765

여기서 노란색이 위 설명의 result_a (각 모델의 각 폴드별 예측값)

주황색?갈색 이 위 설명의 result_b (각 폴드별 예측값의 평균 값. 즉, 한 모델의 예측값) 이다.

+) CV 세트기반 스태킹 코드 (참고용)

출처 : 파이썬 머신러닝 완벽가이드

from sklearn.model_selection import KFold from sklearn.metrics import mean_absolute_error # 개별 기반 모델에서 최종 메타 모델이 사용할 학습 및 테스트용 데이터를 생성하기 위한 함수. def get_stacking_base_datasets(model, X_train_n, y_train_n, X_test_n, n_folds ): # 지정된 n_folds값으로 KFold 생성. kf = KFold(n_splits=n_folds, shuffle=False, random_state=0) #추후에 메타 모델이 사용할 학습 데이터 반환을 위한 넘파이 배열 초기화 train_fold_pred = np.zeros((X_train_n.shape[0] ,1 )) test_pred = np.zeros((X_test_n.shape[0],n_folds)) print(model.__class__.__name__ , ‘ model 시작 ‘) for folder_counter , (train_index, valid_index) in enumerate(kf.split(X_train_n)): #입력된 학습 데이터에서 기반 모델이 학습/예측할 폴드 데이터 셋 추출 print(‘\t 폴드 세트: ‘,folder_counter,’ 시작 ‘) X_tr = X_train_n[train_index] y_tr = y_train_n[train_index] X_te = X_train_n[valid_index] #폴드 세트 내부에서 다시 만들어진 학습 데이터로 기반 모델의 학습 수행. model.fit(X_tr , y_tr) #폴드 세트 내부에서 다시 만들어진 검증 데이터로 기반 모델 예측 후 데이터 저장. train_fold_pred[valid_index, :] = model.predict(X_te).reshape(-1,1) #입력된 원본 테스트 데이터를 폴드 세트내 학습된 기반 모델에서 예측 후 데이터 저장. test_pred[:, folder_counter] = model.predict(X_test_n) # 폴드 세트 내에서 원본 테스트 데이터를 예측한 데이터를 평균하여 테스트 데이터로 생성 test_pred_mean = np.mean(test_pred, axis=1).reshape(-1,1) #train_fold_pred는 최종 메타 모델이 사용하는 학습 데이터, test_pred_mean은 테스트 데이터 return train_fold_pred , test_pred_mean

# CV스태킹 알고리즘 각 모델에 적용 knn_train, knn_test = get_stacking_base_datasets(knn_clf, X_train, y_train, X_test, 7) rf_train, rf_test = get_stacking_base_datasets(rf_clf, X_train, y_train, X_test, 7) dt_train, dt_test = get_stacking_base_datasets(dt_clf, X_train, y_train, X_test, 7) ada_train, ada_test = get_stacking_base_datasets(ada_clf, X_train, y_train, X_test, 7) # CV스태킹 알고리즘 결과로 메타 모델 학습/시험에 필요한 result_a result_b 만들기 Stack_final_X_train = np.concatenate((knn_train, rf_train, dt_train, ada_train), axis=1) Stack_final_X_test = np.concatenate((knn_test, rf_test, dt_test, ada_test), axis=1) # 메타 모델 학습 lr_final.fit(Stack_final_X_train, y_train) stack_final = lr_final.predict(Stack_final_X_test) print(‘최종 메타 모델의 예측 정확도: {0:.4f}’.format(accuracy_score(y_test, stack_final)))

해당 코드에서는 7폴드를 사용하였다.

결론

앙상블은 결국 여러개의 모델들을 쌓고 이어붙이면서 주어진 과업의 성능을 최대한 높이는 방식들이다.

오늘 스태킹을 살펴보면서 부스팅 배깅을 언급했는데, 이에 대해 더 깊게 분석하는 포스팅을 조만간 올려야겠다

이 개념은 학습 알고리즘에서 중요한 편향/분산과 밀접히 연관되어 있기 때문에!

그럼 20000

사진 및 자료 출처들

https://www.researchgate.net/figure/The-bagging-approach-Several-classifier-are-trained-on-bootstrap-samples-of-the-training_fig4_322179244

https://en.wikipedia.org/wiki/Boosting_(machine_learning)

파이썬 머신러닝 완벽 가이드 – 권철민

728×90

반응형

So you have finished reading the 스태킹 앙상블 topic article, if you find this article useful, please share it. Thank you very much. See more: 스태킹 기법, 보팅 스태킹, 블렌딩 스태킹, 스태킹이란, CV 스태킹, 배깅 부스팅 스태킹, 딥러닝 앙상블, StackingClassifier

Leave a Comment