머신 러닝 앙상블 | [머신러닝] 앙상블 – 하드보팅, 소프트보팅 125 개의 새로운 답변이 업데이트되었습니다.

당신은 주제를 찾고 있습니까 “머신 러닝 앙상블 – [머신러닝] 앙상블 – 하드보팅, 소프트보팅“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Minsuk Heo 허민석 이(가) 작성한 기사에는 조회수 4,354회 및 좋아요 55개 개의 좋아요가 있습니다.

Table of Contents

머신 러닝 앙상블 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [머신러닝] 앙상블 – 하드보팅, 소프트보팅 – 머신 러닝 앙상블 주제에 대한 세부정보를 참조하세요

하드보팅과 소프트보팅에 대한 이해 쉬운 설명과 함께, sklearn을 사용해 싱글 모델들과의 성능 비교를 데모하는 영상을 담아보았습니다.
제가 만든 모든 머신러닝 관련 영상은 아래 재생목록에서 쉽게 찾으실 수 있습니다.
https://www.youtube.com/playlist?list=PLVNY1HnUlO241gILgQloWAs0xrrkqQfKe

머신 러닝 앙상블 주제에 대한 자세한 내용은 여기를 참조하세요.

머신러닝 앙상블(Ensemble) 학습 – DINNO PARTNERS

앙상블 학습(Ensemble Learning)은 여러 개의 분류기를 생성하고, 그 예측을 결합함으로써 보다 정확한 예측을 도출하는 기법을 말합니다. 강력한 하나의 모델을 사용하는 …

+ 여기에 보기

Source: www.dinnopartners.com

Date Published: 8/23/2021

View: 9688

머신러닝 – 11. 앙상블 학습 (Ensemble Learning) – 귀퉁이 서재

앙상블 학습은 여러 개의 결정 트리(Decision Tree)를 결합하여 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법입니다. 앙상블 학습의 핵심은 …

+ 여기에 보기

Source: bkshin.tistory.com

Date Published: 11/17/2022

View: 249

[머신러닝] 앙상블 학습 이란 – Medium

앙상블 기법 Ensemble Learning 이란 여러 개의 개별 모델을 조합하여 최적의 모델로 일반화하는 방법입니다. weak ifier 들을 결합하여 strong …

+ 여기에 더 보기

Source: medium.com

Date Published: 1/18/2021

View: 7146

[머신러닝 공부] 딥러닝/앙상블(ensemble) – 코딩뚠뚠 – Tistory

여러 모델의 결과를 모아 최종 결과를 내어 성능을 향상시키는 기법이다. 아래의 예시 그림을 보면 이해하기 편하다. https://www.kdnuggets …

+ 여기를 클릭

Source: dbstndi6316.tistory.com

Date Published: 2/19/2022

View: 1596

[머신러닝] 앙상블 (Ensemble) 은 항상 모델의 성능을 향상시킬까?

Hi! I’m Jaylnne ✋ 저는 최근에 검색어(=쿼리 키워드) 분류 모델을 개발하고 있습니다. 저와 연구소 팀원 한 분(총 2명)이서 데이터 수집부터 개발 …

+ 여기에 더 보기

Source: velog.io

Date Published: 6/22/2021

View: 76

머신러닝 강좌 #14] 앙상블 학습(Ensemble Learning)과 보팅 …

앙상블 학습(Ensemble Learning)을 통한 분류는 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 …

+ 더 읽기

Source: nicola-ml.tistory.com

Date Published: 8/9/2022

View: 208

[머신 러닝] 앙상블 (Ensemble) 방법의 이해 – Untitled

머신 러닝에서 앙상블은 단어 그대로 여러 단순한 모델을 결합하여 정확한 모델을 만드는 방법이다. 만약 머신 러닝 기술을 이용하여 실세계의 문제를 …

+ 여기에 표시

Source: untitledtblog.tistory.com

Date Published: 7/8/2022

View: 5862

[머신러닝] 앙상블 모델에 대하여 – Bagging, Boosting

앙상블(Ensemble)이란 조화, 통일을 뜻합니다. 머신러닝에서의 앙상블 모델도 “여러 모델이 동일한 문제를 해결하고 더 나은 결과를 얻도록 훈련시키는 …

+ 여기를 클릭

Source: dokhakdubini.tistory.com

Date Published: 1/28/2021

View: 6441

[머신러닝]앙상블(Ensemble) 이론 – 맷햄

[머신러닝]앙상블(Ensemble) 이론. 위상314 2022. 3. 13. 15:40. 1. 앙상블(Ensemble). 1. 정의. 2. 특징. 2. 앙상블(Ensemble) 종류. 1. Bagging(배깅).

+ 여기에 자세히 보기

Source: topo314.tistory.com

Date Published: 12/13/2022

View: 4889

[머신러닝] 앙상블 학습 – 1) 배경 – 책 읽는 성키

[머신러닝] 앙상블 학습 – 1) 배경. sungkee 2021. 6. 14. 23:13. 이번 포스팅에서는 모델의 편향과 분산을 줄이기 위한 노력의 일환인 앙상블 학습에 대하여 정리해 …

+ 여기에 보기

Source: sungkee-book.tistory.com

Date Published: 3/16/2021

View: 8339

주제와 관련된 이미지 머신 러닝 앙상블

주제와 관련된 더 많은 사진을 참조하십시오 [머신러닝] 앙상블 – 하드보팅, 소프트보팅. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[머신러닝] 앙상블 - 하드보팅, 소프트보팅
[머신러닝] 앙상블 – 하드보팅, 소프트보팅

주제에 대한 기사 평가 머신 러닝 앙상블

  • Author: Minsuk Heo 허민석
  • Views: 조회수 4,354회
  • Likes: 좋아요 55개
  • Date Published: 2018. 10. 14.
  • Video Url link: https://www.youtube.com/watch?v=y4Wh0E1d4oE

머신러닝 앙상블(Ensemble) 학습 – DINNO PARTNERS

1. 앙상블 학습이란?

앙상블 학습(Ensemble Learning)은 여러 개의 분류기를 생성하고, 그 예측을 결합함으로써 보다 정확한 예측을 도출하는 기법을 말합니다.

강력한 하나의 모델을 사용하는대신 보다 약한 모델 여러개를 조합하여 더 정확한 예측에 도움을 주는 방식입니다.

현실세계로 예를 들면, 어려운 문제를 해결하는데 한 명의 전문가보다 여러명의 집단지성을 이용하여 문제를 해결하는 방식을 앙상블 기법이라 할 수 있습니다.

전 세계의 머신러닝 개발자들의 기량을 겨루는 오픈 플랫폼 캐글(Kaggle)에서 XGBoost, LightGBM과 같은 앙상블 알고리즘이 머신러닝의 선도 알고리즘으로 인기를 모으고 있다는 점에서 앙상블 학습의 강력함을 확인할 수 있습니다.

