본문 바로가기

R

모델성능개선 부스팅, 앙상블,배깅

728x90
반응형

앙상블 481p

"동일한 학습 알고리즘을 사용해서 여러모델을 학습하는 개념"

"Weak learners 결합하면 single learner 보다 나은 성능을 얻음"

 

결합함수를 사용하고 최종 예측을 결정하기 위해 과반수 의결을 사용하거나

모델의 vote 과거 성능을 기반으로 가중치를 부여하는 것과 같은

복잡한 전략을 사용할 있다.

 

 

Bagging 484p

부트스트랩 집계 bootstrap aggregating 약자.

"샘플을 여러 뽑아 모델을 학습시켜 결과를 집계 하는 방법"

 

모델의 예측은(분류를 위한) 투표와 또는 (수치 예측을 위한) 평균화를

이용해서 결합한다

 

C5.0 에서 trials Bagging 역할 한것이다.

 

nbagg 파라미터는 앙상블에서 투표할 있는 의사결정트리의 수를

제어하는데 사요한다(디폴트 값이 25 이다)

숫자를 증가시키면 모델의 성능을 한계점까지 향상시킬 있다

 

:

install.packages("ipred")

library(ipred)

 

mybag<-bagging(default~. , data=credit, nbagg=25)

 

credit_pred<-predict(mybag, credit)
> table(credit_pred, credit$default)
          
credit_pred  no yes
        no  700   3
        yes   0 297

 

단점은 트리가 많은 경우 훈련에 어느정도 시간이 소요된다.

 

 

 

문제268.

caret 패키지의 train() 함수를 이용해서 10-폴드 교차 검증과 같이

배깅트리를 사용할 있다. (486p 참고)

ipred 배깅 트리 함수의 메소드 이름이 treebag 라는 것을 주목하시오.

 

library(caret)

credit<-read.csv("credit.csv")

set.seed(300)

ctrl<-trainControl(method="cv", number=10)

train(default~., data=credit, method="treebag",

      trControl=ctrl)

 

Bagged CART

1000 samples
  16 predictor
   2 classes: 'no', 'yes'

No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 900, 900, 900, 900, 900, 900, ...
Resampling results:

Accuracy  Kappa  
  0.745     0.354216

설명:

모델의 카파 통계량 0.33 배깅 트리 모델이 최소한 11장의 앞부분에서

튜닝했던 최고의 C5.0 의사결정 트리만큼 실행한다는 것을 말해준다.

이것은 앙상블 방법의 힘을 보여준다.

함께 작동하는 단순한 학습자들의 집합은 매우 정교한 모델을

능가할 있다.

 

m<-train(default~., data=credit, method="treebag",

      trControl=ctrl)

 

credit_predict<-predict(m, credit)

table(credit_predict, credit$default)

 

credit_predict  no yes
           no  700   1
           yes   0 299

 

 

Boosting(489p)

"약한 학습자의 성능을 올려서(boost) 강한 학습자의 성능을 얻는다"

 

독일은행의 채무 불이행자를 예측하는 모델을 boosting 으로 구현

 

credit<-read.csv("credit.csv")

install.packages("adabag")

library(adabag)

set.seed(300)

 

model_ada <- boosting(default ~ ., data=credit)

 

predict_ada <- predict(model_ada, credit)

 

# 예측 결과 확인

predict_ada$confusion

 

f<- as.factor(predict_ada$class)

credit_pred<-predict(predcit_ada$class, credit)

table(credit_pred, predict_ada$class)

 

처음보는 데이터에 대한 정확한 성능평가를 하려면

다른 평가방법을 필요가 있다

 

set.seed(300)

adaboost_cv<-boosting.cv(default~., data=credit)

adaboost_cv$confusion

728x90
반응형

'R' 카테고리의 다른 글

특화된 머신러닝 주제  (0) 2019.04.17
랜덤포레스트  (0) 2019.04.17
모델 성능개선  (0) 2019.04.03
모델 성능평가  (0) 2019.04.03
연관규칙  (0) 2019.04.03