데이터 마이닝 학습 - 통합 학습(분류기 조합)

목차

1. 통합 학습의 기본 개념

2. 통합 학습 모델 조합 전략

(1) 평균법과 가중평균법(통합회귀모형의 조합전략)

(2) 상대적 다수결 방식 및 가중 투표 방식(통합 분류 모델의 조합 전략)

 3.배깅 방법 및 랜덤 포레스트

(1) 포장 방법

 (2) 랜덤 포레스트(random forest)

4.부스팅 방식과 Adaboost

(1) 부스팅 방식

(2) 아다부스트 방식

5. 통합 학습 Python 구현


1. 통합 학습의 기본 개념

통합 학습(분류기 조합)은 학습을 위해 여러 데이터 마이닝 모델(기본 모델, 기본 분류기)을 함께 통합하는 것 입니다 . 여러 기본 모델이 각각의 데이터 세트를 학습하고 결과를 출력한 다음 통합 학습 모델은 이러한 결과를 일정한 방법을 통해 통합하고 최종적으로 통합 학습 모델의 결과를 형성합니다.

2. 통합 학습 모델 조합 전략

(1) 평균법과 가중평균법(통합회귀모형의 조합전략)

간단한 평균 방법:

 가중 평균 방법:

(단순 평균법에 비해 가중치 계수 매개변수가 증가하여 과적합되기 쉽습니다.)

 실제 사용 과정에서 가중 평균 방식의 결과가 단순 평균만큼 좋지 않은 경우가 종종 발견됩니다.

(2) 상대적 다수결 방식 및 가중 투표 방식(통합 분류 모델의 조합 전략)

상대적 다수결 방식:

가장 많은 득표를 한 범주가 앙상블 모델의 출력 범주입니다(동일한 최고 득표 범주가 여러 개 있는 경우 이 범주 중 하나가 최종 출력으로 무작위로 선택됨).

가중 투표 방법:

(보팅방식의 특수한 형태입니다. 가중보팅방식에서는 기본모델마다 보팅파워가 다릅니다아아아아)

 3.배깅 방법 및 랜덤 포레스트

(1) 포장 방법

Bagging 방법은 병렬 통합 학습 방법이며 기본 구조는 다음과 같습니다.

 (2) 랜덤 포레스트(random forest)

랜덤 포레스트는 배깅 방법의 특정 구현입니다.

기본 단계는 다음과 같습니다.

1. 기본 모델 학습 샘플 선택

2. 학습 결정 트리 기본 모델

3. 여러 의사 결정 트리 통합

(랜덤 포레스트에서는 더 많은 의사 결정 트리 기반 모델이 더 나은 예측 결과를 얻을 수 있음)

4.부스팅 방식과 Adaboost

(1) 부스팅 방식

부스팅 방식은 직렬 훈련 기반 모델이며 기본 구조는 다음과 같다.

 (부스팅 방식에서 기본 모델의 학습 샘플은 이전 기본 모델의 예측 결과와 연관되고, 현재 기본 모델은 이전 기본 모델에서 예측한 잘못된 샘플에 초점을 맞춥니다)

(2) 아다부스트 방식

Adaboost 방법(Adaptive Boosting)은 Boosting 통합 학습의 구체적인 구현입니다.

구체적인 단계:

1. 샘플 가중치 초기화

2. 트레이닝 베이스 모델

3. 기본 모델의 가중치 계산

4. 샘플 무게 업데이트

5. 여러 기본 모델의 반복 학습

6. 기본 모델의 예측 결과 결합

5. 통합 학습 Python 구현

sklearn 라이브러리는 직접 호출할 수 있는 여러 통합 학습 모델의 사용을 제공합니다.

예제 코드(랜덤 포레스트 분류 모델 기능 사용):

여기서는 이전 기사의 코드를 사용하여 이를 수정하는데 단일 Gaussian Naive Bayesian 스플리터를 훈련에 사용하는 것과 비교하여 Random Forest로 훈련된 모델의 정확도가 더 높다는 것을 알 수 있습니다.

import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import confusion_matrix
from matplotlib import pyplot as plt
import seaborn as sns
from sklearn.ensemble import RandomForestClassifier

#训练模型函数
def model_fit(x_train,y_train,x_test,y_test):
    model=RandomForestClassifier(n_estimators=50)
    model.fit(x_train,y_train)#对训练集进行拟合
    # print(model.score(x_train,y_train))
    print("accurancy:",model.score(x_test,y_test))
    Y_pred=model.predict(x_test)
    cm=confusion_matrix(Y_pred,y_test)
    return cm

#混淆矩阵可视化
def matplotlib_show(cm):
    plt.figure(dpi=100)#设置窗口大小(分辨率)
    plt.title('Confusion Matrix')

    labels = ['a', 'b', 'c', 'd']
    tick_marks = np.arange(len(labels))
    plt.xticks(tick_marks, labels)
    plt.yticks(tick_marks, labels)
    sns.heatmap(cm, cmap=sns.color_palette("Blues"), annot=True, fmt='d')
    plt.ylabel('real_type')#x坐标为实际类别
    plt.xlabel('pred_type')#y坐标为预测类别
    plt.show()

if __name__ == '__main__':
    cancer = load_breast_cancer()
    x, y = cancer.data, cancer.target
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=3)
    cm=model_fit(x_train,y_train,x_test,y_test)
    matplotlib_show(cm)

실행 결과: (정확도 및 예측 결과 그래프)

 

추천

출처blog.csdn.net/weixin_52135595/article/details/126728049