2. 앙상블 학습 유형

앙상블 학습은 일반적으로 보팅(Voting), 배깅(Bagging), 부스팅(Boosting) 세 가지의 유형으로 나눌 수 있습니다.

보팅(Voting) 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식 서로 다른 알고리즘을 여러 개 결합하여 사용 보팅 방식 하드 보팅(Hard Voting) 다수의 분류기가 예측한 결과값을 최종 결과로 선정 소프트 보팅(Soft Voting) 모든 분류기가 예측한 레이블 값의 결정 확률 평균을 구한 뒤 가장 확률이 높은 레이블 값을 최종 결과로 선정

배깅(Bootstrap AGGregatING, Bagging) 데이터 샘플링(Bootstrap) 을 통해 모델을 학습시키고 결과를 집계(Aggregating) 하는 방법 모두 같은 유형의 알고리즘 기반의 분류기를 사용 데이터 분할 시 중복을 허용 Categorical Data : 다수결 투표 방식으로 결과 집계 Continuous Data : 평균값 집계 과적합(Overfitting) 방지에 효과적 대표적인 배깅 방식 : 랜덤 포레스트 알고리즘

부스팅(Boosting) 여러개의 분류기가 순차적으로 학습을 수행 이전 분류기가 예측이 틀린 데이터에 대해서 올바르게 예측할 수 있도록 다음 분류기에게 가중치(weight)를 부여하면서 학습과 예측을 진행 계속하여 분류기에게 가중치를 부스팅하며 학습을 진행하기에 부스팅 방식이라고 불림 예측 성능이 뛰어나 앙상블 학습을 주도 대표적인 부스팅 모듈 – XGBoost, LightGBM 보통 부스팅 방식은 배깅에 비해 성능이 좋지만, 속도가 느리고 과적합이 발생할 가능성이 존재하므로 상황에 따라 적절하게 사용해야 함.

머신러닝 모델을 생성하는 것은 라이브러리를 가져다 쓰면 되기 때문에 자세한 내용을 몰라도 사용하는데 문제는 없습니다.

하지만, 성능 향상을 위해 상황에 맞는 모델 선택 및 하이퍼 파라미터 튜닝을 하기 위해 정확한 수식 이해까지는 아니더라도, 모델의 동작방식과 모델의 하이퍼 파라미터 의미 정도는 알고 있어야 합니다.

11. 앙상블 학습 (Ensemble Learning): 배깅(Bagging)과 부스팅(Boosting)

앙상블(Ensemble)

앙상블은 조화 또는 통일을 의미합니다.

어떤 데이터의 값을 예측한다고 할 때, 하나의 모델을 활용합니다. 하지만 여러 개의 모델을 조화롭게 학습시켜 그 모델들의 예측 결과들을 이용한다면 더 정확한 예측값을 구할 수 있을 겁니다.

앙상블 학습은 여러 개의 결정 트리(Decision Tree)를 결합하여 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법입니다. 앙상블 학습의 핵심은 여러 개의 약 분류기 (Weak Classifier)를 결합하여 강 분류기(Strong Classifier)를 만드는 것입니다. 그리하여 모델의 정확성이 향상됩니다.

앙상블 학습법에는 두 가지가 있습니다. 배깅(Bagging)과 부스팅(Boosting)입니다. 이를 이해하기 위해서는 부트스트랩(Bootstrap)과 결정 트리(Deicison Tree)에 대한 개념이 선행되어야 합니다. 부트스트랩과 결정 트리에 대해 잘 모르신다면 (DATA – 12. 부트스트랩(Bootstrap))과 (머신러닝 – 4. 결정 트리(Decision Tree))를 참고하시기 바랍니다.

배깅(Bagging)

Bagging은 Bootstrap Aggregation의 약자입니다. 배깅은 샘플을 여러 번 뽑아(Bootstrap) 각 모델을 학습시켜 결과물을 집계(Aggregration)하는 방법입니다. 아래 그림을 보겠습니다.

출처: swallow.github.io

우선, 데이터로부터 부트스트랩을 합니다. (복원 랜덤 샘플링) 부트스트랩한 데이터로 모델을 학습시킵니다. 그리고 학습된 모델의 결과를 집계하여 최종 결과 값을 구합니다.

Categorical Data는 투표 방식(Votinig)으로 결과를 집계하며, Continuous Data는 평균으로 집계합니다.

Categorical Data일 때, 투표 방식으로 한다는 것은 전체 모델에서 예측한 값 중 가장 많은 값을 최종 예측값으로 선정한다는 것입니다. 6개의 결정 트리 모델이 있다고 합시다. 4개는 A로 예측했고, 2개는 B로 예측했다면 투표에 의해 4개의 모델이 선택한 A를 최종 결과로 예측한다는 것입니다.

평균으로 집계한다는 것은 말 그대로 각각의 결정 트리 모델이 예측한 값에 평균을 취해 최종 Bagging Model의 예측값을 결정한다는 것입니다.

배깅은 간단하면서도 파워풀한 방법입니다. 배깅 기법을 활용한 모델이 바로 랜덤 포레스트입니다.

부스팅(Boosting)

부스팅은 가중치를 활용하여 약 분류기를 강 분류기로 만드는 방법입니다. 배깅은 Deicison Tree1과 Decision Tree2가 서로 독립적으로 결과를 예측합니다. 여러 개의 독립적인 결정 트리가 각각 값을 예측한 뒤, 그 결과 값을 집계해 최종 결과 값을 예측하는 방식입니다. 하지만 부스팅은 모델 간 팀워크가 이루어집니다. 처음 모델이 예측을 하면 그 예측 결과에 따라 데이터에 가중치가 부여되고, 부여된 가중치가 다음 모델에 영향을 줍니다. 잘못 분류된 데이터에 집중하여 새로운 분류 규칙을 만드는 단계를 반복합니다. 아래 그림을 통해 설명해보겠습니다.

출처: Medium (Boosting and Bagging explained with examples)

+와 -로 구성된 데이터셋을 분류하는 문제입니다.

D1에서는 2/5 지점을 횡단하는 구분선으로 데이터를 나누어주었습니다. 하지만 위쪽의 +는 잘못 분류가 되었고, 아래쪽의 두 -도 잘못 분류되었습니다. 잘못 분류가 된 데이터는 가중치를 높여주고, 잘 분류된 데이터는 가중치를 낮추어 줍니다.

D2를 보면 D1에서 잘 분류된 데이터는 크기가 작아졌고(가중치가 낮아졌고) 잘못 분류된 데이터는 크기가 커졌습니다.(가중치가 커졌습니다.) 분류가 잘못된 데이터에 가중치를 부여해주는 이유는 다음 모델에서 더 집중해 분류하기 위함입니다. D2에서는 오른쪽 세 개의 -가 잘못 분류되었습니다.

