{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "RcbU7uu7akGj" }, "source": [ "# 머신 러닝 교과서 3판" ] }, { "cell_type": "markdown", "metadata": { "id": "WOFUIVf8akGn" }, "source": [ "# 7장 - 다양한 모델을 결합한 앙상블 학습" ] }, { "cell_type": "markdown", "metadata": { "id": "CwcCkUCsakGn" }, "source": [ "**아래 링크를 통해 이 노트북을 주피터 노트북 뷰어(nbviewer.jupyter.org)로 보거나 구글 코랩(colab.research.google.com)에서 실행할 수 있습니다.**\n", "\n", "\n", " \n", " \n", "
\n", " 주피터 노트북 뷰어로 보기\n", " \n", " 구글 코랩(Colab)에서 실행하기\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "vC0qpBcbakGo" }, "source": [ "### 목차" ] }, { "cell_type": "markdown", "metadata": { "id": "rq9yuQBxakGo" }, "source": [ "- 앙상블 학습\n", "- 다수결 투표를 사용한 분류 앙상블\n", " - 간단한 다수결 투표 분류기 구현\n", " - 다수결 투표 방식을 사용하여 예측 만들기\n", " - 앙상블 분류기의 평가와 튜닝\n", "- 배깅: 부트스트랩 샘플링을 통한 분류 앙상블\n", " - 배깅 알고리즘의 작동 방식\n", " - 배깅으로 Wine 데이터셋의 샘플 분류\n", "- 약한 학습기를 이용한 에이다부스트\n", " - 부스팅 작동 원리\n", " - 사이킷런에서 에이다부스트 사용\n", "- 요약" ] }, { "cell_type": "markdown", "metadata": { "id": "om-FBdErakGo" }, "source": [ "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:14.810782Z", "iopub.status.busy": "2021-10-23T06:49:14.809496Z", "iopub.status.idle": "2021-10-23T06:49:14.814735Z", "shell.execute_reply": "2021-10-23T06:49:14.815495Z" }, "id": "b852HoJ8akGp" }, "outputs": [], "source": [ "from IPython.display import Image" ] }, { "cell_type": "markdown", "metadata": { "id": "X5lC1_K5akGp" }, "source": [ "# 7.1 앙상블 학습" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 202 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:14.826694Z", "iopub.status.busy": "2021-10-23T06:49:14.818061Z", "iopub.status.idle": "2021-10-23T06:49:14.831418Z", "shell.execute_reply": "2021-10-23T06:49:14.831878Z" }, "id": "n6opzu9iakGp", "outputId": "fc36a3c1-014f-416f-eb2b-df14687525e4" }, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "execution_count": 2 } ], "source": [ "Image(url='https://git.io/JtskW', width=500)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 445 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:14.837455Z", "iopub.status.busy": "2021-10-23T06:49:14.836740Z", "iopub.status.idle": "2021-10-23T06:49:14.840016Z", "shell.execute_reply": "2021-10-23T06:49:14.840470Z" }, "id": "Fl869VXJakGq", "outputId": "0378ad71-3a6b-4f19-b81c-ef52d4cd49a7" }, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "execution_count": 3 } ], "source": [ "Image(url='https://git.io/Jtskl', width=500)" ] }, { "cell_type": "markdown", "metadata": { "id": "pS9wjVEQO8Re" }, "source": [ "$P(y \\ge k) = \\sum_k^n{n \\choose k}\\epsilon^k(1-\\epsilon)^{n-k}$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:14.847303Z", "iopub.status.busy": "2021-10-23T06:49:14.846228Z", "iopub.status.idle": "2021-10-23T06:49:15.133265Z", "shell.execute_reply": "2021-10-23T06:49:15.134214Z" }, "id": "oL_CWVhXakGq" }, "outputs": [], "source": [ "from scipy.special import comb\n", "import math\n", "\n", "def ensemble_error(n_classifier, error):\n", " k_start = int(math.ceil(n_classifier / 2.))\n", " probs = [comb(n_classifier, k) * error**k * (1-error)**(n_classifier - k)\n", " for k in range(k_start, n_classifier + 1)]\n", " return sum(probs)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.144105Z", "iopub.status.busy": "2021-10-23T06:49:15.142707Z", "iopub.status.idle": "2021-10-23T06:49:15.149347Z", "shell.execute_reply": "2021-10-23T06:49:15.148606Z" }, "id": "443t5C3wakGq", "outputId": "b7f7aed7-8f5e-4465-8196-ca6015c90178" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.03432750701904297" ] }, "metadata": {}, "execution_count": 5 } ], "source": [ "ensemble_error(n_classifier=11, error=0.25)" ] }, { "cell_type": "markdown", "metadata": { "id": "xTpKbW31akGq" }, "source": [ "scipy의 `binom.cdf()`를 사용하여 계산할 수도 있습니다. 성공 확률이 75%인 이항 분포에서 11번의 시도 중에 5개 이하로 성공할 누적 확률은 다음과 같이 계산합니다." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.155957Z", "iopub.status.busy": "2021-10-23T06:49:15.154662Z", "iopub.status.idle": "2021-10-23T06:49:15.397222Z", "shell.execute_reply": "2021-10-23T06:49:15.396508Z" }, "id": "AlAEXPx5akGr", "outputId": "6e7f4f44-4525-402b-a093-031f5a54ba55" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.03432750701904297" ] }, "metadata": {}, "execution_count": 6 } ], "source": [ "from scipy.stats import binom\n", "\n", "binom.cdf(5, 11, 0.75)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:15.407525Z", "iopub.status.busy": "2021-10-23T06:49:15.406273Z", "iopub.status.idle": "2021-10-23T06:49:15.409579Z", "shell.execute_reply": "2021-10-23T06:49:15.408905Z" }, "id": "ThyN7iTOakGr" }, "outputs": [], "source": [ "import numpy as np\n", "\n", "error_range = np.arange(0.0, 1.01, 0.01)\n", "ens_errors = [ensemble_error(n_classifier=11, error=error)\n", " for error in error_range]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.416584Z", "iopub.status.busy": "2021-10-23T06:49:15.415498Z", "iopub.status.idle": "2021-10-23T06:49:15.811738Z", "shell.execute_reply": "2021-10-23T06:49:15.812268Z" }, "id": "aC3ntuQ2akGr", "outputId": "a112caac-48e0-42aa-efdf-d2165d1af206" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(error_range,\n", " ens_errors,\n", " label='Ensemble error',\n", " linewidth=2)\n", "\n", "plt.plot(error_range,\n", " error_range,\n", " linestyle='--',\n", " label='Base error',\n", " linewidth=2)\n", "\n", "plt.xlabel('Base error')\n", "plt.ylabel('Base/Ensemble error')\n", "plt.legend(loc='upper left')\n", "plt.grid(alpha=0.5)\n", "# plt.savefig('images/07_03.png', dpi=300)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "3tU6DbrwakGr" }, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "id": "jXQSBulMakGr" }, "source": [ "# 7.2 다수결 투표를 사용한 분류 앙상블" ] }, { "cell_type": "markdown", "metadata": { "id": "RukYYCUsakGr" }, "source": [ "## 7.2.1 간단한 다수결 투표 분류기 구현" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.819005Z", "iopub.status.busy": "2021-10-23T06:49:15.818160Z", "iopub.status.idle": "2021-10-23T06:49:15.822360Z", "shell.execute_reply": "2021-10-23T06:49:15.821791Z" }, "id": "99_QlAANakGs", "outputId": "7b191d8a-67c5-428d-f66d-3b24e3799840" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1" ] }, "metadata": {}, "execution_count": 9 } ], "source": [ "import numpy as np\n", "\n", "np.argmax(np.bincount([0, 0, 1],\n", " weights=[0.2, 0.2, 0.6]))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.829359Z", "iopub.status.busy": "2021-10-23T06:49:15.828534Z", "iopub.status.idle": "2021-10-23T06:49:15.831967Z", "shell.execute_reply": "2021-10-23T06:49:15.832418Z" }, "id": "G5GRoopWakGs", "outputId": "8ef01181-aeec-4c2f-96bd-dc733ade9215" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0.58, 0.42])" ] }, "metadata": {}, "execution_count": 10 } ], "source": [ "ex = np.array([[0.9, 0.1],\n", " [0.8, 0.2],\n", " [0.4, 0.6]])\n", "\n", "p = np.average(ex,\n", " axis=0,\n", " weights=[0.2, 0.2, 0.6])\n", "p" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.838142Z", "iopub.status.busy": "2021-10-23T06:49:15.837400Z", "iopub.status.idle": "2021-10-23T06:49:15.840858Z", "shell.execute_reply": "2021-10-23T06:49:15.841395Z" }, "id": "lECkYPLkakGs", "outputId": "f58327f6-e5c9-449f-f7ce-a7bce2c7dc97" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, "metadata": {}, "execution_count": 11 } ], "source": [ "np.argmax(p)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:15.858171Z", "iopub.status.busy": "2021-10-23T06:49:15.856871Z", "iopub.status.idle": "2021-10-23T06:49:15.899826Z", "shell.execute_reply": "2021-10-23T06:49:15.899135Z" }, "id": "Qnn5GfoYakGs" }, "outputs": [], "source": [ "from sklearn.base import BaseEstimator\n", "from sklearn.base import ClassifierMixin\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.base import clone\n", "from sklearn.pipeline import _name_estimators\n", "import numpy as np\n", "import operator\n", "\n", "\n", "class MajorityVoteClassifier(BaseEstimator,\n", " ClassifierMixin):\n", " \"\"\"다수결 투표 앙상블 분류기\n", "\n", " 매개변수\n", " ----------\n", " classifiers : 배열 타입, 크기 = [n_classifiers]\n", " 앙상블에 사용할 분류기\n", "\n", " vote : str, {'classlabel', 'probability'}\n", " 기본값: 'classlabel'\n", " 'classlabel'이면 예측은 다수인 클래스 레이블의 인덱스가 됩니다\n", " 'probability'면 확률 합이 가장 큰 인덱스로\n", " 클래스 레이블을 예측합니다(보정된 분류기에 추천합니다)\n", "\n", " weights : 배열 타입, 크기 = [n_classifiers]\n", " 선택 사항, 기본값: None\n", " 'int' 또는 'float' 값의 리스트가 주어지면 분류기가 이 중요도로 가중치됩니다\n", " 'weights=None'이면 동일하게 취급합니다\n", "\n", " \"\"\"\n", " def __init__(self, classifiers, vote='classlabel', weights=None):\n", "\n", " self.classifiers = classifiers\n", " self.named_classifiers = {key: value for key, value\n", " in _name_estimators(classifiers)}\n", " self.vote = vote\n", " self.weights = weights\n", "\n", " def fit(self, X, y):\n", " \"\"\"분류기를 학습합니다\n", "\n", " 매개변수\n", " ----------\n", " X : {배열 타입, 희소 행렬},\n", " 크기 = [n_samples, n_features]\n", " 훈련 샘플 행렬\n", "\n", " y : 배열 타입, 크기 = [n_samples]\n", " 타깃 클래스 레이블 벡터\n", "\n", " 반환값\n", " -------\n", " self : 객체\n", "\n", " \"\"\"\n", " if self.vote not in ('probability', 'classlabel'):\n", " raise ValueError(\"vote는 'probability' 또는 'classlabel'이어야 합니다\"\n", " \"; (vote=%r)이 입력되었습니다.\"\n", " % self.vote)\n", "\n", " if self.weights and len(self.weights) != len(self.classifiers):\n", " raise ValueError('분류기와 가중치 개수는 같아야 합니다'\n", " '; 가중치 %d 개, 분류기 %d 개'\n", " % (len(self.weights), len(self.classifiers)))\n", "\n", " # self.predict 메서드에서 np.argmax를 호출할 때\n", " # 클래스 레이블이 0부터 시작되어야 하므로 LabelEncoder를 사용합니다\n", " self.lablenc_ = LabelEncoder()\n", " self.lablenc_.fit(y)\n", " self.classes_ = self.lablenc_.classes_\n", " self.classifiers_ = []\n", " for clf in self.classifiers:\n", " fitted_clf = clone(clf).fit(X, self.lablenc_.transform(y))\n", " self.classifiers_.append(fitted_clf)\n", " return self\n", "\n", " def predict(self, X):\n", " \"\"\"X에 대한 클래스 레이블을 예측합니다\n", "\n", " 매개변수\n", " ----------\n", " X : {배열 타입, 희소 행렬},\n", " 크기 = [n_samples, n_features]\n", " 샘플 데이터 행렬\n", "\n", " 반환값\n", " ----------\n", " maj_vote : 배열 타입, 크기 = [n_samples]\n", " 예측된 클래스 레이블\n", "\n", " \"\"\"\n", " if self.vote == 'probability':\n", " maj_vote = np.argmax(self.predict_proba(X), axis=1)\n", " else: # 'classlabel' 투표\n", "\n", " # clf.predict 메서드를 사용하여 결과를 모읍니다\n", " predictions = np.asarray([clf.predict(X)\n", " for clf in self.classifiers_]).T\n", "\n", " maj_vote = np.apply_along_axis(\n", " lambda x:\n", " np.argmax(np.bincount(x,\n", " weights=self.weights)),\n", " axis=1,\n", " arr=predictions)\n", " maj_vote = self.lablenc_.inverse_transform(maj_vote)\n", " return maj_vote\n", "\n", " def predict_proba(self, X):\n", " \"\"\"X에 대한 클래스 확률을 예측합니다\n", "\n", " 매개변수\n", " ----------\n", " X : {배열 타입, 희소 행렬},\n", " 크기 = [n_samples, n_features]\n", " n_samples는 샘플의 개수고 n_features는 특성의 개수인\n", " 샘플 데이터 행렬\n", "\n", " 반환값\n", " ----------\n", " avg_proba : 배열 타입,\n", " 크기 = [n_samples, n_classes]\n", " 샘플마다 가중치가 적용된 클래스의 평균 확률\n", "\n", " \"\"\"\n", " probas = np.asarray([clf.predict_proba(X)\n", " for clf in self.classifiers_])\n", " avg_proba = np.average(probas, axis=0, weights=self.weights)\n", " return avg_proba\n", "\n", " def get_params(self, deep=True):\n", " \"\"\"GridSearch를 위해 분류기의 매개변수 이름을 반환합니다\"\"\"\n", " if not deep:\n", " return super(MajorityVoteClassifier, self).get_params(deep=False)\n", " else:\n", " out = self.named_classifiers.copy()\n", " for name, step in self.named_classifiers.items():\n", " for key, value in step.get_params(deep=True).items():\n", " out['%s__%s' % (name, key)] = value\n", " return out" ] }, { "cell_type": "markdown", "metadata": { "id": "aHGH-uuTakGt" }, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "id": "1j1WkdY6akGt" }, "source": [ "## 7.2.2 다수결 투표 방식을 사용하여 예측 만들기" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:15.907608Z", "iopub.status.busy": "2021-10-23T06:49:15.906491Z", "iopub.status.idle": "2021-10-23T06:49:15.943680Z", "shell.execute_reply": "2021-10-23T06:49:15.942923Z" }, "id": "fQ4xAyljakGt" }, "outputs": [], "source": [ "from sklearn import datasets\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.model_selection import train_test_split\n", "\n", "iris = datasets.load_iris()\n", "X, y = iris.data[50:, [1, 2]], iris.target[50:]\n", "le = LabelEncoder()\n", "y = le.fit_transform(y)\n", "\n", "X_train, X_test, y_train, y_test =\\\n", " train_test_split(X, y,\n", " test_size=0.5,\n", " random_state=1,\n", " stratify=y)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:15.954337Z", "iopub.status.busy": "2021-10-23T06:49:15.952973Z", "iopub.status.idle": "2021-10-23T06:49:16.100761Z", "shell.execute_reply": "2021-10-23T06:49:16.099969Z" }, "id": "P06IStfuakGt", "outputId": "b94d6b3b-16c2-4f6f-caff-699bb59f8178" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "10-겹 교차 검증:\n", "\n", "ROC AUC: 0.92 (+/- 0.15) [Logistic regression]\n", "ROC AUC: 0.87 (+/- 0.18) [Decision tree]\n", "ROC AUC: 0.85 (+/- 0.13) [KNN]\n" ] } ], "source": [ "import numpy as np\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.model_selection import cross_val_score\n", "\n", "clf1 = LogisticRegression(penalty='l2',\n", " C=0.001,\n", " random_state=1)\n", "\n", "clf2 = DecisionTreeClassifier(max_depth=1,\n", " criterion='entropy',\n", " random_state=0)\n", "\n", "clf3 = KNeighborsClassifier(n_neighbors=1,\n", " p=2,\n", " metric='minkowski')\n", "\n", "pipe1 = Pipeline([['sc', StandardScaler()],\n", " ['clf', clf1]])\n", "pipe3 = Pipeline([['sc', StandardScaler()],\n", " ['clf', clf3]])\n", "\n", "clf_labels = ['Logistic regression', 'Decision tree', 'KNN']\n", "\n", "print('10-겹 교차 검증:\\n')\n", "for clf, label in zip([pipe1, clf2, pipe3], clf_labels):\n", " scores = cross_val_score(estimator=clf,\n", " X=X_train,\n", " y=y_train,\n", " cv=10,\n", " scoring='roc_auc')\n", " print(\"ROC AUC: %0.2f (+/- %0.2f) [%s]\"\n", " % (scores.mean(), scores.std(), label))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:16.115317Z", "iopub.status.busy": "2021-10-23T06:49:16.108970Z", "iopub.status.idle": "2021-10-23T06:49:16.313605Z", "shell.execute_reply": "2021-10-23T06:49:16.314115Z" }, "id": "xSQ4fuVrakGu", "outputId": "d5cabed5-3bf1-4931-c9b6-107d37ab059a", "scrolled": true }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "ROC AUC: 0.92 (+/- 0.15) [Logistic regression]\n", "ROC AUC: 0.87 (+/- 0.18) [Decision tree]\n", "ROC AUC: 0.85 (+/- 0.13) [KNN]\n", "ROC AUC: 0.98 (+/- 0.05) [Majority voting]\n" ] } ], "source": [ "# 다수결 (하드) 투표\n", "\n", "mv_clf = MajorityVoteClassifier(classifiers=[pipe1, clf2, pipe3])\n", "\n", "clf_labels += ['Majority voting']\n", "all_clf = [pipe1, clf2, pipe3, mv_clf]\n", "\n", "for clf, label in zip(all_clf, clf_labels):\n", " scores = cross_val_score(estimator=clf,\n", " X=X_train,\n", " y=y_train,\n", " cv=10,\n", " scoring='roc_auc')\n", " print(\"ROC AUC: %0.2f (+/- %0.2f) [%s]\"\n", " % (scores.mean(), scores.std(), label))" ] }, { "cell_type": "markdown", "metadata": { "id": "AY6EfPXmakGu" }, "source": [ "사이킷런의 `VotingClassifier`를 사용해 보겠습니다. `estimators` 매개변수에는 분류기 이름과 객체로 구성된 튜플의 리스트를 입력합니다. 앞에서 만든 `MajorityVoteClassifier`는 `vote` 매개변수에 상관없이 `predict_proba` 메서드를 실행할 수 있지만 사이킷런의 `VotingClassifier`는 `voting='hard'`일 경우 `predict_proba` 메서드를 지원하지 않습니다. ROC AUC를 계산하기 위해서는 예측 확률이 필요하므로 `voting='soft'`로 지정합니다." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:16.321729Z", "iopub.status.busy": "2021-10-23T06:49:16.319932Z", "iopub.status.idle": "2021-10-23T06:49:16.431082Z", "shell.execute_reply": "2021-10-23T06:49:16.430369Z" }, "id": "Y4gJx2eIakGu", "outputId": "4d16d5ce-92a2-40ae-a35c-67eef2818d23", "scrolled": true }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "ROC AUC: : 0.98 (+/- 0.05) [VotingClassifier]\n" ] } ], "source": [ "from sklearn.model_selection import cross_validate\n", "from sklearn.ensemble import VotingClassifier\n", "\n", "vc = VotingClassifier(estimators=[\n", " ('lr', pipe1), ('dt', clf2), ('knn', pipe3)], voting='soft')\n", "\n", "scores = cross_validate(estimator=vc, X=X_train, y=y_train,\n", " cv=10, scoring='roc_auc')\n", "print(\"ROC AUC: : %0.2f (+/- %0.2f) [%s]\"\n", " % (scores['test_score'].mean(),\n", " scores['test_score'].std(), 'VotingClassifier'))" ] }, { "cell_type": "markdown", "metadata": { "id": "0y7VBUZLakGv" }, "source": [ "`VotingClassifier`의 `fit` 메서드를 호출할 때 진행 과정을 출력하려면 0.23버전에서 추가된 `verbose` 매개변수를 `True`로 지정해야 합니다. 여기에서는 앞서 만든 `vc` 객체의 `set_params` 메서드를 사용해 `verbose` 매개변수를 설정하겠습니다." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:16.444974Z", "iopub.status.busy": "2021-10-23T06:49:16.440302Z", "iopub.status.idle": "2021-10-23T06:49:16.449317Z", "shell.execute_reply": "2021-10-23T06:49:16.448397Z" }, "id": "4-bZpjhgakGv", "outputId": "a8f1b001-6d39-4236-8e46-ab07120f8c92" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[Voting] ....................... (1 of 3) Processing lr, total= 0.0s\n", "[Voting] ....................... (2 of 3) Processing dt, total= 0.0s\n", "[Voting] ...................... (3 of 3) Processing knn, total= 0.0s\n" ] } ], "source": [ "vc.set_params(verbose=True)\n", "\n", "vc = vc.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": { "id": "wSnjo5y2akGv" }, "source": [ "`voting='soft'`일 때 `predict` 메서드는 `predict_proba` 메서드에서 얻은 가장 큰 확률의 클래스를 예측으로 삼습니다. `predict_proba` 메서드는 각 분류기의 클래스 확률을 평균합니다." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:16.457341Z", "iopub.status.busy": "2021-10-23T06:49:16.456318Z", "iopub.status.idle": "2021-10-23T06:49:16.460793Z", "shell.execute_reply": "2021-10-23T06:49:16.460193Z" }, "id": "0cq16Vh8akGv", "outputId": "23a4332c-c9f0-4ba4-9e12-bc6dfdc2a42d" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[0.80858947, 0.19141053],\n", " [0.80798659, 0.19201341],\n", " [0.80742142, 0.19257858],\n", " [0.81176637, 0.18823363],\n", " [0.81195778, 0.18804222],\n", " [0.17701319, 0.82298681],\n", " [0.17670572, 0.82329428],\n", " [0.17845724, 0.82154276],\n", " [0.1796252 , 0.8203748 ],\n", " [0.81076201, 0.18923799]])" ] }, "metadata": {}, "execution_count": 18 } ], "source": [ "vc.predict_proba(X_test[:10])" ] }, { "cell_type": "markdown", "metadata": { "id": "_7cUP7wLakGv" }, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "id": "b3-jCM6YakGw" }, "source": [ "## 7.2.3 앙상블 분류기의 평가와 튜닝" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:16.472747Z", "iopub.status.busy": "2021-10-23T06:49:16.470089Z", "iopub.status.idle": "2021-10-23T06:49:16.656148Z", "shell.execute_reply": "2021-10-23T06:49:16.654939Z" }, "id": "G3irAKs-akGw", "outputId": "a8c2db73-6d0a-441c-fa44-dba1c702be24", "scrolled": true }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ], "source": [ "from sklearn.metrics import roc_curve\n", "from sklearn.metrics import auc\n", "\n", "colors = ['black', 'orange', 'blue', 'green']\n", "linestyles = [':', '--', '-.', '-']\n", "for clf, label, clr, ls \\\n", " in zip(all_clf,\n", " clf_labels, colors, linestyles):\n", "\n", " # 양성 클래스의 레이블이 1이라고 가정합니다\n", " y_pred = clf.fit(X_train,\n", " y_train).predict_proba(X_test)[:, 1]\n", " fpr, tpr, thresholds = roc_curve(y_true=y_test,\n", " y_score=y_pred)\n", " roc_auc = auc(x=fpr, y=tpr)\n", " plt.plot(fpr, tpr,\n", " color=clr,\n", " linestyle=ls,\n", " label='%s (auc = %0.2f)' % (label, roc_auc))\n", "\n", "plt.legend(loc='lower right')\n", "plt.plot([0, 1], [0, 1],\n", " linestyle='--',\n", " color='gray',\n", " linewidth=2)\n", "\n", "plt.xlim([-0.1, 1.1])\n", "plt.ylim([-0.1, 1.1])\n", "plt.grid(alpha=0.5)\n", "plt.xlabel('False positive rate (FPR)')\n", "plt.ylabel('True positive rate (TPR)')\n", "\n", "\n", "# plt.savefig('images/07_04', dpi=300)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:16.662323Z", "iopub.status.busy": "2021-10-23T06:49:16.661474Z", "iopub.status.idle": "2021-10-23T06:49:16.666891Z", "shell.execute_reply": "2021-10-23T06:49:16.665873Z" }, "id": "RhGuSK9QakGw" }, "outputs": [], "source": [ "sc = StandardScaler()\n", "X_train_std = sc.fit_transform(X_train)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 497 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:16.732797Z", "iopub.status.busy": "2021-10-23T06:49:16.714390Z", "iopub.status.idle": "2021-10-23T06:49:17.479142Z", "shell.execute_reply": "2021-10-23T06:49:17.479627Z" }, "id": "wgzBjUvRakGw", "outputId": "ab85a706-28cb-451a-c050-87ad352b6493", "scrolled": true }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ], "source": [ "from itertools import product\n", "\n", "all_clf = [pipe1, clf2, pipe3, mv_clf]\n", "\n", "x_min = X_train_std[:, 0].min() - 1\n", "x_max = X_train_std[:, 0].max() + 1\n", "y_min = X_train_std[:, 1].min() - 1\n", "y_max = X_train_std[:, 1].max() + 1\n", "\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),\n", " np.arange(y_min, y_max, 0.1))\n", "\n", "f, axarr = plt.subplots(nrows=2, ncols=2,\n", " sharex='col',\n", " sharey='row',\n", " figsize=(7, 5))\n", "\n", "for idx, clf, tt in zip(product([0, 1], [0, 1]),\n", " all_clf, clf_labels):\n", " clf.fit(X_train_std, y_train)\n", "\n", " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", "\n", " axarr[idx[0], idx[1]].contourf(xx, yy, Z, alpha=0.3)\n", "\n", " axarr[idx[0], idx[1]].scatter(X_train_std[y_train==0, 0],\n", " X_train_std[y_train==0, 1],\n", " c='blue',\n", " marker='^',\n", " s=50)\n", "\n", " axarr[idx[0], idx[1]].scatter(X_train_std[y_train==1, 0],\n", " X_train_std[y_train==1, 1],\n", " c='green',\n", " marker='o',\n", " s=50)\n", "\n", " axarr[idx[0], idx[1]].set_title(tt)\n", "\n", "plt.text(-3.5, -5.,\n", " s='Sepal width [standardized]',\n", " ha='center', va='center', fontsize=12)\n", "plt.text(-12.5, 4.5,\n", " s='Petal length [standardized]',\n", " ha='center', va='center',\n", " fontsize=12, rotation=90)\n", "\n", "# plt.savefig('images/07_05', dpi=300)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:17.483867Z", "iopub.status.busy": "2021-10-23T06:49:17.483157Z", "iopub.status.idle": "2021-10-23T06:49:17.499620Z", "shell.execute_reply": "2021-10-23T06:49:17.498839Z" }, "id": "fyd8gETTakGw", "outputId": "fd4340cb-905c-4f1d-f651-6d4ec4caf54a" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "{'pipeline-1': Pipeline(steps=[('sc', StandardScaler()),\n", " ['clf', LogisticRegression(C=0.001, random_state=1)]]),\n", " 'decisiontreeclassifier': DecisionTreeClassifier(criterion='entropy', max_depth=1, random_state=0),\n", " 'pipeline-2': Pipeline(steps=[('sc', StandardScaler()),\n", " ['clf', KNeighborsClassifier(n_neighbors=1)]]),\n", " 'pipeline-1__memory': None,\n", " 'pipeline-1__steps': [('sc', StandardScaler()),\n", " ['clf', LogisticRegression(C=0.001, random_state=1)]],\n", " 'pipeline-1__verbose': False,\n", " 'pipeline-1__sc': StandardScaler(),\n", " 'pipeline-1__clf': LogisticRegression(C=0.001, random_state=1),\n", " 'pipeline-1__sc__copy': True,\n", " 'pipeline-1__sc__with_mean': True,\n", " 'pipeline-1__sc__with_std': True,\n", " 'pipeline-1__clf__C': 0.001,\n", " 'pipeline-1__clf__class_weight': None,\n", " 'pipeline-1__clf__dual': False,\n", " 'pipeline-1__clf__fit_intercept': True,\n", " 'pipeline-1__clf__intercept_scaling': 1,\n", " 'pipeline-1__clf__l1_ratio': None,\n", " 'pipeline-1__clf__max_iter': 100,\n", " 'pipeline-1__clf__multi_class': 'auto',\n", " 'pipeline-1__clf__n_jobs': None,\n", " 'pipeline-1__clf__penalty': 'l2',\n", " 'pipeline-1__clf__random_state': 1,\n", " 'pipeline-1__clf__solver': 'lbfgs',\n", " 'pipeline-1__clf__tol': 0.0001,\n", " 'pipeline-1__clf__verbose': 0,\n", " 'pipeline-1__clf__warm_start': False,\n", " 'decisiontreeclassifier__ccp_alpha': 0.0,\n", " 'decisiontreeclassifier__class_weight': None,\n", " 'decisiontreeclassifier__criterion': 'entropy',\n", " 'decisiontreeclassifier__max_depth': 1,\n", " 'decisiontreeclassifier__max_features': None,\n", " 'decisiontreeclassifier__max_leaf_nodes': None,\n", " 'decisiontreeclassifier__min_impurity_decrease': 0.0,\n", " 'decisiontreeclassifier__min_samples_leaf': 1,\n", " 'decisiontreeclassifier__min_samples_split': 2,\n", " 'decisiontreeclassifier__min_weight_fraction_leaf': 0.0,\n", " 'decisiontreeclassifier__random_state': 0,\n", " 'decisiontreeclassifier__splitter': 'best',\n", " 'pipeline-2__memory': None,\n", " 'pipeline-2__steps': [('sc', StandardScaler()),\n", " ['clf', KNeighborsClassifier(n_neighbors=1)]],\n", " 'pipeline-2__verbose': False,\n", " 'pipeline-2__sc': StandardScaler(),\n", " 'pipeline-2__clf': KNeighborsClassifier(n_neighbors=1),\n", " 'pipeline-2__sc__copy': True,\n", " 'pipeline-2__sc__with_mean': True,\n", " 'pipeline-2__sc__with_std': True,\n", " 'pipeline-2__clf__algorithm': 'auto',\n", " 'pipeline-2__clf__leaf_size': 30,\n", " 'pipeline-2__clf__metric': 'minkowski',\n", " 'pipeline-2__clf__metric_params': None,\n", " 'pipeline-2__clf__n_jobs': None,\n", " 'pipeline-2__clf__n_neighbors': 1,\n", " 'pipeline-2__clf__p': 2,\n", " 'pipeline-2__clf__weights': 'uniform'}" ] }, "metadata": {}, "execution_count": 22 } ], "source": [ "mv_clf.get_params()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:17.508731Z", "iopub.status.busy": "2021-10-23T06:49:17.507613Z", "iopub.status.idle": "2021-10-23T06:49:18.098640Z", "shell.execute_reply": "2021-10-23T06:49:18.099109Z" }, "id": "JUBENziVakGw", "outputId": "a61002ae-9a28-4a17-8efb-8fd7ebba3338", "scrolled": true }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "0.983 +/- 0.02 {'decisiontreeclassifier__max_depth': 1, 'pipeline-1__clf__C': 0.001}\n", "0.983 +/- 0.02 {'decisiontreeclassifier__max_depth': 1, 'pipeline-1__clf__C': 0.1}\n", "0.967 +/- 0.05 {'decisiontreeclassifier__max_depth': 1, 'pipeline-1__clf__C': 100.0}\n", "0.983 +/- 0.02 {'decisiontreeclassifier__max_depth': 2, 'pipeline-1__clf__C': 0.001}\n", "0.983 +/- 0.02 {'decisiontreeclassifier__max_depth': 2, 'pipeline-1__clf__C': 0.1}\n", "0.967 +/- 0.05 {'decisiontreeclassifier__max_depth': 2, 'pipeline-1__clf__C': 100.0}\n" ] } ], "source": [ "from sklearn.model_selection import GridSearchCV\n", "\n", "\n", "params = {'decisiontreeclassifier__max_depth': [1, 2],\n", " 'pipeline-1__clf__C': [0.001, 0.1, 100.0]}\n", "\n", "grid = GridSearchCV(estimator=mv_clf,\n", " param_grid=params,\n", " cv=10,\n", " scoring='roc_auc')\n", "grid.fit(X_train, y_train)\n", "\n", "for r, _ in enumerate(grid.cv_results_['mean_test_score']):\n", " print(\"%0.3f +/- %0.2f %r\"\n", " % (grid.cv_results_['mean_test_score'][r],\n", " grid.cv_results_['std_test_score'][r] / 2.0,\n", " grid.cv_results_['params'][r]))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:18.104772Z", "iopub.status.busy": "2021-10-23T06:49:18.103843Z", "iopub.status.idle": "2021-10-23T06:49:18.106926Z", "shell.execute_reply": "2021-10-23T06:49:18.107371Z" }, "id": "HiK5DNs7akGx", "outputId": "0f8f876e-fbb7-4b2f-b387-e89f195eab7e", "scrolled": true }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "최적의 매개변수: {'decisiontreeclassifier__max_depth': 1, 'pipeline-1__clf__C': 0.001}\n", "정확도: 0.98\n" ] } ], "source": [ "print('최적의 매개변수: %s' % grid.best_params_)\n", "print('정확도: %.2f' % grid.best_score_)" ] }, { "cell_type": "markdown", "metadata": { "id": "eX201uAMakGx" }, "source": [ "**노트** \n", "`GridSearchCV`의 `refit` 기본값은 `True`입니다(즉, `GridSeachCV(..., refit=True)`). 훈련된 `GridSearchCV` 추정기를 사용해 `predict` 메서드로 예측을 만들 수 있다는 뜻입니다. 예를 들면:\n", "\n", " grid = GridSearchCV(estimator=mv_clf,\n", " param_grid=params,\n", " cv=10,\n", " scoring='roc_auc')\n", " grid.fit(X_train, y_train)\n", " y_pred = grid.predict(X_test)\n", "\n", "또한 `best_estimator_` 속성으로 \"최상\"의 추정기를 얻을 수 있습니다." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:18.117078Z", "iopub.status.busy": "2021-10-23T06:49:18.115635Z", "iopub.status.idle": "2021-10-23T06:49:18.119960Z", "shell.execute_reply": "2021-10-23T06:49:18.120452Z" }, "id": "uwwtsxffakGx", "outputId": "da6371ea-49c1-4856-b048-8946e8493de4" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[Pipeline(steps=[('sc', StandardScaler()),\n", " ['clf', LogisticRegression(C=0.001, random_state=1)]]),\n", " DecisionTreeClassifier(criterion='entropy', max_depth=1, random_state=0),\n", " Pipeline(steps=[('sc', StandardScaler()),\n", " ['clf', KNeighborsClassifier(n_neighbors=1)]])]" ] }, "metadata": {}, "execution_count": 25 } ], "source": [ "grid.best_estimator_.classifiers" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:18.125801Z", "iopub.status.busy": "2021-10-23T06:49:18.124869Z", "iopub.status.idle": "2021-10-23T06:49:18.127460Z", "shell.execute_reply": "2021-10-23T06:49:18.126828Z" }, "id": "VU1_NO8yakGx" }, "outputs": [], "source": [ "mv_clf = grid.best_estimator_" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 231 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:18.143944Z", "iopub.status.busy": "2021-10-23T06:49:18.141449Z", "iopub.status.idle": "2021-10-23T06:49:18.151532Z", "shell.execute_reply": "2021-10-23T06:49:18.150423Z" }, "id": "bD8zksABakGx", "outputId": "1e2bc4ee-8e09-4ed1-a899-f9675787b231" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "MajorityVoteClassifier(classifiers=[Pipeline(steps=[('sc', StandardScaler()),\n", " ('clf',\n", " LogisticRegression(C=0.001,\n", " random_state=1))]),\n", " DecisionTreeClassifier(criterion='entropy',\n", " max_depth=1,\n", " random_state=0),\n", " Pipeline(steps=[('sc', StandardScaler()),\n", " ('clf',\n", " KNeighborsClassifier(n_neighbors=1))])])" ], "text/html": [ "
MajorityVoteClassifier(classifiers=[Pipeline(steps=[('sc', StandardScaler()),\n",
              "                                                    ('clf',\n",
              "                                                     LogisticRegression(C=0.001,\n",
              "                                                                        random_state=1))]),\n",
              "                                    DecisionTreeClassifier(criterion='entropy',\n",
              "                                                           max_depth=1,\n",
              "                                                           random_state=0),\n",
              "                                    Pipeline(steps=[('sc', StandardScaler()),\n",
              "                                                    ('clf',\n",
              "                                                     KNeighborsClassifier(n_neighbors=1))])])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ] }, "metadata": {}, "execution_count": 27 } ], "source": [ "mv_clf.set_params(**grid.best_estimator_.get_params())" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 231 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:18.167976Z", "iopub.status.busy": "2021-10-23T06:49:18.166632Z", "iopub.status.idle": "2021-10-23T06:49:18.171228Z", "shell.execute_reply": "2021-10-23T06:49:18.170574Z" }, "id": "wdSmd4SBakGx", "outputId": "a2ecd4e2-84b4-458b-9b85-faedba18d46e" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "MajorityVoteClassifier(classifiers=[Pipeline(steps=[('sc', StandardScaler()),\n", " ('clf',\n", " LogisticRegression(C=0.001,\n", " random_state=1))]),\n", " DecisionTreeClassifier(criterion='entropy',\n", " max_depth=1,\n", " random_state=0),\n", " Pipeline(steps=[('sc', StandardScaler()),\n", " ('clf',\n", " KNeighborsClassifier(n_neighbors=1))])])" ], "text/html": [ "
MajorityVoteClassifier(classifiers=[Pipeline(steps=[('sc', StandardScaler()),\n",
              "                                                    ('clf',\n",
              "                                                     LogisticRegression(C=0.001,\n",
              "                                                                        random_state=1))]),\n",
              "                                    DecisionTreeClassifier(criterion='entropy',\n",
              "                                                           max_depth=1,\n",
              "                                                           random_state=0),\n",
              "                                    Pipeline(steps=[('sc', StandardScaler()),\n",
              "                                                    ('clf',\n",
              "                                                     KNeighborsClassifier(n_neighbors=1))])])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ] }, "metadata": {}, "execution_count": 28 } ], "source": [ "mv_clf" ] }, { "cell_type": "markdown", "metadata": { "id": "IdQPEazxakGy" }, "source": [ "사이킷런 0.22버전에서 `StackingClassifier`와 `StackingRegressor`가 추가되었습니다. 앞서 만든 분류기를 사용해 `StackingClassifier`에 그리드 서치를 적용해 보겠습니다. `StackingClassifier`는 `VotingClassifier`와 비슷하게 `estimators` 매개변수로 분류기 이름과 객체로 구성된 튜플의 리스트를 입력받습니다. `final_estimator` 매개변수로는 최종 결정을 위한 분류기를 지정합니다. 매개변수 그리드를 지정할 때는 튜플에 사용한 분류기 이름을 접두사로 사용합니다." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:18.183745Z", "iopub.status.busy": "2021-10-23T06:49:18.179630Z", "iopub.status.idle": "2021-10-23T06:49:21.448091Z", "shell.execute_reply": "2021-10-23T06:49:21.446962Z" }, "id": "-1jihrWQakGy", "outputId": "86fc4740-f6cd-44a3-bc20-fc7fb9ccf6d4" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "0.950 +/- 0.07 {'dt__max_depth': 1, 'lr__clf__C': 0.001}\n", "0.983 +/- 0.02 {'dt__max_depth': 1, 'lr__clf__C': 0.1}\n", "0.967 +/- 0.05 {'dt__max_depth': 1, 'lr__clf__C': 100.0}\n", "0.950 +/- 0.07 {'dt__max_depth': 2, 'lr__clf__C': 0.001}\n", "0.983 +/- 0.02 {'dt__max_depth': 2, 'lr__clf__C': 0.1}\n", "0.967 +/- 0.05 {'dt__max_depth': 2, 'lr__clf__C': 100.0}\n" ] } ], "source": [ "from sklearn.ensemble import StackingClassifier\n", "\n", "stack = StackingClassifier(estimators=[\n", " ('lr', pipe1), ('dt', clf2), ('knn', pipe3)],\n", " final_estimator=LogisticRegression())\n", "\n", "params = {'dt__max_depth': [1, 2],\n", " 'lr__clf__C': [0.001, 0.1, 100.0]}\n", "\n", "grid = GridSearchCV(estimator=stack,\n", " param_grid=params,\n", " cv=10,\n", " scoring='roc_auc')\n", "grid.fit(X_train, y_train)\n", "\n", "for r, _ in enumerate(grid.cv_results_['mean_test_score']):\n", " print(\"%0.3f +/- %0.2f %r\"\n", " % (grid.cv_results_['mean_test_score'][r],\n", " grid.cv_results_['std_test_score'][r] / 2.0,\n", " grid.cv_results_['params'][r]))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:21.453714Z", "iopub.status.busy": "2021-10-23T06:49:21.452862Z", "iopub.status.idle": "2021-10-23T06:49:21.456054Z", "shell.execute_reply": "2021-10-23T06:49:21.456531Z" }, "id": "2Ak6GUa3akGy", "outputId": "7b752469-a137-406d-c665-3a791fdb39be", "scrolled": true }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "최적의 매개변수: {'dt__max_depth': 1, 'lr__clf__C': 0.1}\n", "정확도: 0.98\n" ] } ], "source": [ "print('최적의 매개변수: %s' % grid.best_params_)\n", "print('정확도: %.2f' % grid.best_score_)" ] }, { "cell_type": "markdown", "metadata": { "id": "qApI8cbfakGy" }, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "id": "99K1btErakGy" }, "source": [ "# 7.3 배깅: 부트스트랩 샘플링을 통한 분류 앙상블" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 401 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:21.462500Z", "iopub.status.busy": "2021-10-23T06:49:21.461755Z", "iopub.status.idle": "2021-10-23T06:49:21.465711Z", "shell.execute_reply": "2021-10-23T06:49:21.465113Z" }, "id": "9wqPbCzrakGy", "outputId": "113c0dd9-0d53-489a-e845-3a5a414b2221" }, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "execution_count": 31 } ], "source": [ "Image(url='https://git.io/Jtsk4', width=500)" ] }, { "cell_type": "markdown", "metadata": { "id": "bCnhSNYuakGy" }, "source": [ "## 7.3.1 배깅 알고리즘의 작동 방식" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 372 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:21.471688Z", "iopub.status.busy": "2021-10-23T06:49:21.470693Z", "iopub.status.idle": "2021-10-23T06:49:21.474586Z", "shell.execute_reply": "2021-10-23T06:49:21.475052Z" }, "id": "_Ksm7utrakGz", "outputId": "23fbfbe7-ac8a-4a9f-c377-7751cf2e9aff" }, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "execution_count": 32 } ], "source": [ "Image(url='https://git.io/JtskB', width=400)" ] }, { "cell_type": "markdown", "metadata": { "id": "ja5bQkOuakGz" }, "source": [ "## 7.3.2 배깅으로 Wine 데이터셋의 샘플 분류" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:21.481833Z", "iopub.status.busy": "2021-10-23T06:49:21.481095Z", "iopub.status.idle": "2021-10-23T06:49:22.329451Z", "shell.execute_reply": "2021-10-23T06:49:22.328783Z" }, "id": "hhl59rXCakGz" }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "df_wine = pd.read_csv('https://archive.ics.uci.edu/ml/'\n", " 'machine-learning-databases/wine/wine.data',\n", " header=None)\n", "\n", "df_wine.columns = ['Class label', 'Alcohol', 'Malic acid', 'Ash',\n", " 'Alcalinity of ash', 'Magnesium', 'Total phenols',\n", " 'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins',\n", " 'Color intensity', 'Hue', 'OD280/OD315 of diluted wines',\n", " 'Proline']\n", "\n", "# UCI 머신 러닝 저장소에서 Wine 데이터셋을 다운로드할 수 없을 때\n", "# 다음 주석을 해제하고 로컬 경로에서 데이터셋을 적재하세요:\n", "\n", "# df_wine = pd.read_csv('wine.data', header=None)\n", "\n", "# 클래스 1 제외\n", "df_wine = df_wine[df_wine['Class label'] != 1]\n", "\n", "y = df_wine['Class label'].values\n", "X = df_wine[['Alcohol', 'OD280/OD315 of diluted wines']].values" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:22.336868Z", "iopub.status.busy": "2021-10-23T06:49:22.336108Z", "iopub.status.idle": "2021-10-23T06:49:22.341371Z", "shell.execute_reply": "2021-10-23T06:49:22.340515Z" }, "id": "dPFZfXfqakGz" }, "outputs": [], "source": [ "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.model_selection import train_test_split\n", "\n", "\n", "le = LabelEncoder()\n", "y = le.fit_transform(y)\n", "\n", "X_train, X_test, y_train, y_test =\\\n", " train_test_split(X, y,\n", " test_size=0.2,\n", " random_state=1,\n", " stratify=y)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:22.348219Z", "iopub.status.busy": "2021-10-23T06:49:22.347182Z", "iopub.status.idle": "2021-10-23T06:49:22.350201Z", "shell.execute_reply": "2021-10-23T06:49:22.349374Z" }, "id": "jud0d9B1akGz" }, "outputs": [], "source": [ "from sklearn.ensemble import BaggingClassifier\n", "from sklearn.tree import DecisionTreeClassifier\n", "\n", "tree = DecisionTreeClassifier(criterion='entropy',\n", " max_depth=None,\n", " random_state=1)\n", "\n", "bag = BaggingClassifier(estimator=tree,\n", " n_estimators=500,\n", " max_samples=1.0,\n", " max_features=1.0,\n", " bootstrap=True,\n", " bootstrap_features=False,\n", " n_jobs=1,\n", " random_state=1)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:22.359011Z", "iopub.status.busy": "2021-10-23T06:49:22.357876Z", "iopub.status.idle": "2021-10-23T06:49:23.136509Z", "shell.execute_reply": "2021-10-23T06:49:23.135651Z" }, "id": "_Z_RDmRfakGz", "outputId": "7110bfce-c7a3-4c5c-8b3e-552fc2761029" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "결정 트리의 훈련 정확도/테스트 정확도 1.000/0.833\n", "배깅의 훈련 정확도/테스트 정확도 1.000/0.917\n" ] } ], "source": [ "from sklearn.metrics import accuracy_score\n", "\n", "tree = tree.fit(X_train, y_train)\n", "y_train_pred = tree.predict(X_train)\n", "y_test_pred = tree.predict(X_test)\n", "\n", "tree_train = accuracy_score(y_train, y_train_pred)\n", "tree_test = accuracy_score(y_test, y_test_pred)\n", "print('결정 트리의 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (tree_train, tree_test))\n", "\n", "bag = bag.fit(X_train, y_train)\n", "y_train_pred = bag.predict(X_train)\n", "y_test_pred = bag.predict(X_test)\n", "\n", "bag_train = accuracy_score(y_train, y_train_pred)\n", "bag_test = accuracy_score(y_test, y_test_pred)\n", "print('배깅의 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (bag_train, bag_test))" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 337 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:23.146380Z", "iopub.status.busy": "2021-10-23T06:49:23.145063Z", "iopub.status.idle": "2021-10-23T06:49:24.175627Z", "shell.execute_reply": "2021-10-23T06:49:24.176197Z" }, "id": "M8lTR1uyakGz", "outputId": "5288e62d-7f75-48b9-8467-29d4059b5d09" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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zJgxqFOnjsp5EokEM2bMMLu9lqSp7ZbUtWtXdO3a1SrXJqKqg0kFETmNv//+G8888wxq1qwJqVSKqKgojBw5En///bfaucuXL4dEIlH+eHp6IioqCr1798aXX36JvLw8tffs3r0bzz33HBo0aABvb2/UrVsXL7zwAlJSUtTOlcvl+Oabb/DII4/A19cX4eHh6Nu3Lw4dOqR2bnFxMaZOnYqoqCh4eXmhXbt22Llzp9bP+dVXXyEgIAAlJSXKY7du3cL48eNRp04dSKVShIWFYeDAgTh48KDa+xV/ZCp+pFIpwsPD0bVrV3zyySe4d++exu922LBhqFu3Lry9vRESEoLOnTvjt99+Uzv36NGjmDBhAtq0aQN3d3dIJBKtn6ViOyr+fPrpp1rfY4rRo0fj7Nmz+Pjjj7Fy5Uo8+uijFr2+JXzyySdGJztERM7Czd4NICIyxPr16zFixAjUqFEDzz//PGJjY3Hz5k189913WLduHX788UcMGjRI7X0zZ85EbGwsSkpKkJqain379mHKlCmYO3cuNm3ahBYtWijPnTp1KrKysjBs2DDUr18f169fx4IFC7B582acOnUKERERynPffPNNzJ07F8888wwmTJiA7OxsLF68GF26dMHBgwfRtm1b5bljxozBunXrMGXKFNSvXx/Lly9Hv379sHfvXnTq1Emtzb///jt69eoFd3d3AMDBgwfRr18/AMALL7yAJk2aIDU1FcuXL0d8fDzmz5+PV155Re06kydPxmOPPQaZTIZ79+7h0KFDmD59OubOnYuff/4Z3bt3V56blJSEvLw8jB49GlFRUSgsLMQvv/yCxMRELF68GC+99JLy3C1btuDbb79FixYtULduXVy+fFnnP7uePXti1KhRKsdatWql8z3GKCoqwuHDh/Hvf/8bkyZNsth1ly5dCrlcbrHrffLJJxg6dCgGDhxosWvawo4dO+zdBCJyBoKIyMFdvXpVeHt7i0aNGon09HSV1+7duycaNWokfHx8xLVr15THly1bJgCIY8eOqV1v9+7dwsvLS8TExIjCwkLl8T/++EPIZDKVc//44w8BQPz73/9WHispKRFeXl5i6NChKudev35dABCTJ09WHjty5IgAID777DPlsaKiIlGvXj3Rvn17tbYVFBQIT09PsWzZMiGEEFlZWSIiIkKEh4eLq1evqpxbWFgo4uPj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\n" }, "metadata": {} } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "x_min = X_train[:, 0].min() - 1\n", "x_max = X_train[:, 0].max() + 1\n", "y_min = X_train[:, 1].min() - 1\n", "y_max = X_train[:, 1].max() + 1\n", "\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),\n", " np.arange(y_min, y_max, 0.1))\n", "\n", "f, axarr = plt.subplots(nrows=1, ncols=2,\n", " sharex='col',\n", " sharey='row',\n", " figsize=(8, 3))\n", "\n", "\n", "for idx, clf, tt in zip([0, 1],\n", " [tree, bag],\n", " ['Decision tree', 'Bagging']):\n", " clf.fit(X_train, y_train)\n", "\n", " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", "\n", " axarr[idx].contourf(xx, yy, Z, alpha=0.3)\n", " axarr[idx].scatter(X_train[y_train == 0, 0],\n", " X_train[y_train == 0, 1],\n", " c='blue', marker='^')\n", "\n", " axarr[idx].scatter(X_train[y_train == 1, 0],\n", " X_train[y_train == 1, 1],\n", " c='green', marker='o')\n", "\n", " axarr[idx].set_title(tt)\n", "\n", "axarr[0].set_ylabel('Alcohol', fontsize=12)\n", "\n", "plt.tight_layout()\n", "plt.text(0, -0.2,\n", " s='OD280/OD315 of diluted wines',\n", " ha='center',\n", " va='center',\n", " fontsize=12,\n", " transform=axarr[1].transAxes)\n", "\n", "# plt.savefig('images/07_08.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "OYR6k6QQakG0" }, "source": [ "랜덤 포레스트와 배깅은 모두 기본적으로 부트스트랩 샘플링을 사용하기 때문에 분류기마다 훈련에 사용하지 않는 여분의 샘플이 남습니다. 이를 OOB(out of bag) 샘플이라고 합니다. 이를 사용하면 검증 세트를 만들지 않고 앙상블 모델을 평가할 수 있습니다. 사이킷런에서는 `oob_score` 매개변수를 `True`로 설정하면 됩니다. 이 매개변수의 기본값은 `False`입니다.\n", "사이킷런의 랜덤 포레스트는 분류일 경우 OOB 샘플에 대한 각 트리의 예측 확률을 누적하여 가장 큰 확률을 가진 클래스를 타깃과 비교하여 정확도를 계산합니다. 회귀일 경우에는 각 트리의 예측 평균에 대한 R2 점수를 계산합니다. 이 점수는 `oob_score_` 속성에 저장되어 있습니다. `RandomForestClassifier`에 Wine 데이터셋을 적용하여 OOB 점수를 계산해 보겠습니다." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:24.208798Z", "iopub.status.busy": "2021-10-23T06:49:24.193765Z", "iopub.status.idle": "2021-10-23T06:49:24.350626Z", "shell.execute_reply": "2021-10-23T06:49:24.351163Z" }, "id": "soY4R5nUakG0", "outputId": "29b2d1c7-dd5f-4171-f566-0b20604b74f4" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "랜덤 포레스트의 훈련 정확도/테스트 정확도 1.000/0.917\n", "랜덤 포레스트의 OOB 정확도 0.884\n" ] } ], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "rf = RandomForestClassifier(oob_score=True,\n", " random_state=1)\n", "rf.fit(X_train, y_train)\n", "\n", "rf_train_score = rf.score(X_train, y_train)\n", "rf_test_score = rf.score(X_test, y_test)\n", "print('랜덤 포레스트의 훈련 정확도/테스트 정확도 %.3f/%.3f' %\n", " (rf_train_score, rf_test_score))\n", "print('랜덤 포레스트의 OOB 정확도 %.3f' % rf.oob_score_)" ] }, { "cell_type": "markdown", "metadata": { "id": "30eZACHEakG0" }, "source": [ "배깅의 OOB 점수 계산 방식은 랜덤 포레스트와 거의 동일합니다. 다만 `estimator`에 지정된 분류기가 `predict_proba` 메서드를 지원하지 않을 경우 예측 클래스를 카운팅하여 가장 높은 값의 클래스를 사용해 정확도를 계산합니다. 본문에서 만든 것과 동일한 `BaggingClassifier` 모델를 만들고 OOB 점수를 계산해 보겠습니다." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:24.360022Z", "iopub.status.busy": "2021-10-23T06:49:24.359178Z", "iopub.status.idle": "2021-10-23T06:49:25.301120Z", "shell.execute_reply": "2021-10-23T06:49:25.300461Z" }, "id": "Xo_7TLQJakG0", "outputId": "62781652-5fcd-4a35-9f7a-9f81e9ec78a6" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "배깅의 훈련 정확도/테스트 정확도 1.000/0.917\n", "배깅의 OOB 정확도 0.895\n" ] } ], "source": [ "bag = BaggingClassifier(estimator=tree,\n", " n_estimators=500,\n", " oob_score=True,\n", " random_state=1)\n", "bag.fit(X_train, y_train)\n", "\n", "bag_train_score = bag.score(X_train, y_train)\n", "bag_test_score = bag.score(X_test, y_test)\n", "print('배깅의 훈련 정확도/테스트 정확도 %.3f/%.3f' %\n", " (bag_train_score, bag_test_score))\n", "print('배깅의 OOB 정확도 %.3f' % bag.oob_score_)" ] }, { "cell_type": "markdown", "metadata": { "id": "GPagbVtQakG0" }, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "id": "exAngFFZakG0" }, "source": [ "# 7.4 약한 학습기를 이용한 에이다부스트" ] }, { "cell_type": "markdown", "metadata": { "id": "iasLA54vakG0" }, "source": [ "## 7.4.1 부스팅 작동 원리" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:25.306574Z", "iopub.status.busy": "2021-10-23T06:49:25.305848Z", "iopub.status.idle": "2021-10-23T06:49:25.309339Z", "shell.execute_reply": "2021-10-23T06:49:25.308702Z" }, "id": "3mPoPzn9akG0", "outputId": "62b79442-7407-4e4a-b008-62e175da0d1d" }, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "execution_count": 40 } ], "source": [ "Image(url='https://git.io/Jtsk0', width=400)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 288 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:25.314805Z", "iopub.status.busy": "2021-10-23T06:49:25.313995Z", "iopub.status.idle": "2021-10-23T06:49:25.317567Z", "shell.execute_reply": "2021-10-23T06:49:25.318012Z" }, "id": "TQ4NDP-ZakG1", "outputId": "7cd242a1-6d2b-423e-882a-44c771557174" }, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "execution_count": 41 } ], "source": [ "Image(url='https://git.io/Jtskg', width=500)" ] }, { "cell_type": "markdown", "metadata": { "id": "_8fMbcMnakG1" }, "source": [ "## 7.4.2 사이킷런에서 에이다부스트 사용" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2021-10-23T06:49:25.323428Z", "iopub.status.busy": "2021-10-23T06:49:25.322659Z", "iopub.status.idle": "2021-10-23T06:49:25.325603Z", "shell.execute_reply": "2021-10-23T06:49:25.324883Z" }, "id": "2PFYhXvXakG1" }, "outputs": [], "source": [ "from sklearn.ensemble import AdaBoostClassifier\n", "\n", "tree = DecisionTreeClassifier(criterion='entropy',\n", " max_depth=1,\n", " random_state=1)\n", "\n", "ada = AdaBoostClassifier(estimator=tree,\n", " n_estimators=500,\n", " learning_rate=0.1,\n", " random_state=1)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:25.332879Z", "iopub.status.busy": "2021-10-23T06:49:25.332157Z", "iopub.status.idle": "2021-10-23T06:49:26.130911Z", "shell.execute_reply": "2021-10-23T06:49:26.129659Z" }, "id": "PWayLlO7akG1", "outputId": "0ec5d922-b1da-4b6f-c097-eb53fcb1dab7" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "결정 트리의 훈련 정확도/테스트 정확도 0.916/0.875\n", "에이다부스트의 훈련 정확도/테스트 정확도 1.000/0.917\n" ] } ], "source": [ "tree = tree.fit(X_train, y_train)\n", "y_train_pred = tree.predict(X_train)\n", "y_test_pred = tree.predict(X_test)\n", "\n", "tree_train = accuracy_score(y_train, y_train_pred)\n", "tree_test = accuracy_score(y_test, y_test_pred)\n", "print('결정 트리의 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (tree_train, tree_test))\n", "\n", "ada = ada.fit(X_train, y_train)\n", "y_train_pred = ada.predict(X_train)\n", "y_test_pred = ada.predict(X_test)\n", "\n", "ada_train = accuracy_score(y_train, y_train_pred)\n", "ada_test = accuracy_score(y_test, y_test_pred)\n", "print('에이다부스트의 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (ada_train, ada_test))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 337 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:26.141732Z", "iopub.status.busy": "2021-10-23T06:49:26.139735Z", "iopub.status.idle": "2021-10-23T06:49:27.296205Z", "shell.execute_reply": "2021-10-23T06:49:27.296803Z" }, "id": "U95NMQQuakG1", "outputId": "bab46035-b543-4622-9e22-146527810e39" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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7NkT48ePR7Vq1bBs2TJcv34dv/zyi7JVwtD3wz/+8Q88ePAAnTp1QnR0NJKTk/HFF1+gSZMmyvEXprwDiIxi17mniMygmFJW8ePm5ibCw8NF165dxbx585RT7ZV39epVMXz4cBEeHi5cXV1FVFSU6NOnj1i9erXKfhkZGWLcuHEiKipKuLm5iejoaDFixAiRnp4uhFCfUjY9PV2MHTtWPPHEE8Lb21v4+/uLli1bip9//lnlvOWnlBVCiHv37olRo0aJ4OBg4ebmJho1aqQ8r4LiepqmrAUgpk6dqveZLV68WNSsWVM4OzurTC0YGxsrevfurfGYnJwcMWXKFBEfHy/c3NxEcHCwaNOmjfjPf/4jHj9+rLLvokWLRLNmzYSnp6fw9fUVjRo1Em+//ba4e/eu3rIREZmjb9++wsPDQ+Tl5WndZ+TIkcLV1VWkp6eLU6dOifbt2wsPDw8RFRUlpk+fLr799lu1KWX3798vWrVqJTw9PUVkZKR4++23xdatW9WmZ9U0payfn5/o3Lmz2L59u1pZrl69KpKSkkRAQIDw8PAQLVq0EBs3blTbz5D3w+rVq0W3bt1EaGiocHNzEzExMWL06NEiJSVFZT9t7wAiS5CEMHN0JxERERERVWkcU0FERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGapVIvfyeVy3L17F76+vlyOnojIDoQQyMnJQWRkpHIBL3MwrhMR2Zehcb1SJRV3795F9erV7V0MIqIq79atW4iOjjb7PIzrRESOQV9cr1RJhWK5+nUrtsHby9vOpSEiqnry8vPwzLCuynhsLsZ1IiL7MjSuV6qkQtE07u3lDW9vHzuXhoio6rJUVyXGdSIix6AvrnOgNhERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRER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KMHSkRZy0qcilZXMw6SCHBHjuuVVpLKSeZhU8OVDZmCwJDINkwpyVIzrRKYxNK5zTAWRBs5Ozlypk4ioEmFcJ7Iuzv5ERERERERmYVJBRERERERmYVJBRERERERmcaikYs+ePejbty8iIyMhSRJ+/fVXexeJiIiIiIj0cKikIi8vDwkJCfjyyy/tXRQiIiIiIjKQQ83+1LNnT/Ts2dPexSAiIiIiIiM4VFJhrMLCQhQWFip/z87OtmNpiIjIXIzrREQVk0N1fzLWzJkz4e/vr/ypXr26vYtERERmYFwnIqqYKnRSMWXKFGRlZSl/bt26Ze8iERGRGRjXiYgqpgrd/cnd3R3u7u72LgYREVkI4zoRUcVUoVsqiIiIiIjI/hyqpSI3NxdXrlxR/n79+nWcOHEC1apVQ0xMjB1LRkRERERE2jhUUvHXX3+hY8eOyt//9a9/AQBGjBiBpUuX2qlURERERESki0MlFR06dIAQwt7FICIiIiIiI3BMBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmcXF3gWwJCEEACAnJ9/OJSEiqpoU8VcRj83FuE5EZF+GxvVKlVTk5OQAABrUGWbnkhARVW05OTnw9/e3yHkAxnUiInvTF9clYanqJAcgl8tx9+5d+Pr6QpIkexfHLrKzs1G9enXcunULfn5+9i6OXfFZlOKzKMHnUMpaz0IIgZycHERGRsLJyfwetozr/HtbFp9FCT6HUnwWpewd1ytVS4WTkxOio6PtXQyH4OfnV+X/cSnwWZTisyjB51DKGs/CEi0UCozrpfj3thSfRQk+h1J8FqXsFdc5UJuIiIiIiMzCpIKIiIiIiMzCpKKScXd3x9SpU+Hu7m7votgdn0UpPosSfA6l+CwqDv5ZleKzKMHnUIrPopS9n0WlGqhNRERERES2x5YKIiIiIiIyC5MKIiIiIiIyC5MKIiIiIiIyC5MKIiIiIiIyC5OKCmrPnj3o27cvIiMjIUkSfv31V5XP16xZg27duiEoKAiSJOHEiRN2Kae16XoORUVFmDRpEho1agRvb29ERkZi+PDhuHv3rv0KbEX6/k588MEHeOKJJ+Dt7Y3AwEB06dIFhw4dsk9hrUzfsyjr1VdfhSRJmDt3rs3KZ0v6nsXIkSMhSZLKT48ePexT2CqMMb0U43opxvVSjOulHDWuM6mooPLy8pCQkIAvv/xS6+dt27bFrFmzbFwy29L1HPLz83Hs2DG89957OHbsGNasWYOLFy+iX79+diip9en7O1GnTh3Mnz8fp0+fxr59+1CjRg1069YN9+/ft3FJrU/fs1BYu3Yt/vzzT0RGRtqoZLZnyLPo0aMHUlJSlD8//vijDUtIAGN6WYzrpRjXSzGul3LYuC6owgMg1q5dq/Gz69evCwDi+PHjNi2TPeh6DgqHDx8WAERycrJtCmUnhjyLrKwsAUBs377dNoWyE23P4vbt2yIqKkqcOXNGxMbGis8//9zmZbM1Tc9ixIgR4plnnrFLeUgzxvRSjOulGNdLMa6XcqS4zpYKqlKysrIgSRICAgLsXRS7evz4MRYtWgR/f38kJCTYuzg2J5fL8cILL+Ctt95CgwYN7F0cu9u9ezdCQ0NRt25dvPbaa8jIyLB3kYgMxrhegnGdcb0se8R1F6tfgchBPHr0CJMmTcLQoUPh5+dn7+LYxcaNG/Hcc88hPz8fERER2LZtG4KDg+1dLJubNWsWXFxcMH78eHsXxe569OiBgQMHIi4uDlevXsU777yDnj174uDBg3B2drZ38Yh0YlxnXFdgXC9lr7jOpIKqhKKiIgwZMgRCCCxYsMDexbGbjh074sSJE0hPT8fixYsxZMgQHDp0CKGhofYums0cPXoU8+bNw7FjxyBJkr2LY3fPPfec8v8bNWqExo0bo1atWti9ezc6d+5sx5IR6ca4XoJxnXG9PHvFdXZ/okpP8eJJTk7Gtm3bqmxtFgB4e3sjPj4erVq1wrfffgsXFxd8++239i6WTe3duxdpaWmIiYmBi4sLXFxckJycjDfeeAM1atSwd/HsrmbNmggODsaVK1fsXRQirRjXSzGuM67rY6u4zpYKqtQUL57Lly9j165dCAoKsneRHIpcLkdhYaG9i2FTL7zwArp06aKyrXv37njhhRcwatQoO5XKcdy+fRsZGRmIiIiwd1GINGJc141xvQTjeilbxXUmFRVUbm6uSsZ5/fp1nDhxAtWqVUNMTAwePHiAmzdvKufuvnjxIgAgPDwc4eHhdimzNeh6DhEREUhKSsKxY8ewceNGyGQypKamAgCqVasGNzc3exXbKnQ9i6CgIMyYMQP9+vVDREQE0tPT8eWXX+LOnTsYPHiwHUttHfr+fZT/EuLq6orw8HDUrVvX1kW1Ol3Polq1avjwww8xaNAghIeH4+rVq3j77bcRHx+P7t2727HUVQ9jeinG9VKM66UY10s5bFy3+XxTZBG7du0SANR+RowYIYQQYsmSJRo/nzp1ql3LbWm6noNi6kVNP7t27bJ30S1O17MoKCgQAwYMEJGRkcLNzU1ERESIfv36icOHD9u72Fah799HeZV56kFdzyI/P19069ZNhISECFdXVxEbGytefvllkZqaau9iVzmM6aUY10sxrpdiXC/lqHFdEkII01MSIiIiIiKq6jhQm4iIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIiIiIzMKkgoiIKrzLly+jW7du8Pf3hyRJ+PXXX406fvfu3ZAkCbt371ZuGzlyJGrUqKGynyRJ+OCDD8wuryVpKrsldejQAR06dLDKuYmo8mBSQUQVxtmzZ/H8888jKioK7u7uiIyMxLBhw3D27Fm1fZcuXQpJkpQ/Hh4eiIyMRPfu3fHf//4XOTk5asfs2LEDL774IurUqQMvLy/UrFkT//jHP5CSkqK2r1wux9dff40mTZrAx8cHYWFh6NmzJw4cOKC2b2FhISZNmoTIyEh4enqiZcuW2LZtm9b7/OKLL+Dv74+ioiLltps3b+LVV19FjRo14O7ujtDQUPTv3x/79+9XO17xJVPx4+7ujrCwMHTo0AEff/wx7t+/r/HZDh48GDVr1oSXlxeCg4PRrl07bNiwQW3fw4cPY8yYMWjWrBlcXV0hSZLWeylbjrI/n3zyidZjTDFixAicPn0aM2bMwPLly/HUU09Z9PyW8PHHHxud7BARVRQu9i4AEZEh1qxZg6FDh6JatWp46aWXEBcXhxs3buDbb7/F6tWrsXLlSgwYMEDtuGnTpiEuLg5FRUVITU3F7t27MXHiRMyZMwfr169H48aNlftOmjQJDx48wODBg1G7dm1cu3YN8+fPx8aNG3HixAmEh4cr933rrbcwZ84cPP/88xgzZgwyMzOxcOFCtG/fHvv370eLFi2U+44cORKrV6/GxIkTUbt2bSxduhS9evXCrl270LZtW7Uy//bbb+jWrRtcXV0BAPv370evXr0AAP/4xz9Qv359pKamYunSpUhMTMS8efPw+uuvq51n/PjxaN68OWQyGe7fv48DBw5g6tSpmDNnDn7++Wd06tRJuW9ycjJycnIwYsQIREZGIj8/H7/88gv69euHhQsX4pVXXlHuu2nTJnzzzTdo3LgxatasiUuXLun8s+vatSuGDx+usu3JJ5/UeYwxCgoKcPDgQfz73//GuHHjLHbexYsXQy6XW+x8H3/8MZKSktC/f3+LndMWfv/9d3sXgYgqAkFE5OCuXLkivLy8xBNPPCHS0tJUPrt//7544oknhLe3t7h69apy+5IlSwQAceTIEbXz7dixQ3h6eorY2FiRn5+v3P7HH38ImUymsu8ff/whAIh///vfym1FRUXC09NTJCUlqex77do1AUCMHz9eue3QoUMCgJg9e7ZyW0FBgahVq5Zo3bq1Wtny8vKEh4eHWLJkiRBCiAcPHojw8HARFhYmrly5orJvfn6+SExMFE5OTmL//v3K7bt27RIAxKpVq9TOf+LECREaGioCAgLE3bt31T4vq7i4WCQkJIi6deuqbE9NTVU+t7FjxwpdrxIAYuzYsTqvY67k5GS1Z2wsxTPbtWuXzv0AiKlTp5p0DW9vbzFixAiTjtXF0LITEVkTuz8RkcObPXs28vPzsWjRIoSEhKh8FhwcjIULFyIvLw+ffvqpQefr1KkT3nvvPSQnJ+P7779Xbm/Xrh2cnFTDYrt27VCtWjWcP39eua2oqAgFBQUICwtT2Tc0NBROTk7w9PRUblu9ejWcnZ1Vavo9PDzw0ksv4eDBg7h165bKOXbs2IHCwkL07NkTALBw4UKkpqZi9uzZqFWrlsq+np6eWLZsGSRJwrRp0wy694SEBMydOxeZmZmYP3++zn2dnZ1RvXp1ZGZmqmwPCwtTuUdDFBQU4NGjR0YdAwDHjx9Hz5494efnBx8fH3Tu3Bl//vmn8vMPPvgAsbGxAEpajyRJUhsHUd7t27fRv39/eHt7IzQ0FP/85z9RWFiotp+mMRWG7vPBBx+odAuTJAl5eXnKPy9JkjBy5Ejl53fu3MGLL76IsLAwuLu7o0GDBvjf//5nctnLO3XqFCRJwvr165Xbjh49CkmS0LRpU5V9e/bsiZYtWyp/Lz+mQtG97ueff8aMGTMQHR0NDw8PdO7cGVeuXFG79qFDh9CjRw/4+/vDy8tL2ZpXVk5ODiZOnKjSva9r1644duyY3nsjIsfApIKIHN6GDRtQo0YNJCYmavy8Xbt2qFGjBn777TeDz/nCCy8A0N+1Izc3F7m5uQgODlZuU4yLWLp0KVasWIGbN2/i1KlTGDlyJAIDA1USiOPHj6NOnTrw8/NTOa+ie9SJEydUtm/atAnNmjVTJiwbNmyAh4cHhgwZorF8cXFxaNu2LXbu3ImCggKD7j0pKQmenp4a7z0vLw/p6em4evUqPv/8c2zevBmdO3c26LzaLF26FN7e3vD09ET9+vXxww8/GHTc2bNnkZiYiJMnT+Ltt9/Ge++9h+vXr6NDhw44dOgQAGDgwIH4/PPPAQBDhw7F8uXLMXfuXK3nLCgoQOfOnbF161aMGzcO//73v7F37168/fbbZt2jPsuXL4e7uzsSExOxfPlyLF++HKNHjwYA3Lt3D61atcL27dsxbtw4zJs3D/Hx8XjppZdU7sWcsjds2BABAQHYs2ePctvevXvh5OSEkydPIjs7G0DJWKEDBw6gXbt2es/5ySefYO3atXjzzTcxZcoU/Pnnnxg2bJjKPjt37kS7du2QnZ2NqVOn4uOPP0ZmZiY6deqEw4cPK/d79dVXsWDBAgwaNAhfffUV3nzzTXh6eqok80Tk4OzdVEJEpEtmZqYAIJ555hmd+/Xr108AENnZ2UII3d2fFPz9/cWTTz6p87zTp08XAMSOHTtUtl++fFk0bdpUAFD+1KxZU1y4cEFlvwYNGohOnTqpnffs2bMCgPj6669VtsfExKh0rwkICBAJCQk6yzh+/HgBQJw6dUoIobv7k0JCQoIIDAxU2z569Gjl/Tg5OYmkpCTx4MEDrefR1/2pTZs2Yu7cuWLdunViwYIFomHDhgKA+Oqrr3TekxBC9O/fX7i5ual0a7t7967w9fUV7dq1U267fv26wd2f5s6dKwCIn3/+WbktLy9PxMfHq3UhGjFihIiNjVU5HuW6P2naRwghpk6dqvZctHV/eumll0RERIRIT09X2f7cc88Jf39/ZVczY8quSe/evUWLFi2Uvw8cOFAMHDhQODs7i82bNwshhDh27JgAINatW6fcr3379qJ9+/bK3xV/v+rVqycKCwuV2+fNmycAiNOnTwshhJDL5aJ27dqie/fuQi6XK/fLz88XcXFxomvXrspt/v7+Vu8mR0TWxZYKInJoilmafH19de6n+FxR42oIHx8fjbNAKezZswcffvghhgwZojKoWXG9Bg0aYOzYsVizZg2++uorFBcXo3///khPT1fuV1BQAHd3d7Vze3h4KD9XOHPmDG7evInevXsrt+Xk5Nj03idOnIht27Zh2bJl6NmzJ2QyGR4/fmzwecvbv38/JkyYgH79+uHVV1/F0aNH0bBhQ7zzzjs6W1ZkMhl+//139O/fHzVr1lRuj4iIwP/93/9h3759Rt2vwqZNmxAREYGkpCTlNi8vL5XWJVsSQuCXX35B3759IYRAenq68qd79+7IyspSdgEyt+yJiYk4duwY8vLyAAD79u1Dr1690KRJE+zduxdASeuFJEkaJxAob9SoUXBzc1M5PwBcu3YNQEkr3OXLl/F///d/yMjIUN5XXl4eOnfujD179igHwgcEBODQoUO4e/euQfdCRI6HSQUROTTFF2ZdX/7Lfq7vC3hZubm5Wve/cOECBgwYgIYNG+Kbb75R+ay4uBhdunSBv78/5s+fjwEDBuC1117D9u3bcfXqVcyePVu5r6enp8Y+74rxBWXHJvz2228ICwtTmQ7V19fXpvf+xBNPoEuXLhg+fDg2btyI3Nxc5RdeS3Bzc8O4ceOQmZmJo0ePat3v/v37yM/PR926ddU+q1evHuRyudp4FEMkJycjPj5ebRpcTdexhfv37yMzM1M5Xqjsz6hRowAAaWlpAMwve2JiIoqLi3Hw4EFcvHgRaWlpSExMRLt27VSSivr166NatWp6zxcTE6Pye2BgIADg4cOHAErWDgFKpvstf2/ffPMNCgsLkZWVBQD49NNPcebMGVSvXh0tWrTABx98oExOiKhi4JSyROTQ/P39ERERgVOnTunc79SpU4iKilIbu6DN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\n" }, "metadata": {} } ], "source": [ "x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1\n", "y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),\n", " np.arange(y_min, y_max, 0.1))\n", "\n", "f, axarr = plt.subplots(1, 2, sharex='col', sharey='row', figsize=(8, 3))\n", "\n", "\n", "for idx, clf, tt in zip([0, 1],\n", " [tree, ada],\n", " ['Decision tree', 'AdaBoost']):\n", " clf.fit(X_train, y_train)\n", "\n", " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", "\n", " axarr[idx].contourf(xx, yy, Z, alpha=0.3)\n", " axarr[idx].scatter(X_train[y_train == 0, 0],\n", " X_train[y_train == 0, 1],\n", " c='blue', marker='^')\n", " axarr[idx].scatter(X_train[y_train == 1, 0],\n", " X_train[y_train == 1, 1],\n", " c='green', marker='o')\n", " axarr[idx].set_title(tt)\n", "\n", "axarr[0].set_ylabel('Alcohol', fontsize=12)\n", "\n", "plt.tight_layout()\n", "plt.text(0, -0.2,\n", " s='OD280/OD315 of diluted wines',\n", " ha='center',\n", " va='center',\n", " fontsize=12,\n", " transform=axarr[1].transAxes)\n", "\n", "# plt.savefig('images/07_11.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "70GXzKtSakG1" }, "source": [ "그레이디언트 부스팅은 에이다부스트와는 달리 이전의 약한 학습기가 만든 잔차 오차(residual error)에 대해 학습하는 새로운 학습기를 추가합니다. 신경망 알고리즘이 잘 맞는 이미지, 텍스트 같은 데이터를 제외하고 구조적인 데이터셋에서 현재 가장 높은 성능을 내는 알고리즘 중 하나입니다. 사이킷런에는 `GradientBoostingClassifier`와 `GradientBoostingRegressor` 클래스로 구현되어 있습니다. 앞에서 사용한 훈련 데이터를 이용하여 그레이디언트 부스팅 모델을 훈련시켜 보죠." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:27.303360Z", "iopub.status.busy": "2021-10-23T06:49:27.299845Z", "iopub.status.idle": "2021-10-23T06:49:27.317931Z", "shell.execute_reply": "2021-10-23T06:49:27.317100Z" }, "id": "xH51w1rlakG1", "outputId": "e262dbad-3b08-4306-cbd9-dfe4c832ad0f" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "그래디언트 부스팅의 훈련 정확도/테스트 정확도 1.000/0.917\n" ] } ], "source": [ "from sklearn.ensemble import GradientBoostingClassifier\n", "\n", "gbrt = GradientBoostingClassifier(n_estimators=20, random_state=42)\n", "gbrt.fit(X_train, y_train)\n", "\n", "gbrt_train_score = gbrt.score(X_train, y_train)\n", "gbrt_test_score = gbrt.score(X_test, y_test)\n", "print('그래디언트 부스팅의 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (gbrt_train_score, gbrt_test_score))" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 337 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:27.332592Z", "iopub.status.busy": "2021-10-23T06:49:27.328052Z", "iopub.status.idle": "2021-10-23T06:49:27.606368Z", "shell.execute_reply": "2021-10-23T06:49:27.606945Z" }, "id": "H5nh3RUBakG2", "outputId": "269922ed-30e2-4898-b235-aa4258d2d628" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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Zat7ISLnVFbi+qO8TJ2xknGdHAGTCqJ/2SJYmkI+W4gxdNXg6HuZSVA8RaK2vruWKIMp+2liq3shIufEuF6McZ1sgUkF0b8cuclVPj96Ra8Ag/bXVYNT+mWmGrQtOdWgLWqbbHUvROScGNcZ18l2mFQQ/cvRm1wTarXCxVFrdHZtMrQGR/4yi/QLUdpuqakGAdvVNtniXojIOTGuM66T7XD2J6J/6VvpVN+Ufrbg4eaBLzqNVyycVLqcxtbgmLuIkz6lF3mSmFlWfax9L0TknBjXGdfJdiRCCGNWindomZmZCAwMxO2kjQgI8LV3ccgJyWcJATQHS0epIdE0PWIl/1DMaj/KIcpXmjOVlcyXmZmD6MgXkZGRgYAAw7p16D4f4zqZh3Hd8pyprGQ+Q+M6kwoiFc4SLB1pISd9nKmsZB4mFeSIGNctz5nKSuZhUsGXD5mBwZLINEwqyFExrhOZxtC4zjEVRBq4urhypU4iojKEcZ3Iujj7ExERERERmYVJBRERERERmYVJBRERERERmcWhkooDBw6gZ8+eiIqKgkQiwa+//mrvIhERERERkR4OlVTk5OQgLi4OX3/9tb2LQkREREREBnKo2Z+6du2Krl272rsYRERERERkBIdKKoxVUFCAgoICxe+ZmZl2LA0REZmLcZ2IyDk5VPcnY82aNQuBgYGKnypVqti7SEREZAbGdSIi5+TUScWUKVOQkZGh+Llz5469i0RERGZgXCcick5O3f3J09MTnp6e9i4GERFZCOM6EZFzcuqWCiIiIiIisj+HaqnIzs7GtWvXFL/fvHkTp06dQoUKFRAdHW3HkhERERERkTYOlVT8888/eP755xW/v/nmmwCAwYMHY/ny5XYqFRERERER6eJQSUW7du0ghLB3MYiIiIiIyAgcU0FERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZhUkFERERERGZxs3cBLEkIAQDIysq1c0mIiMonefyVx2NzMa4TEdmXoXG9TCUVWVlZAID6tQbauSREROVbVlYWAgMDLXIegHGdiMje9MV1ibBUdZIDkMlkuH//Pvz9/SGRSOxdHLvIzMxElSpVcOfOHQQEBNi7OHbFZ1GCz6IYn0MJaz0LIQSysrIQFRUFFxfze9gyrvPvbWl8FsX4HErwWZSwd1wvUy0VLi4uqFy5sr2L4RACAgLK/T8uOT6LEnwWxfgcSljjWViihUKOcb0E/96W4LMoxudQgs+ihL3iOgdqExERERGRWZhUEBERERGRWZhUlDGenp6YNm0aPD097V0Uu+OzKMFnUYzPoQSfhfPgn1UJPotifA4l+CxK2PtZlKmB2kREREREZHtsqSAiIiIiIrMwqSAiIiIiIrMwqSAiIiIiIrMwqSAiIiIiIrMwqXBSBw4cQM+ePREVFQWJRIJff/1V6fMNGzagU6dOqFixIiQSCU6dOmWXclqbrudQWFiISZMmoWHDhvD19UVUVBQGDRqE+/fv26/AVqTv78T06dNRp04d+Pr6Ijg4GPHx8Thy5Ih9Cmtl+p5FaSNHjoREIsG8efNsVj5b0vcshgwZAolEovTTpUsX+xS2HGNML8G4XoJxvQTjeglHjetMKpxUTk4O4uLi8PXXX2v9vFWrVpg9e7aNS2Zbup5Dbm4uTpw4gQ8++AAnTpzAhg0bcPnyZSQkJNihpNan7+9ErVq1sGDBApw9exaHDh1C1apV0alTJzx48MDGJbU+fc9CbuPGjfj7778RFRVlo5LZniHPokuXLkhKSlL8/PjjjzYsIQGM6aUxrpdgXC/BuF7CYeO6IKcHQGzcuFHjZzdv3hQAxMmTJ21aJnvQ9Rzkjh49KgCIxMRE2xTKTgx5FhkZGQKA2L17t20KZSfansXdu3dFpUqVxLlz50RMTIz44osvbF42W9P0LAYPHixeeOEFu5SHNGNML8G4XoJxvQTjeglHiutsqaByJSMjAxKJBEFBQfYuil09efIES5YsQWBgIOLi4uxdHJuTyWR49dVXMXHiRNSvX9/exbG7/fv3IywsDLVr18aoUaPw8OFDexeJyGCM68UY1xnXS7NHXHez+hWIHER+fj4mTZqEAQMGICAgwN7FsYstW7bg5ZdfRm5uLiIjI7Fr1y6EhITYu1g2N3v2bLi5uWHcuHH2LorddenSBb1790a1atVw/fp1vPvuu+jatSv++usvuLq62rt4RDoxrjOuyzGul7BXXGdSQeVCYWEh+vfvDyEEFi1aZO/i2M3zzz+PU6dOIS0tDUuXLkX//v1x5MgRhIWF2btoNnP8+HHMnz8fJ06cgEQisXdx7O7ll19W/H/Dhg3x1FNPoUaNGti/fz86dOhgx5IR6ca4XoxxnXFdlb3iOrs/UZknf/EkJiZi165d5bY2CwB8fX0RGxuLZ555Bt999x3c3Nzw3Xff2btYNnXw4EGkpqYiOjoabm5ucHNzQ2JiIt566y1UrVrV3sWzu+rVqyMkJATXrl2zd1GItGJcL8G4zriuj63iOlsqqEyTv3iuXr2Kffv2oWLFivYukkORyWQoKCiwdzFs6tVXX0V8fLzSts6dO+PVV1/F0KFD7VQqx3H37l08fPgQkZGR9i4KkUaM67oxrhdjXC9hq7jOpMJJZWdnK2WcN2/exKlTp1ChQgVER0fj0aNHuH37tmLu7suXLwMAIiIiEBERYZcyW4Ou5xAZGYm+ffvixIkT2LJlC6RSKZKTkwEAFSpUgIeHh72KbRW6nkXFihUxc+ZMJCQkIDIyEmlpafj6669x79499OvXz46ltg59/z5Uv4S4u7sjIiICtWvXtnVRrU7Xs6hQoQI+/PBD9OnTBxEREbh+/TreeecdxMbGonPnznYsdfnDmF6Ccb0E43oJxvUSDhvXbT7fFFnEvn37BAC1n8GDBwshhFi2bJnGz6dNm2bXcluarucgn3pR08++ffvsXXSL0/Us8vLyxIsvviiioqKEh4eHiIyMFAkJCeLo0aP2LrZV6Pv3oaosTz2o61nk5uaKTp06idDQUOHu7i5iYmLE8OHDRXJysr2LXe4wppdgXC/BuF6Ccb2Eo8Z1iRBCmJ6SEBERERFReceB2kREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFURE5PSuXr2KTp06ITAwEBKJBL/++qtRx+/fvx8SiQT79+9XbBsyZAiqVq2qtJ9EIsH06dPNLq8laSq7JbVr1w7t2rWzyrmJqOxgUkFETuP8+fN45ZVXUKlSJXh6eiIqKgoDBw7E+fPn1fZdvnw5JBKJ4sfLywtRUVHo3LkzvvzyS2RlZakds2fPHgwbNgy1atWCj48Pqlevjv/7v/9DUlKS2r4ymQzffPMNGjVqBD8/P4SHh6Nr1674888/1fYtKCjApEmTEBUVBW9vb7Ro0QK7du3Sep9fffUVAgMDUVhYqNh2+/ZtjBw5ElWrVoWnpyfCwsLQq1cvHD58WO14+ZdM+Y+npyfCw8PRrl07fPLJJ3jw4IHGZ9uvXz9Ur14dPj4+CAkJQZs2bfDbb7+p7Xv06FGMHj0aTZs2hbu7OyQSidZ7KV2O0j+ffvqp1mNMMXjwYJw9exYzZ87EypUr8fTTT1v0/JbwySefGJ3sEBE5Czd7F4CIyBAbNmzAgAEDUKFCBbz22muoVq0abt26he+++w7r1q3DTz/9hBdffFHtuBkzZqBatWooLCxEcnIy9u/fjwkTJuDzzz/H5s2b8dRTTyn2nTRpEh49eoR+/fqhZs2auHHjBhYsWIAtW7bg1KlTiIiIUOw7ceJEfP7553jllVcwevRopKenY/HixWjbti0OHz6M5s2bK/YdMmQI1q1bhwkTJqBmzZpYvnw5unXrhn379qFVq1ZqZf7999/RqVMnuLu7AwAOHz6Mbt26AQD+7//+D/Xq1UNycjKWL1+O1q1bY/78+Xj99dfVzjNu3Dg0a9YMUqkUDx48wJ9//olp06bh888/xy+//IL27dsr9k1MTERWVhYGDx6MqKgo5ObmYv369UhISMDixYvx3//+V7Hv1q1b8e233+Kpp55C9erVceXKFZ1/dh07dsSgQYOUtjVu3FjnMcbIy8vDX3/9hffeew9jx4612HmXLl0KmUxmsfN98skn6Nu3L3r16mWxc9rCzp077V0EInIGgojIwV27dk34+PiIOnXqiNTUVKXPHjx4IOrUqSN8fX3F9evXFduXLVsmAIhjx46pnW/Pnj3C29tbxMTEiNzcXMX2P/74Q0ilUqV9//jjDwFAvPfee4pthYWFwtvbW/Tt21dp3xs3bggAYty4cYptR44cEQDE3LlzFdvy8vJEjRo1RMuWLdXKlpOTI7y8vMSyZcuEEEI8evRIREREiPDwcHHt2jWlfXNzc0Xr1q2Fi4uLOHz4sGL7vn37BACxdu1atfOfOnVKhIWFiaCgIHH//n21z0srKioScXFxonbt2krbk5OTFc9tzJgxQterBIAYM2aMzuuYKzExUe0ZG0v+zPbt26dzPwBi2rRpJl3D19dXDB482KRjdTG07ERE1sTuT0Tk8ObOnYvc3FwsWbIEoaGhSp+FhIRg8eLFyMnJwZw5cww6X/v27fHBBx8gMTERq1atUmxv06YNXFyUw2KbNm1QoUIFXLx4UbGtsLAQeXl5CA8PV9o3LCwMLi4u8Pb2Vmxbt24dXF1dlWr6vby88Nprr+Gvv/7CnTt3lM6xZ88eFBQUoGvXrgCAxYsXIzk5GXPnzkWNGjWU9vX29saKFSsgkUgwY8YMg+49Li4O8+bNQ3p6OhYsWKBzX1dXV1SpUgXp6elK28PDw5Xu0RB5eXnIz8836hgAOHnyJLp27YqAgAD4+fmhQ4cO+PvvvxWfT58+HTExMQCKW48kEonaOAhVd+/eRa9eveDr64uwsDC88cYbKCgoUNtP05gKQ/eZPn26UrcwiUSCnJwcxZ+XRCLBkCFDFJ/fu3cPw4YNQ3h4ODw9PVG/fn18//33Jpdd1ZkzZyCRSLB582bFtuPHj0MikaBJkyZK+3bt2hUtWrRQ/K46pkLeve6XX37BzJkzUblyZXh5eaFDhw64du2a2rWPHDmCLl26IDAwED4+PorWvNKysrIwYcIEpe59HTt2xIkTJ/TeGxE5BiYVROTwfvvtN1StWhWtW7fW+HmbNm1QtWpV/P777waf89VXXwWgv2tHdnY2srOzERISotgmHxexfPlyrF69Grdv38aZM2cwZMgQBAcHKyUQJ0+eRK1atRAQEKB0Xnn3qFOnTilt37p1K5o2bapIWH777Td4eXmhf//+GstXrVo1tGrVCnv37kVeXp5B9963b194e3trvPecnBykpaXh+vXr+OKLL7Bt2zZ06NDBoPNqs3z5cvj6+sLb2xv16tXDmjVrDDru/PnzaN26NU6fPo133nkHH3zwAW7evIl27drhyJEjAIDevXvjiy++AAAMGDAAK1euxLx587SeMy8vDx06dMCOHTswduxYvPfeezh48CDeeecds+5Rn5UrV8LT0xOtW7fGypUrsXLlSowYMQIAkJKSgmeeeQa7d+/G2LFjMX/+fMTGxuK1115Tuhdzyt6gQQMEBQXhwIEDim0HDx6Ei4sLTp8+jczMTADFY4X+/PNPtGnTRu85P/30U2zcuBFvv/02pkyZgr///hsDBw5U2mfv3r1o06YNMjMzMW3aNHzyySdIT09H+/btcfToUcV+I0eOxKJFi9CnTx8sXLgQb7/9Nry9vZWSeSJycPZuKiEi0iU9PV0AEC+88ILO/RISEgQAkZmZKYTQ3f1JLjAwUDRu3FjneT/66CMBQOzZs0dp+9WrV0WTJk0EAMVP9erVxaVLl5T2q1+/vmjfvr3aec+fPy8AiG+++UZpe3R0tFL3mqCgIBEXF6ezjOPGjRMAxJkzZ4QQurs/ycXFxYng4GC17SNGjFDcj4uLi+jbt6949OiR1vPo6/707LPPinnz5olNmzaJRYsWiQYNGggAYuHChTrvSQghevXqJTw8PJS6td2/f1/4+/uLNm3aKLbdvHnT4O5P8+bNEwDEL7/8otiWk5MjYmNj1boQDR48WMTExCgdD5XuT5r2EUKIadOmqT0Xbd2fXnvtNREZGSnS0tKUtr/88ssiMDBQ0dXMmLJr0r17d9G8eXPF77179xa9e/cWrq6uYtu2bUIIIU6cOCEAiE2bNin2a9u2rWjbtq3id/nfr7p164qCggLF9vnz5wsA4uzZs0IIIWQymahZs6bo3LmzkMlkiv1yc3NFtWrVRMeOHRXbAgMDrd5Njoisiy0VROTQ5LM0+fv769xP/rm8xtUQfn5+GmeBkjtw4AA+/PBD9O/fX2lQs/x69evXx5gxY7BhwwYsXLgQRUVF6NWrF9LS0hT75eXlwdPTU+3cXl5eis/lzp07h9u3b6N79+6KbVlZWTa99wkTJmDXrl1YsWIFunbtCqlUiidPnhh8XlWHDx/G+PHjkZCQgJEjR+L48eNo0KAB3n33XZ0tK1KpFDt37kSvXr1QvXp1xfbIyEj85z//waFDh4y6X7mtW7ciMjISffv2VWzz8fFRal2yJSEE1q9fj549e0IIgbS0NMVP586dkZGRoegCZG7ZW7dujRMnTiAnJwcAcOjQIXTr1g2NGjXCwYMHARS3XkgkEo0TCKgaOnQoPDw8lM4PADdu3ABQ3Ap39epV/Oc//8HDhw8V95WTk4MOHTrgwIEDioHwQUFBOHLkCO7fv2/QvRCR42FSQUQOTf6FWdeX/9Kf6/sCXlp2drbW/S9duoQXX3wRDRo0wLfffqv0WVFREeLj4xEYGIgFCxbgxRdfxKhRo7B7925cv34dc+fOVezr7e2tsc+7fHxB6bEJv//+O8LDw5WmQ/X397fpvdepUwfx8fEYNGgQtmzZguzsbMUXXkvw8PDA2LFjkZ6ejuPHj2vd78GDB8jNzUXt2rXVPqtbty5kMpnaeBRDJCYmIjY2Vm0aXE3XsYUHDx4gPT1dMV6o9M/QoUMBAKmpqQDML3vr1q1RVFSEv/76C5cvX0Zqaipat26NNm3aKCUV9erVQ4UKFfSeLzo6Wun34OBgAMDjx48BFK8dAhRP96t6b99++y0KCgqQkZEBAJgzZw7OnTuHKlWqoHnz5pg+fboiOSEi58ApZYnIoQUGBiIyMhJnzpzRud+ZM2dQqVIltbEL2ty9excZGRmIjY1V++zOnTuKhdS2bt2q9uX7wIEDOHfuHD7//HOl7TVr1kTdunWVBqFGRkbi3r17ateQr30RFRWl2LZ161Z06dJF6Utj3bp1cfLkSRQUFGhs8QCK793d3R01a9Y04M6LB5pfuXIFDRo00Ltv3759MWLECFy5csViX7yrVKkCAHj06JFFzmdP2tbokEqlBh0vr6l/5ZVXMHjwYI37lJ722BxPP/00vLy8cODAAURHRyMsLAy1atVC69atsXDhQhQUFODgwYMap2bWxNXVVeN2eQIqv7e5c+eiUaNGGvf18/MDAPTv3x+tW7fGxo0bsXPnTsydOxezZ8/Ghg0bFJMWEJFjY1JBRA6vR48eWLp0KQ4dOqSxW8bBgwdx69YtxcBXQ6xcuRIA0LlzZ6XtDx8+RKdOnVBQUIA9e/YgMjJS7diUlBQAmr84FhYWoqioSPF7o0aNsG/fPmRmZiolPPKBxvIvW+np6fjzzz/V1lno0aMH/vrrL6xduxavvPKK2vVu3bqFgwcPIj4+3uAZmdatW4e8vDy1e9dE3kVJXqNsCfIaaNWZvEoLDQ2Fj48PLl++rPbZpUuX4OLiokhOjBETE4Nz585BCKGUEGi6jiGCg4PVZscCilsVVGlKQEJDQ+Hv7w+pVIr4+Hid1zK37B4eHmjevDkOHjyI6OhoRXel1q1bo6CgAKtXr0ZKSopBg7QNIZ+tLCAgQO+9AcUJ+OjRozF69GikpqaiSZMmmDlzJpMKIifB7k9E5PAmTpwIb29vjBgxAg8fPlT67NGjRxg5ciR8fHwwceJEg863d+9efPTRR6hWrZrSbDU5OTno1q0b7t27h61bt2qt+a9VqxYA4KefflLafuLECVy+fFlpYbe+fftCKpViyZIlim0FBQVYtmwZWrRoofhiLJ+JqVOnTkrnHDFiBMLCwjBx4kS17iD5+fkYOnQohBCYOnWqQfd++vRpTJgwAcHBwRgzZoxiu7yLTWmFhYX44YcfFLM2GUvTyt1ZWVmYN28eQkJC0LRpU63Hurq6olOnTti0aRNu3bql2J6SkoI1a9agVatWBrdKldatWzfcv38f69atU2yTT1dsiho1aiAjI0OpJS0pKQkbN25U29fX11ctAXF1dUWfPn2wfv16nDt3Tu2Y0s/QEmVv3bo1jhw5gn379imSipCQENStWxezZ89W7GMJTZs2RY0aNfC///0P2dnZap/L700qlaolrWFhYYiKijJoulwicgxsqSAih1ezZk2sWLECAwcORMOGDdVW1E5LS8OPP/6oto4DAGzbtg2XLl1CUVERUlJSsHfvXuzatQsxMTHYvHmzYsA0AAwcOBBHjx7FsGHDcPHiRaXpLP38/BQrITdt2hQdO3bEihUrkJmZiU6dOiEpKQlfffUVvL29MWHCBMVxLVq0QL9+/TBlyhSkpqYiNjYWK1asUJRd7vfff0erVq0QGBioVP6KFSti3bp16N69O5o0aaK2ova1a9cwf/58PPvss2r3fvDgQeTn50MqleLhw4c4fPgwNm/ejMDAQGzcuFFphfARI0YgMzMTbdq0QaVKlZCcnIzVq1fj0qVL+OyzzxTdVIDiWnh5S88///wDAPj4448BFNemy6fr/frrr/Hrr7+iZ8+eiI6ORlJSEr7//nvcvn0bK1euVBrkq8nHH3+MXbt2oVWrVhg9ejTc3NywePFiFBQUGLwmiarhw4djwYIFGDRoEI4fP47IyEisXLkSPj4+Jp3v5ZdfxqRJk/Diiy9i3LhxyM3NxaJFi1CrVi21NRaaNm2K3bt34/PPP0dUVBSqVauGFi1a4NNPP8W+ffvQokULDB8+HPXq1cOjR49w4sQJ7N69W9FNzBJlb926NWbOnIk7d+4oJQ9t2rTB4sWLUbVqVVSuXNmkZ6HKxcUF3377Lbp27Yr69etj6NChqFSpEu7du4d9+/YhICAAv/32G7KyslC5cmX07dsXcXFx8PPzw+7du3Hs2DF89tlnFikLEdmAHWeeIiIyypkzZ8SAAQNEZGSkcHd3FxEREWLAgAGKKSxLk08pK//x8PAQERERomPHjmL+/PmKqWdLi4mJUTqm9I/qtKG5ublixowZol69esLb21sEBgaKHj16iJMnT6qdNy8vT7z99tsiIiJCeHp6imbNmont27crPpfJZCIsLEzMmTNH673fvHlTDB8+XERHRwt3d3cREhIiEhISxMGDB9X2lU/5Kf9xd3cXoaGhok2bNmLmzJlqq5ILIcSPP/4o4uPjRXh4uHBzcxPBwcEiPj5eaWpRbecv/VN66tGdO3eKjh07ioiICOHu7i6CgoJEp06d1Kbn1eXEiROic+fOws/PT/j4+Ijnn39e/Pnnn2rPBkasqJ2YmCgSEhKEj4+PCAkJEePHjxfbt283aUpZ+X02aNBAeHh4iNq1a4tVq1ZpnFL20qVLok2bNsLb21sAUJpeNiUlRYwZM0ZUqVJF8Xe7Q4cOYsmSJSaVXZvMzEzh6uoq/P39RVFRkWL7qlWrBADx6quvqh2jbUpZ1SmL5X8O8tXg5U6ePCl69+4tKlasKDw9PUVMTIzo37+/4u9BQUGBmDhxooiLixP+/v7C19dXxMXFGTTtMBE5DokQFprSg4iITHL06FG0aNEC58+fN6mbERERkb1xTAURkQP45JNPmFAQEZHTYksFERERERGZhS0VRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERkFiYVRERERERklv8HltZIFMi5NZUAAAAASUVORK5CYII=\n" }, "metadata": {} } ], "source": [ "x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1\n", "y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),\n", " np.arange(y_min, y_max, 0.1))\n", "\n", "f, axarr = plt.subplots(1, 2, sharex='col', sharey='row', figsize=(8, 3))\n", "\n", "\n", "for idx, clf, tt in zip([0, 1],\n", " [tree, gbrt],\n", " ['Decision tree', 'GradientBoosting']):\n", " clf.fit(X_train, y_train)\n", "\n", " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", "\n", " axarr[idx].contourf(xx, yy, Z, alpha=0.3)\n", " axarr[idx].scatter(X_train[y_train == 0, 0],\n", " X_train[y_train == 0, 1],\n", " c='blue', marker='^')\n", " axarr[idx].scatter(X_train[y_train == 1, 0],\n", " X_train[y_train == 1, 1],\n", " c='green', marker='o')\n", " axarr[idx].set_title(tt)\n", "\n", "axarr[0].set_ylabel('Alcohol', fontsize=12)\n", "\n", "plt.tight_layout()\n", "plt.text(0, -0.2,\n", " s='OD280/OD315 of diluted wines',\n", " ha='center', va='center', fontsize=12,\n", " transform=axarr[1].transAxes)\n", "\n", "# plt.savefig('images/07_gradientboosting.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "VqPTQtkSakG2" }, "source": [ "그레이디언트 부스팅에서 중요한 매개변수 중 하나는 각 트리가 오차에 기여하는 정도를 조절하는 `learning_rate`입니다. `learning_rate`이 작으면 성능은 높아지지만 많은 트리가 필요합니다. 이 매개변수의 기본값은 0.1입니다.\n", "\n", "그레이디언트 부스팅이 사용하는 손실 함수는 `loss` 매개변수에서 지정합니다. `GradientBoostingClassifier`일 경우 로지스틱 회귀를 의미하는 `'deviance'`(사이킷런 1.3버전에서 `'deviance'`가 `'log_loss'`로 바뀝니다), `GradientBoostingRegressor`일 경우 최소 제곱을 의미하는 `'squared_error'`가 기본값입니다.\n", "\n", "그레이디언트 부스팅이 오차를 학습하기 위해 사용하는 학습기는 `DecisionTreeRegressor`입니다. `DecisionTreeRegressor`의 불순도 조건은 `'squared_error'`, `'absolute_error'` 등 입니다. 따라서 그레이디언트 부스팅의 `criterion` 매개변수도 `DecisionTreeRegressor`의 불순도 조건을 따라서 `'squared_error'`, `'mae'`, 그리고 제롬 H. 프리드먼(Jerome H. Friedman)이 제안한 MSE 버전인 `'friedman_mse'`(기본값) 등을 사용합니다. 하지만 `'mae'`일 경우 그레이디언트 부스팅의 결과가 좋지 않기 때문에 이 옵션은 사이킷런 0.24버전부터 경고가 발생하고 1.1버전에서 삭제될 예정입니다.\n", "\n", "`subsample` 매개변수를 기본값 1.0 보다 작은 값으로 지정하면 훈련 데이터셋에서 `subsample` 매개변수에 지정된 비율만큼 랜덤하게 샘플링하여 트리를 훈련합니다. 이를 확률적 그레이디언트 부스팅이라고 부릅니다. 이는 랜덤 포레스트나 에이다부스트의 부트스트랩 샘플링과 비슷하게 과대적합을 줄이는 효과를 냅니다. 또한 남은 샘플을 사용해 OOB 점수를 계산할 수 있습니다. `subsample` 매개변수가 1.0보다 작을 때 그레이디언트 부스팅 객체의 `oob_improvement_` 속성에 이전 트리의 OOB 손실 값에서 현재 트리의 OOB 손실을 뺀 값이 기록되어 있습니다. 이 값에 음수를 취해서 누적하면 트리가 추가되면서 과대적합되는 지점을 찾을 수 있습니다." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "execution": { "iopub.execute_input": "2021-10-23T06:49:27.614413Z", "iopub.status.busy": "2021-10-23T06:49:27.613557Z", "iopub.status.idle": "2021-10-23T06:49:27.801646Z", "shell.execute_reply": "2021-10-23T06:49:27.802252Z" }, "id": "UnZx7UUtakG2", "outputId": "e4377fc0-625d-4ff6-bcec-d89e8531975b" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ], "source": [ "gbrt = GradientBoostingClassifier(n_estimators=100,\n", " subsample=0.5,\n", " random_state=1)\n", "gbrt.fit(X_train, y_train)\n", "oob_loss = np.cumsum(-gbrt.oob_improvement_)\n", "plt.plot(range(100), oob_loss)\n", "plt.xlabel('number of trees')\n", "plt.ylabel('loss')\n", "\n", "# plt.savefig('images/07_oob_improvement.png', dpi=300)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "_x5kQ0w4akG2" }, "source": [ "사이킷런 0.20 버전부터는 그레이디언트 부스팅에 조기 종료(early stopping) 기능을 지원하기 위한 매개변수 `n_iter_no_change`, `validation_fraction`, `tol`이 추가되었습니다. 훈련 데이터에서 `validation_fraction` 비율(기본값 0.1)만큼 떼어 내어 측정한 손실이 `n_iter_no_change` 반복 동안에 `tol` 값(기본값 1e-4) 이상 향상되지 않으면 훈련이 멈춥니다.\n", "\n", "히스토그램 기반 부스팅은 입력 특성을 256개의 구간으로 나누어 노드를 분할에 사용합니다. 일반적으로 샘플 개수가 10,000개보다 많은 경우 그레이디언트 부스팅보다 히스토그램 기반 부스팅이 훨씬 빠릅니다. 앞에서와 같은 데이터를 히스토그램 기반 부스팅 구현인 `HistGradientBoostingClassifier`에 적용해 보겠습니다." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:49:27.811066Z", "iopub.status.busy": "2021-10-23T06:49:27.809512Z", "iopub.status.idle": "2021-10-23T06:50:07.445288Z", "shell.execute_reply": "2021-10-23T06:50:07.446406Z" }, "id": "ThQj6PsMakG2", "outputId": "82cc2706-d104-4354-e0a5-bf36faf07897", "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "그래디언트 부스팅 훈련 정확도/테스트 정확도 1.000/0.917\n" ] } ], "source": [ "from sklearn.ensemble import HistGradientBoostingClassifier\n", "\n", "hgbc = HistGradientBoostingClassifier(random_state=1)\n", "hgbc.fit(X_train, y_train)\n", "\n", "hgbc_train_score = gbrt.score(X_train, y_train)\n", "hgbc_test_score = gbrt.score(X_test, y_test)\n", "print('그래디언트 부스팅 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (hgbc_train_score, hgbc_test_score))" ] }, { "cell_type": "markdown", "metadata": { "id": "R8VeoG6eakG2" }, "source": [ "사이킷런 0.24버전부터 `HistGradientBoostingClassifier`와 `HistGradientBoostingRegressor`에서 범주형 특성을 그대로 사용할 수 있습니다. `categorical_features` 매개변수에 불리언 배열이나 정수 인덱스 배열을 전달하여 범주형 특성을 알려주어야 합니다.\n", "\n", "XGBoost(https://xgboost.ai/) 에서도 `tree_method` 매개변수를 `'hist'`로 지정하여 히스토그램 기반 부스팅을 사용할 수 있습니다. 코랩에는 이미 XGBoost 라이브러리가 설치되어 있으므로 간단히 테스트해 볼 수 있습니다." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:50:07.453485Z", "iopub.status.busy": "2021-10-23T06:50:07.452197Z", "iopub.status.idle": "2021-10-23T06:50:28.247602Z", "shell.execute_reply": "2021-10-23T06:50:28.246967Z" }, "id": "ZAWbGqlzakG3", "outputId": "a506073e-313c-4a54-b470-5b32a0c425ec" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "XGBoost 훈련 정확도/테스트 정확도 0.979/0.917\n" ] } ], "source": [ "from xgboost import XGBClassifier\n", "\n", "xgb = XGBClassifier(tree_method='hist', eval_metric='logloss', use_label_encoder=False, random_state=1)\n", "xgb.fit(X_train, y_train)\n", "\n", "xgb_train_score = xgb.score(X_train, y_train)\n", "xgb_test_score = xgb.score(X_test, y_test)\n", "\n", "print('XGBoost 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (xgb_train_score, xgb_test_score))" ] }, { "cell_type": "markdown", "metadata": { "id": "1Ymv6VPqakG3" }, "source": [ "또 다른 인기 높은 히스토그램 기반 부스팅 알고리즘은 마이크로소프트에서 만든 LightGBM(https://lightgbm.readthedocs.io/) 입니다. 사실 사이킷런의 히스토그램 기반 부스팅은 LightGBM에서 영향을 많이 받았습니다. LightGBM도 코랩에서 바로 테스트해 볼 수 있습니다." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2021-10-23T06:50:28.251554Z", "iopub.status.busy": "2021-10-23T06:50:28.250551Z", "iopub.status.idle": "2021-10-23T06:50:47.228946Z", "shell.execute_reply": "2021-10-23T06:50:47.227993Z" }, "id": "6mFWQZQ7akG3", "outputId": "69f235bc-39b1-4506-d845-593bdd4a8516" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "LightGBM 훈련 정확도/테스트 정확도 0.979/0.917\n" ] } ], "source": [ "from lightgbm import LGBMClassifier\n", "\n", "lgb = LGBMClassifier(random_state=1, verbosity=-1)\n", "lgb.fit(X_train, y_train)\n", "\n", "lgb_train_score = lgb.score(X_train, y_train)\n", "lgb_test_score = lgb.score(X_test, y_test)\n", "\n", "print('LightGBM 훈련 정확도/테스트 정확도 %.3f/%.3f'\n", " % (lgb_train_score, lgb_test_score))" ] }, { "cell_type": "markdown", "metadata": { "id": "ejCek1UFakG3" }, "source": [ "
" ] } ], "metadata": { "anaconda-cloud": {}, "colab": { "name": "ch07.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "toc": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 0 }