머신 러닝 앙상블 | [머신러닝] 앙상블 – 하드보팅, 소프트보팅 인기 답변 업데이트

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

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

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

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

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

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

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

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

+ 더 읽기

Source: www.dinnopartners.com

Date Published: 11/1/2021

View: 3448

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

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

+ 여기에 자세히 보기

Source: bkshin.tistory.com

Date Published: 9/7/2021

View: 8206

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

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

+ 더 읽기

Source: medium.com

Date Published: 11/6/2021

View: 5928

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

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

+ 여기에 표시

Source: dbstndi6316.tistory.com

Date Published: 2/13/2021

View: 7956

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

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

+ 여기에 더 보기

Source: nicola-ml.tistory.com

Date Published: 12/19/2021

View: 2547

앙상블 (Ensemble)의 기본 개념

앙상블 모델의 개념과 종류를 정리해봅시다. … October 6, 2020 Machine learning … 기계학습에서의 앙상블도 이와 비슷합니다.

+ 여기에 표시

Source: tyami.github.io

Date Published: 2/24/2021

View: 2130

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

앙상블(Ensemble). 1. 정의. 2. 특징. 2. 앙상블(Ensemble) 종류. 1. Bagging(배깅). 2. RandomForest(랜덤 포레스트). 3. Boosting(부스팅).

+ 여기에 보기

Source: topo314.tistory.com

Date Published: 7/4/2022

View: 7582

[머신러닝 완벽가이드] 앙상블 학습이란? – DH’s blog

앙상블 학습이란 여러 개의 분류기를 통해 도출된 예측 결과를 결합하여 보다 정확하고 신뢰성이 높은 예측값을 도출하는 기법입니다.

+ 여기에 더 보기

Source: kimdingko-world.tistory.com

Date Published: 3/11/2022

View: 9210

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

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

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

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

  • Author: Minsuk Heo 허민석
  • Views: 조회수 4,415회
  • Likes: 좋아요 56개
  • 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)

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

[머신러닝 완벽가이드] 앙상블 학습이란?

앙상블 학습이란 여러 개의 분류기를 통해 도출된 예측 결과를 결합하여 보다 정확하고 신뢰성이 높은 예측값을 도출하는 기법입니다.

이전에 Decision Tree는 성능이 좋은 분류기에 속하지만 과적합 문제에 취약하다는 단점이 있어 Tree의 깊이를 제한하는 방법에 대해서 다루었습니다.

예를 들어 Tree 하나만을 가지고 성능을 측정하게 되면 테스트 데이터 세트에 대한 과적합 문제가 발생할 수 있는데 대표적인 배깅 방식의 앙상블 모델인 랜덤포레스트는 이 Tree를 여러개 생성하여 그 예측 결과를 결합함으로써 보다 일반화된 예측 결과를 얻는 방법이 앙상블 학습입니다.

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

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

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

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

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


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

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

See also  스타 크래프트 1 다운 받기 | 스타크래프트 리마스터 무료 다운로드 및 설치 배틀넷 접속해서 게임하기 답을 믿으세요

Leave a Comment