ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분류 - 8
    Python Machine Learning/분류 2020. 8. 14. 17:09

    분류에 마지막은 스태킹 앙상블에 관해 설명하겠습니다.

     

    스태킹이란?

    - 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출하는 점에서 배깅과 부스팅과 공통점을 가지고 있지만

      개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다는 점에서 차이가 존재합니다

    - 즉 스태킹 모델은 개별적인 기반 모델과 이 개별 기반 모델의 예측 데이터를 학습 데이터로 만들어서 학습하는 

      최종 메타 모델이 필요합니다.

    - 스태킹을 적용할 때는 많은 개별 모델이 필요하며, 스태킹을 적용한다고 해서 반드시 성능 향상이 되리라는 보장

      은 없으며 비교적 좀 더 나은 성능 향상을 도출하기 위해 적용하는 방법입니다.

     

     

    기본 스태킹 모델

    다음 예제는 위스콘신 암 데이터 세트에 기본 스태킹 모델을 적용한 예제입니다.

    위스콘신 암 데이터 세트 로딩

     

    개별 ML 모델을 위한 Classifier 와 최종 Stacking 모델을 위한 Classifier생성.
    개별 Classifier 학습/예측/평가

     

     학습된 개별 모델들이 각자 반환하는 예측 데이터 셋을 생성하고 개별 모델의 정확도 측정.

     

    최종 메타 모델인 로지스틱 회귀에서 학습 데이터로 다시 사용하기 위해서 개별 알고리즘으로부터 예측된 예측값들은 1차원 형태의 ndarray 이므로 예측 결과를 행 형태로 붙인 뒤, 넘파이의 transpose( )를 이용해 형과 열의 위치를 바꿈

     

    최종 메타 모델 학습/예측/평가

     

    ==> 개별 모델의 예측 데이터를 스태킹으로 재구성해 최종 메타 모델에서 학습하고 예측한 결과, 정확도가 개별 

           모델 정확도보다 향상되었습니다. 

     

     

    이번에는 과적합을 개선하기 위한 CV세트 기반의 스태킹 모델을 설명하겠습니다.

     

    CV 세트 기반의 스태킹

    - CV 세트 기반의 스태킹 모델은 과적합을 개선하기 위해 최종 모델을 위한 데이터 세트를 만들 때 교차 검증기반으로 

      예측된 결과 데이터 세트를 이용합니다. 앞선 기본 스태킹 모델은 최종 학습할 때 레이블 데이터 세트로 학습 데이터

      가 아닌 테스트용 레이블 데이터 세트를 기반으로 학습했기에 과적합 문제가 발생할 수 있습니다.

    - CV 세트 기반의 스태킹은 개별 모델들이 각각 교차 검증으로 메타 모델을 위한 학습용 스태킹 데이터 생성과 예측을

      위한 테스트용 스태킹 데이터를 생성한 뒤 이를 기반으로 메타 모델이 학습과 예측을 수행합니다.

    함수 내에서는 폴드의 개수만큼 반복을 수행하면서 폴드된 학습용 데이터로 학습한 뒤 예측 결괏값을 기반으로 메타 모델을 위한 학습용 데이터와 테스트용 데이터를 새롭게 생성.
    각각의 개별 모델별로 get_stacking_base_datasets( ) 함수를 호출해 각각 메타 모델이 추후에 사용할 학습용, 테스트용 데이터 세트를 반환.
    넘파이의 concatenate( ) ( 여러 개의 넘파이 배열을 칼럼 또는 로우 레벨로 합쳐주는 기능 ) 를 이용해 get_stacking_base_datasets( ) 호출로 반환된 모델별 학습 데이터와 테스트 데이터를 합침.

    ==> Stack_final_X_train은 메타 모델이 학습할 학습용 피처 데이터 세트

           Stack_final_X_test는 메타 모델이 예측할 테스트용 피처 데이터 세트

    최종 메타 모델인 로지스틱 회귀를 스태킹된 학습용 피처 데이터 세트와 원본 학습 레이블 데이터로 학습한 후 스태킹된 테스트 데이터 세트로 예측

    ==> 최종 메타 모델의 예측 정확도 97.37%로 측정.

     

     

    'Python Machine Learning > 분류' 카테고리의 다른 글

    분류 - 7  (0) 2020.08.13
    분류 - 7  (0) 2020.08.12
    분류 - 6  (0) 2020.08.12
    분류 - 5  (0) 2020.08.12
    분류 - 4  (0) 2020.08.11
Designed by Tistory.