따라서 D3에서는 세 개의 -의 가중치가 커졌습니다. 맨 처음 모델에서 가중치를 부여한 +와 -는 D2에서는 잘 분류가 되었기 때문에 D3에서는 가중치가 다시 작아졌습니다.

D1, D2, D3의 Classifier를 합쳐 최종 Classifier를 구할 수 있습니다. 최종 Classfier는 +와 -를 정확하게 구분해줍니다.

배깅과 부스팅 차이

출처: swallow.github.io

위 그림에서 나타내는 바와 같이 배깅은 병렬로 학습하는 반면, 부스팅은 순차적으로 학습합니다. 한번 학습이 끝난 후 결과에 따라 가중치를 부여합니다. 그렇게 부여된 가중치가 다음 모델의 결과 예측에 영향을 줍니다.

오답에 대해서는 높은 가중치를 부여하고, 정답에 대해서는 낮은 가중치를 부여합니다. 따라서 오답을 정답으로 맞추기 위해 오답에 더 집중할 수 있게 되는 것입니다.

부스팅은 배깅에 비해 error가 적습니다. 즉, 성능이 좋습니다. 하지만 속도가 느리고 오버 피팅이 될 가능성이 있습니다. 그렇다면 실제 사용할 때는 배깅과 부스팅 중 어떤 것을 선택해야 할까요? 상황에 따라 다르다고 할 수 있습니다. 개별 결정 트리의 낮은 성능이 문제라면 부스팅이 적합하고, 오버 피팅이 문제라면 배깅이 적합합니다.

References

Reference1: Medium (Ensemble Learning – Bagging and Boosting)

Reference2: Bagging과 Boosting 그리고 Stacking

[머신러닝 공부] 딥러닝/앙상블(ensemble)

반응형

앙상블 포스팅 계기 :

앙상블 기법의 존재여부도 최근에야 알게됐다.

AI 공모전에 참여하며 우수자들이 ensemble을 사용하는 것을 보고 공부를시작했고, Fast campus 머신러닝과정에서 ensemble에 대한 강의도 듣게 되며 포스팅까지 하게 됐다.

또한 Tree를 주로 사용하는 머신러닝기법이 아닌 딥러닝 모델을 사용해, Image Classification에서 앙상블을 적용시켜보고 싶었다.

목차 :

1.

[머신러닝]

앙상블에 대한 기초적인 개념과 종류, Bagging, RandomForest, Boosting, Stacking 등에 대해 알아본다.

2.

[딥러닝]

ResNet50을 앙상블 하여 Classification 성능을 높여본다.

1. (ML) 앙상블 개념 및 기법들

앙상블이란 :

