{ "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": 203 }, "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": "cae9aff6-f75d-4c28-e2b6-ce1b75cc3738" }, "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": "1a58798b-1937-4555-e4a0-a4734e0913ed" }, "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": "8a987b8f-61d1-468a-9f0c-e031a0d443d0" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "np.float64(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": "035c9d14-d46e-4b82-c266-dfd6ddc05035" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "np.float64(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": "09c9b338-f11f-48e9-a03e-05eccaad9c83" }, "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": "0e170aa7-3f19-41fc-fdea-d047da8efa0a" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "np.int64(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": "137f28f4-94ae-4091-8fb5-a6bb6e7bff9d" }, "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": "9f0e3ce4-b1da-4bd6-ffb7-34265e4bea94" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "np.int64(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(ClassifierMixin,\n", " BaseEstimator):\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": "37c0dd57-6dca-498f-ef06-b849939a41ee" }, "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": "3b026e35-cd92-4050-f2a6-2a2203ee71f6", "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": "29ed388a-bdd9-461d-a182-614a8980dd76", "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": "3f45e1a2-083f-44bb-d53d-84f7c9a62493" }, "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": "fccc4a2e-bc3e-4687-830a-bbbf249a54ca" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[0.80858947, 0.19141053],\n", " [0.8079866 , 0.1920134 ],\n", " [0.80742132, 0.19257868],\n", " [0.81176643, 0.18823357],\n", " [0.81195787, 0.18804213],\n", " [0.17701335, 0.82298665],\n", " [0.17670558, 0.82329442],\n", " [0.17845724, 0.82154276],\n", " [0.1796253 , 0.8203747 ],\n", " [0.81076209, 0.18923791]])" ] }, "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": "be0bdc17-7f10-450c-9a71-a2851493cdf7", "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": "934c1b84-893e-47bf-df63-008a3b4f993e", "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": "ff6b1cf1-d725-46b0-eac1-fec8242f8131" }, "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__transform_input': None,\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': 'deprecated',\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__monotonic_cst': None,\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__transform_input': None,\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": "442e9113-5578-468d-c881-b06f9a2e0966", "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": "47de5d54-ed37-4093-b1e2-0b385af154cc", "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": "cdc0b79c-02d9-41bc-cad9-5bd5775ef770" }, "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": 250 }, "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": "021682fa-e93b-40a6-b2ab-18f05fa9f655" }, "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": 250 }, "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": "f64b1802-21be-4610-d694-02884eef5d6c" }, "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": "d3258c0e-449a-422e-f0a7-9c4d35f3c2a9" }, "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": "18db59c9-a2b2-4802-9d1b-7bb356c16264", "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": "8668cb77-b3c7-4ca5-9a24-675ae1d2599b" }, "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": "3b8ba45a-0439-412c-87af-941f94272d32" }, "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": "270ebff9-6955-49bd-867b-c46a8722798b" }, "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": "3943da58-f558-4670-b51c-cdb0fbfd7b52" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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JeM6OQImFUT/sEWwNIWiWogxdPXg6HuYSVBWIlHb3F1LtMGU8zSx1WchIufEuF6GcZ1sgUkF0T8cechVUR892NPfoPN19eBUfJhVDtqWLDVoi94mW30WInJOjOuM62Q7TCqI/uHoQ66JDTrhwstrdE5tMrQHR/Ewi/QNUTluqVKDgO16m2zxWYjIOTGuM66T7bD6E9E/9O10qq+kny14uHngi16vKjdOqthOY3twzN3ESZ+KmzxJzGyrPtb+LETknBjXGdfJdiRCCGN2indoubm5CAgIwK2UDfD397F3c8gJKaqEAJqDpaP0kGgqj1jTLxSzur/sEO2ryJnaSubLzS1AdOQg5OTkwN/fsGkduq/HuE7mYVy3PGdqK5nP0LjOpIKoEmcJlo60kZM+ztRWMg+TCnJEjOuW50xtJfMwqeDDh8zAYElkGiYV5KgY14lMY2hc55oKIg1cXVy5UycRURXCuE5kXaz+REREREREZmFSQUREREREZmFSQUREREREZnGopGL//v144oknEBUVBYlEgl9//dXeTSIiIiIiIj0cKqkoKChAy5YtsXDhQns3hYiIiIiIDORQ1Z/69u2Lvn372rsZRERERERkBIdKKoxVXFyM4uJi5e+5ubl2bA0REZmLcZ2IyDk51PQnY82aNQsBAQHKn9q1a9u7SUREZAbGdSIi5+TUScW0adOQk5Oj/Ll9+7a9m0RERGZgXCcick5OPf1JKpVCKpXauxlERGQhjOtERM7JqUcqiIiIiIjI/hxqpCI/Px9Xr15V/n7jxg2cOnUKNWrUQHR0tB1bRkRERERE2jhUUvHXX3+hW7duyt9fe+01AMDo0aOxfPlyO7WKiIiIiIh0caikomvXrhBC2LsZRERERERkBK6pICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIiszCpICIiIiIi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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": "ff601011-626e-459e-a49d-a33e4a5876a5" }, "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": "0a169594-d2a4-447f-e985-fea64dd66e14" }, "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": "2f00e387-7b73-4efb-f9ec-cf57a8c4dfa5" }, "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": "6d8f2c74-eaed-45f0-ad8f-73210f419792" }, "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": "b45c18dd-e878-4f79-dbe4-c0a2a39d3f00" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "결정 트리의 훈련 정확도/테스트 정확도 0.916/0.875\n", "에이다부스트의 훈련 정확도/테스트 정확도 0.968/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": "f3a3c912-1bd4-4068-ce25-79224855137f" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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dlRUlBg/frzqnAkTJggA4uDBg6pjGRkZwt/fXwAQ165dUx0vLCzUuMeoUaOEl5eX2rNk+PDhAoDGT2RkpDhy5Ija+5X337Nnj+pYXl6eiI2NFbVr1xZyuVwIYfzzYfz48cLPz0+UlJTo/F70PQOILIHTn6hK8/HxUVWBunfvHnbs2IHBgwcjLy8PmZmZyMzMRFZWFnr06IFLly7h9u3bAICff/4Z8fHxqt6i8mQymdZ7eXp6ws3NDbt27TJpys+GDRsQFhaGIUOGqI65urpi3LhxyM/Pxx9//KF2/rPPPovAwEDV7wkJCQBKh9KliI2NRY8ePdSO/fTTT0hISEBgYKDq+8rMzERiYiLkcjl2796tOs/f3x/dunVTO69ly5bw8fHBzp07JbWNiMhYK1asQM2aNdG5c2cApTH72WefxapVq1RTljZs2IA2bdqgVatWqveFhIRg6NChGtcrP3qhfHYkJCSgsLAQ58+fVzvXw8MDW7duxdatW7F582YsXLgQPj4+6N27Ny5evKg6b8OGDWjVqhXat2+vOubj44NXXnkF169fV1WLMvb5EBAQgIKCAmzdutXs741IKk5/oiotPz8foaGhAIDLly9DCIEpU6ZgypQpWs/PyMhAZGQkrly5goEDB5p0L3d3d8yaNQtvvPEGatasqVqcN2zYMNWcWm1SUlJQr149ODmp5/jKYemUlBS149HR0Wq/KxMMqWsXYmNjNY5dunQJJ0+eREhIiNb3ZGRkqM7LyclRfde6ziMisia5XI5Vq1ahc+fOuHbtmup469at8emnn2L79u3o3r07UlJStJaabdCggcaxM2fO4N1338WOHTuQm5ur9lpOTo7a787OzkhMTFQ71rt3b9SrVw+TJ0/Gzz//DAA6718+7jdp0sTo58Po0aPx448/olevXoiMjET37t0xePBg9OzZU/sXRWQFTCqoyrp16xZycnJUZQSVC/DefPNNjR55JaklBydMmIB+/frhl19+webNmzFlyhTMnDkTO3bswOOPPy7p2krOzs5ajwshJF1X21xihUKBbt264e2339b6nvr166vOCw0N1boYEoDOpISIyJJ27NiB1NRUrFq1CqtWrdJ4fcWKFejevbvR18vOzkbHjh3h5+eHadOmoW7duvDw8MDRo0cxceJErQu7K4qKikKDBg1UI7vWEBoaiuPHj2Pz5s3YuHEjNm7ciCVLlmDYsGFaF3UTWQOTCqqyli9fDgCqBKJOnToASoeOK/YkVVS3bl2cPn3arPvWrVsXb7zxBt544w1cunQJzZs3x6effqpRhUopJiYGJ0+ehEKhUOuNUg6rx8TEmNWOinRN29Knbt26yM/PN+r72rZtG5566imWoSUiu1mxYgVCQ0PxxRdfaLy2Zs0arF27Fl999RViYmJw6dIljXMuXLig9vuuXbuQlZWFNWvWoEOHDqrj5UdBjFFSUoL8/HzV7zExMRr3AjTjvinPBzc3N/Tr1w/9+vWDQqHA6NGjsXDhQkyZMgVxcXFmPQOITME1FVQl7dixA9OnT0dsbKxqjmxoaCg6deqEhQsXIjU1VeM9d+/eVf3/gQMH4sSJE1i7dq3GebpGBAoLC/HgwQO1Y3Xr1oWvry+Ki4t1trV3795IS0vDDz/8oDpWUlKCzz//HD4+PujYsaP+D2skb29vAKU9b8YaPHgwDhw4gM2bN2u8lp2djZKSEtV5crkc06dP1zivpKTEpHsSEZmjqKgIa9asQd++fZGcnKzxM3bsWOTl5WH9+vXo3bs3/vzzTxw6dEj1/rt372qMtipHhsvH/YcPH+LLL780ul0XL17EhQsXEB8frzrWu3dvHDp0CAcOHFAdKygowKJFi1C7dm00atRIdZ4xz4esrCy1ezo5Oak2flU+f8x5BhCZgiMVVOlt3LgR58+fR0lJCdLT07Fjxw5s3boVMTExWL9+vdoGdV988QXat2+Ppk2b4uWXX0adOnWQnp6OAwcO4NatWzhx4gQA4K233sLq1asxaNAgvPjii2jZsiXu3buH9evX46uvvlJ7OChdvHgRXbt2xeDBg9GoUSO4uLhg7dq1SE9Px3PPPaez/a+88goWLlyIESNG4MiRI6hduzZWr16Nffv2Ye7cufD19bXI99S8eXM4Oztj1qxZyMnJgbu7O7p06aJzHYTye1i/fj369u2LESNGoGXLligoKMCpU6ewevVqXL9+HcHBwejYsSNGjRqFmTNn4vjx4+jevTtcXV1x6dIl/PTTT5g3bx6Sk5Mt8jmIiLRZv3498vLykJSUpPX1Nm3aICQkBCtWrMDChQuxfPly9OzZE+PHj1eVlFWODCi1a9cOgYGBGD58OMaNGweZTIbly5fr7FwqKSlRjUorFApcv34dX331FRQKhdrme5MmTcL333+PXr16Ydy4cahRowaWLVuGa9eu4eeff1aNShj7fPjHP/6Be/fuoUuXLoiKikJKSgo+//xzNG/eXLX+wpxnAJFJ7Fp7ikgCZUlZ5Y+bm5sICwsT3bp1E/PmzVOV2qvoypUrYtiwYSIsLEy4urqKyMhI0bdvX7F69Wq187KyssTYsWNFZGSkcHNzE1FRUWL48OEiMzNTCKFZUjYzM1OMGTNGPPbYY8Lb21v4+/uL1q1bix9//FHtuhVLygohRHp6uhg5cqQIDg4Wbm5uomnTpqrrKinvp61kLQAxdepUg9/Z4sWLRZ06dYSzs7NaacGYmBjRp08fre/Jy8sTkydPFnFxccLNzU0EBweLdu3aif/85z/i4cOHaucuWrRItGzZUnh6egpfX1/RtGlT8fbbb4s7d+4YbBsRkRT9+vUTHh4eoqCgQOc5I0aMEK6uriIzM1OcPHlSdOzYUXh4eIjIyEgxffp08c0332iUlN23b59o06aN8PT0FBEREeLtt98Wmzdv1ijPqq2krJ+fn+jatavYtm2bRluuXLkikpOTRUBAgPDw8BCtWrUSv/32m8Z5xjwfVq9eLbp37y5CQ0OFm5ubiI6OFqNGjRKpqalq5+l6BhBZgkwIias7iYiIiIioWuOaCiIiIiIikoRJBRERERERScKkgoiIiIiIJGFSQUREREREkjCpICIiIiIiSZhUEBERERGRJFVq8zuFQoE7d+7A19eX29ETEdmBEAJ5eXmIiIhQbeAlBeM6EZF9GRvXq1RScefOHdSqVcvezSAiqvZu3ryJqKgoyddhXCcicgyG4nqVSiqU29WvW7EV3l7edm4NEVH1U1BYgKeHdlPFY6kY14mI7MvYuF6lkgrl0Li3lze8vX3s3BoiourLUlOVGNeJiByDobjOhdpERERERCQJkwoiIiIiIpKESQUREREREUnCpIKIiIiIiCRhUkFERERERJIwqSAiIiIiIkmYVBARERERkSRMKoiIiIiISBImFUREREREJAmTCiIiIiIikoRJBRERERERScKkgoiIiIiIJGFSQUREREREkjCpICIiIiIiSZhUEBERERGRJEwqiIiIiIhIEiYVREREREQkCZMKIiIiIiKShEkFERERERFJwqSCiIiIiIgkYVJBRERERESSMKkgIiIiIiJJmFQQEREREZEkTCqIiIiIiEgSJhVERERERCQJkwoiIiIiIpKESQUREREREUnisEnFxx9/DJlMhgkTJti7KUREREREpIdDJhWHDx/GwoUL0axZM3s3hYiIiIiIDHC4pCI/Px9Dhw7F4sWLERgYaO/mEBERERGRAQ6XVIwZMwZ9+vRBYmKiwXOLi4uRm5ur9kNERJUX4zoRUeXkUEnFqlWrcPToUcycOdOo82fOnAl/f3/VT61atazcQiIisibGdSKiyslhkoqbN29i/PjxWLFiBTw8PIx6z+TJk5GTk6P6uXnzppVbSURE1sS4TkRUObnYuwFKR44cQUZGBlq0aKE6JpfLsXv3bsyfPx/FxcVwdnZWe4+7uzvc3d1t3VQiIrISxnUiosrJYZKKrl274tSpU2rHRo4cicceewwTJ07USCiIiIiIiMgxOExS4evriyZNmqgd8/b2RlBQkMZxIiIiIiJyHA6zpoKIiIiIiConhxmp0GbXrl32bgIRERERERnAkQoiIiIiIpKESQUREREREUnCpIKIiIiIiCRhUkFERERERJIwqSCrEwI4e8ETQti7JUREZAmM60RUEZMKsrpN2wPw0utx2Lw9wN5NISIiC2BcJ6KKmFSQVZXIga+/DQUALF4eihK5nRtERESSMK4TkTZMKsiqtu4MwJ00dwDAnVR3bNsZYJHrcuidiMg+GNeJSBsmFWQ1yt4smaz0CSGTCYv1anHonYjI9hjXiUgXJhVkNcreLCFkAAAhZBbp1eLQOxGRfTCuE5EuTCrIKir2ZilZolfLWkPvRESkG+M6EenDpIKsomJvlpLUXi1rDr0TEZFujOtEpA+TCrI4Xb1ZSlIeGNYaeiciIt0Y14nIECYVZHEnT3tr7c1SUj4wTp72Num61hx6JyIi3RjXicgQF3s3gKqeJg0L8eG7KXj0UHfO6uqmQJOGhSZdt/yc2/LK92r1TMw2tblVnhDAuYueaFi/CDLtfw8QEenFuO5YGNfJETGpIItzcxPo2iHXotcs35ulradM2auV2DkbLs4WvbVOlSWob9oegGmf1MLUt2/y4UxEZmFcdyyM6+SIOP2JKgVrDb1LURlqqrNMIxE5KsZ18zCuk6PiSAVVCtYaejdXxaBuy540U2gr08heLSJyBIzr5mFcJ0fFpIIqBWsMvUtRGYJ6xakF9phKQESkC+O66RjXyZFx+hNZhBDA2QueENqrDVYplaWmOss0EpEUjOuM60SmYFJBFlEZ5qFaypYdjh/UWaaRiKRiXGdcJzIFkwqSrDotGiuRA58vCtc47mhB3Vo73xJR9cC4zrhOZComFSSZtnmo1uAIQ/GbtgcgO0dzKZIjBXVr7nxLRNUD4zrjOpGpmFSQJLach2rvofgSOfDFYs3eLCVHCeqOWKaRiCoPxvUyjOtExmP1J5Kk4m6o1toF1d6l/oQAfvmthtberLJzSj/7iVPeaNm8wHaNq8DRyjQSUeXCuF7+HMZ1ImMxqSCz6doN1Rol7ixR6k/KTqmbtgfg0y8itb72TJ8sNGtciBNnvPDL70FITXc17eIW5mhlGomo8mBcL8W4TmQ6Tn8is9lq0ZilhuLNHWYvkQOLl4X+/Ztm1Y2DR33QqUM2Dh3xAQAsWWn/oXIiInMwrjOuE5mLSQWZxZaLxixRl1tKJZOtOwOQmq6cCqD9QTtvQYRNFjUSEVkL4zrU2sK4TmQaJhVkFlstGrNUXW5zK5mU9WbpK00i8OumQIffNImISB/G9fIY14lMxTUVZBZLLBozZi5sxQWDZe81fuGg5hxhgUXfGjc3WL03SxcZ5PKyD2CtRY1ERNbEuF4e4zqRqZhUkFkssWhs0/YATPukFqa+fVNrkNa1YFDJ2IWDmg8wGVLTDD8cdN9fINBfjrEvpwIAPl8cjuwcZ5QfQrfGokYiImtiXGdcJ5KC05/ILoyZC2uJoXjdc4RLe7X0DWVv2aF9wSIgw/0cFzg5ATIn/F2OUPqiRkfYBIqIyFyM69o+D+M6VR8cqSC7MKaUoCWG4nUNsxvq1SqRA58v0r8h0qJvQwEByT1uShV7+KSUSiQisjXGdU2M61SdMKkgm6s4/KwrSJszFF8+YJfIgS+/qYnSxXjaorfuObjHTnob3BApVetDTf0cZY9bi3j9myaV7+Fb9G0oIiOKcfO2O6bP1j2NgIjIUTCua2Jcp+qGSQXZnDV3ay3fK3Tthjsys9z0nF36ANH2cEirsNGRciMktXc7KQDIIBSlDzblJknlzzV2h9Py30lqmjtemRCHAP8SAPbZaZaIyBSM65oY16m6YVJBNmXN3Vor9goprx/gX4LiYhmKHmhe2MurBI/VL9S4ztKV6j1uB4/64F9j7+hsW4kcWPz3vQ2dq6vd5auYADJVjxorjhCRI2Nc191uxnWqTrhQm2zKmru1VuwVSksv7c3KznHR+uABgMJCF+za4692rOJCPmPaZm699PLvLftO1L8b1kcnIkfGuK77vYzrVJ0wqSCbseZurZrXFijb2Eh/2Y3PF4ep7qlrIZ++tlW8tymfw9B3AljmwUxEZA2M68a0WxPjOlVFTCrIZqy5W6v2XiHtPUQVZee44tiJ0ntu2h6gdSGfvgdAxXub8rDQ1cNXEXu1iMgRMa4b027tGNepquGaCrIZS5QS1MbQZkrGUChkKJEDXyzWX26w4vxgKXOJTWk3d3MlIkfEuG5+uxnXqapxqKRiwYIFWLBgAa5fvw4AaNy4Md577z306tXLvg0ji7DEbq3a6K5ZrklbtQ9XNwUeb1ZgVLnBiqUEdd3bmIeFsofPWNzNlYgcDeO6OsZ1qs4cKqmIiorCxx9/jHr16kEIgWXLluHpp5/GsWPH0LhxY3s3jyzEkpv/mNIrJJMJHDzig17d7qNJQ817Vyw3qKSrlKChext6WCh7+IofOOHzxeHIznGGviF9U+qjExHZEuN6KcZ1qs4cak1Fv3790Lt3b9SrVw/169fHjBkz4OPjgz///NPeTSML2rQ9AC+9HofN2wMkX8vQfN7yhJDhzt+1wiveu0QOLFkRCs3FfwJ/HvFBYuds9EzMRtcOuXBzE0bd29BcYmUPX1jNR3/3pOn/DMOfy8CH76aYPI2AiMjaGNdLMa5TdeZQIxXlyeVy/PTTTygoKEDbtm21nlNcXIzi4mLV77m5lh+CJcsqX3PcEkO+5efzlpQAFy57Qi5XD+LOLgIN4oogcwK+WByG+9muGvfeujMAqenahqxLN1LSNtxd/t4KBf7ulXJBoH8Jxr6cCicn4+YSGzsnOaFNnurBR1RVMa5XPozr+j+DLozrVNU4XFJx6tQptG3bFg8ePICPjw/Wrl2LRo0aaT135syZ+OCDD2zcQpJCW91vKQvUKs7n7Qvd19q4LQD3s1017l0iBxYvU/ZmaetVElj0reaDsvy9N24rqy5yP8cFTk4w+nNZa04yUWXEuF75MK4b/gxE1YFR05+cnJzg7Oxs0o+Li3n5SoMGDXD8+HEcPHgQr732GoYPH46zZ89qPXfy5MnIyclR/dy8edOse5JtSKn7bc17nzzt/Xdvlq5h6tJeLV3D3fb8XERVDeN65cK4TkRKRv3l/95770EmdeWVkdzc3BAXFwcAaNmyJQ4fPox58+Zh4cKFGue6u7vD3d34KgvViSUXzVlKxYoatiynp+/eHZ7KQWDAI9zP1jX/VSAwoASP1Vcf7lZ+x9dvuNvtcxFVNYzrujGuG39vxnUi2zMqqXj//fet3AzdFAqF2vxaMs6m7QGY9kktTH37pkMEQCl1v61976CgR6rhc+1kuJ/tivMXvdSqcyi/4wD/Ert8LiKqXhjXjb834zqR7TnUmorJkyejV69eiI6ORl5eHlauXIldu3Zh8+bN9m5apWLpRXOWIKXut7XvnZ7uanhBnasCzs4KCAHIZOrfsaGdWh3h4U9ElRvjumn3Zlwnsj2zk4rc3Fx89tln+P3335GSkgIAiImJQd++fTFhwgT4+fmZfM2MjAwMGzYMqamp8Pf3R7NmzbB582Z069bN3GZWS5ZeNGcsXUPzUut+S2HMvZd8H4of/ndR7703bgvAq/+KU/UQGrMxE3u1iMhSGNdNuzfjOpHtmbVPxZ07d/D444/jgw8+QH5+Pp566ik89dRTKCgowPvvv48WLVogNTXV5Ot+8803uH79OoqLi5GRkYFt27YxoTCRPReX6apTLrXutxSWuHfFHsIHD5W/6y8DqLz2iVPeOHvBE6IaVw0UAtX+OyAyF+O6OsZ1x8C4ThWZNVIxceJEpKWl4bfffkPv3r3VXtu4cSMGDRqESZMmYdmyZRZpJBnPXovm9A3NG1uv2xqb/1ji3hV7COctiNDRm6UsXSgQ6C/H2JdT4e6hwJ00N3w0J0pjHrQjLrq0FkebC05UmTCuq2NcdwyM61SRWUnFpk2bMGHCBI2EAgB69eqFcePGYfHixZIbR6ax56I5fUPzuup12yL4Sq0VXvZQLXuw/LopsNzv5clU/6usad7xqVw8O7I+AM2HcnUJyI44F5yosmBc18S4bn+M66SNWdOfCgoKULNmTZ2vh4WFoaCgQOfrZB3KB0DFIeHyvVrWYO7QvK5hdUdS9lAte7DI5U7QfPCoU34Hm7drPpQBzYBclWufa/vDhIiMw7hueYzr0jGukzZmJRWNGjXC999/j4cPH2q89ujRI3z//fc6d8Em66j4AKjImnNwKz70jHnY2Sv4mjIHVL03S+0qRtyn9DuYvzhM60O5ugRkbiBFZD7GdeMwrtsW4zrpYlZSMXHiRBw8eBCtWrXCokWLsGvXLuzatQsLFy5Eq1atcOjQIUyaNMnSbSU97LVoTtdDz1CQsVfwNaUXTbM3S8nYMX2B7BxXjYfy5h0B1SYgm/OHCRGVYlw3DuO6bTGuky5mrakYNGgQCgoKMGnSJLz66quq3baFEAgNDcX//vc/JCcnW7ShpJ+9Fs2ZU6e84hxhW5XoM2UOqOacW3NoL3X4xaJw3C9XA72q1j6351xwoqqAcd0wxnXbYlwnfczep2LEiBF4/vnn8ddff6ntU/HEE0/AxcWh9tSrFqQuXDOHuXXKbVXJpOKCQVPqvCt7CE24GwL8SzD2lTQ4y4ATZ7zwy+9BWtok+/vBo/5Qq4oB2Z4bYxFVBYzrmhjX7YtxnfQxa/qTkouLC9q0aYNnn30Wzz77LNq0acOEohoxZ2je3GF1c5QfEjd1DmiThoX44J0UBPiXwJi5toAM2TmucJYBiZ2zcfAvHwPvs+2iS1uz51xwIjIf43p5jOvlMa6TIZIygLNnz+Lq1au4f/8+hJYVUsOGDZNyeXJw5gzN26qXo+KQuFwBk3rR3NwE5CVOyM4x/j8RZUANCnqE1HRTesPU318VerUM9QiW/8OkRTwrxRE5CsZ1dYzrZRjXyRCzkoorV67g+eefx6FDh7QmEwAgk8mYVFRxpg7Nmzusbo6KQ+LKah3GzgE11FZtlAH10SMgMOAR7me7ItC/BGNfToWTE3D9hjuWrQo1+P6qEJDtuTEWEZmPcV0d43oZxnUyxKykYtSoUTh16hTmzp2LhIQEBAYGWrpdVAXZqpdD88FRWq1D1/209WoZO/d2+HMZqB1drPrd1U2BrHtuuJ9dej/lZkk9E7Px8KEM9eKKqkVAtsdccCKyPcZ1xnUiJbOSin379uGdd97B66+/bun2UBVmq14OzaF43T1Sunq1jG1rQps8uLmVjdaVyIFnR9bXWgGFAZmIqhrGdcZ1IiWzkorg4GD4+/tbui1Uxdki+Jo6vK2rF83cttqqAgoRkSNgXM82+XpEVZVZScWrr76K7777DmPGjIGzcyVfeUSVSsVyghXpWjCo1DI+D317ZKsds9TQNOt3ExGZjnGdqGowKqlYs2aN2u8NGjSAXC5HfHw8XnzxRdSqVUtrcjFgwADLtJKqJW0Pmk3bAzDtk1qY+vZNg5svabkijp/2xn9mXIeHm+Xby/rdRET6Ma4TVV1GJRXJycmQyWSqSk/l//+bb76p9T0ymQxyOYsVk/kqPmgM7ZxqeBGeDHK5DEu/q4lXX0y3aFttWQFFCkM9guaQCzlO5B5F5sO7CHYLQbxfCzjL2HVHRJoY1y3LUEw/e8X070Qh5Lj46DRy5Fnwdw5CfdcmcGJMr9aKiowrsmBUUrFz505JjSEylbYHjaGdU8svwpMLYP6isL/rkZePtAJbdvnjH8PTLfoQqCz1u/X1CJpjV9Y2fHZtFjIelj24Qt1q4p+xE9EpKNHs61oj+SEi+2JctzxdMf3slXRczctFVB3d5W61OZbzB35MnYfskruqYwEuIRgcPh6P+3eU1FYhgJQrPoipm8+4Xsk8LDRukMCopKJjR2n/IhGZquKDZsmKEGzcFqi1+obyIVJ+Ed7GbQFayw0CMqSmWX7IujLU7zbUI2iqXVnbMPnCG6i4w2zGwwxMvvAGZjb41OzEwtLJDxHZH+O6ZemK6cqE4kG4Kx4EGX+9k3f/wJKb72oczy65i0U338VI3w/RLMT8vwcPbwnBypkNMPSdC3ii213DbyCHUexh3HmSdtQGSnfVTklJAQDExMSgUaNGUi9J1Zy2euT/+y5M7Rx981ntMWRtjQoolu6tN9QjaAq5kOOza7NQMaEoJQDI8Nm1T5BQo7PJU6EsnfwQkf0xrpeyZFzXFtOjYy+oEgpF2CM8CLxs1LUUQoE1Bz/Ve86aa3MQVy8cTjLdSZYu8hIZNn4bDwDY+G04Gg74E84u2jdPJsfzwLXIqPPMTirWrVuHf/3rX7h+/bra8djYWMyZMwdJSUnmXpqqOd31yAXKD3nreohUhiFrY1iyt77iA1nqA/hE7lG1KU+aBDIepuFE7lG08H/SpGtbMvkhIsfAuF7KUnFdW0yf93UgRs55AMQBoSFZaBpwC9Hexg1VHL59ETkP7us9J6foHsJkp/BkZH2T2/vrj/Vx/7YvAODeLT84HYpEn0GXTL4O2Ud+XhE+MOI8s5KKDRs2YODAgYiJicFHH32Ehg0bAgDOnTuHRYsWYcCAAfjtt9/Qs2dPcy5P1Zj+3ij133X1ajn6kLUxLN1bb+k665kPjRu6NvY8JUsnP0Rkf4zrpSwZ17XF9Ox7Psi4WA9PNk9FWIAzor2LEO0VZ9T1DpXcNOo8UeJp9DWVSkpkWDS7reqfv5OTwKLZ7fDKUMCFoxWVQm6JBRdqVzR9+nQ0a9YMe/bsgbe3t+p4UlISxo4di/bt2+ODDz5gUkEmM1SPvCJDc3ArK0v21lujznqwW4hFz1PiJlNEVQ/jeilLxXV9MX3Tkmi0GJBm8jVretew6Hnlrf4xDCnXvVS/KxQyXL/mhZ9/qolnh5jeVnJcpk+MA3Dy5EkMHz5cLaFQ8vb2xogRI3Dy5EnJjaPqpXygNFb5Ie+qouL3oHzAlphZoVn5IKvYQ1j+D3ZTxfu1QKhbTVTsZSwjQ6hbGOL9Whh9TV3//KV+fiKyH8b1UpaM6/pielaqJ45tNq3iEwC0i2qCCJ9gPREdiPQNQbuoJiZdt6REhpkz6mj883dyEpg5oy5KSlgGqioxK6nw8PDAvXv3dL5+7949eHgYuVScKi0hgLMXPCEsNHqpnDOrfYMjjbsjwP8R3n3rJj58N8WmQ96W/twVVXxgmPLHv1zIcTTnMLbc3YCjOYdRXCLX+0A398HmLHPGP2MnKq9S8aoAgH/Gvm3SIm1rJD9EZBrGdetc31Jx/fD9w1i8PEhvTN+4oDbkJv6x7uzkjI+7ji69RsVr/v2/M7u8Bmcn04a1laMUFf/5lx+toKrDrKSiS5cumDdvHg4cOKDx2sGDB/Hf//4XiYnm16inymHT9gC89HocNm8PsMj1lHNmp759E/37ZBk4W4bsHFc4y4CuHXLh5ma7eZmW/tzlSemt35W1DQOO9MSYMy9h6qVJGHPmJfQ/3At3An/X+UCX0iPYKSgRMxt8ilA39V6xULeaJpeTNdSbydEKIttgXA+w+LUtGdfHnXsJqc81gHhsrdbzhZAh65Ynzh82fZpSUv32WPb0ewj3CVY7HuEbgmVPv4ek+u1Nup6uUQoljlZUPWatqfjkk0/Qtm1btG/fHq1atUKDBg0AABcuXMChQ4cQGhqKWbNmWbSh5FisUfZTOWe2RA4s/jYUFauCVGTOmgCp5fysXe5U19xjQ2sLdO0ZkS3SgcHJGPzwKzSU99J6TymLGzsFJSKhRmfJO2pXlcouRJUZ43rliOvwu60W129n5CDjQREeBThD+MtRIygfLVr8CSDA5LYm1W+PPnFtsf/WaaQX3ENN7xpoF9XE5BEKADiwP0BtLUVFytGKA/sDkNBBf+UpqhzMSipiY2Nx8uRJzJw5Exs3bsQPP/wAoHSfivHjx2PSpEkIDTV9Th9VHtYs+2noD0wlc/7Q1FbOz5QHkjU/t7l12A3uGSGTYZfvVIxr2crkP/aN4SxzNrlsbEVVobILUWXHuG6/uB4ZfREphTmq4wohx/wHM6A1rv/d87/J4x3U9QhEzWBn+P+9L0VoSK6qlKypVZqUnJ2ckRAdb9Z7y2vVOhtLl59AcbHuuO7urkCr1tmS70WOwex9KkJDQ/HZZ5/hs88+s2R7qBKwdtlP5R+YRYVOuHDZE3K5ZiB2dhFoEFcET0/j/9DU1RtlbN1wa39uc3vrrblnhK1UhcouRJUZ47p94/ruU66o2d4VUVGBAIDL2ceQd0L/dLFckYXc+mlw84kE3K6jSfBt1PT2kZRQWJK7u0D/ARn2bgbZkFlJRUlJCQoLC+Hn56f19dzcXHh5ecHFRfKG3eSArF32s/wfmH0h/XpK2nqjEjtnGz3sbe3PbW5vvbX2jCCi6oNxvZSt4/rtjBzcKylAUOs8KMIeQRZYAgDILTDuj/Fc1ww0CvFF04AcRHvHOEQyQdWXWX/1jxs3Drt378bp06e1vv7UU0+pFnNT1WKNPQ9sQVdvlFwBo4a9bfG5ze2tt9aeEURUPTCu2z6un72Sjqt5uXgUWgjvSAGniGyE+vsiLuAsAKCw6I5R128YdAdNA9wdZnSCqjezqj9t2rQJycnJOl9PTk7Ghg0bzG4UOa7KWvZTVzm/+YvDjKob7sif2xp7RhBR9eHI8U2fyh7Xo+qEonnL2mjZsBZax0SjT2QR2oe0RvuQ1hjVZJBR+0aMajII7UNaM6Egh2DWSMWdO3cQGRmp8/WIiAjcvn3b7EZJpfD1gMLb0273r6pKSoDF34XpX3D2XU106VcMR5r5prvdAtk5rmW//f0g2fpnCHr0zDfi/aXs/bllAMY3moJ/H3/9799EhVeB8Y3ehczPBwrbN4+qGYVTib2bQCYwt0CEvelut/a4XnG0wtE/t3LfiOHrpumI6ubtG0FkTWb9CRQUFIQLFy7ofP3cuXM611vYwkNvGVx9WPfY0o4f9kDqHVedrwshw507bjh6yRPNn3xgw5bpt+VXHx3t1vEg+SYIHfoXwPnv/zoc8XPLhRynMg8j68FdBHmEoHWdbvjAYz7mn5iOu0VpqvNCPMMwNv5dtIvsgYc2aRlVdw/1lAslx1NZyznrKtOqM65XSBAc8XPLFQrsuXFCVcq1T1xbLHv6PUza/iXu5GeqzovwDcHMLq+ZvG8EkbWZlVT07NkTCxcuxNChQ/H444+rvXb06FEsWrQIgwYNskgDzRJUAvg+st/9q6hGXUowddFtPCrW/UeDq7tAoy75gLvtNi3SR14CLP0qUGdvVEVCyJB6yxU79nqiW3LpPFhH+NxCABdOeKBB/APsubYF8/fPxN2CcsmDdxjGtpuM75/fhlNpR5BVeBdBXiFoGtby754s/vdANuLOkYrKpDKWczY0ylCRttEKR/jcQgA3zvsguk02DqUcwPhDC5FekK16PcInGB93HY1To5ZbZN8IImuTCWH6pvR37tzBk08+iYyMDCQlJaFx48YAgNOnT+PXX39FaGgoDh48iKioKIs3WJ/c3Fz4+/vjzxu74OPnY9N7k2M6tMcHL/ZrYNJ7ZE4CkdEP8dtfpx1mGtf6VTXwzquxGDp3AVZmj9aoXK58rM7p+wm6xXWxdfOIVPJz89EmuhNycnIsMmKtjOvb1u6HtzfjOgFHT3hjzFt1THqPTCYQHvYQP/zvokNM4zp7JR17ztbC0s8boMP0/2K3fLzGOcq4bs5u1kSWlJtbgOjwZwzGdbP+ZIqIiMBff/2FSZMmYd26dVi7tnS7eD8/PwwdOhQfffQRIiIizGu5BUS43oefKyd7EBDy1H0sXf5AbfOdCxe8MWe27geSUMhw67o7bh4WDrHLZ0mJDAs/bgjI5Fh1ewaEt+Y5yj1q//PHbAxr0JS9WGQ3ua6OM0WGqiZtowzXb7hj2Srdm+462jQuuVyGX3+IAWRy7M35BNCSLyvj+uQdC9Anri3jOjk8s/thw8PDsWzZMgghcPduaf37kJAQyAxtXUlkQ9o23ykulqFZszyH3eVTCODYUT883iIXMhmw+scwpFz3AmrvgtxbdwEEAeB23l3sv3XaIruhWppcIecQPhFJpq1M68OHMtSLK3LYaVwVd/g++FdNZGV4ALV3QeHDuE5Vg+TJHTKZDKGhunsHiByNo+/y+cP34Xj15SZY+PUpDByUjpkz6pTOHfZJNer96QX3rNxC062/uFdzseHf84WT6rfng4mIJDF3nx9bKb/Dd2LnbKz7lXGdqh6jkopp06aZfGGZTIYpU6aY/D6i6qykRIaZM0qnZs2cURdyuax0lAIA8sONukZN7xrWap5Z1l/ci+HrpmmsA0nNz8TwddMw9slB+PncTp0PJiKiyky5sBwo3eG7RAFkZjGuU9Vj1EJtJyfT98iTyWSQy7XsNmNFygV9N1LXws9Py8RzIiPZq4dl1crSUQql4OBiZGW5lVY4kcmBCbUBv9uATPM/WxlKSw2efOVbvW2tOL3KmuQKOZoufEHtwWIMLlCsvIxd0Gf89bhQmyxDLuQ4kXsUmQ/vItgtBPF+LeAss35c37itdJRCKcC/BDm5zozrVGkYG9eNyhYUCoXJP8p1FqaYOXMmnnzySfj6+iI0NBT9+/fXux8GkTWsv7gXTRe+gH4/vIV//DYT/X54C00XvoD1F/da9b7KUYryO8FmZpbb7VU4A5vm/f3/1Z8apmyG9MP34ejSoTV+XBVmyeZrtf/WaZMfPEDZRk+TdyyAXGHbzgkiqnp2ZW3DgCM9MebMS5h6aRLGnHkJA470xK6sbVa9b/nyt6UEsnNcGNcZ16sk04cg9CguLsZPP/2E/v37691xW5c//vgDY8aMwZ9//omtW7fi0aNH6N69OwoK7F+pgaoH5ZBuxYCpHNK1ZmKhXJCtfNhorb9+bgDw42ogV/2/rwjfEKN6fypOryopsW6XlpR5wOUXKDo6uUKOPTdOYPW5ndhz4wQfmEQOZFfWNky+8AYyHqarHc94mIHJF96wamKh3KSvLJ4zrjOuV12SF2oLIbB9+3asWLECa9euRW5uLkJCQjBkyBCTr7Vp0ya135cuXYrQ0FAcOXIEHTp0kNpUIr3kCjkmbf9SY44oYP3SfuVHKQxu5nRuAHD+aSBmD96cvg8dn3A3enqWqpIUgOvXvPDzTzXx7JA0A+8ynyXmATviAsXyDC1WJCL7kQs5Prn0EaAnsn927RMk1Ohs8alQJm3Sx7juUBjXzWN2UnHkyBGsWLECq1atQlpaGmQyGZ577jmMHTsWbdq0sUhp2ZycHABAjRra/wUuLi5GcXGx6vfcXMet/ECOz9CQrjVL+5V/KGgz8qWbaNM2W+2Yu3sgevVpDXcjd/GumLg4OQnMnFEXAwelw8XFOjuBt4tqggifYKTmZ2p9pBvD0RYolmdosSLnDpuOcZ0sad357biv0DdVRyDjYRpO5B5FC/8nLXpv5SiFLgndUxH9RC5k3gr4exUi0v0+InxDGNftjHHdfCZNf7p69SqmT5+Oxx57DK1atcLq1asxdOhQ/PDDDxBCYODAgWjbtq1FEgqFQoEJEybgqaeeQpMmTbSeM3PmTPj7+6t+atWqpfU8ImMY23Ni6R6WimspKnJyEti5IwgDB6Xj2SFpqp/+AzKMfvAAmtOrFAqZqlfLWpydnPFx19EANAf9DUUJGYBI3xC0i9L+37+9GRrZAjh32ByM62QpZ6+k41LBLaPOzXxo+jpQfTTXUqiTyQTOnQjA413u4ok+6Uh45hb6DrrEuG5njOvSGJ1UtG3bFvXq1cP8+fPRtWtX/PHHH7hx4wZmz56NFi1aWLxhY8aMwenTp7Fq1Sqd50yePBk5OTmqn5s3b1q8HVR9GNtzYukelgP7A9QeChUpHxIH9geYfQ9diYuyV8uac3CT6rfHsqffQ7hPsNrxCN8QvP7kIMig+8FkzAJFezFlZIuMx7hOlnD2Sjqu5uXCLTjEqPOD3Yw7z1gnT3tXWEuhTggZMtM9ce2Uv9n3YFy3PMZ1aYye/nTw4EHExsZizpw56NOnD1xcJC/H0Gns2LH47bffsHv3bkRFRek8z93dHe7uuocWiUxhaEhXWdrP0j0srVpnY+nyE2bt8G1s6Vtd06vK92pZcw5uUv326BPXVmtbn4xoqDl31TcEM7u85tBDzPYa2arqGNfJUqLqhKJGjSBsuReC7Ae6RyJqOJWWl7WkJg0L8eG7KTp3+L6dkQPUcEbtRprT+xjX7YdxXRqjM4P58+dj5cqVeOaZZ1CjRg0MHDgQzz33HDp16mSxxggh8Prrr2Pt2rXYtWsXYmNjLXZtIkOUQ7rD102DDOrL+qzZw2LuDt/GLiQztAjcFnNwgdLvV9taFH0PJkdmr5EtIjKek8wZzzQbiyWHpmrEdaXnfF+z+CJtQzt8n72SjochHnjgpn6ccd2+GNelMXr60+jRo7F3715cuXIFEyZMwJ49e9C1a1dERkbivffeg0wmk7yWYsyYMfjuu++wcuVK+Pr6Ii0tDWlpaSgqKpJ0XSJjyBVyBHr44tWWA1DDU31IOsI3BFObzES/emVBXQjg6BE/GN4+0vJMKX1ri+lVUikfTMkNOyMhOh7OTs4OX85PObKlK+o5+txhoupAIeTwcvVDr0b9EOChvnligHso+rv+By3cE1THhADOXvC0S1zfduVYlY7rABw6pgOM61IZtaO2LsoKUD/88ANSU1NRs2ZN9OvXD0lJSUhMTISHh4dpjdGRlCxZsgQjRoww+H7uqE3m0tY7FOThh8GNE9E7ri1u7umG0a/EY+HXp1TDycrdr8sfswVDu5lW3IG1uFiGjb+HGJxe1avPXZMWCFpTZSnnp0zuAO0jW9WxSgh31CZHcPZKOg66HcQP6fOQU24RdqCHN9rW6YLYwC7I2tEdq2Y2wj9GnMZL/1f6X7By9+upb99Ez8Rsq7bvYYgHHgQBssAShPrdwz9/fgnpBdrvWdnjemWJ6QDjujbGxnVJSYWSQqHAjh078N1332Ht2rXIy8uDl5cX8vPzpV7aJEwqyBy6yscpA8iSvu9havJEpFz3Qu3YQvx1fD8AoGV8O7Vj1hxiLm/PjRPo98NbBs/79dnZFi99aw5j5wcrGfrn4WgBXdvDMrISzB22FiYV5AiWn1mNL3OmaRxXToEa3nIafn3lLdxL9UBIcCHWLL8CAHh2ZH3cSXNHRHgxfvjfRbhYabZOxaQiq2gvpm+eYvB9jhDXq3pMBxjXKzI2rltktbWTkxMSExORmJiIr776CuvWrcPKlSstcWkiqzJmw7t/blyE+ynvASjbWEgImU03GyqvMi0kM7V3yp4bEJqrss4dJqqq5EKO7/O+1PqaMo6sOfpf5KW9AwC4m+mF2cseIMTDU7WvxJ1Udyz7QYa2rS0f16/m5eJBuCsU/rkIDcxF04BbeFBw1aj32juuV4eYDjCum8viJZw8PDzw7LPP4tlnn7X0pYkszpjycfflaUDMbuB6Zzg5CXz0YV0IAZtuNlSesQvEMgruY/W5nXYLhuZsIGTPDQil0LVYkYhs70TuUb0b3gkAeSITiPkDuN4FkAn8sb0RnOGsiusymcAvG+uiea9sOFs4dD7wKYIi7BFCQ0oTimjvIIgaxk0Xt2dct2ZM33vzJDrGPG75RkvAuG4669WFJaoEjO718SntrVIoZBol/GxVvk/JmN1MnWROeGfnV6rfbT131dzeKWP/eWy4fIDBnoi0MnojO5/00v8VMuTcVZ8yrdxH4rej7miYaOG9UvyhllBEe8UhMkru0HHd2jH9/9a+jwW936qWU4uqEpN21CaqaowuC5cfXu4XgYqFCW2x2ZCSvt1MlRRCofa7tuoh1mTuBkLG/vNYcGSNVT+Lo1eeIiLdjN7IzkBcl8kEjn7fCE/EuqB1PWeL/XStd1YtoQAcP65bO6YXPCrCMCt/FsZ16+NIBVVrBnv9hQzIjQJSEsod1Az5+kYrTF3UZgzlbqYV57Y6yZw0HjyAcXNXLdlOc9d9KP956Ht4KY3f/Bn83b3RvlYzi04BqExVSohIU7xfCwQ6BeueAmVkXBdChowb3kjZ4oW+gy6pvSZXKHA09TLuFuQgxNsfLcLj4OxkbD9tWTJRniPHdakxXd8ITHn/2jIPPeu0gpuLm+GTTcC4bhtMKqha07fhHZT1vzfNBYThIKxtbYU1A1nFhWQZBffVhsYr0rcewdLtNHcDIWcnZwyP742Z+741+N77D/Lw9I8TLfpgMGfOMBE5FmeZM4b4jtZa/cmcuL5odju8MhTVOq5Liekfdx2NYeu0/LPQIrMoBw2/GorPuo+3WKxlXLcdTn+iak/ZOxTuE6z+Qm4U8ONq4NwAo65TcbMhUzaoM1f5zYVCvQONek/FniRrtFPKBkJ1AyNNuldqfiaGrZuGyTu+kjSkbWjOMFDaI8ghcyLH19IjAa/U+hD+FadCMa6b1U4pMT2pfnu81tK47xsAsopyLBLTAcZ1W+NIBRE0e4dquAUh+3hnPGrsCuAUAKCkRIYTx33x6FFpLu7qqkCz+Dy4upaFK3d3BVq1zrZoGT1jh6/N6UmyVrk/fSNAyofSzC6vSfoc5dsJlK6zWHBkjdk9cZW18hQRafe4f0c0iG2Pq/JjcHK+icY+Am7nn2dcN6GdSlJiOgD0jmuLBUfWGHUvJakxHWBctzUmFUR/0ygfVzdL45yhL6Qada09NywTyEwZvjY0d1W5I2v5niRzA64xD0Rd84MjDGwg1C6qCcK9g5BaoPn9G8PcIe3KtP8HERnHSeaMeiHNERYQi0bedxDdmHHd3LhubkxXfg5z47qUaUqM67bFpILICkwJZEIAx4764fEWuZCVG1s2dR6oOT1J5gRcUx6I5mwg5OzkjFmJY4yeg1uRuT1x5s4ZJqLqgXHd/E3hpMR1KaPmjOu2xaSCyAyGenSMDVDnM1MwbektfPb6MCxcfFZVOcrc4WtTe5KMbeeV+7cBmLfgzZwNhJLqt8e3T7+H8Zs/w/0HeSa9FzBvSDurKEdnlRVAe48g2c75axnw9CywdzOokrial1u6yVzJI4QiFz64BSBI73sY19XpS3TMmSokJa6bO02Jcd22mFQQmciYHh1jy+j958+VAFYCE97Du8s/wcBBIXBxEZLmgZrSk2TskPS3Jzdi3BMD8c8t8/Q+EP+15b94UFKMcJ9gyaVzlZ9jz42T2H3jGBYdW4/8h4UmXcPYHrv1F/di5PoPDZY81DdnmKzrYbAHnL2M23WYqrfLRfehiANCQ7LK7QfRWu97qmNcX3ZiA54Ib4jxmz+zeVzflXIcw9dPt1pMBxjX7YFJBZEJjO3R0VuqVhu/27jbaSj+/e2nmPViE8nzQI3tSXJ2csaI5n0MlnC9nXcXDb4cgtxHuh8AAkBmUTZe+X0WAMuUWHR2ckan2o+jU+3H0TysPob/PXRuTL1zwLgeO329h6p2yJzwTb93WHbQjoprADJvw+cRKUoeaexYrU91jet38jMxcPVkvedYK653jW2JL3u9aZWYDjCu2wuTCiIjmTp0nVS/PZYkvYs3tn6OrKIc/ReXCUDI8PWNOZj28GubzgM1toSrvoRCG0vXANc1BUAbU4a0DfUeAoBcKBDk6W9Kc8nCHgRcBXw87d0MqgRaBwTCB8YlFNU9rpvKknHdWjEdYFy3FyYVREYydeh6/cW9eGfHV4YfPEoyAbn3LcxacRv/Hm56xQ9zWWuBmpTFdbqUnwKw4fIBrSUKjSlvWB6rg1QOPSKK4ONr71ZQ5VBkcLqTEuO6aSwd160R0wHGdXthUkFkJFOClK7hdGN8u8YJ77zgYnCY3VLzQI2dJ2wOa9QAV04BSIiOR9uoJmaVNyyP1UEqhyjPOvDz4vwnsizGddNZOq5bOqYDjOv2wqSCyEjGBp8QrwC8tmG22YE882pt/PxTEJ4dUjo0PGHzXNx7kKt2ToCH5bpslfOEzS3hagxr9QaZW96wPHPqwBNR1cC4bj5rxHVLxHSAcd1enOzdAKLKQhmkZDpelwGI9A2BEDA4l1MrASCnFmQ322PmjLooKSm9U8UHDwBkP8jD8HXTsP7iXtPvYwfW7A1S9nIlN+yMhOh4kx8+yocvAI1/tuYMuxNR5cG4bj5rxXWpMV15DcZ122NSQWQkY4NUZlG26RdXdqVsmgshd8H1a17Yu88Xk7Z/qff0yTsW4GHJQ+y5cQKrz+3EnhsnIFfITbq1cqGiuWQ6H8dlD2RH7w1SLhgM9wlWOx7hG2KxheZE5HgcMa5P2v4l/kg5ZnZMB6TF9UAPX9Tw8NP5OuM66cLpT0QmMGYToj03Tph8XW/nADwf+B5avFEPwCm4uyugiNqLO4cMLyBs+NVQtUWDppb8M6ZKhjbKB+7YJ5Mx//BPqjZVfL2y9AZZatidiCoXR4vrd/Iz8fSPE8vaYUYZV3PiujJmz+vxTwDQWu6VcZ30YVJBZCJDQcqUBXKBHr54teUzeLPNkL/fn6Z6bfU5/RsXKVWsQmJqyT9j58UGuPsiu7hsF9TyD9wnIxpaZHGdvZm7UywRVW6OFtfLM6eMqznrHSrGbFN28XZkjOu2w6SCyAz6gpQxGyS91nIAese11dtjYu58VVNL/hl7n2VPvwsnmZPWBy57g4iosnPUuG5OGVdj7/NR51cR6h2oNWYzrpOpmFQQWYGu4fRIE3p5pJQENLbkn1whh1yhQKCHL+4/yNN6jrJKRvtazfQ+TOzdGyRXyPnwIyKrsWdcN6WMqylxfVSLpxnXyWKYVBBZidRenvI9Y+bSNwS+/uJegzuZVpb5s9o+iznzkImI9LF3XDc0rYlxneyJ1Z+IrEhqabyk+u2xJKl02pE5dA2BKzdxMrSQz1JVMuQKuaQKVfro+izKeciVpTwjEVUO9ozr+qY1Ma6TvXGkgkgLRxpyDfL0h0IoTHqPvo19lKUG9Q29B3r4YmnSuwanPBnDmr1N+j6LOfOQiajqqsxx3dBmbYzr5AiYVBBV4GhDrubuWqpraNuYUoP3H+TBSeZkkQfP8HXTNB4O5lQz0cbQZzFlHjIRVV2VPa4L6J+uxLhOjoDTn4jKccQhV1OrhTjLnLAk6V2dQd3Yh5m5yYySod4moLS3ScqQua0+CxFVXlUhrtfw9EOfuLY6X2dcJ0fApILob7YIluZQVgvRvW+1OrlQIMjTX+frxj7MzC1pq2RKb5O5bPVZiKhyqipx/V5Rrt5YybhOjoBJBdHfbBEszaGsFmIKfT04hh5mMpSWSNQ1d9cSbTDnPG1s9VmIqHJiXC/FuE62wKSC6G+OPOSqrI8e5OFn1Pn6enDKP8wqBm1Llhq0RW+TrT4LEVVOjOuM62Q7TCqI/uboQ65J9dvj3Gsr9U5tMrYHR/kwC/cJVjtuqVKDgO16m2zxWYiocmJcZ1wn22H1J6K/Gdrp1FBJP1twc3HDZ93HqzZOKt9OU3twpG7iZEj5TZ5kEttqiLU/CxFVTozrjOtkOzIhhCk7xTu03Nxc+Pv740bqWvj5edu7OVQJKauEANqDpaP0kGgrjxjpG4KZXV5ziPaVV5naStLl5hYgOvwZ5OTkwM/PuGkd+q/HuE7SMK5bXmVqK0lnbFxnUkFUQWUJlo60kZMhlamtJA2TCnJEjOuWV5naStIwqeDDhyRgsCQyD5MKclSM60TmMTauc00FkRbOTs7cqZOIqAphXCeyLlZ/IiIiIiIiSZhUEBERERGRJEwqiIiIiIhIEodKKnbv3o1+/fohIiICMpkMv/zyi72bREREREREBjhUUlFQUID4+Hh88cUX9m4KEREREREZyaGqP/Xq1Qu9evWydzOIiIiIiMgEDpVUmKq4uBjFxcWq33Nzc+3YGiIikopxnYiocnKo6U+mmjlzJvz9/VU/tWrVsneTiIhIAsZ1IqLKqVInFZMnT0ZOTo7q5+bNm/ZuEhERScC4TkRUOVXq6U/u7u5wd3e3dzOIiMhCGNeJiCqnSj1SQURERERE9udQIxX5+fm4fPmy6vdr167h+PHjqFGjBqKjo+3YMiIiIiIi0sWhkoq//voLnTt3Vv3+r3/9CwAwfPhwLF261E6tIiIiIiIifRwqqejUqROEEPZuBhERERERmYBrKoiIiIiISBImFUREREREJAmTCiIiIiIikoRJBRERERERScKkgoiIiIiIJGFSQUREREREkjCpICIiIiIiSZhUEBERERGRJEwqiIiIiIhIEiYVREREREQkCZMKIiIiIiKShEkFERERERFJwqSCiIiIiIgkYVJBRERERESSMKkgIiIiIiJJmFQQEREREZEkTCqIiIiIiEgSJhVERERERCQJkwoiIiIiIpKESQUREREREUnCpIKIiIiIiCRhUkFERERERJIwqSAiIiIiIkmYVBARERERkSRMKoiIiIiISBImFUREREREJAmTCiIiIiIikoRJBRERERERScKkgoiIiIiIJHGxdwMsSQgBAMjLK7RzS4iIqidl/FXGY6kY14mI7MvYuF6lkoq8vDwAQOP6Q+3cEiKi6i0vLw/+/v4WuQ7AuE5EZG+G4rpMWKo7yQEoFArcuXMHvr6+kMlk9m6OXeTm5qJWrVq4efMm/Pz87N0cu+J3UYbfRSl+D2Ws9V0IIZCXl4eIiAg4OUmfYcu4zn9vy+N3UYrfQxl+F2XsHder1EiFk5MToqKi7N0Mh+Dn51ft/+NS4ndRht9FKX4PZazxXVhihEKJcb0M/70tw++iFL+HMvwuytgrrnOhNhERERERScKkgoiIiIiIJGFSUcW4u7tj6tSpcHd3t3dT7I7fRRl+F6X4PZThd1F58J9VGX4Xpfg9lOF3Ucbe30WVWqhNRERERES2x5EKIiIiIiKShEkFERERERFJwqSCiIiIiIgkYVJBRERERESSMKmopHbv3o1+/fohIiICMpkMv/zyi9rra9asQffu3REUFASZTIbjx4/bpZ3Wpu97ePToESZOnIimTZvC29sbERERGDZsGO7cuWO/BluRoX8n3n//fTz22GPw9vZGYGAgEhMTcfDgQfs01soMfRflvfrqq5DJZJg7d67N2mdLhr6LESNGQCaTqf307NnTPo2txhjTyzCul2FcL8O4XsZR4zqTikqqoKAA8fHx+OKLL3S+3r59e8yaNcvGLbMtfd9DYWEhjh49iilTpuDo0aNYs2YNLly4gKSkJDu01PoM/TtRv359zJ8/H6dOncLevXtRu3ZtdO/eHXfv3rVxS63P0HehtHbtWvz555+IiIiwUctsz5jvomfPnkhNTVX9fP/99zZsIQGM6eUxrpdhXC/DuF7GYeO6oEoPgFi7dq3W165duyYAiGPHjtm0Tfag73tQOnTokAAgUlJSbNMoOzHmu8jJyREAxLZt22zTKDvR9V3cunVLREZGitOnT4uYmBjx2Wef2bxttqbtuxg+fLh4+umn7dIe0o4xvQzjehnG9TKM62UcKa5zpIKqlZycHMhkMgQEBNi7KXb18OFDLFq0CP7+/oiPj7d3c2xOoVDghRdewFtvvYXGjRvbuzl2t2vXLoSGhqJBgwZ47bXXkJWVZe8mERmNcb0U4zrjenn2iOsuVr8DkYN48OABJk6ciCFDhsDPz8/ezbGL3377Dc899xwKCwsRHh6OrVu3Ijg42N7NsrlZs2bBxcUF48aNs3dT7K5nz54YMGAAYmNjceXKFbzzzjvo1asXDhw4AGdnZ3s3j0gvxnXGdSXG9TL2iutMKqhaePToEQYPHgwhBBYsWGDv5thN586dcfz4cWRmZmLx4sUYPHgwDh48iNDQUHs3zWaOHDmCefPm4ejRo5DJZPZujt0999xzqv/ftGlTNGvWDHXr1sWuXbvQtWtXO7aMSD/G9VKM64zrFdkrrnP6E1V5ygdPSkoKtm7dWm17swDA29sbcXFxaNOmDb755hu4uLjgm2++sXezbGrPnj3IyMhAdHQ0XFxc4OLigpSUFLzxxhuoXbu2vZtnd3Xq1EFwcDAuX75s76YQ6cS4XoZxnXHdEFvFdY5UUJWmfPBcunQJO3fuRFBQkL2b5FAUCgWKi4vt3QybeuGFF5CYmKh2rEePHnjhhRcwcuRIO7XKcdy6dQtZWVkIDw+3d1OItGJc149xvRTjehlbxXUmFZVUfn6+WsZ57do1HD9+HDVq1EB0dDTu3buHGzduqGp3X7hwAQAQFhaGsLAwu7TZGvR9D+Hh4UhOTsbRo0fx22+/QS6XIy0tDQBQo0YNuLm52avZVqHvuwgKCsKMGTOQlJSE8PBwZGZm4osvvsDt27cxaNAgO7baOgz991HxjxBXV1eEhYWhQYMGtm6q1en7LmrUqIEPPvgAAwcORFhYGK5cuYK3334bcXFx6NGjhx1bXf0wppdhXC/DuF6Gcb2Mw8Z1m9ebIovYuXOnAKDxM3z4cCGEEEuWLNH6+tSpU+3abkvT9z0oSy9q+9m5c6e9m25x+r6LoqIi8cwzz4iIiAjh5uYmwsPDRVJSkjh06JC9m20Vhv77qKgqlx7U910UFhaK7t27i5CQEOHq6ipiYmLEyy+/LNLS0uzd7GqHMb0M43oZxvUyjOtlHDWuy4QQwvyUhIiIiIiIqjsu1CYiIiIiIkmYVBARERERkSRMKoiIiIiISBImFUREREREJAmTCiIiIiIikoRJBRERERERScKkgoiIiIiIJGFSQUREREREkjCpICIiIiIiSZhUEBERERGRJEwqiIiIiIhIEiYVREREREQkCZMKIiIiIiKShEkFERERERFJwqSCiIiIiIgkYVJBRESV3qVLl9C9e3f4+/tDJpPhl19+Men9u3btgkwmw65du1THRowYgdq1a6udJ5PJ8P7770turyVpa7slderUCZ06dbLKtYmo6mBSQUSVxpkzZ/D8888jMjIS7u7uiIiIwNChQ3HmzBmNc5cuXQqZTKb68fDwQEREBHr06IH//ve/yMvL03jP9u3b8eKLL6J+/frw8vJCnTp18I9//AOpqaka5yoUCnz11Vdo3rw5fHx8ULNmTfTq1Qv79+/XOLe4uBgTJ05EREQEPD090bp1a2zdulXn5/z888/h7++PR48eqY7duHEDr776KmrXrg13d3eEhoaif//+2Ldvn8b7lX9kKn/c3d1Rs2ZNdOrUCR999BHu3r2r9bsdNGgQ6tSpAy8vLwQHB6NDhw749ddfNc49dOgQRo8ejZYtW8LV1RUymUznZynfjvI/H3/8sc73mGP48OE4deoUZsyYgeXLl+OJJ56w6PUt4aOPPjI52SEiqixc7N0AIiJjrFmzBkOGDEGNGjXw0ksvITY2FtevX8c333yD1atXY9WqVXjmmWc03jdt2jTExsbi0aNHSEtLw65duzBhwgTMmTMH69evR7NmzVTnTpw4Effu3cOgQYNQr149XL16FfPnz8dvv/2G48ePIywsTHXuW2+9hTlz5uD555/H6NGjkZ2djYULF6Jjx47Yt28fWrVqpTp3xIgRWL16NSZMmIB69eph6dKl6N27N3bu3In27dtrtPn3339H9+7d4erqCgDYt28fevfuDQD4xz/+gUaNGiEtLQ1Lly5FQkIC5s2bh9dff13jOuPGjcOTTz4JuVyOu3fvYv/+/Zg6dSrmzJmDH3/8EV26dFGdm5KSgry8PAwfPhwREREoLCzEzz//jKSkJCxcuBCvvPKK6twNGzbg66+/RrNmzVCnTh1cvHhR7z+7bt26YdiwYWrHHn/8cb3vMUVRUREOHDiAf//73xg7dqzFrrt48WIoFAqLXe+jjz5CcnIy+vfvb7Fr2sKWLVvs3QQiqgwEEZGDu3z5svDy8hKPPfaYyMjIUHvt7t274rHHHhPe3t7iypUrquNLliwRAMThw4c1rrd9+3bh6ekpYmJiRGFhoer4H3/8IeRyudq5f/zxhwAg/v3vf6uOPXr0SHh6eork5GS1c69evSoAiHHjxqmOHTx4UAAQs2fPVh0rKioSdevWFW3bttVoW0FBgfDw8BBLliwRQghx7949ERYWJmrWrCkuX76sdm5hYaFISEgQTk5OYt++farjO3fuFADETz/9pHH948ePi9DQUBEQECDu3Lmj8Xp5JSUlIj4+XjRo0EDteFpamup7GzNmjND3KAEgxowZo/c+UqWkpGh8x6ZSfmc7d+7Uex4AMXXqVLPu4e3tLYYPH27We/Uxtu1ERNbE6U9E5PBmz56NwsJCLFq0CCEhIWqvBQcHY+HChSgoKMAnn3xi1PW6dOmCKVOmICUlBd99953qeIcOHeDkpB4WO3TogBo1auDcuXOqY48ePUJRURFq1qypdm5oaCicnJzg6empOrZ69Wo4Ozur9fR7eHjgpZdewoEDB3Dz5k21a2zfvh3FxcXo1asXAGDhwoVIS0vD7NmzUbduXbVzPT09sWzZMshkMkybNs2ozx4fH4+5c+ciOzsb8+fP13uus7MzatWqhezsbLXjNWvWVPuMxigqKsKDBw9Meg8AHDt2DL169YKfnx98fHzQtWtX/Pnnn6rX33//fcTExAAoHT2SyWQa6yAqunXrFvr37w9vb2+Ehobin//8J4qLizXO07amwthz3n//fbVpYTKZDAUFBap/XjKZDCNGjFC9fvv2bbz44ouoWbMm3N3d0bhxY/zvf/8zu+0VnTx5EjKZDOvXr1cdO3LkCGQyGVq0aKF2bq9evdC6dWvV7xXXVCin1/3444+YMWMGoqKi4OHhga5du+Ly5csa9z548CB69uwJf39/eHl5qUbzysvLy8OECRPUpvd169YNR48eNfjZiMgxMKkgIof366+/onbt2khISND6eocOHVC7dm38/vvvRl/zhRdeAGB4akd+fj7y8/MRHBysOqZcF7F06VKsWLECN27cwMmTJzFixAgEBgaqJRDHjh1D/fr14efnp3Zd5fSo48ePqx3fsGEDWrZsqUpYfv31V3h4eGDw4MFa2xcbG4v27dtjx44dKCoqMuqzJycnw9PTU+tnLygoQGZmJq5cuYLPPvsMGzduRNeuXY26ri5Lly6Ft7c3PD090ahRI6xcudKo9505cwYJCQk4ceIE3n77bUyZMgXXrl1Dp06dcPDgQQDAgAED8NlnnwEAhgwZguXLl2Pu3Lk6r1lUVISuXbti8+bNGDt2LP79739jz549ePvttyV9RkOWL18Od3d3JCQkYPny5Vi+fDlGjRoFAEhPT0ebNm2wbds2jB07FvPmzUNcXBxeeukltc8ipe1NmjRBQEAAdu/erTq2Z88eODk54cSJE8jNzQVQulZo//796NChg8Frfvzxx1i7di3efPNNTJ48GX/++SeGDh2qds6OHTvQoUMH5ObmYurUqfjoo4+QnZ2NLl264NChQ6rzXn31VSxYsAADBw7El19+iTfffBOenp5qyTwROTh7D5UQEemTnZ0tAIinn35a73lJSUkCgMjNzRVC6J/+pOTv7y8ef/xxvdedPn26ACC2b9+udvzSpUuiRYsWAoDqp06dOuL8+fNq5zVu3Fh06dJF47pnzpwRAMRXX32ldjw6Olptek1AQICIj4/X28Zx48YJAOLkyZNCCP3Tn5Ti4+NFYGCgxvFRo0apPo+Tk5NITk4W9+7d03kdQ9Of2rVrJ+bOnSvW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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": "f273cb1a-6401-4180-ac03-5b58a1e409fa" }, "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": "ceca755f-3372-4eb6-877a-0f9a137c5f22" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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TGWreyEi51RW4vqjvEydsZJxnRwBkwqif9kiWJpCPluIMXTV4Oh7mUlQPEWitr67liiDKftpYqt7ISLnxLhejHGdbIFJBdG/HLnJVT4/ekWvAIP211WDU/plphq0LTnVoC1qm2x1L0TknBjXGdfJdphUEP3L0ZtcE2q1wsVRa3R2bTK0Bkf+Mov0C1HabqmpBgHb1TbZ4l6IyDkxrjOuk+1w9ieif+lb6VTflH624OHmgS86jVcsnFS6nMbW4Ji7iJM+pRd5kphZVn2sfS9E5JwY1xnXyXYkQghjVop3aJmZmQgMDMTtpI0ICPC1d3HICclnCQE0B0tHqSHRND1iJf9QzGo/yiHKV5ozlZXMl5mZg+jIF5GRkYGAAMO6deg+H+M6mYdx3fKcqaxkPkPjOpMKIhXOEiwdaSEnfZyprGQeJhXkiBjXLc+ZykrmYVLBlw+ZgcGSyDRMKshRMa4TmcbQuM4xFUQauLq4cqVOIqIyhHGdyLo4+xMREREREZmFSQUREREREZmFSQUREREREZnFoZKKAwcOoGfPnoiKioJEIsGvv/5q7yIREREREZEeDpVU5OTkIC4uDl9//bW9i0JERERERAZyqNmfunbtiq5du9q7GEREREREZASHSiqMVVBQgIKCAsXvmZmZdiwNERGZi3GdiMg5OVT3J2PNmjULgYGBip8qVarYu0hERGQGxnUiIufk1EnFlClTkJGRofi5c+eOvYtERERmYFwnInJOTt39ydPTE56envYuBhERWQjjOhGRc3LqlgoiIiIiIrI/h2qpyM7OxrVr1xS/37x5E6dOnUKFChUQHR1tx5IREREREZE2DpVU/PPPP3j++ecVv7/55psAgMGDB2P58uV2KhUREREREeniUElFu3btIISwdzGIiIiIiMgIHFNBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmYVJBRERERERmcbN3ASxJCAEAyMrKtXNJiIjKJ3n8lcdjczGuExHZl6FxvUwlFVlZWQCA+rUG2rkkRETlW1ZWFgIDAy1yHoBxnYjI3vTFdYmwVHWSA5DJZLh//z78/f0hkUjsXRy7yMzMRJUqVXDnzh0EBATYuzh2xWdRgs+iGJ9DCWs9CyEEsrKyEBUVBRcX83vYMq7z721pfBbF+BxK8FmUsHdcL1MtFS4uLqhcubK9i+EQAgICyv0/Ljk+ixJ8FsX4HEpY41lYooVCjnG9BP/eluCzKMbnUILPooS94joHahMRERERkVmYVBARERERkVmYVJQxnp6emDZtGjw9Pe1dFLvjsyjBZ1GMz6EEn4Xz4J9VCT6LYnwOJfgsStj7WZSpgdpERERERGR7bKkgIiIiIiKzMKkgIiIiIiKzMKkgIiIiIiKzMKkgIiIiIiKzMKlwUgcOHEDPnj0RFRUFiUSCX3/9VenzDRs2oFOnTqhYsSIkEglOnTpll3Jam67nUFhYiEmTJqFhw4bw9fVFVFQUBg0ahPv379uvwFak7+/E9OnTUadOHfj6+iI4OBjx8fE4cuSIfQprZfqeRWkjR46ERCLBvHnzbFY+W9L3LIYMGQKJRKL006VLF/sUthxjTC/BuF6Ccb0E43oJR43rTCqcVE5ODuLi4vD1119r/bxVq1aYPXu2jUtmW7qeQ25uLk6cOIEPPvgAJ06cwIYNG3D58mUkJCTYoaTWp+/vRK1atbBgwQKcPXsWhw4dQtWqVdGpUyc8ePDAxiW1Pn3PQm7jxo34+++/ERUVZaOS2Z4hz6JLly5ISkpS/Pz44482LCEBjOmlMa6XYFwvwbhewmHjuiCnB0Bs3LhR42c3b94UAMTJkydtWiZ70PUc5I4ePSoAiMTERNsUyk4MeRYZGRkCgNi9e7dtCmUn2p7F3bt3RaVKlcS5c+dETEyM+OKLL2xeNlvT9CwGDx4sXnjhBbuUhzRjTC/BuF6Ccb0E43oJR4rrbKmgciUjIwMSiQRBQUH2LopdPXnyBEuWLEFgYCDi4uLsXRybk8lkePXVVzFx4kTUr1/f3sWxu/379yMsLAy1a9fGqFGj8PDhQ3sXichgjOvFGNcZ10uzR1x3s/oViBxEfn4+Jk2ahAEDBiAgIMDexbGLLVu24OWXX0Zubi4iIyOxa9cuhISE2LtYNjd79my4ublh3Lhx9i6K3XXp0gW9e/dGtWrVcP36dbz77rvo2rUr/vrrL7i6utq7eEQ6Ma4zrssxrpewV1xnUkHlQmFhIfr37w8hBBYtWmTv4tjN888/j1OnTiEtLQ1Lly5F//79ceTIEYSFhdm7aDZz/PhxzJ8/HydOnIBEIrF3cezu5ZdfVvx/w4YN8dRTT6FGjRrYv38/OnToYMeSEenGuF6McZ1xXZW94jq7P1GZJ3/xJCYmYteuXeW2NgsAfH19ERsbi2eeeQbfffcd3Nzc8N1339m7WDZ18OBBpKamIjo6Gm5ubnBzc0NiYiLeeustVK1a1d7Fs7vq1asjJCQE165ds3dRiLRiXC/BuM64ro+t4jpbKqhMk794rl69in379qFixYr2LpJDkclkKCgosHcxbOrVV19FfHy80rbOnTvj1VdfxdChQ+1UKsdx9+5dPHz4EJGRkfYuCpFGjOu6Ma4XY1wvYau4zqTCSWVnZytlnDdv3sSpU6dQoUIFREdH49GjR7h9+7Zi7u7Lly8DACIiIhAREWGXMluDrucQGRmJvn374sSJE9iyZQukUimSk5MBABUqVICHh4e9im0Vup5FxYoVMXPmTCQkJCAyMhJpaWn4+uuvce/ePfTr18+OpbYOff8+VL+EuLu7IyIiArVr17Z1Ua1O17OoUKECPvzwQ/Tp0wcRERG4fv063nnnHcTGxqJz5852LHX5w5hegnG9BON6Ccb1Eg4b120+3xRZxL59+wQAtZ/BgwcLIYRYtmyZxs+nTZtm13Jbmq7nIJ96UdPPvn377F10i9P1LPLy8sSLL74ooqKihIeHh4iMjBQJCQni6NGj9i62Vej796GqLE89qOtZ5Obmik6dOonQ0FDh7u4uYmJixPDhw0VycrK9i13uMKaXYFwvwbhegnG9hKPGdYkQQpiekhARERERUXnHgdpERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVERERERGQWJhVEROT0rl69ik6dOiEwMBASiQS//vqr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cfDz88Pu3btx7NgxfPbZZxYpCxHZgB1nniIiMsqZM2fEgAEDRGRkpHB3dxcRERFiwIABiiksS5NPKSv/8fDwEBEREaJjx45i/vz5iqlnS4uJiVE6pvSP6rShubm5YsaMGaJevXrC29tbBAYGih49eoiTJ0+qnTcvL0+8/fbbIiIiQnh6eopmzZqJ7du3Kz6XyWQiLCxMzJkzR+u937x5UwwfPlxER0cLd3d3ERISIhISEsTBgwfV9pVP+Sn/cXd3F6GhoaJNmzZi5syZaquSCyHEjz/+KOLj40V4eLhwc3MTwcHBIj4+XmlqUW3nL/1TeurRnTt3io4dO4qIiAjh7u4ugoKCRKdOndSm59XlxIkTonPnzsLPz0/4+PiI559/Xvz5559qzwZGrKidmJgoEhIShI+PjwgJCRHjx48X27dvN2lKWfl9NmjQQHh4eIjatWuLVatWaZxS9tKlS6JNmzbC29tbAFCaXjYlJUWMGTNGVKlSRfF3u0OHDmLJkiUmlV2bzMxM4erqKvz9/UVRUZFi+6pVqwQA8eqrr6odo21KWdUpi+V/DvLV4OVOnjwpevfuLSpWrCg8PT1FTEyM6N+/v+LvQUFBgZg4caKIi4sT/v7+wtfXV8TFxRk07TAROQ6JEBaa0oOIiExy9OhRtGjRAufPnzepmxEREZG9cUwFEZED+OSTT5hQEBGR02JLBRERERERmYUtFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZBYmFUREREREZJb/B5bWSBTIuTWVAAAAAElFTkSuQmCC\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": "30b7f695-5657-452a-9b09-4e2ea2acc775" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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fHdkZKQwGo2m95555hkRGRkphBDi3LlzQi6Xi6ysrBr1jRw5Ujz77LNCiMogBEAkJyfXe5/PPfec6NatW43vWr58uXBzcxMGg0EIIcR7770nOnbsWO91Vq5cKTw8PGq937FjRzF58uQa782YMUPMnDmzxns7d+4UMplMlJWVNej+evXqJV566aV6ayKia+MYISJqkN69e9f4OTAwEHl5ec26jr+/P1xcXBAWFlbjvcTExBrnDB48GJIkmX6OiYnBu+++C4PBgCNHjsBgMKBr1641ztFqtfD29jb97OjoWOse/unEiROIiYmp8V1DhgxBcXExzp8/j5CQkMbd7DUMGDCgxs+HDh3C4cOHsWrVKtN7QggYjUakp6fjzJkz172/uXPn4rHHHsOmTZswatQoTJky5br3SkSVGISIqEEcHBxq/CxJEoxGIwCYBh2Lq8bt6HS6615HkqR6r9sQxcXFkMvlOHDgAORyeY3P3NzcTH92dnauEXAsxdXVtcbPxcXFeOSRRzB37txax4aEhODw4cPXvb+HHnoIY8aMwW+//YZNmzZhyZIlePfddzFnzpyWuxEiG8EgRETN5uvrCwDIyclBVFQUAJh1fZ2EhIQaP+/duxddunSBXC5HVFQUDAYD8vLyMGzYsGZ9T2RkJH7++WcIIUyhaffu3XB3d0eHDh0afB1HR0cYDIYGHduvXz8cP34c4eHh1/y8ofcXHByMRx99FI8++iieffZZfPrppwxCRA3AWWNE1GzOzs4YPHgw3njjDZw4cQLbt2/H888/b7brZ2RkYMGCBUhNTcV3332HDz74APPmzQMAdO3aFXFxcZg2bRp++eUXpKenIzExEUuWLMFvv/3WqO95/PHHkZmZiTlz5iAlJQXr1q3Diy++iAULFjRqqn1oaCiKi4vx999/Iz8/v9YsuKs988wz2LNnD2bPno3k5GScPHkS69atw+zZsxt8f/Pnz8eff/6J9PR0JCUlYevWrYiMjGzUvRPZKwYhIjKLzz//HHq9Hv3798f8+fPx6quvmu3a06ZNQ1lZGQYNGoRZs2Zh3rx5pqnnALBy5UpMmzYNCxcuRLdu3TB58mTs27ev0WN62rdvj99//x2JiYno06cPHn30UcyYMaPRoS42NhaPPvoo7r77bvj6+uKtt96q89jevXtj+/btSEtLw7BhwxAVFYUXXngBQUFBDb4/g8GAWbNmITIyEmPHjkXXrl3x4YcfNqpmInslias79YmIiIjsCFuEiIiIyG4xCBEREZHdYhAiIiIiu8UgRERERHaLQYiIiIjsFoMQERER2S0GISIiIrJbDEJERERktxiEiIiIyG4xCBEREZHdYhAiIiIiu/X/GxAux4DQ7rMAAAAASUVORK5CYII=\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": "51ebbac6-e217-44e2-ffb3-f0db1b0f9f67", "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": "a540d84a-672f-45ee-9a37-54aff6efe716" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "XGBoost 훈련 정확도/테스트 정확도 0.979/0.917\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.12/dist-packages/xgboost/training.py:183: UserWarning: [07:38:23] WARNING: /workspace/src/learner.cc:738: \n", "Parameters: { \"use_label_encoder\" } are not used.\n", "\n", " bst.update(dtrain, iteration=i, fobj=obj)\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": "61ed403c-09d8-4169-b28f-b3192454fe35" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "LightGBM 훈련 정확도/테스트 정확도 0.979/0.917\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py:2739: UserWarning: X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", " warnings.warn(\n", "/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py:2739: UserWarning: X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", " warnings.warn(\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 }