사전적의미 : 연주나 연극 등의 통일적 효과나 조화. 순화어는 `조화’.

사전적의미와 같이 ‘조화’ 하는것이다. 무엇을? 모델을

여러 모델의 결과를 모아 최종 결과를 내어 성능을 향상시키는 기법이다.

아래의 예시 그림을 보면 이해하기 편하다.

https://www.kdnuggets.com/2019/09/ensemble-learning.html

특징 :

대부분은 ensemble 사용시 정확도가 높아진다.

각 모델별 특징이 두드러지는 즉 over fitting이 잘 되는 모델을 기본적으로 사용한다. (ML에선 Tree기반 모델 사용)

기법 종류 :

Bagging – 모델의 다양화를 위해 데이터를 재구성 RandomForest – 모델의 다양화를 위해 데이터와 변수를 재구성 Boosting – 맞추기 어려운 데이터에 대해 가중치를 두어 학습

+ Stacking – 모델의 output값을 새로운 독립변수로 이용

1. Bagging

전체 데이터 중 일부를 추출(복원추출)해서 이를 Tree를 통한 예측을 실시한다.

여러 Tree를 거친 prediction을 모아 최종 prediction을 도출한다.

https://towardsdatascience.com/the-ultimate-guide-to-adaboost-random-forests-and-xgboost-7f9327061c4f

전체 데이터의 약 63% 정도만 추출되고 미 추출된 데이터로는 Error를 계산할 수 있다. (OOB error)

깊이 성장한 Tree는 overfitting 을 증가시키고 / 분산이 증가 / 편향이 감소한다.

Bagging을 통해서는 편향을 유지하면서 / 분산을 낮출 수 있게 되어 noise에 강해지게 된다.

2. RandomForest

Bagging의 분산은 각 트리들의 분산과 그들의 공분산으로 이루어져 있다.

ex) Var(X+Y) = Var(X) + Var(Y) + 2Cov(X,Y)

복원추출을 진행했으나 각 트리들은 중복데이터를 가지고 있기 때문에 독립이라는 보장이 없다.

공분산이 0이 아님에 따라 Tree가 증가하면 모델 전체의 분산이 증가할 수 있다.

따라서 각 트리간 공분산을 줄일 수 있는 방법인 RandomForest 방법 이 대두

즉 DB뿐 아닌 변수까지 랜덤으로 뽑는 컨셉으로 base learner 간 공분산을 줄이자는 것

아래 사진을 보면 위의 Bagging 사진과 다르게 변수까지 같이 뽑은것을 볼 수 있다.

https://towardsdatascience.com/the-ultimate-guide-to-adaboost-random-forests-and-xgboost-7f9327061c4f

일반적으로 Bagging 기법보다 성능이 좋다고 한다.

3. Boosting

맞추기 힘든 데이터에 가중치를 두어 학습하는 방법이다.

즉 오분류 된 데이터에 초점을 맞춘다. -> 다음 Round 에서 더 많이 수정되게 된다.

종류 : AdaBoost, Gradient Boosting, XGBoost, LightGBM, Catboost 등

Boosting 종류간 차이는 오분류된 데이터를 다음 Roung에 어떻게 반영할 것인가의 차이이다.

https://towardsdatascience.com/the-ultimate-guide-to-adaboost-random-forests-and-xgboost-7f9327061c4f

Boosting 기법들을 정리해 놓은 블로그가 있어 링크를 가져와봤다.

jinsu-l.github.io/machinelearing/BOOSTING/?

4. Stacking

Meta Learner 라고 불리며, 다양한 모델들을 사용하는 특징이 있다.

x Fold cross validation이 필요하며 학습 시간이 오래 걸린다.

x = 5 라고 두었을 때 학습데이터와 검증데이터가 나뉠 것이다.

이에 대해 총 4개의 모델로 예측결과를 도출하고 이 결과와 기존 데이터를 합한 것이 새로운 검증 데이터가 되게 된다.

좋은 GIF 이미지가 있어 블로그 주소와 함께 첨부한다.

3months.tistory.com/192

기법에 대한 설명은 여기까지이다.

2. (DL) 앙상블 사용

딥러닝 성능을 향상하기 위한 기법으로 사용할 수 있다.

각각 다른 신경망으로 학습데이터에 대해 각각 따로 학습을 시킨 후, n개의 예측값을 출력시키고 그것을 n으로 나눈 평균값을 최종 출력으로 하는 것이다. (Stacking사용)

오버피팅의 해결과 약간의 정확도 상승 효과가 실험을 통해 입증되었다.

또한 평균이 아닌 투표방식, weight별 가중치를 다르게 주는 방법들도 존재한다.

ex) pretrained 된 모델들을 앙상블모델로 만들어 분류의 성능을 높이자

DataLoader 생성 모델1, 모델2, 모델3 생성 (ResNet, Inception, DensNet 예시) 각 모델에서 컨볼루션 feature 추출 그 feature들로 학습, 검증 데이터셋 생성 및 DataLodaer 생성 앙상블 모델 생성 앙상블 모델 학습

ex) 각 모델의 prediction값을 평균낸 결과를 최종 결과로 사용하자

1. DataLoader 생성

2. 모델1, 모델2, 모델3 생성 및 각각 학습

3. 세 가지 모델 모두 앙상블로 결합 (모델이 인스턴스화 되고 가장 좋은 가중치가 로드된다.)

conv_pool_cnn_model = conv_pool_cnn(model_input) all_cnn_model = all_cnn(model_input) nin_cnn_model = nin_cnn(model_input) conv_pool_cnn_model.load_weights(‘weights/conv_pool_cnn.29-0.10.hdf5’) all_cnn_model.load_weights(‘weights/all_cnn.30-0.08.hdf5’) nin_cnn_model.load_weights(‘weights/nin_cnn.30-0.93.hdf5′) models = [conv_pool_cnn_model, all_cnn_model, nin_cnn_model]

4. 그저 평균을 내주는 ensemble 모델을 만든다.

def ensemble(models, model_input): outputs = [model.outputs[0] for model in models] y = Average()(outputs) model = Model(model_input, y, name=’ensemble’) return model ensemble_model = ensemble(models, model_input)

이와 같이 여러 방법으로 딥러닝을 이용한 image classification, object detection 등에서 앙상블 기법을 적용할 수 있다.

References

관련 영상 주소 : www.youtube.com/watch?v=b4x4roTt5QM&t=388s

관련 깃헙 주소1 : github.com/digitalbrain79/resnet-ensemble

관련 깃헙 주소2 : github.com/KerasKorea/KEKOxTutorial/blob/master/16_Ensembling%20ConvNets%20using%20Keras.md

반응형

머신러닝 강좌 #14] 앙상블 학습(Ensemble Learning)과 보팅(Voting)

반응형

앙상블 학습(Ensemble Learning)을 통한 분류는 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법을 말합니다. 앙상블 학습의 목표는 다양한 분류기의 예측 결과를 결합함으로써 단일 분류기 보다 신뢰성이 높은 예측값을 얻는 것입니다.

이미지, 영상, 음성 등의 비정형 데이터의 분류는 딥러닝이 뛰어난 성능을 보이고 있지만, 대부분의 정형 데이터 분류 시에는 앙상블이 뛰어난 성능을 나타내고 있습니다. 앙상블 알고리즘의 대표 격인 랜덤포레스트와 그래디언트 부스팅 알고리즘은 활용도가 높습니다.

앙상블 학습의 유형은 전통적으로 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)의 세 가지로 나눌 수 있으며, 이외에도 스태깅을 포함한 다양한 앙상블 방법이 있습니다. 보팅과 배깅은 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식입니다. 보팅과 배깅의 다른 점은 보팅의 경우 일반적으로 서로 다른 알고리즘을 가진 분류기를 결합하는 것이고, 배깅의 경우 각각의 분류기가 모두 같은 유형의 알고리즘 기반이지만, 데이터 샘플링을 서로 다르게 가져가면서 학습을 수행해 보팅을 수행하는 것입니다. 대표적인 배깅 방식이 바로 랜덤 포레스트 알고리즘입니다.

배깅 분류기의 경우 단일 ML알고리즘으로 여러 분류기가 학습으로 개별 예측을 하는데, 학습하는 데이터 세트가 보팅 방식과는 다릅니다. 개별 분류기에 할당된 학습 데이터는 원본 학습 데이터를 샘플링해 추출하는데, 이렇게 개별 Classifier에게 데이터를 샘플링해서 추출하는 방식을 부트스트래핑(Bootstrapping) 분할 방식이라고 부릅니다. 개별 분류기가 부트스트래핑 방식으로 샘플링된 데이터 세트에 대해서 학습을 통해 개별적인 예측을 수행한 결과를 보팅 통해서 최종 예측 결과를 선정하는 방식이 바로 배깅 앙상블 방식입니다.

교차 검증이 데이터 세트간에 중첩을 허용하지 않는 것과 다르게 배깅 방식은 중첩을 허용합니다. 따라서 10000개의 데이터를 10개의 분류기 배깅 방식으로 나누더라도 각 1000개의 데이터 내에는 중복된 데이터가 있습니다.

BAGGING

VOTING

부스팅은 여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서는 올바르게 예측할 수 있도록 다음 분류기에게는 가중치(weight)를 부여하면서 학습과 예측을 진행하는 것입니다. 계속해서 분류기에게 가중치를 부스탕하면서 학습을 진행하기에 부스팅 방식으로 불립니다.

예측 성능이 뛰어나 앙상블 학습을 주도하고 있으며 대표적인 부스팅 모듈로 그래디언트 부스트, XGBoost, LightGBM이 있습니다. 스태킹은 여러 가지 다른 모델의 예측 결괏값을 다시 학습 데이터로 만들어서 다른 모델로 재학습시켜 결과를 예측하는 방법입니다.

보팅유형 – 하드 보팅(Hard Voting)과 소프트 보팅(Soft Voting)

하드보팅을 이용한 분류(Classification)는 다수결 원칙과 비슷합니다. 예측과 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정하는 것입니다. 소프트 보팅은 분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정합니다. 일반적으로 소프트 보팅을 사용합니다.

보팅 분류기

import pandas as pd from sklearn.ensemble import VotingClassifier from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score cancer = load_breast_cancer() # print(‘cancer data set: ‘, cancer.data) # print(‘cancer feature명: ‘, cancer.feature_names) # print(‘cancer target명: ‘, cancer.target_names) # print(‘cancer target값: ‘, cancer.target) # print(‘cancer DESCRIPTION: ‘, cancer.DESCR) # print(‘cancer frame: ‘, cancer.frame) # keys = cancer.keys() # print(‘cancer”s keys: ‘, cancer.keys()) data_df = pd.DataFrame(cancer.data, columns=cancer.feature_names) print(data_df.head()) lr_clf = LogisticRegression(solver=’lbfgs’,class_weight=’balanced’, max_iter=10000) knn_clf = KNeighborsClassifier(n_neighbors=8) rf_cf = RandomForestClassifier(random_state=0) vo_clf = VotingClassifier(estimators=[(‘LR’,lr_clf),(‘KNN’,knn_clf),(‘RF’,rf_cf)], voting=’soft’) X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2, random_state=156) vo_clf.fit(X_train, y_train) pred = vo_clf.predict(X_test) print(“Voting 분류기 정확도”, accuracy_score(y_test, pred)) classifiers = [lr_clf, knn_clf, rf_cf] for classifier in classifiers: classifier.fit(X_train, y_train) pred = classifier.predict(X_test) class_name = classifier.__class__.__name__ print(‘{0} 정확도: {1:.4f}’.format(class_name, accuracy_score(y_test,pred)))

Voting 분류기 정확도 0.9736842105263158 LogisticRegression 정확도: 0.9561 KNeighborsClassifier 정확도: 0.9386 RandomForestClassifier 정확도: 0.9561

보팅 분류기가 정확도가 조금 높게 나옵니다. 보팅으로 여러 개의 기반 분류기를 결합한다고 해서 무조건 기반 분류기보다 예측 성능이 향상되지는 않습니다. 데이터의 특성과 분포 등 다양한 요건에 따라 오히려 기반 분류기 중 가장 좋은 분류기의 성능이 보팅했을 때보다 나을 수도 있습니다.

그럼에도 불구하고 앙상블 방법은 전반적으로 다른 단일 ML 알고리즘보다 뛰어난 예측 성능을 가지는 경우가 많습니다. 보팅과 스태킹 등은 서로 다른 알고리즘을 기반으로 하고 있지만, 배깅과 부스팅은 대부분 결정 트리 알고리즘을 기반으로 합니다. 결정 트리 알고리즘은 쉽고 직관적인 분류 기준을 가지고 있지만 정확한 예측을 위해 학습 데이터의 예외 상황에 집착한 나머지 오히려 과적합이 발생해 실제 테스트 데이터에서 예측 성능이 떨어지는 현사이 발생하기 쉬운데요.

앙상블 학습에서는 이 같은 결정 트리 알고리즘의 단점을 다양한 분류기를 결합해 다양한 상황을 학습하게 함으로써 극복하고 있습니다. 결정 트리 알고리즘의 장점은 그대로 유지하면서 단점은 보완하면서 편향-트레이드오프의 효과를 극대화할 수 있다는 것입니다.

반응형

[머신 러닝] 앙상블 (Ensemble) 방법의 이해

1. 앙상블 (Ensemble) 방법

다양한 분야의 머신 러닝 문제를 챌린지의 형태로 해결하는 플랫폼인 Kaggle에서는 복잡한 딥 러닝 알고리즘보다 간단한 머신 러닝 모델을 앙상블 방법을 기반으로 결합한 알고리즘이 우승하는 것을 많이 볼 수 있다. 머신 러닝에서 앙상블은 단어 그대로 여러 단순한 모델을 결합하여 정확한 모델을 만드는 방법이다. 만약 머신 러닝 기술을 이용하여 실세계의 문제를 해결하고자 한다면 앙상블 방법을 반드시 이용할 수 있어야하며, 이는 앞서 설명한 바와 같이 Kaggle 챌린지에서 수 없이 증명되었다.

2. 가장 기본적인 앙상블 방법: 투표 기반 앙상블

강력한 성능에 비해 의외로 앙상블 방법의 개념은 매우 단순하다. 앙상블 개념의 핵심 개념은 다양한 종류의 여러 estimator를 결합하여 더 좋은 estimator를 만드는 것이다. 앙상블 방법의 종류는 estimator들을 어떻게 결합할 것인지에 의해 결정된다. 가장 단순한 앙상블 방법으로는 그림 2와 같이 투표를 기반으로 base estimator들을 결합하여 최종 estimator를 만드는 것이 있다.

그림 2. 투표 기반 앙상블 방법.

투표 기반 앙상블 방법에서는 다수의 예측이 곧 최종 예측이 되기 때문에 그림 2의 예시에서는 2가 아니라 1이라는 값이 최종 예측으로 선택되었다.

3. 투표 기반 앙상블 방법에 대한 이론적인 이해

이산확률분포를 이용하면 투표 기반 앙상블로 만들어진 최종 estimator의 오답률을 쉽게 계산해볼 수 있다. 만약 $N$개의 estimator들이 갖는 평균 정확도가 $p$이고 estimator들이 서로 독립적이라면, 투표를 기반으로 이러한 estimator들을 결합한 최종 estimator의 오답률 $P_e$는 다음과 같이 계산된다.

$$P_e = \sum_{k=\text{ceil}(N/2)}^{N}\binom{N}{k}(1-p)^k p^{(N-k)} \tag{1}$$

식 (1)에서 $k$를 $\text{ceil}(N/2)$부터 시작하는 이유는 과반수 이상의 estimator들이 오답을 내놓았을 때만 최종 estimator가 오답을 발생시키기 때문이다. 식 (1)이 의미하는 중요한 사실은 $p > 0.5$일 때 $N$이 증가할수록 $P_e$는 점점 감소한다는 것이다. 예를 들어, 그림 3은 정확도 $p$가 0.65일 때 $N$의 증가에 따른 $P_e$를 보여준다.

그림 3. 결합된 base estimator의 수에 따른 최종 estimator의 오답률

그림 3에서 볼 수 있듯이 평균 0.65의 정확도를 갖는 estimator를 11개 결합할 경우, 이론적으로 기존 오답률의 절반 수준에 해당하는 오답률 0.15를 얻을 수 있다. 주의할 점은 만약 정확도가 0.4밖에 되지 않는 estimator를 11개 결합한 경우에는 최종 estimator의 오답률이 0.75로 증가하기 때문에 반드시 어느 정도 정확한 estimator들을 결합해야 한다. 투표 이외에도 최대/최소를 이용한 결합이나 평균값을 이용한 방법 등 다양한 앙상블 방법이 존재한다. 이러한 방법에 대해 최종 estimator의 오답률에 대한 유도는 Combining Pattern Classifiers: Methods and Algorithms에 자세히 설명되어 있다.

[머신러닝] 앙상블 모델에 대하여

오늘은 앙상블 모델에 대해서 이야기해봅시다.

우선 “앙상블”이라는 단어 자체를 한 번 봅시다.

앙상블(Ensemble)이란 조화, 통일을 뜻합니다. 머신러닝에서의 앙상블 모델도 “여러 모델이 동일한 문제를 해결하고 더 나은 결과를 얻도록 훈련시키는 기계 학습 패러다임”을 기반으로 만들어진 모델입니다.

보통 하나의 모델로 원하는 성능을 낼 수 없을 때 앙상블 학습을 사용하며, 개별로 학습한 여러 모델을 조합하여 일반화할 경우 성능을 향상시킬 수 있다는 것이 앙상블 모델이 주장하는 바입니다. 개인적으로 공부해본 결과 “집단지성”이라는 단어가 가장 어울리는 모델이라고 생각합니다.

앙상블 모델 기반의 classifier

다음은 앙상블 모델을 사용한 Classifier의 예시입니다. 앙상블 모델을 사용할 경우

1. 과적합(overfitting) 감소 효과가 있음

2. 개별 모델 성능이 잘 안 나올 때 앙상블 학습을 이용하면 성능이 향상될 수 있음

대표적으로 두 가지 정도의 장점이 있습니다.

이러한 앙상블 학습법에는 대표적으로 배깅(Bagging)과 부스팅(Boosting)이 있고, 각각에 대해 설명해 보도록 하겠습니다.

배깅 (Bagging)

Bagging은 Bootstrap Aggregation의 약자입니다. 우선 Bootstrapping에 대해서 정의해봅시다.

css에서 쓰는 걔 아닙니다

일단 웹사이트 디자인할때 쓰는 친구 아닙니다ㅎ. 우선 머신러닝에서 거론되는 Bootstrapping이란 통계학에서 사용되는 단어로, 가설 검증을 하기 전에 복원 추출을 적용하여 train set을 만든다고 생각하면 편할 것 같네요.

참고로 비복원 추출, 즉 중복을 허용하지 않고 데이터셋을 나누는 것은 페이스팅(Pasting)이라고 하네요. 알아두면 좋을 것 같습니다.

아무튼 Bagging은 다음과 같이 Bootstrapping된 샘플들을 가지고 각각 모델에게 학습시킵니다.(각자 다른 샘플을 다른 모델에 넣음) 그 후, 학습된 모델의 결과를 집계하여 최종 결과 값을 구합니다. 기본적으로 부트 스트랩 샘플은 대략 독립적이며 동일하게 분포되어 있으므로(i.i.d) 이 과정을 통해 분산이 적은 모델을 얻을 수 있게 됩니다.

이런 방식으로 각각의 결과값에 대하여 이산적인 데이터(Categorical Data)는 투표 방식(Voting; 다수결이라고 생각하면 편할 것 같아요)으로 결과를 집계하며, 연속적인 데이터(Continuous Data)에 대해서는 평균으로 집계합니다.

추가로, bootstrapping의 결과를 단일 모델만 이용해서 사용하는 경우입니다. 이 경우는 단일 모델의 성능을 높이기 위한 경우겠죠. 모델의 정확도를 높이기 위해서는 같은 데이터를 반복해서 학습시키는 것이 중요한데, 이 방식으로 반복학습하는 것은 특히 구분이 잘 되는 샘플에 대해 여러번 학습시키므로 비효율적이다. 따라서 bootstrapping을 진행할 때, 어려운 샘플(이전 분류에서 틀린 분류를 했던 샘플)이 선택될 확률을 증가시켜서 데이터셋을 구성합니다. 이후 학습하는 것을 반복합니다.

사실 이게 boosting이랑 방법이 거의 같다고 생각하지만, 둘다 같은 앙상블 모델이니 어쩔 수 없이 비슷한 부분이 있다고 생각합니다.

출처 : Wikipedia/Bootstrap_aggregating

예를 들어봅시다. 위 사진에서 회색으로 표시된 선은 단일 모델에 대한 결과값들입니다. 각 회색선들로 표시된 각각의 model들은 overfitting되어있지만, 그의 평균인 빨간 선은 비교적 안정적인 걸 볼 수 있습니다.

부스팅(Boosting)

다음은 부스팅입니다. 배깅(Bagging)이 분산을 최소화하는 것을 목표로 하였다면, 부스팅(Boosting)은 아무튼 성능 자체를 강화하는데 목적을 둡니다. 즉 편향(bias)가 높은 경우 이를 낮추기 위해서 많이 사용합니다.

첫 번째 데이터셋의 결과가 다음 데이터셋에 영향을 주는거 보이시죠? 이런 식으로 부스팅은 약한 학습자(weak classifier)에게 적합하게 반복하여 앙상블 모델에 집계하고 다음 기본 모델을 피팅할 때 현재 앙상블 모델의 강점과 약점을 더 잘 교려하도록 훈련 데이터 세트를 “업데이트”하는 것으로 구성됩니다.

이 부스팅 방법에도 크게 Adaboost과 Gradient Boosting으로 나뉩니다. 두 방법 모두 bias를 낮추기 위해 사용되지만, 이 순차적으로 진행하는 동안 학습자를 생성하고 집계하는 방식이 다릅니다. 이 내용을 중심으로 각각 설명하도록 하겠습니다.

AdaBoost; Adaptive Boosting

이름에서도 볼 수 있듯이 적응형 부스팅이라고 합니다. 여러가지 수식들이 있는데 이건 우리 머리를 위해서 스킵하도록 합시다.

위 사진을 보면 첫 번째 데이터셋만 Original data set이라고 표기되어있고, 그 다음부터는 Update weights라고 되어있는게 보이나요?

AdaBoost는 각 반복에서 관측치의 가중치를 업데이트합니다. 첫 번째 결과에서는 세 개의 관측치가 잘못 분류되었죠?

그럼 이 세 개의 관측치에 대해 가중치를 증가시킵니다. 그 상태로 분류를 하니 새롭게 잘못 분류된 관측치가 3개가 발견되었네요. 그러면 기존의 가중치를 증가시켰던 관측값에 대해서는 가중치를 줄이고, 새롭게 생긴 오답 관측치에 대해서 가중치를 증가시킵니다. 그런식으로 반복한 뒤 이를 합친게 최종 결과라고 볼 수 있겠죠?

Gradient Boosting

그래이디언트 부스팅은 이전 약한 분류기에서 발생된 잔차에 대해 다음의 약한 분류기를 적합시키는 것이 특징입니다. Gradient Boosting과 Adaboost의 가장 큰 차이점은, Gradient는 일단 하나의 초기 예측값으로 시작한다는 것입니다. 이 값을 바탕으로 새로운 classifier를 만들어 나가는 것이죠. 많은 글들에서 이 분류기를 tree라고 소개합니다. 딱히 tree말고는 방법이 없는거 같기도 하구요.

결론적으로 하나의 예측 결과값(보통 평균)을 통해서 틀린 값이 있다면 그것에 대해서 새로운 판단 방법을 만들어 나가는 방법이다. Adaboost가 데이터셋을 업데이트 해나간다면 Gradient Boost는 분류기 자체를 업데이트해가는 느낌으로 보면 될 것 같네요.

너무 간략하게 써서 잘 설명한 영상 첨부합니다 : https://www.youtube.com/watch?v=3CC4N4z3GJc

이것의 대표적인 예시가 요즘 핫한 XGBoost, LightGBM이 있습니다.

배깅과 부스팅의 차이

Bagging과 Boosting의 결론적인 차이는 Bagging은 병렬적으로 처리될 수 있는 반면, Boosting은 순차적으로 학습을 합니다. 한 번 학습이 끝난 후 결과에 따라 가중치를 부여하기 때문에 Boosting이 Bagging보다 훨씬 더 많은 시간이 걸리지만, 오답에 더 집중할 수 있기 때문에 높은 정확도를 가집니다. 또한 어떻게든 맞는 결과값을 내기때문에 Overfitting의 가능성도 Bagging보다 높습니다.

따라서 천편일률적으로 둘 중 하나가 더 좋다고 판단하는 것 보다는 상황에 따라서 알맞는 방법을 선택하는게 좋을 것 같습니다. overfitting이 문제일때는 Bagging을 선택하고, 정확도가 문제라면 Boosting을 사용하는게 좋겠죠?

::참고::

Bootstrap : https://bkshin.tistory.com/entry/DATA-12?category=1042793

why Bootstrap works : https://stats.stackexchange.com/questions/26088/explaining-to-laypeople-why-bootstrapping-works

Wiki/Bagging : https://en.wikipedia.org/wiki/Bootstrap_aggregating

이글 진짜 좋은 듯 : https://towardsdatascience.com/ensemble-methods-bagging-boosting-and-stacking-c9214a10a205

[머신러닝]앙상블(Ensemble) 이론

1. 앙상블(Ensemble)

1. 정의

2. 특징

2. 앙상블(Ensemble) 종류

1. Bagging(배깅)

2. RandomForest(랜덤 포레스트)

3. Boosting(부스팅)

4. Stacking

1. 앙상블(Ensemble)

1. 정의

– 앙상블 러닝(Ensemble learning) : 여러개의 기본 모델 을 활용하여 하나의 새로운 모델을 만들어내는 개념

=>기본 모델(base model): weak learner, classifier, base learner, single learner

-다양한 learner를 만들면 전체 모델의 성능이 증가할 수 있음

-학습 데이터로 여러 모델에 적합하고, 검증 데이터에 대해 예측한 값을 평균or투표하여 결과값 출력

-확률이 p인 L개의 classifier를 썼을 때 확률:

=> p<0.5이면 L이 증가함에 따라 기대값이 낮아짐 => p>0.5이면 L이 증가함에 따라 기대값이 높아짐

-각각의 base learner들은 최소 0.5이상의 정확도를 가져야함

-각각의 분류기는 독립이어야함

-총 분류기의 수는 이론적으로 무한대여야 성능이 좋아짐(일반적으로 수십~수백개)

2. 특징

-굉장히 파워풀, 캐글 대회 등에서 많이 씀

-일반적으로 대부분의 경우, single learner보다 예측 성능이 좋음

-but 현업에서는 많이 쓰는 모델들과 큰 차이x, 변수선택이 더 중요

-test 데이터에 대해 다양한 예측값을 수렴하기 위해 과적합이 잘되는 모델(ex. tree)을 기본적으로 사용

-tree기반 모델(random forest, boosting)을 많이 사용

-꼭 tree모델이 아니어도 됨

2. 앙상블(Ensemble) 종류

1. Bagging(배깅)

-모델을 다양하게 만들기 위해 데이터를 재구성하여 예측(데이터의 행 조절)

-tree 기반의 단일 모델(패키지 함수 in r, python)

2. RandomForest(랜덤 포레스트)

-모델을 다양하게 만들기 위해 데이터뿐 아니라 변수도 재구성(데이터의 행, 열 조절)

-tree 기반의 단일 모델(패키지 함수 in r, python)

3. Boosting(부스팅)

-맞추기 어려운 데이터에 대해 좀 더 가중치를 두어 학습

-모델들이 독립x, 순서대로

-앞의 모델이 잘 못맞춘 데이터에 대해 가중치를 두어 다음 learner가 학습

-종류: Adaboost, Gradient boosting( Xgboost , LightGBM, Catboost)

-tree 기반의 단일 모델(패키지 함수 in r, python)

4. Stacking

-모델의 output값을 새로운 독립변수로 사용

-앙상블의 한 개념(여러 모델 결합), 패키지 제공x

-캐글 대회에서 우승 많이 차지함(0.몇프로의 성능을 높일 때 사용)

-학습량이 많고 시간이 오래 걸려 실제론 잘 안씀

참고) 앙상블 종류별 이론, 특징, 장단점 – [머신러닝]앙상블(Ensemble) – Bagging, RandomForest, Boosting 이론

https://topo314.tistory.com/81

[머신러닝] 앙상블 학습 – 1) 배경

이번 포스팅에서는 모델의 편향과 분산을 줄이기 위한 노력의 일환인 앙상블 학습에 대하여 정리해봤다. 본 글에서는 1) 앙상블의 목적, 2) 앙상블의 핵심 가치, 그리고 3) 앙상블의 효과를 차례대로 설명한다. 이는 고려대학교 강필성 교수님의 비즈니스 애널리틱스 강의 내용을 요약한 것이며, 해당 강의는 유튜브에서 무료로 시청이 가능하다(링크).

1. 앙상블의 목적

[그림 1] 편향-분산에 따른 모델 유형

지난 번 포스팅을 통해 편향과 분산의 정도를 바탕으로 모델을 4가지 유형으로 나눌 수 있음을 배웠다. 네 번째 유형(낮은 편향, 낮은 분산)이 가장 바람직한 모델이지만, 현실은 대부분 두 번째나 세 번째인 경우가 많다. 따라서, 이 두 가지 유형에서 네 번째 유형의 모델로 만들기 위한 노력이 바로 앙상블 학습인 것이다. 즉, 앙상블의 목적은 다중 학습 모델을 기반으로 분산 또는 편향 감소를 통해 전체 에러를 줄이는 것이다. 앙상블의 두 종류인 Bagging과 Boosting은 감소하고자 하는 목적이 무엇인지에 따라 구분된다. Bagging은 분산, Boosting은 편향을 줄임으로써 성능을 향상시킨다.

2. 앙상블의 핵심 가치

앙상블의 핵심 가치로는 크게 두 가지가 있는데, 첫 번째가 두 번째에 비해 매우(x100) 중요하다! 따라서 1번 가치를 중심으로 설명하도록 하겠다.

1) 개별 학습 모델들이 충분한 수준의 ‘다양성(Diversity)’을 가지도록 한다.

2) 개별 학습 모델들의 결과물을 잘 결합한다.

다양성을 추구하는 이유는, 각 개별 모델이 전체 데이터에 대한 성능은 조금 떨어지더라도 특정 분야에 대해 뛰어나다면, 이들을 결합함으로써 전체 성능을 향상시킬 수 있다는 가정 때문이다. [그림 2]의 그룹 A는 그룹 B에 비하여 각 학생들의 평균 점수가 높으며, 각 과목별 학생들간의 점수 차이가 크지 않다. 즉, 학생 간의 다양성이 크지 않다. 반면에 그룹 B는 각 학생들의 평균 점수는 낮지만, 학생별로 주력 과목이 서로 다르며 점수가 매우 높다. 각 그룹의 학생들이 팀이 되어 국영수 시험을 본다고 하면 이들의 최종 시험 결과는 빨간색 글씨(최고점수)가 될 것이다. 학생 개인의 점수는 그룹 A가 뛰어났을지 모르나, 팀의 결과는 그룹 B가 좋은 것이다. 앙상블이 추구하는 것도 바로 이것이다. 서로 다른 분야에서 뛰어난 개별 학습 모델을 결합하여 전체 성능을 높이는 것이다.

[그림 2] Ensemble Diversity에 대한 예시

앙상블을 구성하는 개별 학습 모델의 다양성을 확보하되, 그렇다고 서로 너무 다르기만 해서는 안된다. 각 학습 모델들의 성능도 어느정도는 보장되어 있어야 한다. 예를 들어, 일반 시사 상식 퀴즈 대회에 나간다고 했을 때 다양한 전공 학과의 대학생 30명 그룹과, 다양한 학년의 초등학생 30명이 대결한다고 하면 일반적으로 대학생 그룹이 정답 확률이 높을 것이다. 아무리 다양한 조합의 앙상블 모델이라해도, 개별 모델의 성능이 너무 떨어지는데 전체 성능이 기적처럼 높아질리는 없다는 뜻이다.

3. 앙상블의 효과

앙상블의 효과를 증명하기 위해, 개별 모델들의 평균적인 에러보다 앙상블의 에러 기댓값을 비교하여 어느 것이 더 낮은지를 확인해보자. [그림 3]을 보면, 앙상블을 위한 개별 모델의 추정치는 정답과 개별 모형의 에러로 구성되어 있다.

[그림 3] 개별 모델의 추정치

그러면 개별 모형들의 에러의 기댓값은 [그림 4]와 같다. 간단히 설명하자면, 모형 m의 추정값(y_m(x))에서 정답(f(x))을 뺀 것의 제곱의 기댓값, 즉, 에러 제곱의 기댓값이다.

[그림 4] 개별 모멜의 에러 기댓값

개별 모델 VS 앙상블 모델

그렇다면 이제 M개의 개별적인 모델에 의해 만들어지는 평균적인 에러와, 앙상블을 통해 만들어지는 에러의 기댓값을 비교해보도록 하자. 첫번째로, E_Avg는 M개의 개별 모델에 의해 만들어진 에러의 평균을 의미한다. E_Ensemble은 앙상블 모델에 의해 만들어진 에러의 기댓값이다. 앙상블은 가장 단순한 방법으로 개별 모델의 추정치(y_m(x))의 평균을 결과값으로 내뱉는다. E_Ensemble이 도출되는 과정은 오른쪽 파란색 박스에 한 단계씩 정리해두었다.

[그림 5] 개별 모델의 평균 에러 VS 앙상블 모델의 에러 기댓값

이제 두 경우의 에러를 아래의 최상의 조건과 현실의 조건 두 가지 경우에 나누어 비교해보자.

1) 최상의 조건에서는 앙상블 모델의 에러가 개별 모델의 평균 에러보다 M분의 1만큼 작다.

최상의 조건은 아래의 두 가지를 만족하는 경우를 가정한 것을 의미한다. 첫번째는 개별 모델의 에러의 기댓값이 0인 것(zero mean)이고, 두번째는 각 에러들은 서로 독립적이라는 것(uncorrelated)이다. 이를 수식으로 표현하면 [그림 6]과 같다.

[그림 6] Zero Mean, Uncorreated 가정

이런 가정하에, E_Ensemble과 E_Avg의 관계를 도출해보면 [그림 7]과 같다. 도출 과정은 아래 상세히 적어두었다. 결과를 해석해보면 앙상블 모델의 에러가 개별 모델의 평균 에러보다 모델의 개수인 M분의 1만큼 작다는 것을 알 수 있다.

[그림 7] 최상의 조건인 경우, 앙상블 에러와 개별 모델의 평균 에러 간 관계

2) 현실에서는 앙상블의 에러가 개별 모델의 평균 에러보다 작거나 같음을 보장한다.

그러나 현실의 데이터셋에는 에러들이 서로 독립적인 경우가 잘 없을 것이다. 하지만 다행스럽게도(?), 앙상블은 에러가 상관성이 있다(errors are correlated)는 가정하에도 여전히 성능 유지 또는 향상을 보장한다. [그림 8]은 이를 유도하는 수식이며, 결과를 보면 앙상블의 에러가 개별 모델의 평균 에러보다 항상 작거나 같음을 알 수 있다. 그리고 일반적으로 개별 모형의 최고(single best model)보다 더 나은 성능을 보인다.

[그림 8] 모델 간 독립성 가정이 없는 경우, 앙상블과 개별 모델의 평균 에러 간 비교

여기서 빨간색 박스는 코시-슈바르츠 부등식을 활용한 부분이다. 코시-슈바르츠 부등식의 공식은 아래의 [그림 9]를 참고하기 바란다. [그림 8]에서 1과 epsilon(x)가 [그림 9]의 a와 x의 자리를 대신한다.

[그림 9] 코시-슈바르츠 부등식

4. 마치며

이번 포스팅에서는 앞으로 배울 여러 앙상블 학습 기법이 나오게 된 배경과 목적, 효과를 증명하는 이론에 대해서 배웠다. 이어지는 포스팅에서는 앙상블의 한 종류인 Bagging의 개념과 대표적인 Bagging 모델인 Random Forest에 대해서 정리할 것이다.

References

[1] https://www.youtube.com/watch?v=mZwszY3kQBg

키워드에 대한 정보 머신 러닝 앙상블

다음은 Bing에서 머신 러닝 앙상블 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [머신러닝] 앙상블 – 하드보팅, 소프트보팅

  • 머신러닝
  • 앙상블
  • 보팅
  • 하드보팅
  • 소프트보팅
  • 하드 보팅
  • 소프트 보팅
  • 하드 투표
  • 소프트 투표
  • sklearn 보팅
[머신러닝] #앙상블 #- #하드보팅, #소프트보팅


YouTube에서 머신 러닝 앙상블 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [머신러닝] 앙상블 – 하드보팅, 소프트보팅 | 머신 러닝 앙상블, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  대 체육 관련주 | 커지는 글로벌 대체육 시장, 미리 봐야할 국내 대체육 수혜주 Best 3 (Feat. 비욘드미트) 10922 투표 이 답변

Leave a Comment