{ "cells": [ { "cell_type": "markdown", "id": "589b8d45", "metadata": {}, "source": [ "# 第5章 教師あり学習:回帰" ] }, { "cell_type": "markdown", "id": "e2a4e9cf", "metadata": {}, "source": [ "教師あり学習の問題は「回帰」と「分類」に分けることができる. この章では「回帰」について解説する." ] }, { "cell_type": "markdown", "id": "ad17823b", "metadata": {}, "source": [ "## 5.1 1次元入力の直線モデル" ] }, { "cell_type": "markdown", "id": "19a887f6", "metadata": {}, "source": [ "### 5.1.1 問題設定" ] }, { "cell_type": "markdown", "id": "a4ca9e75", "metadata": {}, "source": [ "年齢 $x$ と身長 $t$ のセットのデータを考える.\n", "\n", "データは 16 人分\n", "\n", "$x$ と $t$ をそれぞれ縦ベクトルで $x = [x_1, x_2, ... , x_{16}], t = [t_1, t_2, ... , t_{16}]$ と表す.\n", "\n", "この時, $x_n$ は入力変数, $t_n$ は目標変数 (ターゲット) と呼ぶ." ] }, { "cell_type": "markdown", "id": "b80410ae", "metadata": {}, "source": [ "まず, 年齢と身長の人工データを作成する." ] }, { "cell_type": "code", "execution_count": 1, "id": "ed037b84", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# データ生成\n", "np.random.seed(seed=1) # 乱数を固定する\n", "X_min, X_max = 4, 30 # X の下限と上限 (表示用)\n", "N = 16 # データの個数\n", "X = 5 + 15 * np.random.rand(N) # X の生成\n", "prm = [170, 108, 0.2] # データ生成のパラメータ\n", "T = prm[0] - prm[1] * np.exp(-prm[2] * X) + 4 * np.random.randn(N) # (A) 目標データの生成\n", "np.savez(\n", " \"ch5_data.npz\",\n", " X=X, T=T, X_min=X_min, X_max=X_max, N=N,\n", ") # (B) データの保存" ] }, { "cell_type": "code", "execution_count": 2, "id": "6faaafa7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[11.25533007 15.8048674 5.00171562 9.53498859 7.20133836 6.38507892\n", " 7.79390317 10.18341091 10.95151211 13.08225101 11.28791772 15.27829251\n", " 8.06678375 18.17176155 5.4108139 15.05701265]\n" ] } ], "source": [ "# 年齢 x を表示\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 3, "id": "82ce726b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[11.26 15.8 5. 9.53 7.2 6.39 7.79 10.18 10.95 13.08 11.29 15.28\n", " 8.07 18.17 5.41 15.06]\n" ] } ], "source": [ "# 年齢 x を小数点第2位までで表示\n", "print(np.round(X,2))" ] }, { "cell_type": "code", "execution_count": 4, "id": "ddd2f2b2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[164.48 157.18 128.99 152.42 148.95 135.48 146.59 152.4 158.09 164.44\n", " 154.3 169.49 152.09 169.16 137.01 161.95]\n" ] } ], "source": [ "# 身長 T を表示\n", "print(np.round(T,2))" ] }, { "cell_type": "code", "execution_count": 5, "id": "5395cf74", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# データの表示\n", "plt.figure(figsize=(4, 4))\n", "plt.plot(\n", " X, # 入力データ\n", " T, # 目標データ\n", " \"cornflowerblue\", # マーカーを水色にする\n", " marker=\"o\", # マーカーの形を o にする\n", " linestyle=\"None\", # マーカーを線で結ばない\n", " markeredgecolor=\"black\", # マーカーの輪郭を黒にする\n", ")\n", "plt.xlim(X_min, X_max) # x 軸の範囲を指定\n", "plt.grid() # グリッドを表示する\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "be94b0a9", "metadata": {}, "source": [ "### 5.1.2 直線モデル" ] }, { "cell_type": "markdown", "id": "0f804821", "metadata": {}, "source": [ "直線の式は \n", "$$\n", "y(x) = w_{0}x + w_1\n", "$$\n", "で表すことができる.\n", "\n", "この傾き $w0$ と切片 $w1$ をどのように決めるかを考える." ] }, { "cell_type": "markdown", "id": "82bbc03b", "metadata": {}, "source": [ "### 5.1.3 平均二乗誤差" ] }, { "cell_type": "markdown", "id": "436911f7", "metadata": {}, "source": [ "平均二乗誤差は次の式で表すことができる.\n", "$$\n", "J = \\frac{1}{N}\\sum_{n=0}^{N-1}(y_n - t_n)^2\n", "$$" ] }, { "cell_type": "code", "execution_count": 6, "id": "c5866721", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 平均二乗誤差 (MSE) 関数\n", "def mse_line(x, t, w):\n", " y = w[0] * x + w[1]\n", " mse = np.mean((y-t)**2)\n", " return mse\n", "\n", "# 各 w0, w1 で平均二乗誤差 (MSE) を計算\n", "w0_n, w1_n = 100, 100\n", "w0_min, w0_max = -25, 25\n", "w1_min, w1_max = 120, 170\n", "w0 = np.linspace(w0_min, w0_max, w0_n)\n", "w1 = np.linspace(w1_min, w1_max, w1_n)\n", "J = np.zeros((w1_n, w0_n))\n", "\n", "# グリッド状の点 (w0, w1) に対して J を計算\n", "for i0 in range(w0_n):\n", " for i1 in range(w1_n):\n", " w = np.array([w0[i0], w1[i1]])\n", " J[i1, i0] = mse_line(X, T, w)\n", "ww0, ww1 = np.meshgrid(w0, w1)\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(9.5, 4))\n", "plt.subplots_adjust(wspace=0.5)\n", "\n", "# サーフェス表示\n", "ax = plt.subplot(1, 2, 1, projection=\"3d\")\n", "ax.plot_surface(\n", " ww0, ww1, J,\n", " rstride=10, cstride=10, alpha = 0.3, color=\"blue\", edgecolor = \"black\", \n", ")\n", "ax.set_xticks([-20, 0, 20])\n", "ax.set_yticks([120, 140, 160])\n", "ax.view_init(20, -60)\n", "\n", "# 等高線表示\n", "plt.subplot(1, 2, 2)\n", "cont = plt.contour(\n", " ww0, ww1, J, colors = \"black\", \n", " levels = [100, 1000, 10000, 100000],\n", ")\n", "cont.clabel(fmt=\"%d\", fontsize=8)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "b377ed39", "metadata": {}, "source": [ "### 5.1.4 パラメータを求める (勾配法)" ] }, { "cell_type": "markdown", "id": "da45d55a", "metadata": {}, "source": [ "$J$ が最も小さくなる $w_0$, $w_1$ を求める最も単純で基本的な方法は勾配法 (最急降下法, steepest descent method) です." ] }, { "cell_type": "code", "execution_count": 7, "id": "415bf522", "metadata": {}, "outputs": [], "source": [ "# 平均二条誤差 (MSE) の勾配\n", "def dmse_line(x, t, w):\n", " y = w[0] * x + w[1]\n", " d_w0 = 2 * np.mean((y - t) * x)\n", " d_w1 = 2 * np.mean(y -t)\n", " return d_w0, d_w1" ] }, { "cell_type": "markdown", "id": "d1ce3cad", "metadata": {}, "source": [ "試しに w = np.array([10, 165]) での勾配を求めてみる" ] }, { "cell_type": "code", "execution_count": 8, "id": "65de1a3b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2736.66 236.46]\n" ] } ], "source": [ "w = np.array([10, 165])\n", "d_w = dmse_line(X, T, w)\n", "print(np.round(d_w, 2))" ] }, { "cell_type": "code", "execution_count": 9, "id": "3da5e488", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "繰り返し回数 19624\n", "w0 = 2.609076, w1 = 125.566337\n", "dMSE = [-0.008312, 0.099998]\n", "MSE = 28.912964\n", "SD = 5.377078 cm\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 勾配法\n", "def fit_line_num(x, t, w_init):\n", " # パラメータ\n", " alpha = 0.001\n", " tau_max = 100000\n", " eps = 0.1\n", " \n", " # 勾配法\n", " w = np.zeros((tau_max + 1, 2))\n", " w[0, :] = w_init\n", " for tau in range(tau_max):\n", " dmse = dmse_line(x, t, w[tau, :])\n", " w[tau + 1, 0] = w[tau, 0] - alpha * dmse[0]\n", " w[tau + 1, 1] = w[tau, 1] - alpha * dmse[1]\n", " if max (np.absolute(dmse)) < eps:\n", " break\n", " w_final = w[tau + 1, :]\n", " w_hist = w[: tau + 2, :]\n", " return w_final, dmse, w_hist\n", "\n", "# メイン\n", "# 勾配法で w を計算\n", "w_init = np.array([10.0, 165.0])\n", "w, dmse, w_history = fit_line_num(X, T, w_init)\n", "mse = mse_line(X, T, w)\n", "\n", "# 結果表示\n", "print(f\"繰り返し回数 {w_history.shape[0]-1}\")\n", "print(f\"w0 = {w[0]:.6f}, w1 = {w[1]:.6f}\")\n", "print(f\"dMSE = [{dmse[0]:.6f}, {dmse[1]:.6f}]\")\n", "print(f\"MSE = {mse:.6f}\")\n", "print(f\"SD = {np.sqrt(mse):.6f} cm\")\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(4, 4))\n", "# 等高線表示\n", "cont = plt.contour(\n", " ww0, ww1, J,\n", " colors = \"black\", levels = [100, 1000, 10000, 100000],\n", ")\n", "\n", "cont.clabel(fmt = \"%1.0f\", fontsize = 8)\n", "# 等高線の上に, 過去のすべての w をプロット\n", "plt.plot(\n", " w_history[:, 0], w_history[:, 1], \"grey\",\n", " marker = \".\", \n", " markersize = 10, \n", " markeredgecolor = \"cornflowerblue\", \n", ")\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "id": "e604d335", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 線の表示\n", "def show_line(w):\n", " x = np.linspace(X_min, X_max, 100)\n", " y = w[0] * x + w[1]\n", " plt.plot(x, y, \"grey\", linewidth = 4)\n", " \n", "# メイン\n", "# グラフ描画\n", "plt.figure(figsize=(4, 4))\n", "show_line(w)\n", "plt.plot(\n", " X, T, \"cornflowerblue\", \n", " marker = \"o\", linestyle = \"None\", markeredgecolor = \"black\", \n", ")\n", "plt.xlim(X_min, X_max)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "f7d048b6", "metadata": {}, "source": [ "### 5.1.5 直線モデルパラメータの解析解" ] }, { "cell_type": "code", "execution_count": 11, "id": "330a7d14", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w0 = 2.65, w1 = 125.13\n", "MSE = 28.89\n", "SD = 5.38 cm\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQ4AAAD4CAYAAAAdDQgVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAk3UlEQVR4nO3deXxUdZrv8c+TEBIhIFsgBIMhBAOyiIhAI9ggm7IJDSQFjqN2d5zp1h64ztw7rdwZmttj376zOPSM09OXBi4uYFVC2BUaocEgCoq0KAEiGRKRfY0khOy/+0cqmOIUSaqSSp1KnvfrxYvk96tTeTgv+HLqLL9HjDEopZQvwoJdgFIq9GhwKKV8psGhlPKZBodSymcaHEopn7UJdgEA3bp1MwkJCXW+5saNG7Rv3755CmokrTUwtNbA+Oyzzy4bY2J82sgYE/RfDz30kKnP7t27632NXWitgaG1BgZw0Pj4b1Y/qiilfKbBoZTymQaHUspnGhxKKZ9pcCilfKbBoVQrduLECb+2s8V9HEqp5mWMYc+ePWRlZfm1vQaHUq1MaWkpGzZsICcnx+/30OBQqhW5cuUKTqeTy5cvN+p9NDiUaiVOnDhBZmYmpaWljX4vDQ6lWjhjDPv27WPXrl2WuZ49e/r1nnpVRakWrKysjMzMTK+hMWTIEJ577jm/3lePOJRqoQoKCnA6nVy4cMFjXESYNGkSo0aNQkT8em8NDqVaoLy8PDIyMrh586bHeFRUFHPnzqVv376Nen8NDqVaEGMMBw4cYMeOHZjbOhh0794dh8NB586dG/1zNDiUaiEqKirYunUrhw8ftswNGDCAWbNm0bZt2yb5WRocSrUA169fx+VycfbsWcvcY489xpgxY/w+n+FNvVdVRCReRHaLyDERyRaRhe7xLiLyvoiccP/eudY2L4tIrojkiMiUJqtWKWVx6tQpli9fbgmNyMhI5s+fz9ixY5s0NKBhRxwVwF8bYw6JSAfgMxF5H3gW2GWM+bWI/Bz4OfC3InI/4AAGAnHAThG5zxhT2aSVK6U4ePAg27Zto6qqymO8a9euOBwOunXrFpCfW29wGGPOAefcXxeKyDGgF/AkMM79sjeAPcDfusedxphSIE9EcoERwMdNXbxSrVVlZSXvvfcehw4dsszdd999zJ49m6ioqID9fLn9zGudLxZJALKAQcApY0ynWnPXjDGdReR1YL8x5m33+EpgmzFm3W3v9TzwPECPHj0ecjqddf7soqIioqOjG1xrMGmtgaG1VisrKyM7O5vr169b5nr37k1CQoJPH03Gjx//mTFmuC81NPjkqIhEA5nAImPM9ToK8zZhSSdjzHJgOcDw4cPNuHHj6vz5e/bsob7X2IXWGhhaK5w5cwaXy0VhYaHHeEREBLNmzeL+++9v8p/pTYOCQ0QiqA6NNcaY9e7hCyLS0xhzTkR6Ahfd46eB+Fqb3wNYT/UqpXxy+PBhtmzZQmWl5+nCTp064XA46NGjR7PV0pCrKgKsBI4ZY16rNbUZeMb99TPAplrjDhGJFJE+QD/gk6YrWanWpaqqiu3bt7Nx40ZLaCQmJvL88883a2hAw444HgGeBr4Ukc/dY68AvwbSReRHwClgHoAxJltE0oGjVF+ReUGvqCjln+LiYtatW0deXp5lbtSoUUyaNImwsOZ/VrUhV1U+xPt5C4AJd9jmVeDVRtSlVKt3/vx5XC4XBQUFHuNt2rRhxowZDBkyJDiFoXeOKmVL2dnZbNy4kYqKCo/xjh07kpqaSlxcXJAqq6bBoZSNVFVVsXv3bj788EPLXO/evUlJSbFFM2sNDqVsoqSkhMzMTHJzcy1zDz/8MFOmTCE8PDwIlVlpcChlA5cuXcLpdHL16lWP8bCwMKZNm8awYcOCVJl3GhxKBVlOTg7r16+nrKzMYzw6OpqUlBTi4+PvsGXwaHAoFSTGGLKystizZ49lrlevXqSmptKhQ4fmL6wBNDiUCoLS0lI2btzI8ePHLXNDhw5l2rRptGlj33+e9q1MqRbq6tWrOJ1OLl265DEuIjz++OM8/PDDTb5+RlPT4FCqGeXm5pKZmUlJSYnHeLt27Zg3bx4JCQnBKcxHGhxKNQNjDB999BG7du2yLCIcGxtLamoqnTp1Ck5xftDgUCrAysvL2bx5M0eOHLHMDRo0iJkzZxIRERGEyvynwaFUABUUFOByuTh//rzHuIgwYcIERo8ebfvzGd5ocCgVIPn5+WRkZFBcXOwxHhUVxZw5c0hKSgpSZY2nwaFUEzPGcObMGbKysiznM2JiYnA4HHTp0iVI1TUNDQ6lmlBFRQXvvvuu1+dN+vfvz6xZs4iMjAxCZU1Lg0OpJlJYWIjL5eLMmTOWuXHjxvHoo4+G5PkMbzQ4lGoC33zzDenp6RQVFXmMt23bltmzZ9O/f/8gVRYYDVlzdJWIXBSRI7XGHhCRj0XkSxHZIiIda81pFzfVqhw6dIjVq1dbQqNLly78+Mc/bnGhAQ0IDmA18PhtYyuAnxtjBgMbgP8OcFsXt8eB34qIPRYQUKqJVVZW8u6777JlyxZLJ7UuXbqQlpZGTExMkKoLrIasOZrlbsRUWzLVjZkA3gf+APwd2sVNtRI3btwgPT2dU6dOWebGjBlDWFhYQDupBZu/5ziOADOpbokwj+/6qPQC9td63Wn3mMVtndy8PlpcW1FRUb2vsQutNTDsUmthYSHZ2dmUlpZ6jIeFhZGcnEx4eLhtag0Uf4Pjh8C/icjfU91HpWYFkgZ1cQPt5GYXWqtvvvjiC/bt22dZRLhTp06kpqYSGxsL2KPWQPIrOIwxx4HJACJyHzDNPaVd3FSLVFVVxc6dO/n4Y+un7oSEBObNm0e7du2CUFlw+BUcItLdGHNRRMKA/wn8zj21GVgrIq8BcWgXN9UCFBcXk5mZycmTJy1zI0eOZPLkyUFpihRM9QaHiLwDjAO6ichpYAkQLSIvuF+yHvh/oF3cVMtz4cIFnE6npSlSeHg406dPZ+jQoUGpK9gaclVl/h2mfnOH12sXN9UiHD16lI0bN1JeXu4x3qFDB1JTU+nVy+t5/1ZB7xxV6jbGGHbv3s3evXstc/Hx8aSkpBAdHR2EyuxDg0OpWkpKStiwYQNfffWVZW7YsGFMnTrVNk2RgkmDQym3y5cv43Q6uXLlisd4WFgYTzzxBMOHDw9SZfajwaEU8NVXX7F+/XrLTV3t27cnJSWF3r17B6kye9LgUK2aMYa9e/eye/duy1xcXBypqal07NjRy5atmwaHarXKysrYuHEjx44ds8w98MADTJ8+3dZNkYJJ94pqla5du4bT6eTixYse4yLC5MmTGTlyZItZdCcQNDhUq3Py5EnWrVvHzZs3Pcbvuusu5s6dS2JiYpAqCx0aHKrVMMawf/9+3n//fcsiwj169CA1NZXOnTsHqbrQosGhWoXy8nK2bt3KF198YZkbOHAgM2fOpG3btkGoLDRpcKgW79tvv8XlcnHu3DnL3GOPPcaYMWP0fIaPNDhUi/b111+TkZHBjRs3PMYjIyOZM2cO/fr1C1JloU2DQ7VIxhgOHjzI9u3bLeuBduvWDYfDQdeuXYNUXejT4FAtTkVFBdu2bePQoUOWueTkZGbPnt0imiIFkwaHalEKCwtJT0/n9OnTlrlHH32UcePG6fmMJqDBoVqM06dPk56eTmFhocd427ZtmTVrFgMGDAhSZS2PBodqET7//HO2bt1KZaXngnOdO3fG4XDQvXv3IFXWMvnbyW2oiOwXkc9F5KCIjKg1p53cVLOprKxk27ZtbNq0yRIaffv2JS0tTUMjABpyxLEaeB14s9bYPwJLjTHbRGSq+/txt3VyiwN2ish9uu6oCoQbN26wbt068vPzLXOjR49mwoQJrW4R4ebibyc3A9Q8a3w337VA0E5uqlmcO3cOl8vFt99+6zHepk0bZs6cyeDBg4NUWesgt9+z7/VF1cGx1RgzyP39AKrbPgrVH3dGG2O+FpHXgf3GmLfdr1sJbDPGrPPynrU7uT3kdDrrrKGoqChk1nnUWgOjptaLFy+Sk5NjuT8jMjKSgQMH0qFDhyBV+J1Q2q/jx4//zBjj0/Jm/p4c/Qnw34wxmSKSAqwEJqKd3ACtNVB2795NeXm51/UzEhISmDt3Lu3btw9CZVahtF/94W9wPAMsdH+dQXX3etBObipAbt68yZdffsm1a9cscyNGjGDy5Mm6iHAz8vfM0Vng++6vHwNOuL/eDDhEJFJE+qCd3FQTuHjxIitWrLCERnh4ODNnzuSJJ57Q0Ghm/nZySwN+IyJtgBLc5yq0k5tqasePH2fDhg2UlZV5jHfo0IGUlBTuueeeIFXWujWmk9tDd3i9dnJTjWaM4YMPPuCDDz6wzN1zzz2kpKTY4iRoa6V3jirbKS0tZcOGDeTk5FjmHnzwQaZOnaqLCAeZ7n1lK1euXMHpdHL58mWP8bCwMBITE5kxY4Y+pGYDGhzKNk6cOEFmZqalKVK7du1ISUkhLy9PQ8MmNDhU0Blj2LdvH7t27bLM9ezZk9TUVO6++27y8vKCUJ3yRoNDBVVZWRmbN28mOzvbMjd48GBmzJhBREREECpTddHgUEFTUFCA0+nkwoULHuMiwqRJkxg1apR+NLEpDQ4VFHl5eWRkZFiaIkVFRTF37lz69u0bpMpUQ2hwqGZljOHAgQPs2LHD0hSpe/fuOBwObYoUAjQ4VLOpqKhg69atHD582DI3YMAAZs2apU2RQoQGh2oW169fx+Vycfas9ZnH8ePHM3bsWD2fEUI0OFTAnTp1ivT0dK9NkWbPnk1ycnKQKlP+0uBQAXXw4EG2bdtmWXSna9euOBwOunXrFqTKVGNocKiAqFlE+LPPPrPM9evXjx/84AdERUUFoTLVFDQ4VJMrKioiPT2db775xjI3duxYxo8fr+czQpwGh2pSZ86cweVyWZoiRUREMGvWLO6///4gVaaakgaHajKHDx9my5Ytlv4mnTp1wuFw0KNHjyBVppqaBodqtKqqKnbs2MGBAwcsc4mJicyZM4d27doFoTIVKA1ZOnAVMB24WKs9gguouYbWCSgwxgx1z70M/AioBP7KGPOHpi9b2UVxcTHr1q3z+uTqqFGjmDRpkjZFaoH86uRmjEmt+VpE/gX41v21dnJrRc6fP4/L5aKgoMBjvE2bNsyYMYMhQ4YEpzAVcPX+V2CMyQKuepuT6lPjKcA77qFbndyMMXlATSc3ZVM7d+4iKXkg4eHhJCUPZM3atQ3aLjs7m1WrVllCo2PHjjz33HMaGi1cY48hxwIXjDE17RF6AbWvwZ12jykbWrN2Lf+x/A2Sn/gVzy47S/ITv2LhS4vrDI+qqip27tzJunXrKC8v95jr3bs3zz//PHFxcZaf4084Kftq7MnR+Xx3tAE+dHK7rQUke/bsqfMHFRUV1fsauwiVWn/+8t8xesG/E3ffWADi7hvLSMcyfv7yS/S67R8/VD+kduzYMa5etR6AxsXFce+99/Lpp596jO/cuYv/WP4Goxf8O9/vO4rz/7WfFxf9jGNHjzFx4gSf6g2V/QqhVas//Ood6x5rA5wBHjLGnHaPvQxgjPnf7u//APzCGFNn0+nhw4ebgwcP1llDKLXUC5Vaw8PDeXbZWcLCv1thq6qynNWL4iyXVC9duoTT6bSERlhYGFOnTuWhh7x2yyApeSDJT/zqVjgBnP1qLznbXiE3x7rqV11CZb9CaNUqIj73jm3MR5WJwPGa0HDTTm4hpE9Sf87/136PsfP/tZ8+Sf09xnJyclixYoUlNKKjo3n22WfvGBoAebnHie07ymMstu8o8nKPN7J6FUz1Boe7k9vHQLKInBaRH7mnHHh+TMEYkw3UdHLbjnZys7WlSxbz0dqfcfarvVRVlnP2q70ccC5i6ZLFwHdNkZxOp6WTWq9evUhLSyM+Pt7bW9/S0HBSocXvTm7GmGfvMK6d3ELEUwsWcOzoMZwZr7A99zh9kvrzm9de5akFCygtLWXjxo0cP249Mhg6dCjTpk1rUFOkpUsWs/ClRYx0LCPWfY7jgHMRv3lN/4qEMr1ztJWbOHEC//APv/QYu3r1Kk6nk0uXLnmMiwhTpkxhxIgRDX5I7akFCwBYstQaTip0aXAoD7m5uWRmZlJSUuIx3q5dO+bNm0dCQoLP7/nUggUaFC2MBocCqs9nfPTRR+zatcuyiHBsbCypqal06tQpOMUp29HgUJSXl7N582aOHDlimRs0aBAzZ87UpkjKgwZHK1dSUsKqVas4f/68x7iIMGHCBEaPHq2L7igLDY5WLD8/n0OHDlluHY+KimLOnDkkJSUFqTJld/q8c5A05vmNxj77YYzhk08+4c0337SERkxMDGlpaRoaqk56xBEEa9auZeFLixnpWHbr+Y2FLy0CqPfqQ2O2hernTd59910+//xzy1z//v2ZNWsWkZGRvv6RVCujRxxBsGTpq4x0LCPuvrGEhUfcerhsydL6b4pqzLaFhYWsXr3aa2iMGzeOlJQUDQ3VIHrEEQR5ucf5vpfnN7Y34PkNf7f95ptvSE9Pp6ioyGM8PDycuXPn0r+/3gKuGk6POIKgMc9v+LPtoUOHWL16tSU0unTpwoMPPqihoXymwREES5cs5oBz0R0fLmuqbSsrK3n33XfZsmWLpZNaUlISaWlptG/fvsn+XKr10I8qQdCY5zcauu2NGzdIT0/n1KlTlvcYM2YM48eP10WEld80OIKkMc9v1Lft2bNncblcXL9+3WM8IiKCJ598koEDqy/hLln6KidPHCexX3+WLlmsz5OoBtPgaGG++OILtmzZQkVFhcd4p06dSE1NJTY21vOS7ou+X9JVSo9VW4iapkgbNmywhEafPn1IS0sjNjYWaNwlXaVAjzhahJs3b7Ju3TpOnjxpmRs5ciSTJ0/2OJ/RmMvBSoEGR8i7cOECLpeLa9eueYyHh4czffp0hg4datmm5pJu7QWEdTk/5YuGrDm6SkQuisiR28Z/JiI5IpItIv9Ya/xlEcl1z00JRNGq2tGjR1m5cqUlNDp06MBzzz3nNTSgcZeDlQI/W0CKyHiqu7YNMcaUikh397i2gGwGxhh2797N3r17LXPx8fGkpKQQHR19x+1rX9Ld5r6qosv5KV80ZLHiLHdfldp+AvzaGFPqfs1F9/itFpBAnojUtICss6+KariSkhLWr1/PiRMnLHPDhg1j6tSphIeH1/s+NZd0Q6n/h7IPf89x3AeMFZFXgRLgb4wxn1Ld7rH2/dB3bAGpndx8V1xczJEjR7h586bHuIiQlJREhw4dvB6F1EX3a2CEUq3+8Dc42gCdgVHAw0C6iCTiQwtIY8xyYDlUd3Kr73+9UPqfMRC1fvXVV6xfv57S0lKP8fbt25OSkkLv3r39et/Wvl8DJZRq9Ye/93GcBtabap8AVUA393jtDj33AGcbV2LL4c8CPMYYsrKyeOeddyyhERcXx/PPP+93aCjlL3+PODYCjwF7ROQ+oC1wmeoWkGtF5DWqT45qC0g3fxbgKSsrY9OmTRw9etQy98ADDzB9+vQGNUVSqqn52wJyFZDovkTrBJ5xH31oC8g78PVuzWvXrrFy5UpLaNQ0RXryyScDFhqNXZpQtXx+t4AE/uwOr9cWkF74crfmyZMnycjIsDRFuuuuu5g3bx59+vQJWJ2NXZpQtQ76rEozacgCPMYYPv74Y95++21LaPTo0YO0tLSAhgbocyyqYTQ4mkl9d2uWl5ezceNGduzYYemkNnDgQH74wx/SuXPngNeZl3ucWC9HRnn6HIuqRc+sNZO6FuD59ttvcblcnDt3zrLdhAkTeOSRR5qtKZI+x6IaQoOjGXlbgOfrr78mPT2d4uJij/HIyEjmzJlDv379mrNEli5ZzMKXFjHSsYxY9zmOA85F/OY1/aiivqPBESTGGA4ePMj27dst64F269YNh8NB165dm72uxixrqFoPDY4gqKio4L333uNPf/qTZS45OZnZs2cHtb9JY5Y1VK2DBkczKywsJD09nfe2bSNr736uXDpH15iePDp2FC++8ALjxo3TJs/K9jQ4mtHp06dxuVx89PHH7Nz9MWOe/u2t8wi73/krfvCDcxoaKiTo5dhm8qc//elWU6SsvfsZ8/RvPe6V+N78f9N7JVTI0COOAKusrGTHjh188sl3j+xcuXTO670SuuanChV6xBFAN27c4O233/YIDYCuMT39bgGplB1ocLj582CXt23WrF3L08/8iLDwcBKTBrB5yxaPbdq0acPfvPQzXfNThTT9qIJ/D3Z52+Yvf5JGeNtIHnnqdSa7x3a+9VMAhgwezN13301qaio9e/bknvh4vVdChSw94sC/B7u8bSNto3nkqdc9xsY8/Vuy9u7n3nvvJS0tjZ49ewLVgZSbk01lZSW5OdkaGiqkaHDg34Nd3rYpuvK11/e5cukcTz/9tHaGVy2GBgcNe+S9IdtEd73X6/sk9uvfoJXHlQoVGhz416DI2zYVJQVkvfETPempWrx6T46KyCpgOnDRGDPIPfYLIA245H7ZK8aY99xzLwM/AiqBvzLG/CEAdTcpfx7sWjB/PseOHuX//v6FW7eNPzHlMQA+dL3I5Ytn9aSnarH86uTm9q/GmH+uPRDKndx8ebCrtLSUDRs2EBERwYs/TfOYe/DBB3nhpz/lscceC0SZStlCvR9VjDFZwNUGvt+tTm7GmDygppNbi3HlyhVWrFhBTk6Ox3hYWBhTp05lxowZHp3hlWqJGnMfx4si8ufAQeCvjTHXsHknt507d/HGW2s5800+veITeObpBUycOKHB21+5coVjx45RWel5ABUREcH999/PjRs3+OCDD0Kqi5fWGhihVKs//A2O/wR+SXWXtl8C/wL8EBt3cluzdi2/W/E2Ix3Lbt2c9bsVixhw/4B6P6IYY9i3bx9HjhyxzPXs2ZPU1FTuvvvuJqu1OWmtgRFKtfrDr2NqY8wFY0ylMaYK+D3ffRyxbSc3f1fvLisrIzMzk127dlnmBg8ezHPPPecRGkq1Bn4Fh4j0rPXtbKDmv+LNgENEIkWkDzbq5ObPTV4FBQWsWrWK7Oxsj3ERYfLkycyePZuIiIiA1KuUnTXkcuw7wDigm4icBpYA40RkKNUfQ/KBvwAwxmSLSE0ntwps1MnN19W78/LyyMjIsHSGj4qKYt68eSQmJga0XqXszN9ObivreL0tO7k1dPVuYwwHDhzw2t+ke/fuOByOZulvopSdtZqnY+90kxdAUvJA8nKP06dvf2ZOf5y77+5o2X7AgAHMmjWLtm3bNmvdStlRq7rh4PYnUgEWvrSY5Cd+xbPLzpI89VesfMPJF19+6bHd+PHjmTdvnoaGUm6tKjhu5+1KS81j8FDdFGn+/Pk8+uijuoiwUrW0mo8q3typg/yVS+fo2rUrDoeDbt26Bak6peyr1R5xVFZWEtvL+2PwsXHx/PjHP9bQUOoOWmVwFBUV8eabbzJqxDA+fOunHo/Bf7T2Z/zT/3mVqKioYJeplG21uo8qZ8+exel0UlhYyJDBgwHIeqf60fj4hL68vuzX+hi8UvVoVcFx+PBhtmzZ4vGQ2pDBg3l07FgcDgc9evQIYnVKhY5WERxVVVXs2LGDAwcOWOYSExOZM2cO7dq1C0JlSoWmFh8cxcXFrFu3jry8PMvc9773PSZOnKjrZyjloxYdHOfPn8flclFQUOAx3qZNG2bMmMGQIUOCU5hSIa7FBkd2djabNm2ivLzcY7xjx46kpqYSFxcXpMqUCn0tLjiqqqr44x//yL59+yxzvXv3JiUlRfubKNVILSo4SkpKWL9+PSdOnLDMDR8+nMcff1z7myjVBFpMcFy6dAmn08nVq57rKoeFhTFt2jSGDRsWpMqUanlaRHDk5OSwfv16ysrKPMajo6NJSUkhPj7+DlsqpfwR0sFhjCErK8vratK9evUiJSWFjh2ta2sopRqn3hsYRGSViFwUEcsS3yLyNyJiRKRbrbGXRSRXRHJEZEpTF1yjtLSUjIwMr6ExdOhQnn32WQ0NpQLE705uIhIPTAJO1Rprlk5uV69exel0cunSJY9xEWHKlCmMGDFC189QKoAasuZologkeJn6V+B/AJtqjd3q5AbkiUhNJ7ePm6BWAHJzc8nMzKSkpMRjvF27dsybN4+EBG+lKqWakl/nOERkJnDGGHP4tv/ZA9bJrbCwkLfeeouTJ09a5qKjoxk4cCD5+fnk5+f78CcJjFDq4qW1BkYo1eoPn4NDRNoBi4HJ3qa9jDW6k1t5eTkrVqzg4sWLlrlBgwYxc+ZMW/U3CaUuXlprYIRSrf7w54ijL9AHqDnauAc4JCIjCEAnt4KCAlwulyU0RIQJEyYwevRoPZ+hVDPzOTiMMV8C3Wu+F5F8YLgx5rKIbAbWishrVJ8cbVQnt/z8fDIyMiguLvYYj4qKYs6cOSQlJfn71kqpRvCrk5sxxmtDpqbq5GaM4dNPP2X79u2WpkgxMTE4HA66dOni69sqpZpIvfdxGGPmG2N6GmMijDH33B4axpgEY8zlWt+/aozpa4xJNsZs87WgiooKNm/ezLZt2yyhcfnyFV5b9joxMTEkJQ9kzdq1vr69UqoJ2OrO0cLCQlwuF2fOnLHMnT17jsxNf2CkYxnfd7dwXPjSIgBdI1SpZmabpa9Onz7N8uXLLaHRtm1bUlNTeW/7+5bmSSMdy1iy1HZtapVq8WxxxFFcXMzq1as9FhEG6NKlCw6Hg5iYGM58k89kL82Ttuceb85SlVLY5IijoKDAEhpJSUmkpaURExMDQK/4BK/Nk/ok9fcYW7N2LUnJAwkPD9fzIEoFiC2OOG43ZswYxo8f77GI8DNPL+B3KxYx0rGMWPc5jgPORbc6zkN1aCx8abGeB1EqwGwVHBERETz55JMMHDjQMjdx4gQG3D+AJUtfYXvucfok9ec3r73qEQi1m0gDtc6DvKLBoVQTsk1wdOrUidTUVGJjY+/4mqcWLKgzAO7URFrPgyjVtGxxjiMyMpK0tLQ6Q6Mh+iT1b9B5EKVU49giOLp27dokndSWLlnMAecijybSB5yLWLpkcRNUqZSqYZuPKk2h5mNMXedBlFKN16KCA+o/D6KUajxbfFRRSoUWDQ6llM80OJRSPtPgUEr5TINDKeUzDQ6llM/86uQmIr8UkS9E5HMR2SEicbXmmqWTm1IqeBpyxLEaePy2sX8yxgwxxgwFtgJ/D5ZObo8DvxWR8CarVillCw1ZczQLuHrb2PVa37bnu94ptzq5GWPygJpObkqpFsTvO0dF5FXgz4FvgfHu4Sbv5LZz5y7eeGstZ77Jp1d8As88vYCJEyf4W3azCKUuXlprYIRSrX4xxtT7C0gAjtxh7mVgqfvr/wD+rNbcSmBOfe//0EMPGW/eXrPGdO2RYKYu3Gh++G/nzdSFG03XHgnm7TVrvL7eLnbv3h3sEhpMaw2MUKoVOGgakAO1fzXFVZW1wBz3103aya32wjy6QLFS9uFXcIhIv1rfzgRqVsrZDDhEJFJE+tDITm55uceJ9bIwT54uzKNUUPnVyQ2YKiLJQBXwNfCX0HSd3GrULMxTsxQg6MI8StlBvcFhjJnvZdhrC0j3618FmuSzxNIli1n4Ut0LFCulmp+t1+OovTDPthPHSeynC/MoZQe2Dg74bmGePXv2MG7cuGCXo5RCn1VRSvlBg0Mp5TMNDqWUzzQ4lFI+0+BQSvlMqm9VD3IRIpeovpGsLt2Ay81QTlPQWgNDaw2MZGNMB182sMXlWGNMTH2vEZGDxpjhzVFPY2mtgaG1BoaIHPR1G/2oopTymQaHUspnoRQcy4NdgA+01sDQWgPD51ptcXJUKRVaQumIQyllExocSimfhURwiEi+iHzp7uPi86WjQLpD35kuIvK+iJxw/945mDXWuEOtvxCRM+59+7mITA1mje6a4kVkt4gcE5FsEVnoHrfdfq2jVjvu1ygR+UREDrtrXeoe93m/hsQ5DhHJB4YbY2x3Q42IPAoUAW8aYwa5x/4RuGqM+bWI/BzobIz522DW6a7LW62/AIqMMf8czNpqE5GeQE9jzCER6QB8BswCnsVm+7WOWlOw334VoL0xpkhEIoAPgYXAD/Bxv4bEEYedGS99Z6juL/OG++s3qP6LFHR3qNV2jDHnjDGH3F8XAseobrNhu/1aR622417UvMj9bYT7l8GP/RoqwWGAHSLymbsfi931MMacg+q/WED3INdTnxfdLT1X2eHwvzYRSQAeBA5g8/16W61gw/0qIuEi8jlwEXjfGOPXfg2V4HjEGDMMeAJ4wX3IrZrGfwJ9gaHAOeBfglpNLSISDWQCi4xn90Db8VKrLferMabSVLduvQcYISKD/HmfkAgOY8xZ9+8XgQ3Yv63kBfdn35rPwBeDXM8dGWMuuP8yVQG/xyb71v0ZPBNYY4xZ7x625X71Vqtd92sNY0wBsIfqHs8+71fbB4eItHefdEJE2gOTgSN1bxV0m4Fn3F8/A2wKYi11qvkL4zYbG+xb90m8lcAxY8xrtaZst1/vVKtN92uMiHRyf30XMJHqnkg+71fbX1URkUSqjzKg+mnete4WDLZQu+8McIHqvjMbgXSgN3AKmGeMCfpJyTvUOo7qw2kD5AN/UfN5N1hEZAywF/iS6t49AK9Qfe7AVvu1jlrnY7/9OoTqk5/hVB80pBtj/peIdMXH/Wr74FBK2Y/tP6oopexHg0Mp5TMNDqWUzzQ4lFI+0+BQSvlMg0Mp5TMNDqWUz/4/5SjNsXnpkGIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 解析解\n", "def fit_line(x, t):\n", " mx = np.mean(x)\n", " mt = np.mean(t)\n", " mtx = np.mean(t * x)\n", " mxx = np.mean(x * x)\n", " w0 = (mtx - mt * mx) / (mxx - mx ** 2)\n", " w1 = mt - w0 * mx\n", " w = np.array([w0, w1])\n", " return w\n", "\n", "# メイン\n", "w = fit_line(X, T)\n", "mse = mse_line(X, T, w)\n", "# 結果表示\n", "print(f\"w0 = {w[0]:.2f}, w1 = {w[1]:.2f}\")\n", "print(f\"MSE = {mse:.2f}\")\n", "print(f\"SD = {np.sqrt(mse):.2f} cm\")\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(4, 4))\n", "show_line(w)\n", "plt.plot(\n", " X, T, \"cornflowerblue\", \n", " marker=\"o\", linestyle = \"None\", markeredgecolor = \"black\", \n", ")\n", "plt.xlim(X_min, X_max)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "321bb42e", "metadata": {}, "source": [ "## 5.2 2次元入力の面モデル" ] }, { "cell_type": "markdown", "id": "c96242d6", "metadata": {}, "source": [ "### 5.2.1 問題設定" ] }, { "cell_type": "markdown", "id": "473d3633", "metadata": {}, "source": [ "次は, 入力が2次元の場合, $x = (x_0, x_1)$ に拡張する.\n", "\n", "先程は年齢のみの入力だったが, 体重の情報を追加する." ] }, { "cell_type": "markdown", "id": "64c05924", "metadata": {}, "source": [ "まず, 次の式を使って体重のデータを人工的に作る.\n", "$$\n", "体重(kg) = 23 × (\\frac{身長(cm)}{100})^2 + noise\n", "$$" ] }, { "cell_type": "code", "execution_count": 12, "id": "649a57e1", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# データのロード\n", "data = np.load(\"ch5_data.npz\")\n", "X0 = data[\"X\"] # これまでの X を X0 とする\n", "N = data[\"N\"]\n", "T = data[\"T\"]\n", "\n", "# 2次元データ生成\n", "np.random.seed(seed=1)\n", "X1 = 23 * (T/100) ** 2 + 2 * np.random.randn(N)\n", "X0_min, X0_max = 5, 30\n", "X1_min, X1_max = 40, 75" ] }, { "cell_type": "code", "execution_count": 13, "id": "b9e02949", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[11.26 15.8 5. 9.53 7.2 6.39 7.79 10.18 10.95 13.08 11.29 15.28\n", " 8.07 18.17 5.41 15.06]\n", "[65.47 55.6 37.21 51.29 52.76 37.61 52.91 51.9 58.12 61.69 57.68 61.95\n", " 52.56 65.05 45.44 58.12]\n", "[164.48 157.18 128.99 152.42 148.95 135.48 146.59 152.4 158.09 164.44\n", " 154.3 169.49 152.09 169.16 137.01 161.95]\n" ] } ], "source": [ "print(np.round(X0, 2))\n", "print(np.round(X1, 2))\n", "print(np.round(T, 2))" ] }, { "cell_type": "code", "execution_count": 14, "id": "00714110", "metadata": {}, "outputs": [ { "data": { "image/png": "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zejs7JR97BnE2VdOr62tRWNjIzo7O9Ha2oo333wza6XXeDyOUCgEk8mEYDComvm6huxCp9OhqKgI69atS3JzpGkak5OTOHnyJA4fPoxjx46Boij89Kc/RUlJSVL+qL29HRUVFSl5w0gkgnfffRdPPPGEonP77ne/iwcffBA+n4/5m9PpZJTodXV1cLlcio6dizhjiQcAHnvsMVx77bWIRqNYsGABnn322YyPWV9fj9tuuw3z5s1Dfn4+LrroohTLUw2zCzqdDqWlpTj33HPR29uLb3/727jnnntA0zQ8Hg8THb3yyivYsWMHxsfHUVFRkdSDNDAwgAsuuECRH9C+fftQXV2NNWvWYP/+/dn/gLkImqbF/mngwOPx0Oeffz7tcrnoaDRKX3HFFfTzzz+v+Hhf/epX6aqqKnrp0qXM38bGxugLLriAXrhwIX3BBRfQHo8nG6euQQKOHTtG2+120edQFEWPjIzQf/7zn+mHH36Yvv766+l58+bRL730kqL33LZtG11fX083NTXRNTU1dH5+Pn3ttdfSixcvpoeHh2mapunh4WF68eLFio4/gxDkFo14ZGLPnj301q1bmf+/e/du+oYbblB8vL/+9a/0kSNHkojn9ttvp3fs2EHTNE3v2LGDvuOOO5SfsIZZhbfeeou+7LLLaJqm6dtuuy1pHdx+++0zeWpKIMgt6sxKOYMxb948HDhwAMFgEDRN480338xoJMymTZtStEZ79+5lun6vu+46vPzyy5mcsoZZim3btuGNN97AokWL8MYbb2Dbtm0zfUpZwxlb1VIT99xzD37729/CaDTinHPOwS9+8YuM/Iq53rllZWWYmJhgHi8vL8f4+Himp61Bw3RDsKqlRTwKcO+99zLGWc8//7xqJumZYuvWraiurk7yIr799tvR1taGFStW4Morr0wiOA0apgsa8eQgampq4HA4AExNN6iurlZ0nK985St47bXXkv524YUXoqOjA8eOHcPixYuxY8eOjM9Xgwa50IgnB/HpT38au3fvBjCl8r7iiisUHYcvf8R2xdu4cSNsNltmJ6tBgwJoxDPDuOaaa3Duueeis7MTDQ0NePrpp6ctqfjMM88o6rLVoCFTnNENhLMBQrqeN998U9X3ve+++2A0GnHttdcqev3WrVuZxjfuQLmHHnoIt99+O9xuNyorK7NxuhrOMGgRz1mI3bt3Y9++ffj1r3+t2DKEL38EAENDQ3jjjTdUGyWs4cyARjxnGV577TU88MADeOWVVzIasseXPwKAW265BQ8++KDmgaRBFBrxnMHgyx/deOON8Pl8uPDCC7Fq1Sp861vfytr7vfLKK6ivr08ak6NBAy/E2ppnoMVawyxCf38/I/UIBAL0+vXr6YmJCZqmabqpqYl2u92KjsunX6Npmn700UfpxYsX0+3t7bNRPnA2QpNMaFAXvb296O/vx8qVK9Hc3AybzYbVq1djZGRE9rH48kdvvfUW9u7di2PHjuHEiRO47bbbsnXqGmYAWlVLQ1awfPnyJL+Y5uZmHD58WFFVa9OmTYyBG8HPf/5zbNu2jekSV9pUqSE3oEU8GhSBL3+kJrq6uvD2229jw4YNOO+883Do0CFV30+DutAiHg2KkM5XmBuxZIp4PI7x8XEcOHAAhw4dwpYtWxRPEOHrQTp69Ci+9a1vIRwOw2g04oknnsD69euz+hk0fAgt4tEwK9DQ0ICrrroKOp0O69evh16vx+joqKJj8eWQ7rjjDtxzzz04evQofvjDH+KOO+7IxmlrEIBGPBpmBT7zmc/gL3/5C4CpbVc0GlXcFc3Xg6TT6TA5OQkA8Hq9mo+2ytC2WhpyDtdccw3279+P0dFRNDQ04N5778XWrVuxdetWLFu2DGazGbt3785qk+JPf/pTXHzxxbjttttAURTefffdrB1bQyo0IzANZyW45ms33XQTzjvvPHz2s5/Fnj178D//8z/485//PMNnOeuheK6WBg1nJHQ6XTOAfTRNL/vX//cCKKNpmtZNhVJemqbljwPVIAlajkeDhikMAzjvX//73wB0z+C5nPHQIh4NZx10Ot1vAGwGUAnACeAeAJ0AHsFU3jMM4Ns0TR+ZqXM806ERjwYNGqYd2lZLgwYN0w6NeDRo0DDt0IhHgwYN0w6NeDRo0DDt0IhHgwYN0w6NeDRo0DDt0IhHgwYN0w6NeDRo0DDt+P8Bu6Go/A8FiLAAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 2次元データの表示\n", "def show_data2d(ax, x0, x1, t): # ax は 3d グラフ描画のため\n", " for i in range(len(x0)):\n", " ax.plot(\n", " [x0[i], x0[i]],\n", " [x1[i], x1[i]],\n", " [120, t[i]],\n", " color = \"gray\",\n", " )\n", " ax.plot(\n", " x0,\n", " x1, \n", " t,\n", " \"cornflowerblue\",\n", " marker=\"o\",\n", " linestyle = \"None\",\n", " markeredgecolor = \"black\", \n", " markersize = 6,\n", " markeredgewidth = 0.5,\n", " )\n", " ax.view_init(elev=35, azim = -75)\n", " \n", "# メイン\n", "plt.figure(figsize=(6,5))\n", "ax = plt.subplot(projection = \"3d\")\n", "show_data2d(ax, X0, X1, T)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "e6ca7ed6", "metadata": {}, "source": [ "### 5.2.2 データの表し方" ] }, { "cell_type": "markdown", "id": "c5a422f2", "metadata": {}, "source": [ "データ番号 $n$, 要素番号 $m$ (0 = 年齢, 1 = 体重など) を $x_{n,m}$ と右下の添字として表す. " ] }, { "cell_type": "markdown", "id": "593f86e2", "metadata": {}, "source": [ "### 5.2.3 面モデル" ] }, { "cell_type": "code", "execution_count": 15, "id": "5a9fe93d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SD = 7.44 cm\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 面の表示\n", "def show_plane(ax, w):\n", " # 表示データの計算\n", " x0_n, x1_n = 5, 5\n", " x0 = np.linspace(X0_min, X0_max, x0_n)\n", " x1 = np.linspace(X1_min, X1_max, x1_n)\n", " xx0, xx1 = np.meshgrid(x0, x1)\n", " y = w[0] * xx0 + w[1] * xx1 + w[2]\n", " # サーフェスの表示\n", " ax.plot_surface(\n", " xx0, xx1, y,\n", " rstride=1, cstride=1, alpha=0.3, color=\"blue\", edgecolor=\"black\",\n", " )\n", " \n", "# 面の平均二乗誤差 (MSE) 関数\n", "def mse_plane(x0, x1, t, w):\n", " y = w[0] * x0 + w[1] * x1 + w[2]\n", " mse = np.mean((y - t) ** 2)\n", " return mse\n", "\n", "# メイン\n", "w = np.array([1.5, 1, 90])\n", "mse = mse_plane(X0, X1, T, w)\n", "# 結果表示\n", "print(f\"SD = {np.sqrt(mse):.2f} cm\")\n", "# グラフ描画\n", "plt.figure(figsize=(6, 5))\n", "ax = plt.subplot(projection=\"3d\")\n", "show_plane(ax, w)\n", "show_data2d(ax, X0, X1, T)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "fc3188ba", "metadata": {}, "source": [ "この面の関数は次の式で表すことができる\n", "$$\n", "y(x) = w_0x_0 + w_1x_1 +w_2\n", "$$" ] }, { "cell_type": "markdown", "id": "15206ed0", "metadata": {}, "source": [ "### 5.2.4 面モデルパラメータの解析解" ] }, { "cell_type": "code", "execution_count": 16, "id": "22dfde06", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w0 = 0.98, w1 = 0.98, w2 = 89.66\n", "SD = 2.32 cm\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAR4AAAEjCAYAAADkLW6lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAACmLUlEQVR4nOz9d5gkd3ktjp+qzmFyzrNpZnPUKicbowBGIKLBgK8JNvjyM1+MjbnG+GK4IMDYxgYMAiORfBXAxuRkISEuBkkrabVJOzn1dM5d3V1d8fdH9aemqro6zfQESX2eZ5/d7VTV1VWn3s/7vue8lCzLaKKJJprYStDbvQNNNNHECw9N4mmiiSa2HE3iaaKJJrYcTeJpookmthxN4mmiiSa2HE3iaaKJJrYc1irPN2vtTTTRxHpBlXuiGfE00UQTW44m8TTRRBNbjibxNNFEE1uOJvE00UQTW44m8TTRRBNbjibxNNFEE1uOJvE00UQTW44m8TTRRBNbjibxNNFEE1uOJvE00UQTW44m8TTRRBNbjibxNNFEE1uOJvE00UQTW44m8TTRRBNbjibxNNFEE1uOJvE00UQTW44m8TTRRBNbjibxNNFEE1uOJvFsIppTWptowhzVPJebWCcKhQJyuRwsFov6h6Zp9Q9FUaCospa0TTTxvEaTeDYBkiRBFEVQFAVZliEIAnieL3kdISFRFOFyuVRCIn830cTzFU3iaTBkWVZJhpBIudcBQC6Xw9TUFI4cOaJ7XhsdmUVLTTTxXEaTeBoMURQhSVJVciDPW61WyLIMi8WiPkdISRRFCIIAWZZ1n0cIjRAS+Zss35rE1MROR5N4GgiyrCJLrFpg9lpCHGYEQl5LlnNGUgKgIySLxaJbvjVJqYmdgCbxNBAMwwAA7Ha7KSGYgaZpSJJU8zYqkRKgEBMhpXJ5JZ7n4XQ6YbPZmsnuJrYFTeJpECRJwuzsLPr6+tDV1YVsNovFxUW4XC7dH+2SCjCPeDaCSgRCtjMzM4ORkRF4PB7d89qckjZSauaVmmg0msTTAJCEMk3TkGUZsizj0qVLGBwchCzLYBgGkUgE+XweoijCYrHA7XarZESqXjabbVP3UxstEYLRfgdgLa9k9t5mXqmJRqFJPA2AJEmQJAkWiwWSJCEYDMLr9aK3t9f0ghQEAfl8Hvl8HrlcDjzP4/z58xAEATRN6yIkQlA2m61hF3ej80rayKiZV2qiFjSJZ4Mg0Q650Hiex+LiIq644oqyeR6r1YqWlha0tLQAACKRCE6ePAlAiThYlkUul0M+n0cwGEQ+nwfHcaAoCk6nU0dILpcLDoej7ou7nuVdvXkl4/emaRosy6K1tbXZRNkEgCbxbBik3E0uplAohOHhYdjtdnAcV/fnWSwWeDyekvwLoEQcLMuq0VI0GkU+n0ehUIAsyyopaf84nc6SXqJGX+zV8kqyLOP8+fM4depUyfPNvNILE03i2QC05XNAiVYymQyOHz++KdujaRputxtut9t0XwqFgkpKiUQCfr8fLMtClmXY7XaVjEhE5fF4SpLdjYY2B2TcVj15pWYT5fMLTeLZALQdygAQDofR29urJpm3EmQZ5nQ60dHRoXuOLAe1OaVgMAifzwdJkmC1WktySi6XC1br5p4e680raSNMbbK7mVd67qBJPOuEVo8FANFoFBRFweVybfOelYKiKNjtdtjtdrS1tSGTyaC3txft7e0AoJISISayhCMVOOPyze12w2q1burFXQ8pmaGZV9rZaBLPOqBNKFMUBUmSMD09jeHhYdMlw06Dsapls9lgs9nQ2tpa8lpRFFVSyufzSCaTyOfzavuANq9EoiW73b5tpATUllcyawtoLuG2Dk3iWQcymQx4nofX6wUALC8vo7e3F06nE6lUal2fWWun81bDYrHA6/Wq31ULSZJ0pBQOh9VkN0VRcDgcKhmRFgKn07np37OWvBIpChjRFOduDZrEUydkWUYkEoEgCPB6veA4Dqurq7j66quRSCTqkj8QkAhkq07sRnVL0zRdtgIny7KuAicIAmZmZtQKnMPhKFnCEWuQRqDc96tlCdcU524+msRTJ0iTHyGY6elp7NmzRz0JtcRT64nYaNnETtgeyXeRnJff78fRo0cBKBc4x3FqTimVSiEYDIJlWUiSBJvNZprsrqcCtx4ib4Q4l+M4uN1uXbTUJKVSNImnDkiSBEEQ1A7lVCqFfD6Pvr4+AKWCz3qFoptd2t4pIMswh8OhJrgJSIsCaaA0k5sYCYl0dhs/p5EXe61NlOfOncPRo0dLfstKbQEvRFJqEk+N0Bp8WSwWCIKAy5cv4+DBg+qJY6Y0r+UCeD5GPOsFRVGw2Wxoa2tDW1tbyfNGuUk8HleXclq5icPhgCiK4DiuoXKTSvtNjqtxe9q8UiUnSpqm1Wrh8z2v1CSeGqE1+KJpGplMRid7APTEQ1EU4vE4AMDtdldMqtZrjfFChlFuogWRm5BIied5XLp0qeFyk2owfl49eSVjt/vzNa/UJJ4aoO1QJj90Op3GsWPHdK/TEkgikcDi4iJaW1uxurqqS6pqT3zShdyMeDYOrdyktbUVyWRS7SIvJzdhWRYAapabNBqNEOcCyrlH2hieC0u4JvHUAK0eC1ASpR6PB3a7Xfc6QjyyLGNqagr79++H2+3WddyayRqSySSeeeYZU1X6Zpz8z1fi0cJMqNoIuQn5bZxO55bITbR/m+23JEmIRCJgGAZjY2Ml33mn5pWaxFMFJKFMfqhsNotUKmV6AhPi8fv9aGtrg8fj0V3g5WQNly5dwsjICOx2u5q7SCaTCAQCyOfzupPfmFTd7DvycxWSJNV8bOqRm2QyGbVfyUxuQpZMmy03IftNzkur1arbJmmiNOaVPv3pT+PAgQN43etet+n7VwlN4qkA48QIALh8+TJ2796NQCBQ8noyqmZxcRFXXnllzVEF0XZVqvTwPK9WetLpdEn52bh8q3RHfiFGPOuFUW5ihFFuwnEcnnnmmbJyk0Z7KwFQt2Xcb7NtMAxjetPcajSJpwJIToD8UJFIBFarFV1dXVhdXS15PU3TyOfz2LNnD2w2m+pNUw3ViEB78pcjJXLyG+/IZj0x5G74fMZWNWQa5SbhcFiVadQjNyG/z3rkJqIo1hxhMQxjmpjX4i1veQu+//3vo7e3FxcuXAAAPPPMM3jHO94BhmEwPj6Of/u3f1O/81133YUvf/nLsFgs+Od//mfceuutVfejSTxlQDqU0+k09u3bB0mSMDMzg5MnT5atQrEsC57nMTIyUte2NlLVqvWOnMvl1J6YZDIJQMlVmS3ftmKZsNnYDgmKcZv1yE1Ir5JWbmL8bcpVRkVRhMPhqGkfs9ms6f5o8T/+x//Au971Lrz5zW9WH3vb296GT33qU7jppptwzz334O/+7u/wkY98BJcuXcL999+Pixcvwu/343d+53cwPT1dNf/13D/DNgnGDuWlpSX09fXB6XSWVUVPTU2tS4u0mUsfMwHoysoKrFYruru7K6rSjcu35xIpbQfx1JNXqkduEo/HkcvlyspNWJY1/Rwz1BLx3HjjjVhcXNQ9NjU1hRtvvBEA8OIXvxi33norPvKRj+A73/kOfu/3fg8OhwO7du3C3r178fjjj+Oaa66puI3nxlm0xSBJOdKhXCgU4Pf7cfXVVwMwJ4pYLAYA67owt7qPR9voVk6VXqlRz5i70PpC7xTsdOKpBKPcRAszuUkikUAymcTCwkJVuUktxGOGw4cP47vf/S5e/vKX45vf/CZWVlYAQNUpEgwPD5umIYxoEo8Bxg5lURQxPT2NvXv3qj+e8YSWZRnT09M4duwYzp49qz6+U7VataBaox458UnuIpfL6bqHjdHSVn+/5zLxGD+TZVmwLAuO44qRUAHptPL/06ePgOM4DA0NoaWlpazcJBQK4WMf+xgKhQLuvvtuHDhwAIcPH8bhw4dr2o977rkHf/qnf4oPf/jDuOOOO9RWErPftZbj3iQeA2RZVg2+iJkUAPT29pZ9j8/nQ2dn57qrBcTTZ6uwUaKrlLswJlRTqRRyuRxyuRzOnDmz6RM0CHY68ZBImmVZ9W+W5ZDJsEinWTBMAZlMARwnQpYdABwAnJBlB2jaCavVg0LhAq6+2qLq/KrJTa655hrccccdOHToEBYWFhAOh2smnv379+OnP/0pAEUY/YMf/ACAEuGQ6AdQroXBwcGqn9ckHg2MBl80TSOVSuGqq64qexLzPI/l5WVcddVVZT+z2gWwHVapm4VypPTEE0/g5MmTOlIyTtAwI6X1moptF/EAUJPEa4SikAghFIYpgGUFyLIdgAMU5YIsO0BRTthsXbDZHLDZnGhrc8JiMSdlhomjq6sFNpvNtJxuBtKj9JrXvKbuY0NsfSVJwv/5P/8H73jHOwAAd9xxB97whjfgz/7sz+D3+zEzM4Mrr7yy6uc1iUcDoscid61wOAyr1VqxCjA3N4exsbENJV23I8ezHdqwSglVsqQgywSjqZjT6SxZvlUipUYTD+luJhGK8m+FTDIZFplMAbFYCn5/BP39UWgJBXDAbu9UCcXrdaC9fWMujZlMDAcPdgEw7+Mp9x1qwetf/3o88sgjiEajGB4ext/+7d+CYRh87nOfAwC88pWvxB/+4R8CAA4dOoTXvva1OHjwIKxWKz73uc/VtC9N4ilCG+0ASnJ1dXW1YpmSYRgkk0lMTk6qj5GLup61/vNdnV7LtipJGsx0VqTKoxV/GjuIa7mwCaEYIxRtdJJK5XHhwkXs2XMEFKUQiiQ5QFEO2GwdsNkcsNudcDpF9PTkMDg4vK7jVA9kOYbe3l0AaicegmrH5b777jN9/N3vfrfp4x/4wAfwgQ98oObtA03iUUG8ksmPMjs7i9HRUfj9/rLvmZqawuTkZIk+hhBPoVBAOp2Gx+OpqIKmKKqsaXkT1XVWWlKKxWLw+XzIZDLgOA6hUEgzrpmCIACFApDNcmCYArJZDrJsA8mhKH/WCMVmc4BhfMjngxga+p2K+ylJDCwWdhOOgHE7Img6qS6dtDrCyu9rfPJ7vWgSD0r1WCSSmZiYgM/nM30PucsYtT1aoei5c+fg9XqxuroKlmXVxjCyZCB/P98jnkaCRKbapGyhoORQMpm1pGwoFAPLimhr6wPH0eofSaIhyxSsVjdcrm643V44nUouyeGww2azg6b1N4jLl3+tRheVIEkyKGrzL2yGiWNwsLXu5X02m62532ez8YInHlmWsbS0BJ7nMTY2BlmWcfnyZUxOTpa9O5DQ32xwn1Eounv3bvVztHdn0rCXy+WQzWZVR0PtcmG9LfQ7DbXmW0i5OJvNIpfLQZZlMIyy7MlmOWQyBWSzBUiSFYATFOWALCsRitXaCputBzabA06nE52dSiNkb29PmX0CBIEvLrE4ZLNZxONx1Q/HZrPCbnfAbrdjZWUGJ0++FJIkl5DSer7nRsEwMRw/3lX3+zKZTNWu5a3CC554iM8JWepEIhHY7faSSEaL5eVlOByOElsMALr56cbRKtrKTWdnp/p4JBJBJpPBwMCAmlw1ttAbTaw2QkpbHfEQgWs0GlUjlGyWJGYLGkKxAHBifn4aTmc/Bgb2wmZrKRKKHXa7Ex5PbTYhNM2iUv6cota6uo3X4hopcUin40inU+B5CnNzc5BlGVartRghOeBw2FWCIkZxm48oursnq7/MgFrkEluFFzTxkA5lq9WqiipnZmZMZzERkKkSXq/XNC9D0zSWl5frmp9OTtZy3arG5KoZKdVT8WkU8fA8b0jKssjlOE0fivK3INBYXg5hdtYFWVZ6UaxWD2y2ruJF64TH4wBNKwnSp58+jwMHTqOrq2/d+6Z8vfWRgJaUwuEpjI0dxp49u9XPJU6BhUIBuVwOiUQSHMcVxZ8UeJ7XEZLdbofF0pglmCDwsFgYXX6nVjAM0ySenQBi8EU6lBcXFzEwMACn01n2PbOzs9i1axcikYhpSVqWZcTjcRw4cKDm/ahWTq+14pPL5RCJRFR7BiMp1apOFwTBUDZmkc0W1LKx8u8CBIGCNimrEIpbk5h1oqfHCYBGLjeHgYG9VY9FKhWGKNIbIh2gccueYHABvb271f8rpGSFzWaFx6P/PaLRGGRZgtvtAccV1K5ujuOK5xldjJQdasRULykxTBzDw21q1FdPwrhJPDsA2oSyxWJBoVBALBbT6U6MyGQyyGQyOHDgAOLxuClZpNNpjIyM1NWbs5EIREtKXV36db+xN8bv9yOVSiGVSoFlWUxPT0OWKTAMj1gsjY6OXuTzIngeoCgnKMpZzKHYQdMu2O1rhNLV5YDFUtvpoyRdayMBn+8yenqqJ3KrQ0YjVj3R6CoOHfqt2rYoy6BpCzwedwkpAYAgiOC4NTJPp9PgOK7YeUyXEJLDYS8pk+dyMYyPr/3O9ZTSayEeM0uMs2fP4h3veAdYloXVasW//Mu/qE2C67HEAF6gxGM0+KJpGslkEvv37y+5e2hJ4fLly9i/f7/6HiOxpFIpSJJkKrqshI02EBKTc22Eksvpe1EYpgCOkwE4kc3akM9b0draB0GgMDf3JETRiV27BgHQsFis6lLB6XSoF4IyAaH+/auHVMPhRezaVZ78a99m7Vq5cojHA6BpB9raOqu/GIR4ym/TarXAajWPXEVRRKHAqb9hJpNBoVBQIxpCSOn0Auz2Q2qKoF7iqSYQNbPEeN/73of//b//N26//Xb88Ic/xPve9z488sgj67bEAF6gxKOdGAEoSTelAlKqxyKugvF4HE6nU9XAkMcJSDWsq6urxO60GspFPMrJWKrnSafX9DzZLIdCQQRZ7ihRigM07YDN1qY2t7W3O2C1KurxdDqNXC6H/v5+AMDs7K9x4sTvYGBA8RGSJEUBTe7OiYTSrEea8ux2m7pk2CgpacHzBSSTMQwOjm3sg1B7b0slBAIz6O4er/n1Ckmsz4dZsSFxwe0uzfERUsrlGFBUGgzD4Ny5c2rvmSAIWFhYqOoUUEty2cwSg6IopNNpAMrNlWix1muJAbwAicc4MUKWZSwuLpbtb6BpGoIgYHZ2FidPntQ9ro1SQqEQvF6vWt2oZT+SySQKhQLi8Tjm5xeQShV0OZQ1QrGr7fc07YTN1gqbza7qeQih1A4KhOcYJo5CgUNf31q3LU1TcDqVaMeI6qRkV6MlYuVaa+QRCMyirW0AdnttplaVsfGlViSyjPHxK2rf4iaV0wkpsWwSJ07swcGDB9XnEomEWuwgXt1al0NScHjqqacwNzeHvXv31r2fn/70p3Hrrbfiz//8zyFJEv77v/8bwPotMYAXIPEYJ0b4fD60t7cjl8uZvt5isWB5eRn9/f26pDPx6gGUO9Lc3BxOnz6NlZWVmohnZmYWDz/sh9XaCpalEI+3YXy8B3a7A1aro0gopeX6RkAbYa2sXEZ39+6KSwQtKpGSKEpqpYvjCkgksigUuOJgvQKWlpbhcNh10ZLVuhYh+P0zNTXq1YKNNvMJgoB4PIKrrx6v+T2yvLnl9Hw+htFRfR5PlmU4nU709JT2K5EleC6Xw/LyMp5++mk8/PDDuPfee2G32/HLX/6yJg+lz3/+8/jHf/xHvOpVr8KDDz6It771rfiv//qvdVtiAC8w4jF2KBNl+alTp/DMM8+YvkeWZYRCIVx77bW6x43uhIODg7Db7SVD/cphaiqEzs5j8Ho7UShwoOkAurs3X+NjRCAwi927q6uJa4HFQsNiKSUlURSxsLCI3t5eNVrKZrPFSElSI6X5+Wdx7bVHkMvligS8/vExG40+QqF5tLT0VKxwlm4TmyxJiKKr67jukUpVLe2csT/7sz9DPB7H7bffjttuu02dsFoLvvrVr+Kf/umfACjK9re97W0A1m+JAbyAiIcQiLZXZnZ2FuPj4+q4WzNks1mMjo6azsImOZhAIKCua2uZn57NZhEKcRgcVHoxtl4yAQAyOI4t5lQaE2VU26bL5YTLVXohi6KEUGgJdrsbbncr4vF4CSmRZj0SLVUnpY0ttQKBWfT0jNf1ns1sIOQ4Fm43X5IcXm9y2az5tRwGBwfxi1/8AjfffDN+/vOfY9++fQDWb4kBvICIR5IkBINB9Pf3w+VygWEYpNNptUplhlQqBVEUTU2VCMHMzMxgz5496l1HuwQDzKOeYDAEoF99bru0U6urU+jsHGlQTmX9sFhoxGLLGB09WCJxEEVJbdbjOA4MkwXHKaREqj1GYrJYLBtqIASAaHQFx469pK73bCbxZDIx7NrVUfL59RBPLcllM0uML33pS3j3u98NQRDgdDrxxS9+EcD6LTGAFwjxkPI5KT/Ksoxnn322IumQaaBdXV2mORuLxaJWh/r61prdSDIaUE4Kv9+vyh3IVNCZmRBaWibU92w98SjJZb9/Gn191Zv6tgKh0AImJq4vedxioStGSoSUCoUCGIZRSUlrAaolploujFwuDZZldQn32lC5nL4RsGwMw8Ol+qx6R9tUa/UoZ4nx5JNPmj6+HksM4AVCPIRsSIdyOBzWlcbNEAwG4fF4YLPZTImHoiiEw2EcO3asxBaDLNsWFxeRzWbBsqw6ErdQKOCxx2YxODgGjovB4XCU3cZmgdhwRKOrOHr0lk3fXrXog2VzSKeTGBior4xeiZR8vlW4XE5YLFaVlMz6YsxIKRCYRUfHaN0koohINyfHQ1FRdHWNlzze6NE2W4XnPfFoDb4sFgsEQcDS0hKuuKJ8mVQURczPz1esUmUyGVgslhLyIkuwQqGAUCiEkydP6u6yi4uL6O11ob29vdgollZ7dKanZ2Cz2dQyNFk6WK22hnThahGLLcPp7EBLS3ny3SoEg7Po7Bxq6JQKxYLECa+3tE2C9MWQaMlISpcuPY6enkkkk6myHcRmUM6Txkc8LJtFS4tc1uO6kQ2EW4XnPfFoO5QtFgvC4TCGhoYq3iUWFhYwNDSkVqmMiWeSLzJKFIDyuR+C+fkw2trGdb7EsgzMzMxg3759unxGKpUGxxXA88rSzdgfs97GPYoCwuF59PXtqe+Nm4RAYE6nh2oEKlW1qjXrnT2bxfDwbtXIrZysoVRrtTlLLYaJY3LSvHu6HuJRxKvbm88jeF4TDxm8R05AURSRTqdNfXSIZSnHcQiHw2pjlDFZDCi2GB0dHaZhNZlMwbIsDh48qBIfoPzwS0upkgQquT4oCsUop7TiIEkyeJ7kMzgkEgnTxr21C6JS5YdCNLqCkydfXO7QbSnC4WUcPHhTQz9zveX0ZDIIl6sVIyOlyz5SxSwUOFOtFcsWEI3GypDS+sFxMQwOmvvvNNpveavwvCUe48QIQMnbdHZ2liUMSZIwPT2Nffv2qa8xRjzEFuPAgQMIBAKmn5NIJHD8+PGSEz8cDkMUu9fVVk/TlHpCG0GSrCRa0vbImOUz4vEgRJFCT09/3fvRaESjK7Ba3TXroWrFeonH7y9fRifTVc20VoIgYnZ2Fna73ZSUjBKTekhJlqPo6tpn+tx6/L13Ap63xGPUY8XjcbXL0wwWiwXxeBw8z+u6QC0Wiy5qmZubw65du9SxIkakUilQFIX29vaSk39hIQins7YGq3pQrfJDlm5EfHjx4q/gcvVgbm6uZOnWSO8YgkoksLo6jd7exi/51ks80ejSukSqVqsFNE2jo6O95DmtKr2SVYbZb5DPZ9DRQZv6NAH1G71Xgpky/XWvex2mpqYAAMlkEu3t7erQyvUq04HnKfEY9ViSJGFqagpjY2NIpVKm76FpGrOzszh69GjJ44RgGIZBKpXC/v37kcvlSpZgsixjZWVFlwQkF4Aiq4ijs/N4Y79sFVgsdEk+4+LFLMbGDmF8fFwtRZdeEJaSpj0l59XYO2YksoQDB2qznagP9TcQCgKHRCKGa68dbeieVFKlVyYlCxgmjKNHeUQiEbjdbjidTh3R1Eo8HMdVbRo0U6Y/8MAD6r/f+973qsWUjSjTgecp8Zjpsbq6uuDxeBCPx03fw3Gc6SA6bSeydqqEWe7H5/Oho6OjxHVQlmVEIhHwfMc6BJ2NBcsyYJg0JieHyi4djC572WyumFNSvpfVatVFSeTvei90llWaOPv6Gnuhk+9Qb4UpFJpHa2svHI7aZRIbRTVSWlryY3CwB5lMRp01JkkSbDYb3G530QExAY/HA5fLVXbZxTBMVaN3M2U6gSzLePDBB/Hzn/8cwMaU6cDzkHgkScKzzz6LiQmlQY/jOKysrOCqq64Cy7KmyyNBEJDNZtVWcC1I7080GtVNlTBKIwRBwPLyMo4dO6aGploF/NJSEDbbxlz1GgGfbwqdneMVl1OVXPaMJukMwxhM0m0lQlCKgikp+f3T6Owc2ZAmqxzWs9Ty++fqlklsJpQldA4HDpzS5fZIRJ/L5RCLxXQz0rWkRGwyBEFAOp3eUCn9l7/8Jfr6+tRrZCPKdOB5RjwkoRyNRtUhe8Sq1Gq1mkYpADA/P4+WlhbTE5UQz8zMDI4dO6Y+bkw6LywsYGRkxNQWQymvR9HefhDbDb9/Bv395onKWlDNJF2rTs9k0ohGC+A4HjzPYXFxSVeK9vlm0N8/Yb6hDaP+pVYstooTJ45Vf+EWIZdLoaentKCgnZFus9mwe/daKwK5BogVbjqdxre//W3cd999iMViuOWWW7Bv3z78z//5P3X2GtVw33334fWvf71uO0bUQ/TPK+IxJpS1VqUA1AZCLchdo6Ojo6x5eyaTQWdnpy4c1kY8LMsiEong6quvhiRJJcSjiB696OrauhDeDIIgIBbz49ix25BImOe6NgKKAux2G+x2G4A1VuJ5HisrPgwMDKg5pUQigbm5i2ht3Yfp6ZmSKMlomVEv6l1qMUwSLMuip2doA9trLDKZGE6dqm+MDWmtsNvtaj7mve99L2644Qbcd999+NjHPobZ2VnTHrRyEAQB//Ef/6GTTWxEmQ48j4hHm1AG1pZcBw4cUB8zi3impqYwMTGBRCJhGg1JkoRsNovTp0/rHqdpWmX96elp7N27V2fArcXKShA0Xb10rdh11viF14FgcAZebz9cLg/i8eTmbcgE+h6lFkQiS+jvH8fx4ydrNBdbS3QTIWgl1LvUCgbn0NlZv0xivdsDFKkIy2aQz2eQzzPFf2dRKGTBcXkIQhK//dsvXdf+GJHJZNDa2ore3l5Tp81K+K//+i/s378fw8Nr2rWNKNOB5xHxaBPKFosFgUAAHo9HJ4ozLo9Iib2rqwvpdNo04vH5fHA6nWWFeOm0InkgJXgtIQFEbBpGe3tlMSbJBW1mn8Xq6jT6+hrbIbxe+HxT6OlR9qWauZi2R8lMnW5MdCv5q/qWWsHgHPr66p9VRSDLEmiagiBwyOXSyOczYNlsUXDKoFDIgePyKBRyYNk8OI4FRVnhcHjgcLjhcHiLf9rg9Q7A6XSD589XjCLqaQpcrzL9rW99K+6//37dMgvYmDIdeJ4Qj9Hgi6ZpLCwslDCw9qIm6nOStzGLhnK5HFKpVNkyJPkM4/x0LZ566inMziYwMpIFywqGi2MNNE1BliUAjU+0EoRCS7jhhutUP56thf74RCJLOHy4ukC1co+S3iBd27THcQX4/QE4nfoeGbOIRpIkxGIBHD1q3smtjPtRIhJCJMofJTLJ53NgWQahUAgdHR2w2z1wOr2w291wODxwOj1oa+uBy+WB0+mG2+2By+WtqE1jmDjc7p6Kr6mneTCTyVRNLpdTpn/lK18xfXy9ynTgeUA8xokRgJJz6e/vr9i34PP5dHkbM00W6WKen583/QxBENDS0lLWaiAajWJ5eRVdXQfgcDhMtT/kbi0IIli2UCyJNj7qiUZXYLG40NHRrWq/tgrGG3Mup9iJ9PZuzHGxkuZqenoGnZ2dxflWuZL+GOWCFiBJHJLJVaRSCSwvn0M+n0ahwILjlMiE51lwHF+MTEh04oHd7oXbPYDubi+cTjesVjuSyRQmJvZv6DsRZDIxHDxYOQ/TaC+ercRznnhIMpeQDhlmp/XIMYJYnl511VXqYxaLRdd/Q3I+3d3dmJmZMd1uoVBQy/ZGyLKMmZkZFAou9PaOweMpJSdBENW7tSxLCIfDKomS2d1rSnXFPmO9K7GVlSldh/B2Snf8/hl0do5tShmd5E2i0SVYLFmwbBr5fBYcR5Y6eeTzWeRyWVCUDTRtQywWgCBYMTu7Ao+nFV5vN3p62tDa2q7+qdbNrTQAVp8aWytkOVbVf7peZTqZKrIT8JwmHjM91tTUFNrb2yv628zNzWFsbEyXtyFlc/K5U1NTOHLkSNkllM/ng9VqLSvB8Pv9sNlsyGbtGBgwj4hI85jH40YqlSoq4m2GXhlF5hCNRlVSKvWScVRVqYfD8zhyRGlp3y7HQ4JAYBZ9fbVHBmt5kzRYNldT3iSVYiCKu4t5k3a0tAzC5VKWOGTJQ4jvoYe+in37rsPIyF7dcS8UOCSTaUQiMQDQWJZoj7tyM9ioubwWkiSCppNqz1g5NCOebYKxQzkWU04Qj8dT1kNZFEUkk0m1z4dAWx73+/1oa2sr2+mplIdX4HA4TBPCZGROa2s7aNpcY2PEWo7H2CujP1kUlfraxZFKpVAoFNQcl1kFSKmasOjv13YIbx3xaI+Rkk/x49ixW8EwSeTzJBG7ljdZI5I8CgUWsizDbvfC6fTo8iYdHT1wODxwudwqqZCcyPT0DCYmqvcrCQKHZDKK/v6RisddlqFLcpOiAlm2khtXLBav+WZQDgwTx+Bga1VnwSbxbAPMyudTU1M4fvw4VldXyxIPx3G6EjsBOXEEQcDi4mLF0uD8/DxGR0exurpazNXof3yO4zA+Po5nnllGS8uhGr8RVdPyR1Gpr5WltTCrABUKBSwuPgVRdGN1dbW4ZLNCFCWIotRQQaiS1M0hm02ppWGWZZDJJBEK+TA/70UiEcLS0hx4/l/VfMna3154vUPo7nbD6Vwjk3omPdSLQGAW7e2DVX2nte0ALS2lN4NUKolkMglJktR80trNYM3czWysjxHZbBzHj1fvs3mumoABz2HiCQaDag4GUDxyenp64Ha7YbVaSxoFASXZS1GUaTKYEM/CwgKGh4fLVhNyuRzi8TgmJibUfdD++BzHged5dHZ2IhyeRV9fR00m4BsdY6x8B/MKkM/3axw9eg26ujqLbocF8DyP+fl5yLIMq9WqW7YZtVfGfhMlStHnTQqFPDiuAJvNCbtdn4R1OnvQ1eXG7t17MTf3BIaHT+H06d/eNH/iehAMblwmQdMUrFYbHA4nenq6dc+RHiXSzW1mWaI/9nbIcgzd3dWjNVEUa65qVZubbqZMB4DPfOYz+OxnPwur1YqXvvSl+OQnPwlgY8p04DlKPJIkIZfLQRAEdHd3qx45WvMuM9fA6elptLa2QhCEkooXTdPgeR6ZTEanQTGCOAWS+emiKOpIam5uDi6XC4FAENpJEtWwWSVujmORSERw9dV74HQ64Xa7IYoSUqkE+vrakc2mkculEA7HkMkk1R4UpZGNhSSJsNkccLu9cLna4PV2wO1uUfMmbreyBDLmTbQoFDgEAgEMDY3h/PmfYd++a3YE6QBANLqKU6dObfhzSB+PEbX0KGnN6nM5BsnkOczPK26ZRG9FtFfrUaYD1Y3ezZTpDz/8ML7zne/g3LlzcDgcCIfDADauTAeeg8SjnRhRKBQAKGXvPXv2qF/c6KEDACsrK+jp6VGFdEaQqREHDx40vYvIsoxUKgWe59UoyxilZLNZpFIpOBwOTE8H4fXWroWhKBqStDHiIf0m+Xyq2AnLYHn5ElKpGJ544j81eZM8otEYBgbGdHmTtrY+9PfvVvMmTqcHNptD9fQhd22tFavN5oDF4gBFVT/piCyh/ukNmwOGSaJQ4NDdPbDhz1pPctksQk0mQzh8+BhOnDih6q2y2Syi0ahqxWKz2eByucDzfLGAka2oTAeUc7PSUstMmf75z38e73//+1WtGOl43qgyHXgOEg/RY5GoJpVKlYyYsVgsYFlW/T/HcfD5fLjqqqswNTVlmv/JZrMQRdF0FCyJbKampnTCOiPxkL6fqakp+HwMRkZq18OUi3gkSSqSSUaXN6m13yQWi6K//yiGho6oeROn04OVFV9NyVcCs7yGXuZg7nqonZ3u90+hp2fXjol2AoEZdHWNNWR/ykU89SKXi2F8vAtWqxUtLS2mZMHzPHK5HHw+HziOw8LCAliWhSRJsNvtOmU6+R1yuVxVWwwjpqen8ctf/hIf+MAH4HQ68alPfQqnT5/esDIdeI4RjzahbLVawfM8Ll++jIMHD+qWNMalllahbtYoKMsyZmdn4XK5yirUybgb7Ymg7XYmfT9dXV3FJGNPxbyNPm+Shs+3DIoSYbEAHJcHy+bAcco4HLvdmDdpgcvVi44Oj6YbtgUOx1rzYSgcwXd++HPMzlzCrvFenDjZjb6i13MjKunVlhBa10Ny17548Vfo6zsEn28VDMPg4f/3JAoCDa/LgpfdfrO6f1uFcHgRvb2NUcc3rpweQ1dX5UiZKNMTiQTcbrcaiZDVQC6XQy6nNE3OzMzggx/8IGKxGO68807s27cPt956a005GUEQkEgk8Jvf/AZPPPEEXvva16p5QSPqlfo8p4jHqMcimXrjXUFLPGYKdSPxhEIheL1epNNp0+1SFIXFxUVToSiZ2TU9PY1Dh5QK1txcEImEFSz7/5DNKq32HMcWe08KpjqdfF5Aa2s7Ojt7yvab1IpQOIIvfuNH8I6ehLMvC3rs1fjiN/4df/TG29HX27OpQlSg1PWwUCjA5/PBbqdw6tQ1iMeTeOD7/43+o6+F1+aEyLP43L334eW/cwoDA326xsmNNE1WgiRJiEQaN1esETo7QeBgt+fQ3t5e0+uNOR6tMp18xp49e3DrrbfixhtvxL/8y79gdnbW1HTMDMPDw3jlK18JiqJw5ZVXgqZpVce1EWU68BwiHqMei6IoZDIZnDhxouS1hFxII6B2YqiReBRL0jlcccUVZaclFgoFdHV1lfiikIgmHA7D4/HA6/WC53k8+6wfNpsLHCfDZnOjra2rSCal/SYEoVAYDocD7e0bn3P1vR8/gt7Dr0J89RG4WnbDYnOi9/Cr8L0f/xBve/NrNvz560EisQKvtxstLa144Ns/Qf/R18JiU3IbFpsTQydej6fO/wCvn9ynzhuLRrkNNU1WQjy+Crvd27C5YrIswWLZ2OWUTscwOlo6prgc6vVbHhkZwcjISM2vf8UrXoGf//znuPnmmzE9PQ2O49Dd3b1hZTrwHCEeMz0WaeAz02MRcolEIjpfEu1zBEtLSxgYGDCd3gAo+aF8Po+BgdIEJIl45ubmcPLkSQBKmb+39xgOHvxteDweCIKIfD4Ph8NRMQfQyG7iHCvDbXMil15Ez/gdAJSLO8eu//ND4Qi+9+NHlM92UnjZbbUvjWQZiEQWMTi4T7d/WlhsTuQ4mNrPro32UZZuyWSyjG3GWkm6GlZXp9HTU1mSUA8asdTK52MYHa09L1jPaJtqZGamTH/LW96Ct7zlLTh8+DDsdju++tWvgqKoDSvTgecI8RgNvsj6tVyvDcn/zM7OqoRAoCWeQqGAQCBQMRs/NzeH1tbWsrmfcDiMnp4etcltYSEEp7NfrVD5fD71IgEUDZb+IiFt940jHreTQj61AlkU4fIq+hyRZ+F2ri88IEu33sOvgru4NNIu3WpBPO7HqVO3qPsn8qwa8VTbP/1oH/OmSZJTIlNBC4VCyRQNrUI9ElnB5OQN6zoeZmhMcjmKrq7jNb+61j6eXC5XdXlVTpn+jW98w/TxjSjTAWBzBj03EMaJEQBw+fJlTE5Olk3cWiwWZLNZ9PX1lXS9aomn3LRPgmw2i2QyCa/Xa1oJk2UZ0WgUu3Ypd04l+omhtbUHsiwhn1eSw+Pj45iY2Id9+/ZhaGgYLS1KP0U6nYbP58PMzAwikQii0SiCwSASiQRyuVzZ7utqeNltN8P39Jfg8IyCommIPIvwhX/Hy267eV2fR5Zu2qWRsnR7pKb3p9MxCIKklq1fdtvNCF/4d4i8UnncyP6RknR7ext6e3swMjKM3bt3w+l0Ynx8HF1dnbDZrMjncwiFQpibm8OFC+extDQHUbQgEokinc6gUOA2lHTfaMTDcSzcbr6u7mJJkqrKKoDajN63Gjs+4jHqsSKRCGiarmjdKAiCesEbQSpRmUympAxvxPT0NCYmJhCLxUxJIJFIoLOzU/3xw+EwOK4dNpsDkiTD71/F4OCgJi9lbg0KKDoznufhcrnBcaWGV8YoqdKomb7eHlx9vB+Xpmew/OsvYHigu67oxIiyS6Mal26BwAw6Otbc/fp6e/BHb7wd/3rvvZAtTvT3tm1o/4wgS4tyUzSWli5idHQ/urt71Ma9UsP6+ubXbzS5nMnEsGtX7fkdoPaIZ6fJJYAdTjyCICAQCKjlQjKT3CyhrMXc3FxZe0zSXEiiJu0PTWZwkWmgxJ3QzBaVZVlks1mdjeTSUhB2ez9EkUI+nwNAVRSsakFRNCwWK9raSrtL10bnEm+ZtVEzZOmmXVKIIg9ZFvGaO1+OS5eexe2331Y2h1UL6l0aGREOL6CnRz8SuK+3B1edOoDW1lZceeXpMu9cLyq7D4ZCc+jr2wOv1wOvVx8JGMWgqVRaFeECgFZ8qx0VvdGlFsvGMDxcn79yrTmeanKJ7cCOJR6SUJ6bm1OjkqWlJfT19ZWdqggoy5dcLlc2BCXLMIfDoUs6k+dIwlJbHjdzJ5yZmUF/f7+al1FEqhG0tx9APJ5CLBbXuf9XQyXJROX5V1r7DGWqw+LiOQiCA5lMBoASmbW2tlaZp14eL7vtZnzxG/+uLrfI0uiP3nh71fcKAo9EIoxdu64zeXZzFPLVjN6j0VWcPm1ehakmBi2nu+J5HjwvwO1266LSWkW4FBVFV9d4jd9QgXYlUAlN4qkDxgu9UCjA7/eX6Ki0Ia4sy7h8+TL279+vE7oZkUwmcd11pRcCKY8Hg0G0tLSoP5ax6TCTySCfz6O7uxu5XA6AIkAtFLyw251g2RCsVitcLmfNMoj1SCbK2Tj4fI/j6NFrYLF4AfggCEJx0oVykSSTKfzysbOQf/YYPA4av3vbjRgaHKq4dPujN96Ou7/8JVgdrejtbql5aRQMzsLr7YPdbq4w3wyPaeWCNP9chomD5wV0ddU/46xS0+TCwiI6OzuLneasapthNpVV6U9aWyqzbBYtLfKmkUOTeGqE1uCLgExy0IaWJBIhj4VCIbjd7opiuEgkAofDYWq1QJZh8/PzumZBY8RDfJYLhYL6+MpKCFZrHyRJRiaTUfVctV5YWj+ejUAZYRPAqVMvVQ2sOjo61cF8oXAED3z/1+g9/Ho1evnX//sAXnrzEbS3t+umhGqb+Pp6e3DFsUkMDQ3q5otVg98/U1b9rUzV2IxuRhnlIh6/fwbd3eObIttwuVzF/J0eWqdJ41RWm82KXC6GAwdExONxNWJq5HGpxYvHTJ3+oQ99CF/60pdUGdHHPvYxvOQlLwHwPFWnGxPKyaQiLjSO5SBLI/I3aQQkMCb8OI5TyckMFosFKysrGBgY0PUHEeU6oEQ2pGU9FotBkqRio2IQbW3XIhaLwu3WC/ZqSzzW5sdTDaHQLDyebrjdXlBUQt0+gVmFavD463Du8g/x1je9Rjcl1Oh8KIoistkc4vGEphWg8tItEvHh+PHjMEtzbZYLolJhMj/eodAi+vsbP1ix0m+sdZrUv0fRXS0t+dHX145YLIaVlRUUCgVQFKW6CWjV6Uond32kVEty2UydDgDvec978Od//ue6x56X6nSjwRdZPh0+fNjUvItYXCwuLmJwcFBNohqjIWDN8jQUCpXddiQSKVmGkSUY8VEmd3zyeCKRAMM44PW6EIkso6+vT+ffXMuJ0qg+HmWEzR7Ddtc+t1KFqtKUUElS9GxWqxWiKOhmXxlFoSS/wTBRiCLQ0dGjukOWfu8Nf2UTmCeXifvhiRMvafwW15FcJlVOtzuPQ4eO63KXZMmWy+WQz+cRDAaRy+XA8zxomobL5UKhUFBvpC6Xq2xek2EYU/GzFpXmphvxvFSnGzuURVFEe3u7aaioXAQiWJZFKBTS5X+00RCgHPxUKoV9+/bB7/ebbpthGAwMDJQwN/ksv9+Pjo6OkskUPl8QND2AcDiMrq4uWCyWukmkUcQTCi3h2muvKX6m8pg2d7TeChVNU+roXONJrB0zw7IsUqkUOI7D3NwTkGUvIpEwOI5HOp0xmIyVXxJtBOWSy7HYCpS5VY0vLa+3jyefz6Cjgy4pmNA0bVpQAJTjzTCMmmuMx+Nq35fVatVFSPF4HKlUqq5Chxaf/exn8bWvfQ1XXHEF/v7v/x4dHR0NUafvqAZCSZLUqhKw1o8zNjZm+noS8RgneWqfIyB5mXLz0xmGAcdxJZUuQDkJiCWq9gckEc/ly0F4PErZvaenRy3L1wMlx7Mx4onFVkFRdnR1KcSwdiGsfe5GmvfKRSdkzExHRzv6+/swNjaKffv2wm7ncPjwFfB6lbn0DMOo2p7p6RnwvFC8cBLIZnMNG7tTbtnj98+iu3u8IduodZvVkMkoNhj1wGKxwOVyqU2SBw4cwKlTp3DllVfiyJEjGBwchN1uRyaTwSc+8Qk88MADeP/734/bb78df/mXf1nzdt75zndibm4OZ8+excDAAN773vcC2PjcdGAHRTxmEyPm5ubg8XjKfimLxaLeXY13YW2HcjQahcViqejaPz09je7ubtODSkzCyA9qfDyZpCCKWfT394OmqZJporVh48Tj811Gf/+axw45bNqPJRWqL/zrF2F3taGnq/YKVT0QBA6pVBwjI3sgCIpj5ODgmt5NkmTMz8/BZrNBFMViwnVNf2XWMFlrabocCUSjy5iYuKlh39GI9SwbBSGGgYH6K2zlenjIUpkUWO655x68973vxRvf+EZMTEzoVOXVoG2uffvb347f/d3fBbDxuenADiIeosciUQvDMEgkEvB6vab+ycBaMvjEiRNlzduNeRkzxGIxUBRVVhqhJFWzJZEXTdMIhcLg+T0oFHKq8nc9FapGLLWCwQUcPvw7ms80n+Xe19uDE4f3Ynx8HEePHqlzK7Xto98/g7a2AdjtDghCruSiVPIhihG60afYaAlqXpo294cm+2jcHsexSKWS6O+vXZ292VB+7+r+O2ZYj9F7f39/XbO1AoGAKo7+9re/jcOHDwPY+Nx0YIcQj7F8rh0NHAwGy3b+ZrNZOJ1O0/wPIR7jxFCzbU9PT+PYsWOIRqOm21pdXYXb7S5p1lJGJScgijJGRwfVk13bk0OaIM3K1Fpbh42W05VRMTn09a1dWGsRj1lovHlVJUAhnmoD6crleMqZ1isNk4KmNJ01lTpQFAWeF8DzgnqMA4FZtLUNVBwJvNXI59Po6XGoBZF6UO9om2pVLTN1+iOPPIKzZ8+CoiiMj4/j7rvvBrDxuenADiEeEtEQ4olEIrDZbOjo6EA0GjWNeEhTnJkeC1ibDLq0tFTRvN3v96O9vV0lFuO2stksGIYxPTny+TwiEQH9/R60tq79sNroJRgMoLu7G263W1VQp1IpsCyrW1ZYrRZwHI98nq1rWbH2PRRbUX15e43IzbGe5WBtr4xEfJicvL7ia+rlPaXqZoXNZi0rdSADEDmOw/LysnqMp6YeQ2vrIBKJpEr8jRztsx6k01GcOlVffoeg0aNtzNTpb33rW8u+fqPq9G0nHqPBlyRJOjsLM8dAAFhYWFCb9MxgtVrh9/tLJoYSyLIMSZJ0zoLGMcbAmpG82do4GAyB5zsxPKw3L6dpqlgOLRS9fAbVVnwjyLIil8sinU4XhaacOnbGrJnPLJfg989iZESvYVuL0Myu8Mb0DZkhHg+Aomzo6Cj/+6h70aB6ulbqoFTgoOYdRFHCxYs/wMjIXnAcpxITabcwCkK1XcWbCZ6PoK/PvHBSDc/lmVrADiAekggkJ+Di4iL6+/vVzmKzGVlKpBHBnj17ytqVkpKj0Y8HWCOzpaWl4thgu+5xAjKgraury7TH4amnZuBy9aoWnwQUpSSX/X6/qYGYfl+UZYXVakUqlcbY2GjxuJBlBavTYWknPKzduSnEYkFcfbW+ZGpWTtdiPSX/WrC6Oo3eXmP5tvS9ym9f1y7UBKUjei2ayWbjoCgrxsb2lhCKsas4Hk+UUalXdz0ko5bJRFQyZpllGXBcQZ3wwXEseJ5DVxeFjo7j6/qO9RBPoVDYkEh4M7DtxEPTtHpCsyyLYDBY0o9jHFUzNTWFiYkJUBRVNv8TiUTQ3d1d1sArl8uZ9v6QRCzJMx06dMi0BJ/P53Hu3Ara20vNpGiagiAIsFgsaGlpLXZiV656GHM8a8sKc0c+bfJ1evoZ8Lwdy8srsFjWLDRyuXzx9aW5I+W4bE7IEwotYGJibZlVjt82K8cky5LuWAcCM+juNp8mUamrOJfLgWHiiMV8YJgUMpkE8nkGgpCHKAqgKBGSJECSBESjUZw716X6aNvtrqIxv1s15nc4yIRUNwSBRWvrlKmDZi2oZ5gfgLpeuxXYduLRwqwfx2q1Ip/Pq/+Px+PqBNFUKmWa/yGWFuVG31osFszPz2P37t26bWnFoFofZaD0InnmmWfgco2b3nUoigbLssXBfySRW+3b1770MYoV5+YyOHz4akxM7NPdwcncMb9/FalUSncHB5QliBkhVrI5rUYWLJtDOp3EwEAtS4itaSAMhZYwOHhYHRXEslnk8xkUCtniv5nieKB8cWRQHhzHQRQF2O0KiSizx9zo6uqHzeaExWIFTdsA0KAoCwoFDh5Pi474zQShBIFACEePri+/A9RuAtYIE/rNwI4hnkQiAZ7nS/pxtEstEoUcPXoUgHn+h7xmZGRER1haSJIyfsVoAkY+T5IknY+yEaIo4rHHLmJs7DZEIpmS57NZBhRFldxFK2G9I4wVs/llHDyo9Kdo7+CEJAYGBlUZh5aQslkGMzMzur4ZhmHwb//5S/QdeXWJzWkt528wOIvOzvIjoI3Y6EWhjAli1D+FQhbRaBjZbAqzsw6wbA5PP/1L7Nrlw9NP/wh2uxM2m7s43cNdJJYWeDx9cDqVKMXpdMHl8tYs1uR5ASsrK9i9e1cVQahNXSIzzAra2vaumxhEUax5+VRtG+XGFwPApz71KfzFX/yFuoIANi4QBXYA8ZAK0NTUVFk9FiGX1dVVdHZ2qjaORDKhhd/vR1tbGzweDxiGMd1mJpPB3r17S7a1JoHw6XyUjZidnUUu58CuXf0lxCPLSv9DvWXbes49bUQCKYr+TgptbZ0lr1u7y8q65CvQUiRGLyYm9ukmhf74oV+h78irS2xOv/Wdb2PPSE+xN6r8/gYCc6ZldLMT30ydTvIkSkSS0+VJCgUWPM/q8iQWi00lEptNIQ5RtMPjGUR//yByuQT27SvgllveCKfTs0lJ47ULu5oglJi55XIrCIVa4Pf7Ve2Vdlyx2+2uGNHUmuMhS/5KKCcQXVlZwc9+9jOMjo6qjzVCIArsAOIBFELp6Ogoq8cSBAGCIGBpaQlXXXWV+pwx4iGyhiuvvLKsZzHpYjYzEyMyi5WVFd12tOB5HpcuXUJHx6TpwU4mk3C5XMhmczV993phNF4PzX0fK+efxE03R0y6j0ml0LzFnURE2jlYIhxwmIhIGU55fT6fw8zMDIBSNz5lvvZa9AUov0k2m0AiEQCQViehsmwOCwv/jWTyAvz+XxdHIxcgSZQuGlH+9qp5EqdTeazSzLFEIgFBENDT04Onn/4vDA/vh9u9eX40SuNrZULT2t7Kch4nTuxTZ7ZLkqSOK87lcjrPba32iuivXC5XQ90HywlE3/Oe9+CTn/wkXv7yl6uPNUIgCuwA4iHVpXIXutbyYnR0VHcXMOqxFhcXMTyshPnllmEzMzPo6uoqOz89m81i9+7dZe828/PzEAQH3O61ahWJACRJRjAYxJ49ezA3N1fXcagVRlsLNreKwWNvwvd+/EjJzKzK5XSYNiyWE5G2tdhVJ8Th4T7kcgwymTjC4RVkMkkwTBLxuB+LixeQzRYAiJBlERRFw2p1QJJo9PYOFonEA7u9Ax7PEAYGduHw4SMqkdjtG6++aHM8sdgyDhz4rQ1/ZiXUKxDNZuM4fnwtv0PTNDwej6khO8/zKiml02kEg0Hk83nk83lkMhm0trbqiEnp4l4jwfWagH33u9/F0NBQScd/IwSiwA4gHovFgiuvvLLshW61WtVlwMSEftysVhPFsizC4bB6UMyIh3QxE32QETzPg+M4DA0Nme5LLpdDOBxGJkOrDnbKPkigKBqxWKxoMWpcZjWugqS1teDyUciCAG/HOHLxp0teW6mcrkQ8yr/JOGWWzeLE4V488J2Po33sKsgSD4HPILn0/3DNyQk888wjsNvt8Pt3F8nDpRJJX98uiCKHY8dux7Fj1wCwFFX6NHK5LFi2oOqISHS0tBRBT88w+vqGS/ZvIyA5DSXRnUJvb2M/v9z2an99DN3dtc2tN2qvCM6fP4+RkRHIsoxcLodoNIpcLqd6+bhcLszMzGBqagqSJCGVSpkKoM2Qy+Xw0Y9+FD/96U9N9n3jAlFgBxAPADgcjqqjak6ePFnxCxorYmbLsOXlZVx55ZVYXV01JZ75+fni9IbSuxdN05idnUVbWxt43g6r1VZ8fE2JHolESsix0dBGJEziWbha9kASOZ2tBRmXHI2GkEisYHGRRjx+GYVCTs2TPPvsk7DbbfD5Hi3Jk1xzfA9++Zufo6W1G22tXtz5++/A0OAIfvOb36Cnp7+sOXs0OoUDB67G0NC47nGGySKVSmFwcFCX4JZlxa1xenpG5+njdDqrTtKoDCWnFQrNo719aNNlErV6HwOKB7XVmqkoWK4FkiTB5XLB4XCUfBZZuiUSCTz66KNYXl7GHXfcgXQ6jXvuuaemYQkLCwtqtOPz+XDy5Ek8/vjjDRGIAjuEeCohHo8DADo7S5OnBGYKdWPj4cLCAkZGRsouw4i3SbnIi/yYomiD3b4mtCO6rGg0gq6uznWZqVeDIAjFvEgGVxwbwv3f/hTaxq9GdOUhOFxDiD78PVx3xSS+973PgucLkGUadrsLgAWJRADxeBtcrjY1T+JyeRCN2tDd3YsbbripZJ9jsTgoqgNXX301+vvXKn92u6ss+bMsg3Q6jb6+UZNnZbWtwJjgbm9vLya41zx98vk8ksmk2sGtHYJotyttBJXGzZCktZLoXl9ncD3QDpusBoaJY2iodcN9NZX6eMjS7YYbboAoivB6vfj0pz8NoLbeqSNHjiAcDqv/Hx8fx5kzZxo2vhjY4cRDxtmUqy4Ba+XzAwcO6H58bfKUZVlEIhHdMoyUlAmIKPXixYum22FZFgcOHMBPf3oeHR2HdNvheR7xeBz790+avjcWi6rdo6SvQxBYFAoM8nkGhYKSbJ2bm0YsdsHQU6L4OttsLrWf5JoTu/DI//suCmwI/bv78NrXvQUDA0PF2exrc9kZJgtR/C8cO3ZC7YgmaGmZLpucNXMurAa/fxqdnSN1Ea+2c5l4+hi7wMtN0uB5RWajREkkye2Ew2FXI5Bo1Id9+8rr9BqFepZauVz9/jtmMLprlkMmk9HleMz200wgWk6n1QiBKLBDiKfcj+bz+dDd3Y1IJFL2vaIooq2trUSLYmYUX24ZpvVRNkM8HgdFUcVlghc221oC1GKhEY1G0d7uRSoVVlvll5aeRT6/jGw2hdXVFbhcNuRyWeTzSts8TVthsynRh8fTBre7DRTlRXv7eDGE9sDtJt2ueuLN51ksr6wgGLbB4RnBmXNLeNngLrS26kNubTndCIWY67XuKP9cIDCHgYG9dX1eLQ2EejvWyh3cDBNTR8/k82nE40lIksXE+bCxqC/Hsz4bDLNt1hI11WL0Xm58MYGx4rVRgSiwQ4jHDBzHqWXtSCRi+uOSQXdkhLAZiJeLdhmmJZ5qfj3k+ba2Npw9ewnT0zHMz6+A45SoJBAIFO0oBuB0emC3e+BwKOV0UewDxzkxMXEt2ts7iu3yHrhcbtC0Yo+q7TKORqOwWh3gOBmyLECWWQiC4kHtcDhVnVAsFsPlhUWMHnsL3CNXVphlXqmcXr6butI1ZBaqS5KESGQVR4/eUv6Npp9V18tLUG7cTCgUxtLSCoaHD6g5Qq19htEfuhbT+kqQJLEmpbsgcLDbc2hvb1/3turFThSIAjuYeObm5rBr1y5YrVaVKIz5l6WlJTidzrKhntbXR0taWuIx+iiT95HXh0IheL1eSJKE+fkYurr2Fku/Svl3eXkFfX2DGB7WV8KUgX8DCAYDGBsbVz+X/E0S0na7HXa7Ha2tLUin06q1qiSJYNmCZpplRFXxf+8nj6C1fx9ae/Yr30edZf5DXUm9ejm93JVP7DTMHzciGl2Gw9GKlhbziLHSgL3NmqsVi61gYuJadHZ2GJ6DLkpSOovZdY2KJlCIvfr3SKdjGB2tb0zxRpHNZiuO+94u7AjiMf4QDKMkKvfvL15YJsRTKBQQCATQ0tJS1qFQEAS0tLSUlCLJ54miqLPFIPtCiEchm3mcOnUKTz31FCiqG0ePruUM8nkWNltE58Wz9jk0gsEA+vr6QdN0ycm7FoXIkCRZlWqQRCVF0aqvLnHrI/vGst+B3dkHm3Pte1lsTsSSOfj9fo0eq3zEU8lqVWvIVgtWV6fR01OfmfgmepBBEHikUlEMDJQmuo0Jbi3WEtxs2VHR+iiJJLjLDxDUIp+PYXR0a0lgJw7zA3YI8WhBxtlooxRSodJqU2ZmZrBnz56yroGSpPjc7Nmzp+Q5rS2GmY8yqRgQ6YTD4UAkEgdF6cuGfr8fra0tpheR8hkU3G636R1u7USlQNNKArqnpxsOh71IFAohaaMkdVyyEIGjU18SFXkWna0utLS0qlFSNpsFsGaspr1oqqnTmSyDf//uzyDTTlUoqqD0PZHIEg4frm+ZRbAZN/94fBVOZ3vd3crVEtz6CLSgRqBK5c0Gml7z9jFfekXR1XV8/V9M3Z/aWbsW98HtwI4jnkgkArvdrlsHG5PBmUwGuVwOfX19SCaTphGPz+eD3W437eEgHc+BQKCk1Vs7P10rnVhYSMLjWcsDZbM5yLIMh8NZ0oMky0ChwGJ4WLEhrXZxCYKIRCKJiQmlqYxEOMbcIYlc9o6348zFJ9E1fJVulvlbX3+LLkoSBAGXLl1CZ2cnenp6dONnRFFEPp/HwsJCyZ08Fovhwnwau656s/r5X/zGv+PInraS6C6XU2bV19ukt3bxNJ55IpGFhk6T0Ca4jfPURVEZeU1RqGgyRtMyrNbqid5aUI8lxk7N8ewIkw6j+6CxCc+oUNdGRGY9OTzPY2VlpaxRvMViAcMw2LVrl6mPMnEmHB4eLhp0pZDN2uFweIr7oFhNDA4OmnolZzJp0DRd89RHovytdjLRNIVkMgivtwPH9w8i9sxXsPybu2EN/Qh//KbbMThAlnU0tBc0uSN7vV709HQXv5dyUQwPD6tL0VQqjZUVH779/YdU0gHWckgXL6+URHerq9Po7ByrOzlLiGcz8h3xuL9MP1HjYbHQsFgs8Hi86OvrxejoCPbu3YOJiX0YHR1Fe3t7cSjACmiawZNPPoknnngC58+fx9zcHAKBAFKpVInnVCXUWkoHqi+13vKWt6C3t1c1cgeAD37wgzh69CiOHz+OW265RTeH7q677sLevXsxOTmJn/zkJzXvsxE7KuJZWlpCX19fSflYSzxk9jkpfZsp1Ofn5zE6OopEImG6DCsUCuB53tQd0GKxIJ/P6+QXfn8QND2oXiyZTBpWqw1utwsMw+hyKESd3t7egZWVFdW+1OkkfSb6si7PC0ilUjV3PPt8z6K/fy9EMYvrrhxBKpXCK16xJuLTchchMoqiYLVaNEs3GbK85tSn2EE40d5ejLTsbp1WC1DIh5MUwtZGSYuLFzA0dLSiYt283Lw5xMOyOeRymYbLMCqhXDld6w/Nsj7cdNOVGBsb000JzeVyCAQCyOVyqpJcq70iwlDtTamRRu9myvS/+Iu/wEc+8hEAwD//8z/jwx/+ML7whS80TJkO7CDi4TgOfr/f1Jhd65Oj9WMmz2mjmlwuh3g8jomJCaTTaVPimZmZKeu1YrFYsLy8rIuGnn02gJaWYUiSWIx2Ati1axzAmlaLgKjT+/v7MTAwoJmKwIJhlFnkHMepzW88z8Pj8YBlWTidjqpRTyAwj0OHfhuBwHkA5kJPAu3XUyIh5d/ZbE51ftQTknIRuWwwFYraLSI8Hg+Gh4fVDuNAYAmDg1eovj5msgczbFZyORicRUvLQE0mWY1CLeOLKSqKrq5xAJWnhAqCoBJSJpNBKBRCPp8vLusdcLvd6vVQKBRKRKFGVFtqmSnTtcWYbDarfn6jlOnADiEeiqLUZLEZe5KIZ3l5Gb29vbqIyGiNOjMzU3T+M1+GER/lcicmmaFF5g8xDINoVIDX26EOnnO73Wqim6Yp8Lxy8RN1+q5du4qVqfJTESRJRi6XxdLSMlpbWxGNRsCyBXXftBGS0+mEzWZDPp9GLsegv38MFKV0WK9FLmbH1XyuVjAYhMPhUHMFRq677UXX4e5vfE2X4wlf+HccmRyBIn9QoqRkMoCenlHs339QTbKazcMiNwZJkorfywGLZXNOvWBwHh0dw9iM3FE5VFOns2wWLS1yTfkdq9WK1tbWkkos6fnK5XKIxZRGyWeffRYcx6l+PsZIifQwrSev9IEPfABf+9rX0NbWhocffhhA45TpwA4hHoZhkM1mcfCgeUenxWIx9WMGlB+KZZVxvMlkEjzPq05pRuLR+iifO3fOdFupVApDQ0MqywcCQQD9RYLjEArFsXfvWoeudoZWPB5HS4u3prutkq9RhJMdHe2afVwzeWdZZVRLJBIp5q3OQZZbEI1GAawRSrlQf+2htfCC+DBbrZaybQi9vb04vLsVqxe+jiwrYmy4D+9480tx4fw5AGtRUjA4i97e3bqKmz4Jq7QApNNKha2trVUlJLIfsVgMS0uOkihpvaNnIpEVjI/fsKW9MtU6lxkmjsnJ8lrDWkBRFJxOp3rTpShKPQ9JoYBESrFYDAsLC/jrv/5rsCyL97znPdi/fz9uvPHGioMttfjoRz+Kj370o7jrrrvw2c9+Fn/7t3/bMGU6sEOIx+v1mk4DJbBarQiHw9i1a1dJRESWWmQw34EDB3TPaYnH6KNsRDKZhCzLuhB4ejqIlpb9kCQKDJNFW1sbbLa1w0bu9IoFaRh79uwBRVEIRyL47o8eRo6V4HbSuOP239J1FXMcj2w2W2LBUcnkPRA4g8nJ43A6HaAoqJHe5cuXi70pTvXiXRNS6r2cQ6Eg+vr6EAqFKvTxAF6PF791/T74/QG84hWvAE1TuFD8viRKisV8OH78JbDbbSV9SSSXRHqUlAtHySUpFTcRFy5cQFdXF3p7e02nhhrH+1QTh6ZSYciyBa2tnVtKPNoJuGYoFKIYHGxc/44xx2OxWOD16s+XgwcP4rbbbsONN96I3/u938P09DRCoVDd23rDG96Al770pfjbv/3bhinTgR1CPBRFVbQu4HkeLMuWTQaLoohQKAS3261bz2qJp5qPMiGunp4eNZLI5/NYXc1hYKAT6bRSwiedxQSkChaJRNHR0Q6LxYJwJIK7v/ZD9Bx+JVw2JwSexd1f+w/88ZtfopJPMKgQQK3XB89zSCSCuPrqV8LlcsFiscLhsCOXy2HfPuXOx7Jr5fJwmC2OwpGRTCYRCoVAUTR4XtD0FlVLtGi1XkrimZAVwyTBsnk1iWvsS9KCWGJo/ZO0yz+zKEkh8zX/YnNx6FqkpPgEzRbL6JszNqccqmu1oujqapxdSq3JZZpWKm433HADbrihdBpKOZB0BaAYgpFG3kYp04EdQjxA5dnhq6uraGtrM/1xSf6HdBhroSUeo48y6Uwmd6poNAqn0wmPx6O+JxgMAugDTdNIpVJwOksbw4hPczqdVnNL3/3Rw+g5/EpdObrn8Cvx3R/9CG//g9eq/TRk1notCASm0dIyoFq2apOZsqzYapr1mUxNXYbb7YLd7kAoFILVasXMzAwYhgHPc1hd9euqbko0pz/OZj/L6uoUurt3V02q5nJ5UBRl0pS3ZrtqrLiR6ElbcdN2bwPQadwymQwKhQLOnfs1BgaOFr1okvB4PFWjpEagUnI5n8+go8Pcane9qJV4tEvgcjBTpv/whz/E1NQUaJrG2NgYvvCFLwBonDId2EHEUw6xWAwWi6XsF7RYLEin0xgYGChx3SfuhWY+ymRWFrkLz87O4vjx44jH4+oSZmYmCLd7FwRBKLEXIKAoCrlcDl1dXWpCOcdKcJmUo3OscpcPBkPo71+LdkLhyssyAFhdndGpv5Whgcq/K1e2aNVj2mKxYO9epZM7kUggnU6jpaUFhUIByWQSLFtQ/a0BpQkSUCxBXC69F08wOIuhoer5gnA4jL6+3pLH1/p4aNMEd7XubWOUJIoizp8HTpy4CqFQBBRFVYySGjnGuFJyOZOJ4fDhxsokRFGsydysUChUtJQBtn50McGOJh6y/Nm/fz8WFhZMX0MMusxmqJOIh/T1GP2aif6LTK8g/RJEbrG8nEZvbw8CAWX+udm4HEmSEAqF8Yv/fhr5ggy3iwYNzrQc7XbSYNkCQqEQfvrwb5ArSICURywjYeDoa8suy5T80QoOHFgzUdeSQLlJocrrlIglFArpxvmQ9yudyPpyaybDYHp6GjStkH0wGCyakbGQJAnLy8vw+RZx6NAtEASxbPNgocCB5zl4PGY5NUI85vtdrXvbmEsKhxfhcnXC5fKAoqIaC9q1KInjOLAsq4uS6h0VbYZKSy1BiGFgoM/0ufVCFMWqhAKUevHsJOwY4jFbahGP5HIdyACwvLxcvHOVnvzE8CuTyZRUw7RC0aWlJd38dFEUEQwGIYrdEAQRDJPFrl3jqvZJi9nZWfz0V89i6MTvqcQRevLfQCcfxMCx16rl6MgFhUwuXryEH/7iAvqOvBoumxOzj38Tu068rOyyDACi0RVYrW60t69VRrT5kkrhNEXREAQeHFfQ5b+UC9v8feRYkiT66OgobDaFoO12G/L5KFyuDuTzBSQSC8XQn9aV/51OByKRCHp6ehq6zCmXS4pEFtDfr0RzoiiqpKONkqxWK7xer0kuSaowKtpRNUoql1xWttsY/x3j9ho1YWK7sGOIxwjSt3PVVVeBpmlT4snlckilUhWXYYlEAvv37zeVRoiiiOXlZZ1QlBDPwkIILtcgAoEA+vv7QdOlY4w5jsd/Pfo4hk78no44hk79Pri5byHwxN1weTrR3eXFH7/5JWht8eIX//0U+o68Vn09Bcq0S5gsywDA57uM/n69yZY+4qm01KKQy+Wxd+++EgIoFymtvY4qeZyiaKTTAezefQwjI2vdwaKodOOyLItsNotoNAqGYcAwWSQSCQMpOTV5o8awUizmw+HDL0YymURXV6duKVKp4qZ8L6psLon0JbEsW6LDIhVESRLB83xJlJTLpdDT4yhJAWwUjRxts13YscRjNs7GCDJDfWpqyvR5lmXV+UpGkGjI2C1N0zQ4jsPcXBxu934UCgG0tbVBkqSSyCIQCECmnSXEweUzWFgJwuv1ggaHF91wGh3t7Uop0mJ4PWU+TsbtXCPKUGgRx4+/RLcNrcl85YhHUVYbG9JqG8di/rnh8BJOn9ar4y0WGh7P2iC7YDCEtrY2dHV1geMKqrJbaX5jVbuJZDKpymAcDue6XALzeQYMk0Zv7xBmZ+fUigxBpYpbtVyS1WotRkoelEZJyncSRQmrq76SKCmd9uPKK511SRxqQa2ft97mwa3AjiEe7R1cK3soBzIfvZLJ0dLSEjweT1lphM/nw/i4fv65xWJBNBoFz3cgHA4XmwnXqmAEpHTd6rHpiCOfjmD5wk8wefO71GXWV775AF5y01G43U5AzOtePzh5I2af+Bb2nn51ybIMADKZeHHcsl57pCSXCfGUj3hEUYLD4Sy5mJXcT2UjMH05Xfl/NpuAIIjo7i5tbSCQJAnJpKK2V/xvSu/6+TyL6elpeDwe0LSl2CEeU10CtQ2F5O9yieBAYAZdXWNgmCy8Xk9dCeN6c0n6KMmpqvlHR8dKoqRwOABB8ODs2bNqQtjj8ei6i2sdk6xFPRFPJbmE2ejiv/iLv8D3vvc92O127NmzB/fee6/qFNGI0cUEO4Z4tJiensbExETZH4QknQ8dOmT6PICijWipgJRAkiSk0+mSTk6LxYKVlTAEQWmMIlIHRYW+dqH6/X709/fjjttvxhe//h9q+Xz18iMqiQDKsmng2Ovw32e+iXe85fXo6e3D3V//ljom2O5qgVVkEHryyxBkC3o6vXjdy66Hx+2GIIhYXr6E3t69JeVabU6s3JJJqc7JZSog5dsXjNC+LJFYwfBw5TJ6PJ5QVdkVPhWAYsrV1aXv6iVeyiQRzDAZNbJYk5M41IbJUGge3d3jakm4Eag1SuJ5Tv0ttFESTdPo7KRw+vRp2O2KAb0oimp3cTweh8/nA8uyIHOwCBkRcipHLo0iHjOB6Itf/GLcddddsFqt+Mu//Evcdddd+MQnPtFQgSiwg4iHkEwikYAkSaaRDKkeBINBtLS06MJIbWWB+CQfOXKkZAg9QTKZLDbwlV5Ai4tpuN0idu0yH42Sy+UhiqLaBf3Hb34J7vnaN5DnZVAFwVzZLVKqydQ7/+B38fkvfQk2Zyt6u1vxZ3/ye0inUjh//jxuuukmSJKiCWNZFmfP/grDwyewvLyiJm2VXET15HI4HClqosq1uld2IDRDKuXH6dM3lX1elhXSNzNgM76uuLWS58p5KQOKmt8oJ7l48SyOHRuCLLNIJBKa41RddLseaKOkaDSNzs4OiGIB+TyjznrPZGIYHZV1Nz9lXr1CKkSkS451uRHGNputhJBqmYcOKEsts+mkBGYC0VtuWTN0u/rqq/Gtb30LQGMFosAOIh5gTUt15MiRkue0Bl3z8/M6u1KjNSrxUfZ4PKaJ10wmA0EQTNXByo/uRne3t2zTl9/vV7uoKQro6+3Bi2++EtFoBCuhNASTnE27d+3/fb09uOLYJIaGhnDixHEAAJPJAIDa9AYog/nOn7fh9OnrIctKzophGMRiMeRyObXfKBpVzPBdLqd6sfG80ntktVpNGwBJmd0MRt4hxCaKPBgmicHBXeZvhNKl7PV6dLISM6zXj8coJ0kkgujtHUBf3yDcbk+xd4tVpRfKaCBrScWtXFOhkrvJFeeYZYtDENf+cFy+OH6oAI5jsbq6ivb2NtjtTnWyqtXqhiCwuO66cXWJSXKE2lyh9twk3tsdHR06QtKq1UmUlMlk8PTTT5dESS6XS5cTzWQyGzKWv+eee/C6170OQGMFosAOIx6/34+2tjZTlibksrq6ioGBAVO7UnJ3IT7K5U7q6elp9Pf3m5LS6moEothhKs8AlB4Xsr7Xfr5SJZNwx+2/hbu/trb0EnkWgbMP4H++5eW6z9FGLOT/gD5f4/M9i46OEZUgSeIWUBLbmQwDjuNgtzvA8xwYJqMq3EVRVCsuHMeB53nDxVb7UotERul0AC5XZ9keElkGIpEwRkfNI0UzbFRT5ffPorNzDLlcHiMjo8Xvp3g1Kb43WWSzKaRScUSjSTBMCgyTAssyEEUOyox3GbIsQpalYhe4U51hpvztgs3mhMPRhdZWFxwO5Q/Pi5ic5LBnz76Spaff/xtMTq4RtHa0khbaAgEhJe0wALMo6cknn8SpU6cqRknf+c53sLS0hH379mFpaQkjIyN1RX8f/ehHYbVa8fu///vq/hmxkd9uxxCPmfG6FlarVTVNMlOok3DWzEdZC9IJ3dLSoqraCWRZxhNPTKO1dVfRDBwlz/v9flXqoD3uSie0iL7eHvzxm1+Cf/niFyFRTtgtIt7+xleVdCKTcr72/8pxWCMev3+mpIxOoCSXlZPB7XbpKnc8L2BmZga9vb2YnZ0Fz3NYXl4GzwvqJIV8Pl+8MAsmkxTMT6hk0ofW1vKiwGyWgc1mNz12RtTjGwwQEmGK0chaJHL27E9htXaAYcIIBp8oRiIF8DxbbG50lJBIT88QbDYnbDYHaNoKgC4eTwqStKYd1EZI2vFCBPPzCxgeHikhHSUyT6CzUy/hMYOWDMxIyRgliaKo5osqRUnpdBr33nsvpqen8ad/+qcoFAr48Y9/XNOx/upXv4rvf//7eOihh9TPbKRAFNhBxBMKhTA8PFyWMCwWC5aWlrB7925ThbooKnd2M2Ii0OZ+stlsSeI5Go1iZSWP7m7zhJwkiXC73abmSxYLrd6llKXUBADF7H3EMPoGKE1WkxOQfIbSrezD8eO3m+6LNkdjTC5Ho1H09vaitbWleAE51ZwLKQMTdXogEFBHBdvt9qIezaIeL+Vv5XPT6QgmJ0uXwQThcET1MaoESZKQy6WQyyUQiy1BllMVljPlScRqtSOVymNo6ADGxibhcnnhcLjgdLrgdLrhcLjWNXtdlteEyUY5CU3TxaWatZgYVmxRtNtRxhS3bdiMzCxKikaj6OjoUBPW5aKka6+9Fl/+8pfxB3/wB3jFK15R8zZ//OMf4xOf+AR+8Ytf6FIRjRSIAjuIeIaGhtRSqhlkWQbDMKZ+IsQaw+fzmVpnaJPSra2tquOfkXieeOJpdHRMmoaQxCent1fRHRlfQpZaxJSLppV9KqepURoS17ZvHCkTCs3D7e6E12tOgspSTd079XFRlHRWqsYkMjGNUqw1KNVJUZZJGVjJIwFALqd0ai8sLECWCxBFGU5nCwoFTu23IZFIKhVHJLIEmmZqIhFJUrrObTYG/f3DajTidPagtdWhLmdcLk8xP1NKIoHALCKRVZw6dWPJXLONgKIU0a3S/aw//oS4iZmaGXEnkyvYu9emNhU2En6/H+Pj4xWXboSELl++bColIjATiN51110oFAp48YtfDEBJMH/hC19oqEAU2EHEow0VzZBMJjEyMlK2JyebzSKVSqkSfgKivaIoCgsLC6qC3bjUEQQBZ87MYnLy97GyEijZRiIRB00rYlXzcTXKj6B0tdLFx8rnUch+af9P3g8APt8U+vrKjwTWjiDWRjzRaARdXZ3qRar0H5ntg37fiA+QKAIWi4B0OgibLYdIxIehITsWFs4hl0vj0qWfIBD4DVg2D0HgQVEUHA43ZJlCa2sncrnu4kTVUhLRRiLZbBY/+9nPcMUVV2B0tHaVvhZ+/yys1jb09HSv6/3rgRLxuFAocJiY2KfJza3178RiEQhCJ86dOwee54tm8B41CawUEJx1V9x4nkc+n69YIiefOTs7i7GxMRw/frzsa7dLIArsIOKphFgsVvzBzZOaVqsVPp9PtaXQgizDAoEAent71SqD0STs3LlzsNv74fW2AdATj+K2F4LH48Hi4kLxAlrrI7HZbCrZSJKoJo7NZBYERuLRvh9QupWvuupVZY+JQmrKv9cISFLH5JBIJJuNQ5Z5LC6eV/MjHJfH3Nw0/P4V/PSnkZLljNXqQDg8C1HsQy6XhyTZIYoy+voOo7t7ANdcc31RYuACQBW9l4Oq0l1bSSqXI2nElAm/fw79/ccbLkmohnQ6Da/XoyMOpVHSDouFQl+fVZX6AMpNLZvNqhIfv9+vCo5JZYoQktvtLhslEaFvLcfs/vvvVxPDOxE7nnhIs2B/f39ZoSjHcRBF0bT3h0gjVlZWdLkfLfEUCgVcujSFzs7jmu2uLadisSja2trQ19cHURTUaZNaW9JEIgFAkQoQlz6lycy8gZEszbT/BxSSSySCkCQKPT39xcekkvLu6upFBIM+sGwOTz4ZwfS0G7FYBDzP4dlnbSqJrKyswmp1orXVplvOdHTwyOVcOHLklpLlDM8L4PnvYXBwAH5/AIcOnUYgcB79/cdgs9kxMKCPUJLJJAYHB9VxwSRHQjRO2hyJIiZ1qN+d5/mSHEktyOcZRCIRXH99+SbSzUIsFsPAgHkui2HiGB7WN09arVa0tbWpk1EIZFlWK1PZbBarq6vqtAmr1aojJI/HA7/fX5N1qSRJ+NGPfoS/+Zu/2dgX3UTsGOIpx+J+vx/t7e1wuVyms4dkWUYkEilb/iZTI8rZYgDKOByOc6K9nfTm6McYRyJR7N27V612KDOq9CX/hYUFBAIBWCwWxOMxUJRyAUsSi/n5BfWuryTPBeRyceTzjBqJhMN+rKycwZkzSsKVZQv4/vf/pWxilWGyEAQrrNYOtLfvxsjIKGy2AA4ePASXywu73QGapvDoo7+ELMu46aYbdftL05eQy8klJGL2WwQCs2hrG4TNZi9ZOoqihHQ6g/7+Ac3713IkZgPwiGYLAFKpJKanpwGQ0cJa+1ZnWfnD8vKzcLt7NtSnsh5wHA9RFMr2eGWzMYyN1ea/oxikKX04xCecgOd5lZASiQSWlpbAMAyefvppXe8OiZK05/avf/1rHDt2rGLz4HZjxxCPGbQl9kQiYeqHEw6Hiydo+URXPB7XeTEDa8RDSvQ83wK3W7kjkWUQTVsQiUTQ0dFR7KEo3b9CIQuWzSIe9yGRWMTsrAWCwCIYnEc2m4Es86BpH3I5Bvl8rljCtyCTyYKirADy8HhaIcsW2GydaG8fB8PEcfjwbRgfn4TT6VZJRItnnjmHpaUlCIKAsbEJuFwu7N3bho4O/Qls1JitPV6pgVC/rWBwDr29u5BIlCb/Y7EYOjs7a45YLBYabrcLPK+IVnt6ejE8PFTMkRRUDRzDMCgU2LIyibm5ZzA2drChlhu1QPm+5YmFomLo7t54FGaz2XRR0szMDIaHh9HT06OLkuLxuNq/I8sy7r77biSTSfz2b/82lpeXMTw8vCnd2xvFjiIeoyfP4uIihoaGilMHSkfVEB/lsbEx5HI5089kGKZoa6E/+OTzZmdn4XZ7IctO5PMZsGwWsdgKgDR4nsXc3BR6ejowO8sVcyEFtWtVaVpUIpFcroBkMozVVSf27JmEw5EGRbXBanXg1Klb4HC4dSTym988hnQ6jWuvvQYsW0A8Hkc2S0OSLEgkkmhp6UOhwAMoAKBKem20yWVRlBCLxUtU2WbHVPMMAPPROMb/RyI+HD36IiSTl3UNjpIkIx433241GHM8WjFpW5teSa/IJAqa5W0Yy8uz6Os7hqWl5ZKBiespodcCSZKLFUPz78vzHOz2bMOjMFmWEY1GsXv3btA0rUY6RteFXC6H17zmNfjwhz+MaDSKd73rXThy5Ag++tGPNnR/GoEdRTxakF4TkpfRThMlID7KLpcL6XS65DOy2Sx4vtQSAoDq8VMoFPDkk5fx+ONBWK1KBSaVyoFh+sFxIjyeLrhcPXA6PcUlgKuERABlDM6vf/1rHD16FHv37oEgOBGPKwp6s6mWFouSgCbTAex2Gy5cuABZZjAxcRKDgwNg2ULRPzihlmzJckTxhSHG6wy6u7tNlyWTkxOmVS1t+b5SsjKXS8DttpdEUoAiL2ltbV2nfWjtDYTG2WSLi5fR0tKBEydOqfk2li0gmUyproI2m02X2HY6nXWPWTZCcfTzlI0gMpkoxsa6NtyNbUQ8Hkd7e3vV8rXb7QbHcbj11lvxqU99qqH70GjsKOLR3p1nZmZUhgdKiUfro2zWDAgo0oju7u6ylaVCoYC9e/fiqacSeNWr3qheQIuLi+js7FIrZWbLLCMIAZFSp7E8Xvp6/QRS8vpweB6HD98Ml8tVkkfQLkeU9n7lWBFhpM/n01WSrFabqRcRoF1OkQkSumfVf6VSqxgZKU1oEjHo7t3ldVu1YD3X6NTU0xgdPVTsSXLC5dJXO/UNgIpwlHhvE6dE7Rggu91R035Eo9GK3br5fAyjo431VwaUPOfoaG2z4O+///4dGeEYsaOIhyCTySCbzepsL4xLrYWFBYyMjMBqtVacGNrS0mJKSvF4HICiCqaoPt1dm6ZpRKNRtXRZy0mZTmd0/6dpC8iIFjNQlL6qpXTACkinIxgZMVd2a5cjWh9jj8eN8fFxtdNWO96GdNpqCUm50NaWWqXbWXuOYcLo6xtXnyOvz2TScLlc626QW68DYS6XRyoVwMTEibKvqdQAaHRKjMdjqimZdlwOOVbkhlAoKM6DRpLTI4aurtoIolaQUrxZ1G5ENBpFKBQyFVnvNOxI4pmamsLkpL6DWBvxsCyLSCRSdhmmHe6XSqVKiIdIJxwOB2ZmQvB49LOyJEkpc46OmjcsGiGKktrtS7ZFllKyDNNysVkDYSYTLBqWl6rmjdCG+x6PV1VtG6tIRI9lvNDINNJAwA+321NyoQGKOr5QyKG/v1SbFg5HNuR9s94+nmAwAFEsYGBgfF3bNTolEph5ABHBrc1mhSAoBuuZDGOqbuc4Fm43V7G5bz2op3fn3//93/HqV7+64Uu9zcCOIh6KohCNRmGz2UoSdNqoZmZmBnv37tW1jWvJJRKJwOVyoaWlBQzDlEgxyERRlmWxspJBX19pkk7Zfm3RTiQSQWdnJxYWFlQyMQ6vI53NBGbEk077MThYm/5Fe3JVOtFomlZ9gLSYmqIQDofVNgXjhaZ8r3m43d1QupyV98myjFwur0ZSG0U9FwnPC0U1+lBNUxbqQTkPILJsm52dgdvtKokmyXItm41jctJdNWdWLwKBAA4fPlz1dbIs41vf+hYefPDBhm17M7GjiIdEImZt3uRCzmQyyOfzutyFlnjIjCwyMdRsfjqZKDo7OwtR1NsF5PMsJEms2ZJSEES1gQ5Y6zwmSy3lMQlAdeJhmCh6emrTHOkH+tWn9CbbA4DW1lbdcknRpPE4d+4cUqlVeL398PlWEQyGkMvlIMuKxqqjowOFQqHm/IgR69nnWCwGno+jp2djeaV6QFHKjai1ta0kX0Z0WyxbQDDohyTxeOKJJyDLsjocUiuVqHdZmsvlKnbsazE7OwuPx7MhxfhWYkcRz8rKijrfqhymp6dLlmHa6GJ1dRVdXV3qj0UEpATa5wOBNJxO/bA5v9+Prq4uBINBxOPxkvyIMcQOh8Po6elWowT9UkvSPKY/6cg+k3J2PL4KinKovUTVwLIF9d+VpkyUAzl+xoqXotlS9pVhEujpGcfo6ChaW1sQjUZ0fj9+v1+XH9HmRqq7/1Weq2WEJCmjmPP5BPbvv66+L7tBxGIx0wuaCG5dLhdyOQrXXXcdvF4vZFlWl7akTyybzaodyUZCMno7Efj9/pqJhEgkngvLLGCHEY/dbi+ZTa4FcQ00tp4TkBlZWrm+1qtH+7wgCAgGWRw5slYmzmZzkGUZPT296OnphSiKaiIylUoiFNK3/dtsdiSTCezevZYM1i+19I9poa16WSw0/P5peDwDNZGIkvRVckrKeVZ/9LB2fpq/N5uNwWJxwun0at6jCGsHBwfR3r72G+jzI0b3v1JfG5vNCrfbg2PHjqKlpXrSFFCcDe12pRLZ07N1d/Vaksosm0Vrq6S6IhIPZbMbKM/zKiElEokS32UtKYXDYezaVT26kyQJP/zhD/FXf/VX6/+iW4wdRTwDAwNl9ViyLKNQKFRsViMmYNqQVrvUWl5exsDAAGw2G1ZXVyFJ3dCOefH7V9U7DE1ToGnzhC2pjAQCATgcTvj9ftVULBqNwePxguPW5B1mZKIVhVosNEKhBbS399W0BEmn0xrfonLq82ooX9VStuFHWxtJHhNfHiXSMRK/Pj+y9lwlXxtS1mYYBoLAVx1tE41GIAhJdHSMbrgfpx7EYrGKk0wAZRLI/v21ldFJ/tKYwyQTcbPZLLLZLPx+P3heWbrZ7XadZoss20h089hjj+HIkSMNT2xvJnYU8VSC3+8vts6b33kkSTI1ASPEw/O8bobW0lIIDseAuhxKpzOwWKzFUTCVw1WLhYbNZoMoisVpGMpd//Lly/B43HA6Hbq80vz8PFpaWnTLNnLhS5IEhkkin8+jtXWsasQjy0A4HFIv/krWG5Vg9P8xIpeLYnT0CDhujZw4ji9x4au8jdrK2trRNmTGudPpVD2kia1tKLRU0Sqk0ZAkGel0Gv39lUcQc1wUQ0Mbs+bQdiQDSvPrsWPH0NbWBo7jVEIKhZRcG8dxEAQBn/3sZ5HL5XD99ddjenoau3fv3rAB2VZgR+1huQueaLY8Hk9Zh32O4zAxMVHWnXBhYQGjo6NFi1IJ09NRtLXtLhonKWXlkZHR4n5U31elzNmrvpamlQoYRdHFO1oblpaU54aHh+H1etULLRaLqiLJ+fkFRCKX4XL1guOUfJSZjIEgk8kYErpr0ol60N/fj+uuu9bU8VGZlsCivb0H4XAEgEKQgqD4NjcClcraRB6h9CSlkU6nYbHQmJ6+gOuuO4xYLNawbuRKUOwvvDVonWLo6pps2HYFQQDDMGhrayv6HSk5s85O/RggjuPwjne8A//rf/0viKKID37wgxgZGanatTw1NaWauAPKjfHDH/4wkskkvvSlL6lJ9I997GN4yUteUu5jNoQdRTzlQJZQqVQKgiCU+K/kcjlIkqS6A2phsVjA8zyi0aga7UQiEXBcC+x2V9GxLwmn02VqaWqGQoFDPp8v6WOh6bVlnbZ8viZ1sKs6JFlem1axuPhL9PYewupqDOl0ClNTU7oOW62yPRQKYWRkBJFIpLid9S21zErsBKurU/B4etTvIMsyYrE4Oju7Nt37hqYpXTcysdfo6HChs7MfAwMjajcycZG0WCxwOBxqhLTeiaRGxGJRDA1V7lXK5zPo6KArFkTqRTgcrql3x263I5VK4UUvehE+8pGP1Pz5k5OTOHv2LADlpj40NIQ777wT9957L97znvfgz//8zzey+zVhxxOP1kf50qVLpl3IpJRo9hxN08jn8zh06JB651paCsJi6YMk0ZAkEYFAULWIrC3aCRZPjNJtkaWSthO63H4pz/HI5zM4cuQKhEIPwettwf79k6ZLETKSORgMqsllJcdTf8RTCcHgHFpatH4zMmKxGI4fP76l+RVAyZl1dXXC7z+P/v69aG1tgXHZJgiipvGPQSQSBc/zarSgJe9aRaSFAgdZRtVepXQ6hqNHGyuTCAQCFYdVanH//ffjQx/60Lq39dBDD2HPnj0YG6t9MkgjsKOIx4zh5+bmVB9lM6EoqaC4XC7TC5xEQ319yjpd6WoOg+c78B/f/wnyrAynHXjtK9vQ11t5LQ9AnQFu1sJOlnGAvrPY3JZC+a6rq1Noaxsuqs/1xGVciszNzWF8fLzo9cOp3yeVSuLy5SnV83ctUirvZ1MOiv/QKtra1ipH6XQGXq93y0lHqwY/e3YZe/aYm/hbrRZ4vZ4SjyTtss0oItUeK0JO2u8Xi0WrJpUBQBCiZb2g1gNi/VJL7048Hsfq6mpFe9NquP/++/H6179e/f9nP/tZfO1rX8MVV1yBv//7v0dHR8e6P7sSdhTxGEGsIomPspkmi4w79vl8psRDpBHkQo/FYlhZyeI/fvwQeg6/Eu3F2Vdf/Loyr9w4hsaIYDCI/v4B08hI6+OsXWqZ7RfJRQWDsxgaOlx8T/lEMcNk1S5kAKoJvNVqQUtLKyYnJ9WSNskjkbG/Zjak5QbuRSJLcDhaYbWuEV4ymcDk5H7T128mkskkWltbIYoCUqko+vvr00EZl20EWmP7QkGxJFGO1dqyLZ1OYWREqU4qFaTSz1e6lOPo6qreWVwr6und2ahEguM4fPe738Vdd90FAHjnO9+JD37wg6AoCh/84Afx3ve+F/fcc8+6PrsadjTxTE9P63yUjRFPLBZTbSUDgUBJNERyQtos/+pqCD9/dAE9h9+im2/ec/iV+O6PfoS3/8Fry+5PPq8sdYzldQItMWojDfM+HuJu6MM117yi+Jh+8oQWoVBId2fVzvaWZUn1/NXmkYC1TmSi1zIraWsJaXV1Br29uxEIMCBldKvVWtOsrEYjFotibGwcodAcWlr6GiaT0B4rIwRBRDQahdPpKi5xlWWbVh5BoiRByKO729GwvBdx0yw3W8742m9+85u4//771729H/3oRzh58qS6GiB/A8Db3/52/O7v/u66P7sadhTxaJk7mUyW+ChriYfIK44ePQrAPBqamZnBvn37cPHiRVVD8+yzAQhyG5wm881zbOVcSTAYqDg3SrtU0kY85RoIs9kIXK5WtLRonQ9LI55cTgm/tcng1tY2XHnlaVy6dKlicpl0Itts5jakxjzS+fOPY+/e69VlCqBEV+vxRd4IstkcrFalFB8IzKGnZ3xLtmu1WsAwDIaHh3X5Ha08gngkBYOzmJyM4OzZsyV9NuspaSeTSbS0tNQ0NmZ+fh5OpxNDQ+sf63PffffpllmBQEC9uX3729+uSSO2Xuwo4gHWrDqnp6dx8OBB3XOkQgUoB6mtrU0dOlYpGiKEkMlkkE5b0ep1gzeZb26jxbL6I2XaglySRzDu35pWq1rEQyOd9mFkZK3LupxNaSgULCE8l8uJ4eFhJJOpKlYN5WHMI+VyabS2enHlldcXp04qByGdTmNmZqYkN7LePFItiEQialk3GvXh5MnqJueNACFbY1JZK48gsNvD+J3fOYS2tja1z2Z1dVX1h7LZbDoycrvdFTWA9SyzHnjggQ1JJHK5HH72s5/h7rvvVh973/veh7Nnz4KiKIyPj+ueazR2HPEASjnR7XarLegEVqtVHb27sLCgC0mNQlEyMVT73OpqEDQ9gJfeOonP3Xs/hk78njrfPHjum3jNS65S9UfGiohiKF/5pCi31DKvalmQyUTQ2zuieYwuIR7yfY39LgSHDzduysLq6hS6usZhs1mL+6Ls98DAALq6Okt8kWOxqE7RXmseqRo4jgfHcfB4PGpzZa3i2Y2ilk5lAMVZbXF0dR2HzWaDy+UqMWzXNv5FIhFks1lwHFfM1eknSNjtdmQymZpsUyVJwve//308+uij6/2acLvdai8Zwde//vV1f1692HHEQ3yUibpcC3JhLy8vo7+/X9f8po2GQqEQWlpa1C5Q8r6pqQBaW08gkcjiTa+8GT99+NtYjabQ39OOP/kfL9MllrUVkXQ6g0KBw+rqqs5+1GgYpdipKvtQbanFMDHIMoW2trWT1ThkEFDG5WjX3puJQGAOfX2KKb4yn5vs95qg08wXud48UrUeG3LxU5SSfO/uHt+SZZ7SqayfmFEO2WwSfX2VFefa2eZakCED2WwWmUwGwWAQ6XQaoiji3LlzJSJS47LtiSeewMGDB2syB9up2HHEQ3yUzRKJVqsVHKeYWF111VUlz5HoYH5+Xp0YCijEk0wmEYmI6O31IJMJYu/eveju7sIvfvELXHvttSXVLG1FJBqNYc+ePXC5nCbTENZ8bFg2D57nEYvFdGRjRjyBwCw8ngGdVkpLXADUi9cY+W0GJElCLObHyZMvBQAcPXoELFvAhQsXqr63Uh5JEER1vlYtPTYAdCOYg8F59PbWbya/HqRSKbS2ttREctlsDIcPr69/x2KxoKWlRaetevLJJ9VJKCRKIhMkBEFQb7IPPfQQLl68iFe84hUN9/7ZSuwo4lE6ZGNlk1pWqxWpVApjY2Mld4G15dQquru7dZUGi8UCv19ZZgWDwaLUgVI/o5wwFQAyGQZWq1XNo1S66yeTSSSTCUiSpDOfj8WiBj9kJyKRBbS29pZ48mj/T9zntgKh0AJcLmVWuyhKyOXyati/DimYCqvVAqvVTBqhTdaySCSSqv6IzLm32+0IBpdw+PCLNvDNakcsFsPISG2uipIUa5gvEOndIflKt9ut8/6RZRk8zyMUCgEAzp49i3Q6jU996lO4/fbb8bGPfazi55eTSLz5zW/G6173OiwuLmJ8fBwPPvjgpvXtGLGjiIeiKJw8ebJsJ64gCGBZ1jSTT5Zay8vLOlsM8tzU1DLs9hPIZNIYHBwARVFq9cAsBwMoF1wwGFA1XJX3XZmGIMtAT08PWlvb8Mwz50DTNFpaWtHe3g6WVfyQl5cXsLKyiM7OU4jFonC73WoykyxvCgVljM5WKY79fqWMDijevV1dnetUvdcGs2StLCstFENDQ8Wx0wvI5yWEw3EEg9GG5pG0kGUZ2SwDns+B53Ng2RQEgYcg8BBFHrLMg6I4ADwoSgDAw+vNl2in1gttNckMRDg7MjKCAwcO4CUveQn+6Z/+CUD5c1eLchKJj3/843jRi16E97///fj4xz+Oj3/84/jEJz7RkO9UDTuKeIDKVpjLy8tlh92TaMhoiwEohBUIsHA4WPT19YNYmlYjnkwmrfZu1AJ9OZ0ufh/oxtgAAMsGsHfvSaTTVrhcblgsSgmXZfMoFAqYnp6BIPDweLxIpVLqRITNjKrD4SUcP/6S4gjlBCYm9iEaVZKP61G/rwfZbBYOh0OtHC4vJzAxcRITE/tqyiMpvtM0LBa62CfFqwQiyzwALXlwkGW+OHBRRDIZQ3t7C9zuFJxOGzweG5xOG1wuW/GzW2C1WmG329XROY1QgcuyjHA4jCuuuKKm199///3467/+a/X/tZTetdBKJL7zne/gkUceAQD8wR/8AW6++eYXLvGUA8MwyOfzZZXCxM/EbAxILBZHodAOi0WA1+vRNCQS4ildainRTqguDYu+qkVOiNISud8/i4GBfUinl2G1WtHVpdw5A4EAWLaA0dFRLC4uoqWlpdgzEi/j9NeYAXYMkwTL5tHXN6zOyqplpE+jEYlE0N3dXRyWyCMUWsTAwAFEoz6Ioj76oGkeHo8AWeYgivniTHkBgABZFkDTEpxOK9raPGhvb0FHRytaW1vR0tKpJn1JXoqmaTz++OO46qqrtnzqZiqVKspRql+KiUQCy8vLOHGi/ISNatBKJLRNqQMDAwiHw+v+3HrxnCEeIo149tlnTZ9fXV0tO8p4ZSWJQqELu3atRTsAYLGQHE9pxJNKJeFyuerq2D106DAOHVqTP9xwww04c+aMLqISBAHRqB8nT74EU1PLOlJSRtxIiEYj6O/v17n8AeZOfyzLbri/ZnV1Ct3du1Wz/VIXyPoiHlmW1WWKKJKog4MoChBFHpLEgaJ4AGt/eD4Hv38RLtcYJMkKh8OGAwcc2L1bhscTgdtth8tlg83mhs3WppKG9o+RNLTVI/LH5/NBlmWd2x/LssUxzFs/6ree3p3/+I//wKte9ap176dRIrGd2HHEY7bUSiQSAFA28UVCbzPSKRQKWF5Ow+3eC7fbbfBqpkxL2LIMhEK12U5qYbzQe3q6cfLkSR15BYOz8Hh64PEoiWmtRIL0zmSzOVM7hkpOf0R7lM9X0mmZe9goerFjSKfJrCzltHA4HNizZwyAiEwmBkFQkr8KeZgvXcj/7XYLnE4bnE6FMJQ/Vrhc9qJtrFdHGisrK2hrO7ShkTlGmFWPlOMl69z+lpeVMci//vWvizPLPCU9NpsBURSRSqXUalYlEInEN77xjXVvz0wiQfJLgUDA1FZms7DjiMcIMiOrkk3A7Ows9uzZg7m5uZLngsEgUikndu1STj4jr1kspcSTSCSKJ9zGTa/6+vQ/5urqFPr794CiSiUSCgkqvkL1LHO02iNtbwcp/WezDLJZBtFoALlcFjxfACDBarXAbgfC4UUMDg7i0qVzGBjoht8/BYCH1Qrs2mWDy8Wo+Q6n0wqPxw6HwwabraUk6rDb7UWXwtq/gCiKSKfTNV2AjQBFUXC73eqfeDyOkydPQpblErc/MgbbYrHA4/HA6/WqhFTrJJJyUAYF9NT0GYuLi7DZbBgZGan62nIwSiTuuOMOfPWrX8X73/9+fPWrX8XLX/7ydX92vdhxxGP8EcgMLG0vi7Z/gWEYdeqoGfE8/fQ03O4BFAocGIaBy+XUTYqwWPRSC0lSkn179phP89woQqFlXH/9NQCIRMIYbUkl3atKM59gWLbwEEUBgsBBknhQFA9Z5kDTStVFSZwWQNMynE4rurttGBmxFwnEC7udhizz4HkeR44cB02z2LXLg9ZWG9ra2tDW1oaWlhZ4vd6yUxAad0xC6O3t3Zaljs/nU6OsSm5/xKQ9m80iFotheXkZhULBtAvZ5XLV9F0CgYDqvFANDz74IN7whjc0VCLx/ve/H6997Wvx5S9/GaOjo/jmN7+5rs9eD3Yc8Whh1sVMKkdkWUWEoGY/CMdxeOKJWRw58kbk80pOJBIJg+fXKiEAivYIHOx2OxKJeHHWVOMPTTTqgyxbihMpYygU0kgmgwgGvZAkHuHwZQhCGIHAY6AoQVOJEWC300XSsBeXMMrSxe1Wog+7Xelw1UYeNput5srLuXPnMDY2Bo/Hg1wuB4ZhkEwmsbq6qk5BIDKWei+wSpBlGT6fD8eObY0WSwtRFBGPxysOECAoZ9Ju1oWcy+UAQJdHIn/IecuyLCRJUnt3KkGSJHz3u99VK1DrgZlEoqurCw899NC6P3Mj2NHEQ5oBtV3MRAxKupElSSrbT3Hp0iXYbINwudxwuz265QtRZlutFhQKBfh8PtVms7W1FaFQ2DBrXHmfNnFKIg9jzwegJE9Jz4ckKbmQXC6BAwdaYbE8DY/HhhMnWPT3Z3HwYB5WK4WuLgtOn75DJQ1t5WUzIw5iHk4M5FtbW0va8SVJUgmJXGD5fF6XqCWk5Ha7ay7zJpNJVTy51SBLnY2QZ615pHg8ropHFUsNZVTT2rK+fB7pySefxMTERNmxTs9F7DjiIRcY0WQZmwHJnCwiBDWGqmQZJkkSfvObZzAwcF3xc41bkmC1UpBlAYLAo7PThXA4AyBXlA/4wPMMOC4LjssC4GG3U3A6rWhpcaOtzYvWVjdcLoeu58Nud8BubzGNPowX4+23X6P+e25uDqdPn25ocrVWLC0tVW0boGla14tEYBzLEo1GVddHpSfHq7vjGyOw5eVl1XZ2q7G6ulqzxWi90OaRjF3IhUIBZ86cQW9vL4LBoJpHIsP+yDFTJm24cN999+FNb3rTpuzndmHHEQ/B4uIihoaGSpoByWRQZdKAQ3enIX00VqsVPp8PqZQErzeKYDBaXLookYcs8+rSxeF4BjQtY2ioBxw3jZMnj8HjccJu71CXKna7Xe2MZllWDa2VkFqC222Bx+PS3fHruYsKgoBwOFyiP9sKcBync3msF8axLATaaZpauwiiO/J6lapWLpdrqFF6rWAYBhaLZcu3TVEUCoUC2traSgjXmEd67LHH8Hd/93dIpVJgGAbnz5/HLbfcotMhlkMymcTb3vY2XLhwARRF4Z577sFPfvKTLZsiUQ07kng4jkMwGMQ111xT8pzVagXP85iZmSnJCxDioSgKKysruPPO64qlW/2yRdvzYbMlkclksGtXL8bHe+q++2rv+AzDIBwOF2eM63tFvF5v2SXIysoKhoeHtyW5urKygpGRkYYv5bTTNLV2EUR3xDAMFhYW4HA4cP78eXAcV3LHb0TlqBxWV1c3ZKK1EZTr3THmkSYmJtDZ2Ymf//zneOc734lnn31W1XVVw7vf/W7cdttt+Na3vgWO45DL5fCTn/xky6ZIVMOOIx6KolSDd7ML0WKxIBqN6kzACEj+JxAIoK+vD2NjY6AoquKJa7PZ1GF/xmVdLdDe8bV9ENo1PsMwiMVi6hLE6XTqErSBQGBboh1RFLc80iK6IzKoTtstXKlyZEzSulyudRNSPUnlRkMURSSTyZojzPvvvx/vf//7cfToUdVtsxrS6TQeffRRfOUrXwGwZs+xk7DjiEcZ4lY+9LdYLFhZWTGNhiwWCziOg8/nw+nTp3Wks7i0hE9//utIZSW0eWj8f+98E8bHxmCz2VThab26l0qotMbXLkFWVlYgiiIef/xx05xIJb+XjcLv96O/v39bIi1yc9Buu1LliByvVCoFv9+PfD6vHmOjy1+177Od5ftoNFpz704ymcTCwkJNSyst5ufn0dPTgz/8wz/EM888g1OnTqmi0q2aIlENVBUB4NaoAw2opMk6e/YsRFE0/THI3K2WlhYMDQ2pn7G4tIR3/dW/YPTG98Hm8IAvZLH86Cfx2Y/9CaanpnDx4kW8+93v3vITkRDOlVdeCZqmUSgU1AuM9CdpcyKN7KaVJAmPPfYYrrjiik0lNzPIsozHH38cJ06c2ND3IJU2rSTCbJlrLGU/8cQTOHLkSMPM4+vB008/jYmJiZKcmBm+8pWvIB6P60ShteDMmTO4+uqr8atf/QpXXXUV3v3ud6O1tRXvete70N3drU6RCAQCmzZFooiy7LrjIh5AiVzMCFEQBCSTybLdmxRFIR6PY3JyUndH+fTnv66SDgDYHB6M3vg+fPrzn8fNVx+GJEnbcvdbXV1Ff3+/ekEQSYPWelObEzF205rlRGqdhhoOh9HV1bXlpAMoneFer3fD5Fmu0laplG21WlEoFBCLxbYkqtSiUFDU9LWQjizLePDBB9XlUj0YHh7G8PCwuoR+9atfjY9//ONbOkWiGnYk8VCU+XyppaUldHV1lbVpSKVSKqNrL75UVkKrQ/9j2xweJDMCCgXFPXCryUeSJKyurlYdZUJyIp2dnWW7aRVnvwgWFxdRKBSqJmllWcby8nLNOYNGY2VlpW4dXD2otMy9ePEiurq6IIoi/H6/LqrURkek6tbIxHY13x0tVlZWQFHUuiZ89vf3Y2RkBFNTU5icnMRDDz2EgwcPbukUiWrYkcRjBlLp2rdvnyoa1YKMaRkYGCg5Wdo8NLhCVo14AIAvZGGR8+ju7sby8rLOXnIr4Pf70dvbuyFPl3I5EUEQdEltY5KWohRxrCzLW26fmc8r9rDb4RdMJo0cPHiw5Caj1WiFw2EsLCzoKm3aP+uRkMiyjFAoZOolbob7779/QxKJz3zmM/j93/99cByH3bt3495778Wf/umfbtkUiWrYkTkenudLPGwuX76sGribNX5duHABNpsNoVAIbW1tujtXKBzG/+8Dn9fleJZ+8Qm8/bXX4cYbb0A8HlfHJG8Ftiu/QpK0Fy9eRGtrq9qXRFFUyd1+I1WjSpienkZbW9uWWbpqQZLS9ejwCIlrc2/lNFpG9wMt0uk0FhcXa4oyJUnCDTfcgIcffrimqRM7GM+tHI/xxyMD1CYnJ9W1uhbkpDhx4gR27dqlJhzT6TQCgQDy+Tze/tpr8a3v/R/4Ixn0d3vwp3/wUhw7dtR0CbPZCAaD6Onp2fL8isViAUVRcDqdOuLW6o20x8xYNSKEtN4lqSiKiMVi2Lt3b6O+Ul1YXV1VRx7VCjKbzShXIMeMYRjdMQNQcszcbnddvjtPP/009u7d+1wnnYrYkcRjBLG9ID7JRnP2mZkZ7N69W11CmGlnJEnCddddh3vvvReHDx+G3W7D4uIiFhcXdSdJo8SP5UDyK7WG3I2GmTyinN7IWDUKhUI6fZax0lbtmAUCgW0r32cyGdWytBGodMy0/VuRSEQlKJZlVW1WpYmjz0eJhBE7nngymUxxoJuSJDRODE2n00q1K5XChz/xL0jl9H06BDRNq3ctnudxxRVXoKenR3dxGdXFWjX2Ru/2BMFgEJ2dndvS0EXkHrX2btSjz8pms5BlGU6ns4SQSJXS5/NtG+FuVaeyWUNpOBxWq7GkOplIJHSiUY/HA5/PB47j8Oijj+LTn/70pu/rdmJHEo92qWW0vTDOSJ+ZmYHNbsef/vXnMXrjX6LV4QFXyOJdf6X06WjJh9xdWJZV2/i1F5c272B2t9cSklGNXQshkWjn+PHj6z84G8Dy8jJGR0c3nLupps8iFxcpYytTN6mirWu04t1+MyCKorpU3w74/X7s3btXlZCYiUaz2SzOnj2LBx98EOl0GldeeSU6Oztx11131dRZbqbNmpyc3LbxNdWwI4mHwMzylFRjACAej4Omafzr176N0Rv/0rRP59MfX2u+Iks1r9db9eKrdrcnF5dRm6WNkIyEFA6H0dbWti0WEGTQ4GbmV7T6LOPF9dRTT2FwcBA8z+sEo1qrUXLsGp37Umap9W3L8DuO48BxXNmhjCTn5nQ68brXvQ4/+MEP8M1vfhNXXXUV4vF4zZGxmTbrYx/72LaNr6mGHUs8xPainB2m9vlkVkSbSZ9OKquvjBFF8kaqV+Xu9sblB1nba7tog8EgDhw4sC0Ni8RpbzvyKyQvZGz81FqNMgyDQCCgEpLNZishpPUuT/1+f91J5Uahnt6dVCql2qMAqLnoUU6btZ3ja6phRxIPRVGIRCJwuVxlB9pFIhG43W64XC60eyymfTptHv1FNj8/D4fDoc5YbyQqLT/y+Tz8fj9sNhsCgQBmZ2frUq9vFJIkIRgMrksE2wgQBbwRlaxGzbyPSV+NNodEOqDLRTONTirXi1AoVPM4mu985zu488476745lNNmbef4mmrYkcQjyzLm5ubK5kLI8+Qu9v/9yZvwrr/6pKkWiyCTyaih/WYQTzmQ5UcikcDRo0dV/xcz9bpZgrYRhEQmCGxVn5IWgiCsSwlO7trGnIRWwR6NRrG0tKTr1tYSksPh0HkqbzUymYxqy1INRCLxr//6r3VvRxAEPPXUU/jMZz6jarM+/vGPr2eXtww7knjC4TA6OjrKmjSJooj29nZVBjA+NobPfuxP8L8/dhd8wSQO7B0uSSyTkvylS5e2lHgAJRdFojOCaup1kkMidhqiKJZYjGqFj+UgyzJWVla2rZpElhqNWuJV69YmFaOVlRW1iieKIhiGaYilRj2op3dndXUVgiCsS0pSSZu1XeNrqmFHEk9fX1/Z5ilJklAoFNTSKDmBxsfG8Jfvfgt+8IMf4K1vfasudE8mk6AoCm1tyiA4Yx/QZmNhYaHm0S2VErRmFSNRFEsiJC0hEe+i7Sjfy7KM1dXVum0d1gOzRj+fz4dCoYDe3l4wDGNqqdFo83oCSZLqivQ2IpEop806ePDgto2vqYYdSTykEdAMPp9P1coYfyRycXEcp3t8bm4OExMTAKD672wV4vG4WrnZCKoRElmyrays6Agpk8lgdHQUqVRqS0vYgPLdlYkdW6+AB5SI49ixYyUWuYC5ef1G2yW0iEaj6Orqqul9kiThO9/5Dn72s5/VtQ0tzLRZkiRt2/iaatiRxFMOxAC+v78f58+fh81m093ptU52BPF4HDabTT3xiOPgVmFhYWFT+0cqWYyGw2EsLy+Doij4fD4dIRmXbJtBSMvLy9vi8gcolR6SuDZDLc2R67WyBZQlZukoaHM888wzGB8f35B05/jx4zhz5kzJ49s1vqYadiTxlAs3l5eXMTAwgNHRUezatUtnCxEKheD3+wEohmDZbFYVlGqXOVtJPMlkUq3CbDUoikIwGCwZi6JtWGMYpqSnxrhkWy8hkcbB7fjuANadVN6olS2x0ygUCmUrskbcd999eOMb31j3vj6XsSOJByj15CGNZ1pLU2Plo7u7G08++SSGhobQ29uLUCgEURQxPT2t2l4QdXEymdx0E6iFhYVtE0QSMjGKG7UNa0bDMa0DolmTnzZCqnbcfD7fhsbtbgSCINQ8k7xW1GNlG4/H1abJala2PM/jkUcewT/8wz80bF+fC9ixxGPE4uIiRkZGQNN02YiI5HgkSUJHRwdmZ2dx4sQJuN1utVktGo2qhvAMw5heWF6vd8NLj3Q6DQA13/UajaWlJYyOjtb8+kqEZGzyI8dNa8mq7ToWBAGJRELNq201gsEg+vv7t6RyZbbUffzxx3Hs2DHIsqwSktF0zOv14tFHH0U2m8Xp06frTv6Pj4+jpaUFFosFVqsVZ86cwYc+9KEdM76mGp4TxFMoFBAOh9VopxzI3YTneUQiEXUdDqw1q7W2tkKWZUxMTKjiRY7j1GqR9gTRElK9S4/5+fma1/iNRqFQQCaTacgdv1yTn5aQstms2nVMvJTsdjtWV1d1y4+tAkkqbwcYhtHlloxEDkA93xiGwfe+9z0IgoDjx4+jo6MDP/3pT2s+Vg8//LAurwdgx4yvqYYdSzzapdb8/DzGx8erjqrRVrUWFhZMTz4tORF/GnKi1LP00JKRkZAymQwkSdq2kbObNStLi0qE9Otf/xrj4+NgWRahUAhzc3PgeV5nL7pRGUQ5pFIpOJ3ObdHDAQrpVZNIECvbt73tbfjWt76FJ598EjRNI5lMblsFcKuxY4mHIJ/PI5lMqn48lWCxWNQfcPfu3aZt8lriqdRGX0suhGEY02pRIpHA0NAQRFHc8m5hQRAQiUS2ZU4XAMRiMXR0dOjyIATaJZtWBqGtTmplEOvBdg7qU0Zf1y7E/c///E+8/OUvV6ux9Rh/URSFW265BRRF4Y//+I/xR3/0RwB2zviaatjxxDM7O6uafNVyBz9x4gRyuVzZiaBkkuh6mwirEVI0GkU4HFab1ao1+DUa5I67HWJQQKk8lsvtlJNBlPM7JkJR7bGrREiCICCdTjc0qVwPYrEYOjs7a7ZIeeCBB/DFL35xXdv61a9+hcHBQYTDYbz4xS/G/v378c53vhMf/OAH1fE1733vezd7fM26sWOJh6IoMAyjGlfVumzYv38/stls2VCbdHQ2GoSQkskkDhw4oJJSuQY/bRm2HglEJdQ6uWKzkM1mAaDuEno1XRZx8tMasBuJ3G63qw6H22F/ASi9O7VKHvx+P3ier8v/WQsixejt7cWdd96Jxx9/HDfeeKP6/HaPr6mGHUs8gGLytXfv3pqjHUmSsLS0tCUt+mbI5XLI5/O6nEelBj8zTRYhpPWIREOhELq7u7e0O1mLcir09aKcLqvcWJ98Po/e3l4sLy/XpFxvJHieRz6fr7mK+cADD+D1r3/9uvaN3LhaWlqQzWbx05/+FH/zN3+zo8bXVMOOJZ5kMglJktDa2lrzj0NGxmzXnOjFxUXs2rWrpv2tRZNlVK0bO2e1PsdEDLpds7J4nkcymdwSlz8zQkqlUlhYWMDw8HBZ5Xq5OWONACnh1wJZlvGf//mf+MlPfrKubYVCIdx5550AlOXlG97wBtx2221405vetGPG11TDjiWeSCSihqG1nCCiKGJlZQVXXHHFZu+aKYgr4UbzC5UISet8aCQkmqZB0zQEQdgWozGixN6uZY7P58Po6GhNc8YIIRE3Si0prZeQgsFgzaR/7tw5jIyMlJTZa8Xu3bvxzDPPlDz+9a9/fV2ftx3YscSzb98+deZTLSDjgLerHEl8bTfrwtN2zmpBCOncuXNob2/HwsJCzVasjYIsywgEAtu2xOV5Xh3UZ4ZyI2q0Vhpmgw+1x64SITEMA6vVWnMJ/4UokTBixxLP3XffjWQyiUOHDuHgwYMYHBwse9GIoojV1dVtc9hjWRbpdBr79+/f8m1TFKVOKtBuX5Zl1axeO2ZFluWGqK+1iEajaG9v3zbSX2+ncqWZWeS4EW8fLSFpj53T6UQgEKjZd0cQBPz85z/H3/3d39W1r8837Fjiuemmm/DEE0/gl7/8Je6++274/X643W4cOHAA+/fvx6FDh3DgwAH09vbiM5/5DE6ePLktDnvA2qyq7VpmkGhLC+10UK3Y0WhWb5yesZ5xPisrK9s2wUGWZfj9/prtRWuBxWJBa2tryZhlQkjEbMzn86kVy76+PuTzefXYlRtz/Mgjj+D666/ftgbHnYIdSzyHDx/WZeVlWUY6ncaFCxdw8eJF/OQnP8E//uM/IhAIIBqN4mUvexmeffZZHDhwAIcOHUJnZ+eWEAHHcduqS8rn82BZtubms0pm9doIyYyQtBESObYMwwDAhv2G1otUKgW3270lBQUzQiJ9W2RmViqVwurqasloaFEUwXEc/u///b9417veVfe2zbRZ8Xh8x46vqYYdOTu9HnzoQx9CS0sLTp06hYsXL+LChQu4dOkSEokEuru7sX//fhw8eBAHDhzAwYMH66qS1YKZmRl4PJ6aQ+1GY2pqCu3t7Zs2i9xISAzD6Bz8crkcurq6MDAwUHF2+Gbh4sWLGBgY2PIx1ATnz5/H6OioqTxGO+b4zJkz+NznPoeLFy9iz549mJycxJ133olXvvKVNW1nfHwcZ86c0bVkvO9970NnZ6c6viaRSOyYKRJFPLdmp9cKMiDvC1/4Aux2O26++Wbdc6FQCBcuXMCFCxdw//334+LFi8hkMhgcHMT+/ftVMtq/fz88Hk/dFw3HcYjFYutuAtsoeJ7f9Gir0sDDVCqFCxcuAFA6zM0sRcmSbTMIqVpSebPB8zxyuVzJkoxAO+b4ZS97GdLpNJaXl/HXf/3XmJ6eRpWbflXs5PE11fCcj3jqBenuJYR04cIFTE1NIZfLYWRkBAcOHFAJaXJysmI1Y25uDk6nc9u0QQsLC7Bardvme7O4uAiapnX2G5IkqXkQkkcihKRNzFbKg9SK5eVlyLJcMgt+q+Dz+SAIQll5jhayLOMVr3gFPve5z63rRrFr1y61g59os9rb25FMJtXXdHR0qEMwdwienxHPekDTNEZGRjAyMoLbb79dfVySJCwuLqpk9PDDD2Nqago8z2N8fFyX0N67dy/S6TQ++9nP4u///u+35XuIorits7JICd0oz6BpWr3La6FddpjlQbQRUi2ERLa/XdMzAEUiUWvvDvF0Xq8VrJk267mMFxzxlANN09i9ezd2796NO+64Q31cEATMzc3h4sWLOH/+PL73ve9hbm4O2WwWw8PD+OQnP6lGSbt3794yuUIgEEBfX9+2VfIikQg6Oztr/r7aZYcWWkJKJpMqIZUrXRNCIub121XCz2azdfXubEQiAZhrs3by+JpqeMEttRqBTCaDa6+9Fl/5ylcwMzOjJrQXFhZgsViwb98+3ZJtdHS0oQQhyzIee+wxnDx5ctvkIU8++SQOHDhQ0tDYKGhL1ySpre2lyWQy6O/vR39/f8PlD7VgdnYWXq+3JpmELMu4+eab8aMf/ajEuKsWGLVZL37xi/E3f/M3eOihh9DV1aUml+PxOD75yU+u5+tsFppLrUbiySefxJ/8yZ/g1KlTum5dorO6fPkyLly4gDNnzuBrX/salpeX4XA4MDk5qVbYDh06tG77ikgkgvb29m0jnUwmA5qmN410gMq9NKlUCvF4HBzH4dlnnwXLsrBYLCVukZtFSLIsIxKJ1KxEv3DhAgYHB9dFOkB5bdbp06d37PiaamhGPFsA4r176dIlNYd06dIl+P1+eL1eXYXt4MGD6O3trXjBPPHEEzh8+HDZSaubjUuXLqGvr2/dWqONYnl5GQB0SW2t/IEktQkhNUqPRRCLxRAOh2vW5X3gAx/Atddei9e85jXr3uZzFGUPcpN4thGyLKslaW0PEoloyHKNkFJnZyceffRRzM7O4q1vfeu27DPHcXjqqadw1VVXbUunNllmnjp1qqb8jlYgSv42U6zXY6Fx4cIFjIyM1GRtKwgCrr32Wpw5c6ai4+XzFM2l1k4ERVFob2/H9ddfj+uvv159XJZlxGIxNTr69re/jY9+9KNIJBLI5/O4/vrrQdO0SkqNboqsBL/fj6GhoW2ThySTybrM46sJRBmGKWuhoTUZI99XEAQwDFO2d8eIRx99FNdcc80LkXQqohnxPIfw7LPP4h3veAc++MEP4vz587h06RIuXrwIhmEwMDCgi47279/f8E5iSZLw2GOP4fTp09tmNnbhwgUMDw/X5U9cD7QmY+RvreuhIAigaRr79u2rKcf29re/HX/0R3+Em266aVP2d4ejudR6PuAf//EfcfDgQdx66626xyVJgs/nU0v+Fy9exNTUFPL5fElT5MTExLpzHKFQaMvMvszAcRyefvppXHnllVsecRFCunjxItrb28GybFVf6Gw2ixe96EU4e/bstnlgbzOaxPNChCiKWFxcVAnp0qVLmJ6eBs/z2LVrl07HtnfvXthstooX9JkzZ3Dw4MFNrWZVwtLSEiiKqmtQYSORy+Vw+fJlXdMiz/O66IhMzvjUpz6lGrL91V/9lSpcrhWiKOKKK67A0NAQvv/97z+nhvVp0CSeJtYgCAJmZ2d1EdLc3BwAxd3u0KFDKint2rULVqsVTz31FC5durRtBlb1JpU3A3Nzc3C73VXnZgFKp/I73vEOXHPNNYjFYrh06RL+7d/+rab3AsA//MM/4MyZM0in0yrxeL3e58SwPg2ayeUm1mC1WrF//37s378fr3rVqwAoFzbP85iamlKT2g/+/9u725Cm+jcO4N+jVv5B656lNpTIYpgPS8keDFI0/0JBZCk3TQwNqxeRf+iBwpLIJNSkByN68EWgqGgjqLuWSJaMyDARWtRWPuW4N1sTe1TKQnf+L2yHzYc6rnm2Ha/PG+E4/M031znn+l2/61Iq0dvby40Dio+PR0BAAFcUKeTrw8ePH+Hv7++yoMOyLPr7+6d1RGVoaAiFhYXTfi00Go24d+8eCgoKRDtTnQIPATC2wzZ37lzI5XLI5XLuurWJ/ObNmxEfH4+2tjZUVlbCYDDA19cX4eHhXP4oKioKixcvnpGA1NfX57LDsMBY4FuwYAHvCnSlUgmFQuFQLurAgQMoKyvD4OCg3XVPGdbHB71qkd+6du0avLy8uGmVwFhAGhoamlAUaTKZ4OfnZ5fQjoyMRGBgoMMJYVcmla20Wi1CQkJ47aZZj0g0NDRMOlH1V1QqFRoaGnDlyhWo1WqcPXsWKpWKG11kHdZnMpncdlifDfHkeCbrxEZmFsuysFgsvO72tkWR1sJIrVaLgYEBSCSSCUWRfIY16vV6eHt7u+yJZ2RkBO3t7byLJrVaLYqKinD37t1pr3Xs2DFUV1fDx8eH6+Wdnp6Ompoa7jN6vR5btmzheiG5MXEFnvGd2Ij7sy2KtCa0tVotPn/+jKCgILtjIxEREfD39wfDMLBYLKioqMCePXtclt95+/YthoeHsWzZMl6fP3HiBNasWQOFQvFH69o+8dgO67tw4QKePn2K+vr6P/r7AqDkMnEthmGwaNEiJCUl2XWKtFgsXKfIFy9eoLa2FjqdjiuKDA4OhsFgwLp167BixYoZ62b4KyaTiXeXw9HRUdy/fx+nT5926nc4evSoxwzr48Pjnngm68RGxMdiscBgMCA7OxtyuRxfvnxBR0cHhoeH7Yoio6KiIJPJZuwk+rdv36DT6XjPDFOr1bh586Yn5F+EIJ4nnsk6sdkOqyfiYG278f37d1y6dIkLKqOjo+jt7eVqkB48eIDOzk6MjIwgLCzM7nXNWhT5J2xfcfioq6tz2QFeT+JxTzy2PLSoivBkrZ3hM0FjZGSEa8pm3WHr7u4GwzBYvny53aSRsLAw3oly69k0Pp+3HpF49uyZyzpDuhlxJJen6sS2adMmp6+Vm5sLlUqFoKAgbvfAk+cYzUYsy+LHjx92RZE6nQ56vR5z5syBTCaza8wWGhpqV4PU09ODwcFBxMbG8lrvxo0b6OzsRElJyQz9Rx5HHIHnzZs3EzqxFRQUzMhajx49gp+fH7Kzs7nA4wFzjAgP1nnzr1+/ttthMxqN8PX15aq6m5uboVAosGPHDl5Fkdu3b0d5eTnvBmG2xp/NEslNThyBR2jj6yXCw8OhVqu55tpJSUno6Ohw8bckzmJbFNne3o6ioiKsXLkSZrMZ/v7+E8Zn2xZFvnv3DllZWXjy5IlDSe7xZ7NEcpOjwOOI8YHHA+YYESepra1FV1cXCgsLwbIsPn36NKEo8v3795BIJIiMjITZbMbq1atx/Pjxaa9lNBqRk5PDnc1SqVRiucmJZ1eLECHExMQgOTkZwFgNkkQiQUJCAhISErjPsCyLgYEBblLttm3bHFprsrNZZrOZ202TSqXo7+93/J9xQ7OyO5GjrHOMAMzYHKPc3FwEBQUhOjqau1ZYWIiQkBDExsYiNjYWDQ0NTl+X2IuOjuZmWU2FYRgEBgYiOTkZFRUVDo1Stm5g8K0TEgsKPNOwdetWVFVVAQCqqqqQlpbm9DV27dqFxsbGCdcPHjwIjUYDjUbjCQ2gCE8tLS24c+cOli5dCoVCgebmZuzcuVOQm5wrUeCZQmZmJtavX4+Ojg6Ehobi+vXryM/PR1NTE2QyGZqampCfn+/0dRMTE6fVqY54tpKSEhiNRuj1etTX12Pjxo2oqakR5CbnSpTjmUJdXd2k1x8+fCjwNxkjpl4s5Pfy8/M9dlgfH7Sr5YbG76Z5aC8WQqbc1aJXLQ8QHBwMb29veHl5Ye/evWhra3Pq3zcYDEhOTuYqeC9evAhgrFI7NTUVMpkMqampVDpAnIYCjwewJhkB4NatW3Y7Xs7g4+ODc+fO4dWrV2htbcXly5eh0+lQWlqKlJQUdHV1ISUlBaWlpU5dl8xe9KrlZjIzM6FWqzEwMIDg4GCcOnUKarV6Qi+W6ZyYnq60tDTk5eUhLy9PDEVsxHWocpnwo9frkZiYiJcvX2LJkiVUqU3+BOV4yO8NDQ0hIyMD5eXlvGeDE+IICjwEwNhEzIyMDGRlZSE9PR2AMJXaUyW2qVpb3OhVi4BlWeTk5CAgIADl5eXc9SNHjmDhwoXcCekPHz6grKzMqWubTCaYTCasWrUKg4ODiIuLw+3bt6FUKqnJm+ejQ6Jkai0tLaiuroZcLueaXhUXFwtSxCaVSrlEubX1RF9fn9PXIe6FnniI27BNbJ8/fx6VlZWYP38+VWt7LkouE/c2PrG9b98+9PT0QKPRQCqV4vDhw67+isSJKPAQl5sqsT2T1drDw8NYu3YtYmJiEBUVhZMnTwKgam2hUOAhLsWyLHbv3o2IiAgcOnSIuz7T1drz5s1Dc3Mznj9/Do1Gg8bGRrS2tlK1tkAox0Nc6vHjx0hISIBcLucaqhcXF6Ourk6wau2vX79iw4YNuHr1KrKzs6la23mocpmQ8UZHRxEXF4fu7m7s378fZ86cob7azuVw4CFE9BiG+QvALQD/A/CYZdm/bH73kWVZ2k5zMsrxkFmPZdlPANQANgEwMwwjBYCfP8XVZd1NUOAhsxLDMIE/n3TAMMx/APwXwGsAdwDk/PxYDoB/XPIFRY5etcisxDDMSgBVALwxdgNWsixbxDDMQgBKAEsA/Avgb5ZlP7jum4oTBR5CiODoVYsQIjgKPIQQwVHgIYQIjgIPIURwFHgIIYKjwEMIERwFHkKI4CjwEEIE939anblhBSikNQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 解析解\n", "def fit_plane(x0, x1, t):\n", " c_tx0 = np.mean(t * x0) - np.mean(t) * np.mean(x0)\n", " c_tx1 = np.mean(t * x1) - np.mean(t) * np.mean(x1)\n", " c_x0x1 = np.mean(x0 * x1) - np.mean(x0) * np.mean(x1)\n", " v_x0 = np.var(x0)\n", " v_x1 = np.var(x1)\n", " \n", " # 式 5-34\n", " w0 = (c_tx1 * c_x0x1 - v_x1 * c_tx0) / (c_x0x1 ** 2 - v_x0 * v_x1)\n", " \n", " # 式 5-35\n", " w1 = (c_tx0 * c_x0x1 - v_x0 * c_tx1) / (c_x0x1 ** 2 - v_x0 * v_x1)\n", " \n", " # 式 5-36\n", " w2 = -w0 * np.mean(x0) - w1 * np.mean(x1) + np.mean(t)\n", " w = np.array([w0, w1, w2])\n", " return w\n", "\n", "# メイン\n", "w = fit_plane(X0, X1, T)\n", "mse = mse_plane(X0, X1, T, w)\n", "# 結果表示\n", "print(f\"w0 = {w[0]:.2f}, w1 = {w[1]:.2f}, w2 = {w[2]:.2f}\")\n", "print(f\"SD = {np.sqrt(mse):.2f} cm\")\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(6, 5))\n", "ax = plt.subplot(projection=\"3d\")\n", "show_plane(ax, w)\n", "show_data2d(ax, X0, X1, T)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "013b8845", "metadata": {}, "source": [ "## D 次元線形回帰モデル" ] }, { "cell_type": "markdown", "id": "a457477c", "metadata": {}, "source": [ "### 5.3.1 D 次元線形回帰モデル" ] }, { "cell_type": "markdown", "id": "d136e36c", "metadata": {}, "source": [ "1次元入力で扱った直線モデル, 2次元入力で扱った面モデルはまとめて線型回帰モデルと呼ぶ.\n", "\n", "一般的には次のような式で表す\n", "\n", "$$\n", "y(x) = w_0x_0 + w_1x_1 + \\dots + w_{D-1}x_{D-1} + w_D\n", "$$" ] }, { "cell_type": "markdown", "id": "53b99853", "metadata": {}, "source": [ "### 5.3.2 パラメータの解析解" ] }, { "cell_type": "markdown", "id": "9cff3917", "metadata": {}, "source": [ "パラメータの解析解は次の式で求めることができます.\n", "$$\n", "w = (X^TX)^{-1}X^Tt\n", "$$" ] }, { "cell_type": "markdown", "id": "2bbeb786", "metadata": {}, "source": [ "右辺はムーア・ペンローズの疑似逆行列という名前がついている." ] }, { "cell_type": "markdown", "id": "65d12292", "metadata": {}, "source": [ "### 5.3.3 原点を通らない面への拡張" ] }, { "cell_type": "markdown", "id": "143db109", "metadata": {}, "source": [ "原点にしばられない面を表現するには次の式で表すことができます.\n", "\n", "$$\n", "y(x) = w_0x_0 + w_1x_1 + w_2x_2 = w_0x_0 + w_1x_1 + w_2\n", "$$" ] }, { "cell_type": "markdown", "id": "d94ab26b", "metadata": {}, "source": [ "## 5.4 線形基底関数モデル" ] }, { "cell_type": "markdown", "id": "9a3a1991", "metadata": {}, "source": [ "$x$ が1次元の場合に話を戻す.先程は直線のモデルを使って身長の予測を考えてきたが, 曲線で考えるともっと誤差を小さくすることができるかもしれない." ] }, { "cell_type": "markdown", "id": "43febeab", "metadata": {}, "source": [ "基底関数とは「もとになる関数」という意味です.\n", "\n", "5.3 節で紹介した線形回帰モデルの $x$ を基底関数 $\\phi(x)$ に置き換えることで, いろいろな形の関数を作ろうというのが, 線形基底関数モデルの考え方です.\n", "\n", "まず, 何を基底関数とするかを選ぶ必要があるのですが, ここではガウス関数を基底関数に選んだ線形基底関数モデルを考えます." ] }, { "cell_type": "markdown", "id": "f0553a24", "metadata": {}, "source": [ "ガウス基底関数は次の式で表します.\n", "\n", "$$\n", "\\phi_j(x) = exp\\biggr\\{-\\frac{(x-\\mu_j)^2}{2s^2}\\biggl\\}\n", "$$" ] }, { "cell_type": "code", "execution_count": 17, "id": "c2ab3e0c", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# データのロード\n", "data = np.load(\"ch5_data.npz\")\n", "X = data[\"X\"]\n", "X_min = 0\n", "X_max = data[\"X_max\"]\n", "N = data[\"N\"]\n", "T = data[\"T\"]" ] }, { "cell_type": "code", "execution_count": 18, "id": "f47bf6b3", "metadata": {}, "outputs": [], "source": [ "# ガウス関数\n", "def gauss(x, mu, s):\n", " y = np.exp(-((x - mu) ** 2) / (2 * s ** 2))\n", " return y" ] }, { "cell_type": "code", "execution_count": 19, "id": "7bfb8fb3", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# メイン\n", "M = 4\n", "mu = np.linspace(5, 30, M)\n", "s = mu[1] - mu[0]\n", "xb = np.linspace(X_min, X_max, 100)\n", "y = np.zeros((M, 100))\n", "for j in range(M):\n", " y[j, :] = gauss(xb, mu[j], s)\n", " \n", "# グラフ描画\n", "plt.figure(figsize=(4, 4))\n", "for j in range(M):\n", " plt.plot(xb, y[j, :], \"gray\", linewidth=3)\n", "plt.xlim(X_min, X_max)\n", "plt.ylim(0, 1.2)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "id": "33ecadfc", "metadata": {}, "outputs": [], "source": [ "# 線形基底関数モデル\n", "def gauss_func(w, x):\n", " m = len(w) - 1\n", " mu = np.linspace(5, 30, m)\n", " s = mu[1] - mu[0]\n", " # x と同じサイズで要素が 0 の ndarray 型を作成\n", " y = np.zeros_like(x)\n", " # ここでは式 5-66 ではなく式 5-65 で実装\n", " for j in range(m):\n", " y = y + w[j] * gauss(x, mu[j], s)\n", " y = y + w[m]\n", " return y" ] }, { "cell_type": "code", "execution_count": 21, "id": "ea4c5588", "metadata": {}, "outputs": [], "source": [ "# 線形基底関数モデルの平均二乗誤差 (MSE)\n", "def mse_gauss_func(x, t, w):\n", " y = gauss_func(w, x)\n", " mse = np.mean((y - t) ** 2)\n", " return mse" ] }, { "cell_type": "code", "execution_count": 22, "id": "6b42d8d2", "metadata": {}, "outputs": [], "source": [ "# 線形基底関数モデルの厳密解\n", "def fit_gauss_func(x, t, m):\n", " mu = np.linspace(5, 30, m)\n", " s = mu[1] - mu[0]\n", " n = x.shape[0]\n", " # 式 5-69 の計画行列 phi を作成\n", " phi = np.ones((n, m + 1))\n", " for j in range(m):\n", " phi[:, j] = gauss(x, mu[j], s)\n", " # 式 5-68 で厳密解の w を計算\n", " w = np.linalg.inv(phi.T @ phi) @phi.T @ t\n", " return w" ] }, { "cell_type": "code", "execution_count": 23, "id": "cf98a038", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w = [ 49.64 96.27 -26.15 198.24 24.31]\n", "SD = 3.82 cm\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# ガウス基底関数表示\n", "def show_gauss_func(w):\n", " x = np.linspace(X_min, X_max, 100)\n", " y = gauss_func(w, x)\n", " plt.plot(x, y, \"gray\", linewidth = 4)\n", " \n", " \n", "# メイン\n", "M = 4\n", "w = fit_gauss_func(X, T, M)\n", "mse = mse_gauss_func(X, T, w)\n", "# 結果表示\n", "print(\"w = \", np.round(w, 2))\n", "print(f\"SD = {np.sqrt(mse):.2f} cm\")\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(4,4))\n", "show_gauss_func(w)\n", "plt.plot(\n", " X, T, \"cornflowerblue\", \n", " marker=\"o\", linestyle=\"None\", markeredgecolor=\"black\",\n", ")\n", "plt.xlim(X_min, X_max)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "c34a3726", "metadata": {}, "source": [ "## 5.5 オーバーフィティングの問題" ] }, { "cell_type": "markdown", "id": "9d43e5c6", "metadata": {}, "source": [ "基底関数の $M$ はどうやって決めるのか?\n", "\n", "$M$ を十分に大きくすればどんなデータどもうまくフィッティングできるのでしょうか?" ] }, { "cell_type": "code", "execution_count": 24, "id": "d70854ce", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "M = [2, 4, 7, 9]\n", "plt.figure(figsize=(10, 2.5))\n", "plt.subplots_adjust(wspace=0.3)\n", "for i in range(len(M)):\n", " plt.subplot(1, len(M), i + 1)\n", " w = fit_gauss_func(X, T, M[i])\n", " mse = mse_gauss_func(X, T, w)\n", " # グラフ描画\n", " show_gauss_func(w)\n", " plt.plot(\n", " X, T, \"cornflowerblue\",\n", " marker=\"o\", linestyle=\"None\", markeredgecolor=\"black\",\n", " )\n", " plt.title(f\"M={M[i]:d}, SD={np.sqrt(mse):.2f}\")\n", " plt.xlim(X_min, X_max)\n", " plt.ylim(120, 180)\n", " plt.grid()\n", " \n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 25, "id": "aa23216b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATwAAAD4CAYAAABxC1oQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAkS0lEQVR4nO3de3xU1bn/8c8zyeQ6CajQcBPBBIhARQ1KKnIJoKJVtB6rNGCtPz2Uqj2gvdDKaWlaabX2WOiR1lb9eSmk0SJqRbCiRMVLUIKCRQIEsQoYERCSyZ3kOX/MgCHmMkNmsieZ5/16zYuZvdfe+ZoXPqw9e+21RFUxxpho4HI6gDHGdBYreMaYqGEFzxgTNazgGWOihhU8Y0zUiHXqB/fq1UsHDRoU1DGVlZUkJyeHJ9AJsDzti7RMlqdtkZYHgs9UXFy8X1V7t7hTVR15ZWVlabAKCwuDPiacLE/7Ii2T5WlbpOVRDT4TsEFbqTt2SWuMiRpW8IwxUcMKnjEmaljBM8ZEDSt4xpio0SUK3rL8fDKGjWDSpMlkDBvBsvx8pyMZY7ogx8bhBWpZfj5zbp/PmOmLmHBrNmU7i5hz+1wAZuTmOhvOGNOlRHwPb0HeQsZMX0S/oeNwxbjpN3QcY6YvYkHeQqejGWO6mIgveLtKS+iTnn3ctj7p2ewqLXEokTGmq4r4gjc4I5OynUXHbSvbWcTgjEyHEhljuqqIL3h5C+azvmAue7evo7Ghnr3b17Fu6Rxm/uePnY5mjOliIv6mxdEbEwvy7mD1jhJOz8hk2vU/Y0/S5RS+V0POVxMcTmiM6SoivocHvqJXum0La9e+ROn2LTx89/9j1CA3+euqWL2x2ul4xpguoksUvObcscLsiz2cNySOFUXVrCiqQm0xImNMOyL+krY1sTHCjZOTSXALqzfWUFOvTL8gCZeI09GMMRGqyxY8AJdLmDkhiQS38MKmGmrrlW9PTCbGZUXPGPNlAV/SikiMiLwjIitb2Cci8gcRKRWRzSJyTmhjtpmLq89PZNq5ibxRUscDa7wcabDLW2PMlwXTw5sDbAVSW9h3CTDE/xoD/Mn/Z6cQES4/N5GEOOGJ16uorfcy+2IP8W7r6RljvhBQD09EBgBfBx5spckVwGP+GZaLgJ4i0jdEGQN24agErpuYxJaP6vnDcxVU11lPzxjzhUAvaRcBPwYaW9nfH/i4yefd/m2dbvzwBG68MJmdZUe49x/lVNa0FtkYE22kveEcInIZcKmq3iwiE4Efquplzdo8B/xGVV/zf34J+LGqFjdrNwuYBZCWlpZVUFAQVFiv14vH4wmo7e6KFNbtPo2UuFomn7aLxNgjQf2sUOfpDJGWByIvk+VpW6TlgeAz5eTkFKvq6BZ3tra6z9EX8Bt8PbYPgTKgCljarM2fgW81+bwN6NvWeTtj1bL3P67TW/58QO9Y+rnuLz8S9M8LdZ5wi7Q8qpGXyfK0LdLyqHbyqmWq+lNVHaCqg4DpwFpVndms2T+Ab/vv1mYDh1X1k4BLcpicMcDNbdNSqKhWfvtUBZ8eanA6kjHGQSf8pIWIzBaR2f6Pq4APgFLgAeDmEGQLifQ+bn54ZQr1Dcpvnypn9/7QX9oaY7qGoAqeqr6s/u/vVPV+Vb3f/15V9RZVTVfVr6rqhnCEPVEDe8XyoytTcbngnmcq2PWpFT1jolGXfJb2RPQ9KYYffyOV5Hjhf/5RzrY99U5HMsZ0sqgpeAC9U31F72RPDItXVvDev+ucjmSM6URRVfAAeia7+NGVKfQ9OYYlq71sKLWiZ0y0iLqCB5CS6OIH01IY/JVY/rLGy+tba52OZIzpBFFZ8ACS4l3MvTyFM/rH8khhJS9trnE6kjEmzKK24AHEu4Vbv57CWYPdFLxWxXPFNnuyMd1ZVBc8AHeMb/bk7KFxPL2+mifftNmTjemuuvQEoKES4xJumJxMvFt4/h3f7MnfGmezJxvT3VjB83OJMGO8b/bkf77rmz35+hybPdmY7sQKXhMiwn98zTeR6DNvVVNbr9x0oQd3jBU9Y7qDqP8OrzkR4bLRiVw7NomNH9SzZJWX2nr7Ts+Y7sAKXiumjErg+pxk3v+4nsUrbfZkY7oDK3htuOCMeP7zwmQ++PQI//NMOV6bPdmYLs0KXjvOHRLPzVM97DnYwD1PV3Co0oqeMV2VFbwAnDkojjmXpXCgvIHfPlXOgQqbSNSYrsgKXoAy+7u5bVoqlbXK9T96mNOHjGDSpMlkDBvBsvx8p+MZYwJgw1KCkN4nlowjK3l4+Z2Mm7mYnPRsynYWMef2OagqM2fMcDqiMaYNVvCCtPjeuxg3czH9ho4DoN/QcYyZvpj/+tFPeKv6UhLj5PhXfNufk5psS4iTE3q6Y1l+PgvyFvLBjhJOH5JJ3oL5zMjNDfV/ujFdnhW8IO0qLWFCevZx2/qkZ3Po0+2cPyyOqjql2v86XN1I2aEvPjcEcL8jwQ2Jca4vF8omhTGpyb4Xn3ucX//qZ2RPX8yEW4/2OOcCWNEzppl2C56IJACvAvH+9stVdUGzNj2ApcBAf5vfqerDoY/rvMEZmZTtLDrWwwMo21nE6RmZTB+X3Opxqkp9A77iV/tFEayuU6pqleq6xuO2HW1TUd3IvsNftGteNJ9c+Gu+Nr15j3MRC/LusIJnTDOB9PBqgUmq6hURN/CaiKxW1aImbW4B3lfVy0WkN7BNRJaparebTjhvwXzm3D6XMdMX0cf/Hd76grksvndhm8eJCHGxEBcr9Eg6sZ/dUtF86Pvb6dNCj/P50pIT+yHGdGPtFjz/wrZe/0e3/9X8sQMFUkREAA9wEOiWS4Md7TUtyLuD1f7vzBbfu7BTelMtFc3TW+lxDk7PDHseY7oaCWTuNxGJAYqBDGCJqs5rtj8F32LcmUAKcK2qPtfCeWYBswDS0tKyCgoKggrr9XrxeDxBHRNOkZDnxRdfYslfHuX83P891uNct3QOU6+Zy/e+eRZOz3AVCb+jpixP2yItDwSfKScnp1hVR7e4U1UDfgE9gUJgZLPtVwO/BwRfUdwFpLZ1rqysLA1WYWFh0MeEU6TkWbpsmaYPHa4iLk0fOlx/dOfDetOSA/rchiqno0XM7+goy9O2SMujGnwmYIO2UneCXYj7EPAyMLXZrhuAFf6fV+oveHZN1Ulm5OZSum0La9e+ROm2Ldx9x/WcN8Q3g/O7u7rd16jGnLB2C56I9BaRnv73icAUoPk34h8Bk/1t0oBhwAchTWoCJiJcn5PMaV+J4cEXvew+0C2/TjUmaIH08PoChSKyGXgbWKOqK0VktojM9rf5FXC+iLwHvATMU9X94YlsAhEXK9xySQqJccJ9q7xUVNukB8YEcpd2M3B2C9vvb/J+L3BRaKOZjuqZ7OLmqSnc83Q59//Ty22XpxBrszebKGaTB3Rzg9NiuX5SMtv3HiF/na3IZqKbPVoWBcYMiWfvgQZWbayh/8kxTD4zwelIxjjCenhR4ooxiZw12M3jr1fx/sf1TscxxhFW8KKES4Qbp3jod1IMf37BS9khm8TURB8reFEkwS3ceqkHl8B9qyqoqrU7tya6WMGLMr1SY/jeVA/7yxv5ywuVNDTaTQwTPazgRaGh/dzMGJ/Elo/rWf5mldNxjOk0dpc2So0bnsCegw28uKmW/ifHcsEZ8U5HMibsrIcXxb55fhLDB8Sy9JVKdnxid25N92cFL4rFuIRZF3noleriT897bflJ0+1ZwYtyyQkubr0khSMNcN8qLzX1dhPDdF9W8Ax9Torhuxd52HOwgYde9NJoj5+ZbsoKngFgxEA315yfxLu76vnHW9VOxzEmLOwurTlm8pnx7DnYwHPFNfQ7OYbzhtidW9O9WA/PHCMizBifxJC+sTyytpIP99nEoaZ7sYJnjhMbI3xvqofUJBdLVldwqNIePzPdhxU88yUpiS5uvcRDda3yx9UV1B2xmxime7CCZ1o0oFcsN07xsGtfA48VVtrEoaZbsIJnWnX26XFcOSaR9TvqeP6dGqfjGNNhgaxaliAib4nIJhHZIiJ5rbSbKCLv+tu8EvqoxgmXnpPAeUPieKrIlnw0XV8gPbxaYJKqjgLOAqaKSHbTBv5lHP8ITFPVEcA3Q5zTOOToko8De9uSj6bra7fg+RfX9vo/uv2v5l/o5OJbiPsj/zH7QprSOOroko8Jblvy0XRtEsiX0SISAxQDGcASVZ3XbP8ifIVwBJACLFbVx1o4zyxgFkBaWlpWQUFBUGG9Xi8ejyeoY8Ip2vLsr05kzYfp9EqsYtJpu4iR9v/uRNvvKFiWp33BZsrJySlW1dEt7lTVgF9AT6AQGNls+31AEZAM9AJ2AEPbOldWVpYGq7CwMOhjwika8xRtq9GblhzQxwq92tjYGBGZgmF52hZpeVSDzwRs0FbqTlB3aVX1EPAyMLXZrt3A86paqar7gVeBUcGc23QNY4bGc8k5Cbz6fi2F/6p1Oo4xQQnkLm1v/00JRCQRmAKUNGv2DDBORGJFJAkYA2wNcVYTIa48uuTja7bko+laAunh9QUKRWQz8DawRlVXishsEZkNoKpbgeeBzcBbwIOq+q9whTbOcolw42QPff1LPn5qSz6aLiKQu7SbVfVsVT1TVUeq6i/92+9X1fubtLtHVYf72ywKY2YTARLihFtsyUfTxdiTFuaE9fYv+fiZLflouggreKZDhvZzk2tLPpouwiYANR02fngCew/Yko8m8lkPz4TEN8fako8m8lnBMyFxdMnHU1JsyUcTuazgmZBJTnDx/Ut9Sz7OuuNh0oeOYNKkyWQMG8Gy/Hyn4xlj3+GZ0OpzUgz9q57lkb/dybiZi5mYnk3ZziLm3D4XgBm5uc4GNFHNengm5B5YcjfjZi6m39BxuGLc9Bs6jjHTF7Egb6HT0UyUs4JnQm5XaQl90o+bMpE+6dnsKm3+RKIxncsKngm5wRmZlO0sOm5b2c4ievcfZnPpGUdZwTMhl7dgPusL5rJ3+zoaG+rZu30db+TPYeSU2/hFwWE2fWhTxRtn2E0LE3JHb0wsyLuD1TtKOH1IJvct+jUTLr6Gh16s5L5VXsZmxnHtBckkxonDaU00sYJnwmJGbi4zcnN5+eWXmThx4rHt869O5dm3q1n9Tg0le45ww6RkhvV3OxfURBW7pDWdKjZG+EZ2EvO+kUKMC373TAWPv15pi32bTmEFzzgivY+bn1/Tg5yR8by4qZY7/36YD/fZimgmvKzgGcfEu4Xc8cncdnkK1XXKb54s5x9vVXGkwXp7Jjys4BnHDT/VTd70Hpw3JI5nN9Rw14pyPjloz+Ka0LOCZyJCUryLG6d4mH2xhwMVjfzy74dZs6mGxgCWETUmUIEs4pMgIm+JyCYR2SIieW20PVdEGkTk6tDGNNEiKz2OvOk9GHGqmyder+LeZyrYX269PRMagfTwaoFJqjoKOAuYKiLZzRv5F+u+G/hnSBOaqJOa5OKWSzx8Z1Iy//7sCHmPH+a1rbVH10A25oQFsoiPqqrX/9Htf7X0N+/7wJPAvtDFM9FKRBibGc8vpvfgtN6xPFpYyZLVXg5X2aNp5sRJIP9q+ntvxUAGsERV5zXb3x/IByYBDwErVXV5C+eZBcwCSEtLyyooKAgqrNfrxePxBHVMOFme9oUikypsO3gK7+7rS6yrkfP67mFg6mHH8oSS5WlfsJlycnKKVXV0iztVNeAX0BMoBEY22/53INv//hHg6vbOlZWVpcEqLCwM+phwsjztC2WmvQeP6K+eOKQ3LTmgD7xQod7qBkfzhILlaV+wmYAN2krdCerRMlU9JCIvA1OBpgttjwYKRASgF3CpiBxR1aeDOb8xbel7Ugw/uSqV1RtreK64mm176/lOjocRA+3RNBOYQO7S9haRnv73icAU4LiJzVR1sKoOUtVBwHLgZit2JhxiY4TLz03kp1elkhjnYtHKCpa9Wkltvd3QMO0L5C5tX6BQRDYDbwNrVHWliMwWkdnhjWdMy077Siw/+2YqF41K4JV/1fLLJw5TaqulmXa0e0mrqpuBs1vYfn8r7b/T8VjGtM8dK3xzbBJnDnLz8NpKfvt0BVPPTuDycxNxx9i0U+bL7EkL0+UN6+/mF9f24ILMeFZvrOHXy8vZvd8mIjBfZgXPdAsJccK3c5L5/qUeyqsauXN5Oas3VtPYaN/tmS9YwTPdypmD4vjF9B6cNdjNiqJqfvt0BfsON7AsP5+MYbZObrSzGY9Nt5OS6OK7F3l4a0cd+euqmPGD/8+GZxdy/rcWM+FWWyc3mlkPz3RLIsKYofH84toebP7n7zn/W19eJ/e/FyzkYEUDlTWNNHTypa/1OJ1hPTzTrZ3kcbF/77YW18ldvbOEeX/94hE1d4zvu8AEtxDvlmPvE469b2X/l9oJcW5wSct3ipfl5zPn9vmMmb7IepydzAqe6faOrpPbb+i4Y9vKdhYxYNAwvj0xiZp6qKlTaur12J+1/vcV1Y18Vt50e+A/N97NlwpivFtY+JM7GTN90bE8R3ucC/LusIIXZlbwTLeXt2A+c26fy5jpi+iT7utRrS+Yy+J7FzJueEJQ52pUpa6eY8Wxtt5fKJsUy2N/1iu1dRy37fPKRvbtbrnH+XxpSSs/1YSKFTzT7bW0Tu7iexeeUG/KJUJCnO/SluQTy/PYz1rucQ7OyDyxE5qA2U0LExVm5OZSum0La9e+ROm2LY5eOuYtmM/6grns3b6OxoZ69m5fx7qlc5h41Q9sAaMwsx6eMZ2spR7n7Nt+wecnTeMPz1Vw89QUXw/ShJz18IxxQPMe52/nf4fvTEpm254j/O6ZcsptZuewsIJnTIQYmxnPLZd4+OTzBu5+qpzPDtviRaFmBc+YCHLmoDhun5ZCZY1y14pyPvrMJkEIJSt4xkSY9D5u5n0jldgY4Z6ny9m62+b5CxUreMZEoL4nxzDvqlROTonhDysreLu01ulI3YIVPGMi1MkeFz++MoVBX4nlgRcqWftejdORujwreMZEsOQEF7dNS+HMQW7+tq6Kp4qqbEHyDrCCZ0yEi4sVvjfVw7jh8azaWMOjhZWdPrtLdxHIqmUJIvKWiGwSkS0iktdCmxkistn/ekNERoUnrjHRKcYlXDchictGJ/B6SR1/et5rK7WdgEB6eLXAJFUdBZwFTBWR7GZtdgETVPVM4FfAX0Ka0hiDiHDFeUnkjk9i84f1/P7ZCiprbIByMNoteP7FvL3+j27/S5u1eUNVP/d/LAIGhDSlMeaYnJEJfPdiD//ed4S7n6rgYIUNUA6UBPIFqIjEAMVABrBEVee10faHQKaq3tTCvlnALIC0tLSsgoKCoMJ6vV48Hk9Qx4ST5WlfpGXqTnnKKpN59eNBuF0NTDptFz3iOz50JdJ+PxB8ppycnGJVHd3iTlUN+AX0BAqBka3szwG2Aqe0d66srCwNVmFhYdDHhJPlaV+kZepuef79Wb3+4OGD+l8PHtQde+sczxMOwWYCNmgrdSeou7Sqegh4GZjafJ+InAk8CFyhqgeCOa8x5sQM7BXLvKtS8SQIv3+2gk0f1jkdKaIFcpe2t4j09L9PBKYAJc3aDARWANep6vYw5DTGtKJ3agzzvpFK35Ni+ONqL69vtacyWhNID68vUCgim4G3gTWqulJEZovIbH+bnwOnAH8UkXdFZEOY8hpjWpCa5OKHV6SS2T+WRworWVVcbQOUW9DuBKCquhk4u4Xt9zd5fxPwpZsUxpjOkxAnfP/rKTy8tpKn1ldTXtXINRcktbp6WjSyGY+N6UZiY4QbpySTmiS8uKmW8mrlhsnJuGOs6IEVPGO6HZcI15yfRM8kF8vfrMZb08j3pqaQaNPG27O0xnRHIsLFZydyw9Fp45+2aePBCp4x3dr5mfHceqmHskMN3LWinH1RPm28FTxjurmvnhbH7dNSqar1TRv/7yieNt4KnjFRIL2Pb4CyO8qnjbeCZ0yU6HtSDD+5KpVeKTEsXlnB2zuib4CyFTxjoshJHhc/ujKF09NieWBNJS9tjq5p463gGRNlkhNczL08hVGD3RS8VsWKKJo23gqeMVEoLlaYfbGH8cPjWb2xhtn//TAZw0YwadJkMoaNYFl+vtMRw8IGHhsTpWJcwswJSby77gke+PMvGTdzMRNuzaZsZxFzbp8LwIzcXGdDhpj18IyJYiLCM0t/x7iZi+k3dByuGDf9ho5jzPRFLMhb6HS8kLOCZ0yU21VaQp/045ep6ZOeza7SklaO6Lqs4BkT5QZnZFK2s+i4bWU7ixickelQovCxgmdMlMtbMJ/1BXPZu30djQ317N2+jteWzSHv53c4HS3k7KaFMVHu6I2JBXl3sHpHCf1OG0bW5fPJOPdqh5OFnvXwjDHMyM2ldNsW1q59iY92bmHKpdfw+OtV3W7dWyt4xpjjuFzCzInJVNYoTxZVOx0npKzgGWO+ZGCvWKaMSmDd+7Vs39t9JhoIZNWyBBF5S0Q2icgWEclroY2IyB9EpFRENovIOeGJa4zpLNPOTeSUFBdLX6nkSEP3ePQskB5eLTBJVUcBZwFTRSS7WZtLgCH+1yzgT6EMaYzpfPFuYcb4JD75vJF/vtM9Jhlot+D5F/P2+j+6/a/m5f4K4DF/2yKgp4j0DW1UY0xn++ppcWSlx7GyuLpbzJYsgcySICIxQDGQASxR1XnN9q8E7lLV1/yfXwLmqeqGZu1m4esBkpaWllVQUBBUWK/Xi8fjCeqYcLI87Yu0TJanbS3lqaqPZeXOYZySWMWkgbvo7FUfg/0d5eTkFKvq6BZ3qmrAL6AnUAiMbLb9OeCCJp9fArLaOldWVpYGq7CwMOhjwsnytC/SMlmetrWWZ+171XrTkgP6ZklN5wbS4H9HwAZtpe4EdZdWVQ8BLwNTm+3aDZza5PMAYG8w5zbGRK4Jw+MZnBbD469X4e3CY/MCuUvbW0R6+t8nAlOA5k8V/wP4tv9ubTZwWFU/CXVYY4wzXC7h2xOSqapVnnyz647NC6SH1xcoFJHNwNvAGlVdKSKzRWS2v80q4AOgFHgAuDksaY0xjhnQK5YLz0rgta1dd2xeu8/Squpm4OwWtt/f5L0Ct4Q2mjEm0lw+OpENpXX89eVKfn5tD9wxnXwHo4PsSQtjTMCOjs0rO9Q1x+ZZwTPGBOWrp8UxOj2O54qrKTvUtcbmWcEzxgTt2guScMcIy16p7FIrnlnBM8YErWeyi6uyEynZc4Si7XVOxwmYFTxjzAkZPyKe09NieKILjc2zgmeMOSEuEa6bmEx1nbL8jSqn4wTECp4x5oQNOCWWC0cl8HpJHdv2RP7YPCt4xpgOuWx0Ir1SffPm1Uf4vHlW8IwxHdJ0bN7zGyN7bJ4VPGNMh40cGMe5GXGsivCxeVbwjDEhce0FSbhjhaURPDbPCp4xJiR6JLn4j68lsm3PEd7cFplj86zgGWNCZtzweNL7xPL3N6qoqI68sXlW8IwxIeMS4boJSb6xeW9G3tg8K3jGmJDqf0osF52VwBsRODbPCp4xJuS+npVI71QXf42wsXlW8IwxIecbm5fMp4caWR1BY/Os4BljwmLEQDfnDYljdXE1ZZ9Hxti8QBbxOVVECkVkq4hsEZE5LbTpISLPisgmf5sbwhPXGNOVXDs2iTh35IzNC6SHdwT4gaqeAWQDt4jI8GZtbgHeV9VRwETgf0QkLqRJjTFdTurRsXl7j/BGBIzNa7fgqeonqrrR/74C2Ar0b94MSBERATzAQXyF0hgT5S44I56MPrEsj4CxeRJMN1NEBgGvAiNVtbzJ9hR8a9NmAinAtar6XAvHzwJmAaSlpWUVFBQEFdbr9eLxeII6JpwsT/siLZPlaVu48hyqiWf1B0MY1OMQX+u/O6yZcnJyilV1dIs7VTWgF76eWzFwVQv7rgZ+DwiQAewCUts6X1ZWlgarsLAw6GPCyfK0L9IyWZ62hTPPiqJKvWnJAd26uy6o44LNBGzQVupOQHdpRcQNPAksU9UVLTS5AVjh/3ml/oKXGXBJNsZ0e0fH5i19pZL6I87cwAjkLq0ADwFbVfXeVpp9BEz2t08DhgEfhCqkMabri4sVZk7wjc1btbHakQyxAbQZC1wHvCci7/q33QEMBFDV+4FfAY+IyHv4Lmvnqer+0Mc1xnRlw091M2ZIHKs31nDekHj6nhTTqT+/3YKnqq/hK2JttdkLXBSqUMaY7uuasUm891E9S1+p5IdXpOC7iOwc9qSFMaZTpSa5uPpriWzfe4Q3Sjp3bJ4VPGNMpxt7RjxD+nb+vHlW8Iwxnc4lvhsYNfXK3ztxTVsreMYYR/Q7OYapZyfw5rY6tu7unHnzrOAZYxxzaVYiX+nReWPzrOAZYxxzdGzevsOdMzbPCp4xxlFnDHCTPdQ3Nu+Tg+GdN88KnjHGcdeMTSLBLfz1lUoawzhvnhU8Y4zjUhJdXH1+Ejs+Ce/YPCt4xpiIMDYzjqH9fGPzyqvCMzbPCp4xJiKICDPHJ1MbxrF5VvCMMRGj78kxXHJOAkXb63j/49CPzbOCZ4yJKJee4xub99O7HiVj6AgmTZpMxrARLMvP7/C5A5keyhhjOo07Vuj5+bMUPn4n42YuZkJ6NmU7i5hz+1wAZuTmnvC5rYdnjIk4f/7fuxg3czH9ho7DFeOm39BxjJm+iAV5Czt0Xit4xpiIs6u0hD7p2cdt65Oeza7Skg6d1wqeMSbiDM7IpGxn0XHbynYWMTijY0vlWMEzxkScvAXzWV8wl73b19HYUM/e7etYXzCXvAXzO3Reu2lhjIk4R29MLMi7g9U7Sjh9SCaL713YoRsWENiqZaeKSKGIbBWRLSIyp5V2E0XkXX+bVzqUyhgT9Wbk5lK6bQtr175E6bYtHS52EFgP7wjwA1XdKCIpQLGIrFHV9482EJGewB+Bqar6kYh8pcPJjDEmxNrt4anqJ6q60f++AtgK9G/WLBffQtwf+dvtC3VQY4zpKNEgpmIRkUHAq8BIVS1vsn0R4AZGACnAYlV9rIXjZwGzANLS0rIKCgqCCuv1evF4PEEdE06Wp32RlsnytC3S8kDwmXJycopVdXSLO1U1oBfgAYqBq1rYdx9QBCQDvYAdwNC2zpeVlaXBKiwsDPqYcLI87Yu0TJanbZGWRzX4TMAGbaXuBHSXVkTcwJPAMlVd0UKT3cB+Va0EKkXkVWAUsD3gsmyMMWHW7iWt+JYFfxQ4qKpzW2lzBr5e3sVAHPAWMF1V/9XGeT8D/h1k3l7A/iCPCSfL075Iy2R52hZpeSD4TKepau+WdgTSwxsLXAe8JyLv+rfdAQwEUNX7VXWriDwPbAYagQfbKnb+41oM1BYR2aCtXZs7wPK0L9IyWZ62RVoeCG2mdgueqr4GSADt7gHuCUUoY4wJB3u0zBgTNbpawfuL0wGasTzti7RMlqdtkZYHQpgpqHF4xhjTlXW1Hp4xxpwwK3jGmKgR8QUv0NlaOjlTgoi8JSKb/JnynM4EICIxIvKOiKyMgCwfish7/hl0NkRAnp4islxESvx/l77mcJ5h/t/N0Ve5iMx1ONNt/r/P/xKRv4lIgsN55vizbAnV7ybiv8MTkb5AX20yWwtwpTaZrcWBTAIkq6rX/xTKa8AcVS1q59Bw57odGA2kquplDmf5EBitqhExiFVEHgXWqeqDIhIHJKnqIYdjAb5/qIA9wBhVDXYwfqgy9Mf393i4qlaLyBPAKlV9xKE8I4EC4DygDnge+J6q7ujIeSO+h6eBzdbS2ZlUVb3+j27/y9F/OURkAPB14EEnc0QiEUkFxgMPAahqXaQUO7/JwE6nil0TsUCiiMQCScBeB7OcARSpapWqHgFeAb7R0ZNGfMFryj9by9nAeoejHL18fBfYB6xRVaczLQJ+jO9Jl0igwAsiUuyfJcdJpwOfAQ/7L/kfFJFkhzM1NR34m5MBVHUP8DvgI+AT4LCqvuBgpH8B40XkFBFJAi4FTu3oSbtMwRMRD74JDOZqk6mpnKKqDap6FjAAOM/fBXeEiFwG7FPVYqcytGCsqp4DXALcIiLjHcwSC5wD/ElVzwYqgZ84mOcY/+X1NODvDuc4CbgCGAz0A5JFZKZTeVR1K3A3sAbf5ewmfJMRd0iXKHgBzNbiGP+l0cvAVAdjjAWm+b83KwAmichSB/Ogqnv9f+4DnsL3XYxTdgO7m/TCl+MrgJHgEmCjqn7qcI4pwC5V/UxV64EVwPlOBlLVh1T1HFUdDxzEN+1ch0R8wfPfIHgI2Kqq9zqdB0BEevuntUdEEvH9ZenYgpkdoKo/VdUBqjoI3+XRWlV17F9nEUn232DCf+l4Eb5LFEeoahnwsYgM82+aDDh206uZb+Hw5azfR0C2iCT5/5+bjO/7csccXSpCRAYCVxGC31NXWLWsxdlaVHWVc5HoCzzqv7vmAp5QVceHgkSQNOAp3/83xAL5qvq8s5H4PrDMfwn5AXCDw3nwfzd1IfBdp7Oo6noRWQ5sxHfp+A7OP2b2pIicAtQDt6jq5x09YcQPSzHGmFCJ+EtaY4wJFSt4xpioYQXPGBM1rOAZY6KGFTxjTNSwgmeMiRpW8IwxUeP/ANXMldEOGVefAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# メイン\n", "M= range(2, 10)\n", "sd = np.zeros(len(M))\n", "for i in range(len(M)):\n", " w = fit_gauss_func(X, T, M[i])\n", " sd[i] = np.sqrt(mse_gauss_func(X, T, w))\n", " \n", "# グラフ描画\n", "plt.figure(figsize=(5, 4))\n", "plt.plot(M, sd, \"cornflowerblue\", marker=\"o\", markeredgecolor=\"black\")\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "id": "58ea04c8", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 訓練データとテストデータに分割\n", "split = int(N/4)\n", "X_test = X[:split]\n", "T_test = T[:split]\n", "X_train = X[split:]\n", "T_train = T[split:]\n", "\n", "# メイン\n", "M = [2, 4, 7, 9]\n", "plt.figure(figsize=(10, 2.5))\n", "plt.subplots_adjust(wspace=0.3)\n", "for i in range(len(M)):\n", " w = fit_gauss_func(X_train, T_train, M[i])\n", " sd = np.sqrt(mse_gauss_func(X_test, T_test, w))\n", " # グラフ描画\n", " plt.subplot(1, len(M), i+1)\n", " show_gauss_func(w)\n", " plt.plot(\n", " X_train, T_train, \"white\", \n", " marker=\"o\", linestyle=\"None\", markeredgecolor=\"black\",\n", " label=\"training\",\n", " )\n", " plt.plot(\n", " X_test, T_test, \"cornflowerblue\", \n", " marker=\"o\", linestyle=\"None\", markeredgecolor=\"black\",\n", " label=\"training\",\n", " )\n", " plt.title(f\"M={M[i]:d}, SD={sd:.2f}\")\n", " plt.legend(loc=\"lower right\", fontsize=10, numpoints=1)\n", " plt.xlim(X_min, X_max)\n", " plt.ylim(120, 180)\n", " plt.grid()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 27, "id": "18d0b36f", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# メイン\n", "M = range(2, 10)\n", "sd_train = np.zeros(len(M))\n", "sd_test = np.zeros(len(M))\n", "for i in range(len(M)):\n", " # w を計算\n", " w = fit_gauss_func(X_train, T_train, M[i])\n", " # 訓練データの SD を計算\n", " sd_train[i] = np.sqrt(mse_gauss_func(X_train, T_train, w))\n", " # テストテータの SD を計算\n", " sd_test[i] = np.sqrt(mse_gauss_func(X_test, T_test, w))\n", " \n", "# グラフ描画\n", "plt.figure(figsize=(5,4))\n", "plt.plot(\n", " M, sd_train, \"black\",\n", " marker=\"o\", linestyle=\"-\",\n", " markerfacecolor=\"white\", markeredgecolor=\"black\",\n", " label=\"training\",\n", ")\n", "plt.plot(\n", " M, sd_test, \"cornflowerblue\",\n", " marker=\"o\", linestyle=\"-\",\n", " markeredgecolor=\"black\",\n", " label=\"training\",\n", ")\n", "plt.legend(loc=\"upper left\", fontsize=10)\n", "plt.ylim(0, 12)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 28, "id": "a0338830", "metadata": {}, "outputs": [], "source": [ "# K 分割交差検証\n", "def kfold_gauss_func(x, t, m, k):\n", " n = x.shape[0]\n", " mse_train = np.zeros(k)\n", " mse_test = np.zeros(k)\n", " for i in range(0, k):\n", " # 訓練データとテストデータに分割\n", " # (A) テストデータのインデックス\n", " i_test = np.fmod(range(n), k)\n", " x_test = x[i_test ==i]\n", " t_test = t[i_test == i]\n", " x_train = x[i_test != i]\n", " t_train = t[i_test != i]\n", " # w を訓練データで決める\n", " w = fit_gauss_func(x_train, t_train, m)\n", " # 訓練データの MSE を計算\n", " mse_train[i] = mse_gauss_func(x_train, t_train, w)\n", " # テストデータの MSE を計算\n", " mse_test[i] = mse_gauss_func(x_test, t_test, w)\n", " return mse_train, mse_test" ] }, { "cell_type": "code", "execution_count": 29, "id": "a5f43d65", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4], dtype=int32)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.fmod(range(10), 5)" ] }, { "cell_type": "code", "execution_count": 30, "id": "74c8c609", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([11.67192713, 9.95121926, 15.74669854, 11.40405857]),\n", " array([ 37.77871725, 824.07674518, 14.32643196, 45.55112846]))" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = 4\n", "K = 4\n", "kfold_gauss_func(X, T, M, K)" ] }, { "cell_type": "code", "execution_count": 31, "id": "6557a6fd", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# メイン\n", "M = range(2, 8)\n", "K = 16\n", "Cv_Gauss_train = np.zeros((K, len(M)))\n", "Cv_Gauss_test = np.zeros((K, len(M)))\n", "for i in range(0, len(M)):\n", " Cv_Gauss_train[:, i], Cv_Gauss_test[:, i] = kfold_gauss_func(X, T, M[i], K)\n", "\n", "# 訓練データの各分割における MSE の平均, の平方根\n", "sd_Gauss_train = np.sqrt(np.mean(Cv_Gauss_train, axis=0))\n", "# テストデータの各分割における MSE の平均, の平方根\n", "sd_Gauss_test = np.sqrt(np.mean(Cv_Gauss_test, axis=0))\n", "np.save(\"ch5_Gauss_test.npy\", sd_Gauss_test)\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(5,4))\n", "# 訓練データに対する MSE のグラフ\n", "plt.plot(\n", " M, sd_Gauss_train, \"black\", \n", " marker=\"o\", linestyle=\"-\",\n", " markerfacecolor=\"white\", markeredgecolor=\"black\",\n", " label=\"training\",\n", ")\n", "# テストデータに対する MSE のグラフ\n", "plt.plot(\n", " M, sd_Gauss_test, \"cornflowerblue\", \n", " marker=\"o\", linestyle=\"-\", \n", " markeredgecolor=\"black\", \n", " label=\"test\", \n", ")\n", "plt.legend(loc=\"upper left\", fontsize=10)\n", "plt.ylim(0, 50)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 32, "id": "69d6c811", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SD = 3.83 cm\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# メイン\n", "M = 3\n", "w = fit_gauss_func(X, T, M)\n", "sd = np.sqrt(mse_gauss_func(X, T, w))\n", "# 結果表示\n", "print(f\"SD = {sd:.2f} cm\")\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(4, 4))\n", "show_gauss_func(w)\n", "plt.plot(\n", " X, T, \"cornflowerblue\", \n", " marker=\"o\", linestyle=\"None\", markeredgecolor=\"black\",\n", ")\n", "plt.xlim(X_min, X_max)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "95a32aa9", "metadata": {}, "source": [ "## 5.6 新しいモデルの生成" ] }, { "cell_type": "markdown", "id": "d78ad3cb", "metadata": {}, "source": [ "線形基底関数モデルを導入して, データとの誤差もかなり改善しました.\n", "\n", "しかし, このグラフにはまだ問題点があります. 25 歳のところから急激に下がっている点です.\n", "\n", "これは 30 歳付近のデータが不十分であったために起こってしまったことです." ] }, { "cell_type": "markdown", "id": "0b17bbec", "metadata": {}, "source": [ "解決策としては, この知識にあったモデルを作ることです.\n", "\n", "年齢 $x$ が大きくなるにつれて身長は徐々に増加し, 最終的にはある一定の値で収束するような関数は,\n", "\n", "例えば, 次の式で表すことができます.\n", "\n", "$$\n", "y(x) = w_0 - w_1exp(-w_2x)\n", "$$\n", "\n", "w0, w1, w2 はすべて正の値をとるパラメータです." ] }, { "cell_type": "code", "execution_count": 78, "id": "b21a5686", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# データのロード\n", "data = np.load(\"ch5_data.npz\")\n", "X = data[\"X\"]\n", "X_min = 0\n", "X_max = data[\"X_max\"]\n", "N = data[\"N\"]\n", "T = data[\"T\"]\n", "\n", "# モデル A\n", "def model_A(x, w):\n", " y = w[0] - w[1] * np.exp(-w[2] * x)\n", " return y\n", "\n", "# モデル A の表示\n", "def show_model_A(w):\n", " x = np.linspace(X_min, X_max, 100)\n", " y = model_A(x, w)\n", " plt.plot(x, y, \"gray\", linewidth = 4)\n", " \n", "# モデル A の平均二乗誤差 (MSE)\n", "def mse_model_A(w, x, t):\n", " y = model_A(x, w)\n", " mse = np.mean((y - t) ** 2)\n", " return mse" ] }, { "cell_type": "code", "execution_count": 89, "id": "70c8bc08", "metadata": {}, "outputs": [], "source": [ "from scipy.optimize import minimize\n", "# モデル A のパラメータ最適化\n", "def fit_model_A(w_init, x, t):\n", " res = minimize(mse_model_A, w_init, args=(x, t), method=\"powell\")\n", " return res.x" ] }, { "cell_type": "code", "execution_count": 107, "id": "92dd49f1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w0 = 168.57, w1 = 110.15, w2 = 0.21\n", "SD = 3.87 cm\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQ4AAAD7CAYAAACbmXq7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgk0lEQVR4nO3de3RV1b3o8e+PvEmIBBIgCUgwQBQJiFpBVIpCBWzvoY/bM+KDa716sKfWo7WPU0tb5LT0dJzb9uqoxTPw1KOlIJej7dG2oz7wmgv28CggQgBRQniEBEiQh5tHnr/7R3bi3js7Yb/X2pvfZ4w99l5zr7X2jyX8nHOuueYUVcUYY8IxwOkAjDHJxxKHMSZsljiMMWGzxGGMCZslDmNM2CxxGGPCdtHEISLPichxEanxKbtGRDaKyHYR2SIiN/h897iI7BORvSIyJ16BG2OcE0qN43lgbkDZvwBLVPUa4IfebURkAlAFXO09ZpmIpMUqWGOMO6RfbAdVXSciZYHFQL7382VAg/fzfGC1qrYAdSKyD7gB2NDfbwwePFjHjh0bTtwJcfbsWXJzc50Ow4/FFBqLKXRbt25tVtWicI65aOLow6PA6yLyM7pqLdO95aXARp/96r1l/Ro+fDhbtmyJMJT4qa6uZubMmU6H4cdiCo3FFDoRORjuMZEmjr8HvqGqL4vI3wK/BmYDEmTfoGPaRWQhsBCgqKiI6urqCEOJH4/H47q4LKbQWExxpqoXfQFlQI3P9mlAvJ8FOOP9/DjwuM9+rwM3Xuz848ePVzd6++23nQ6hF4spNBZT6IAtGkIe8H1Feju2Afi09/NtwIfez68CVSKSJSJjgHHA5gh/wxjjUhdtqojIi8BMoFBE6oHFwN8BT4lIOnABb5NDVXeJyBpgN9AOPKSqHXGK3RjjkFDuqtzZx1fX9bH/UmBpNEEZY9zNRo4aY8JmicMYEzZLHMaYsFniMMaEzRKHMSZsljiMMWGzxGGMCZslDmNM2CxxGGPCZonDRG3t2rcYW3E1aWlpjK24mpWrVjkdkokzSxwmKitXreJXy1+gYt5P+MqTDVTM+wmPPLYoJslj5apVlpBcyhKHicriJUuZftcvKRl/CwPSMigZfwtTq55k8ZLoHldauWoVjzy2KC4JyUQv0ol8jAGgbt/7fLp8ml/ZiPJpvLbv/ajOu3jJUqZWPUnJ+FsAfBLS97j7rruiOnciqCqdnZ20t7fT0dFBe3s758+fp7m5mY6Ojl6vzs7OPt9DeXX/Xvfn7u1gnwPLImGJw0RlzNgrOVq7secfOMDR2o2MGXtlVOeNV0Lqpqq0tbXR0tLi92ptbe31amtrC/pqb2/vee/+3J0k2tvbg/7u5s2pMT2NJQ4TlSWLF/H1Rx9m+l2/ZET5NI7WbmTT6kd56hfRNVVCTUidnZ2cP3+es2fPcu7cuZ7XoUOHeOONNzh//jwXLlzo9WppaYn4/7bGEoeJ0t133cWe3XtY/R/f47V97zNm7JU89YulUTcnFv/gcR791iNMq3qqJyH916qH+crd/50VK1bg8XjweDycO3euz3PU1dVFFYPpmyUOE7XZs2fx4x//KKxjVJXTp09z8uTJntfp06c5deoUp06dwuPxMPPm61n34kOcaGpkaFExt82YxuDBl7F///44/UliS0RIT08nPT2dtLQ02trayMvLIy0tjQEDBpCens6AAQNIS0vrKQt8D/UlIr0++74HfvYte+KJJ8L+s1niMHHV2tpKU1MTTU1NNDc3c+LECU6cOMFHH31ER0f/s0pOqqxkUmVl3GJLT08nOzubzMxMsrKyyMrKIjMz0++VkZHh956enk5GRkbPqzsx+H7uThQDBvjftHTr8giRsMSRQlauWsXiJUup8zYZlixeFFKTIdLjfHXXII4ePUpjYyPHjh3j2LFjnDp1KsI/Teiys7PJzc1l4MCBDBw4kJycHJqbm6moqCAnJ4ecnByys7P9XllZWaSl2SKDkbLEkSK6xz1MrXqST3v7BB557FGAfpNApMedO3eO+vp6jhw5ws6dO9m8eTPnz5+P5R+J3Nxc8vPzyc/PZ9CgQQwaNIi8vDzy8vIYNGgQubm55ObmBk0A1dXV3HzzzTGNx3zCEkeKiHTcQ6jHnT59moMHD3Lw4EEOHTpEc3Nz1DHn5OQwZMgQCgoKKCgoYPDgwT2v/Px80tPtr6db2X+ZFBHpuIf+jtuzZw+1tbXU1dXx0UcfRRSXiFBQUEBRURGFhYUUFRUxdOhQhg4dSk5OTkTnNM6zxJEiIh2I1ddxQwqLWbNmTb/H7ti5k3XrN/bc9bh15k3MmzuXESNGMGLECIYPH05RUREZGRnR/eGM69izKiliyeJFbFr9KA0frKezo42GD9azafWjLFm8qM9jVJXHHn2Y/1r1sN9x76z4GjNumdbncQA7a2p4q3ojN9z5K+57qoEb7vwV//f/bSIzK4t58+YxZcoUSkpKLGmkqFBWcnsO+BxwXFUn+pQ/DHydrhXb/qSq3/GWPw7cD3QA/6Cqr8cjcOOvuz9i8ZKLD8Q6efIkO3bsoKamhubmZm6bcYPfeInZt97Y6zbogAEDKC0tZfTo0ZSVlTFn3n/jpnt+FdA38lTSPEtiohNKU+V54GngN90FInIrMB+YpKotIjLMWz4BqAKuBkqAtSIy3paBTIy777qrz3+0ra2t7N69m3fffZdDhw75fdfXeInCwkLKy8spLy9n9OjRZGZm9nxXV7s3rs+SGHcLZQnIdSJSFlD898BPVbXFu89xb/l8YLW3vE5E9gE3ABtiF7IJx/Hjx9myZQs7duygpaWl331FhLKyMioqKhg/fjwFBQV97huvh9tMcoi0c3Q8cIuILKVr0elvqepfgVJgo89+9d4yk0CqygcffMCmTZsu+rzGgAEDKC8vZ8KECT0DpkKxZPEiHnnsUaZWPRnTh9tMcog0caQDBcA04FPAGhG5ApAg+wZ9BFFEFuJd5b6oqIjq6uoIQ4kfj8fjuriCxbR27Vu8sGIVRw4fYETJKGbOmE5FRUW/58nPz/e763Hq1Ck2bdoUchylJSV89YF7eGHFY/z58AFKR5Xx1QfuobSkxBXXLFn+2yWrSBNHPfA77XouebOIdAKF3vJRPvuNBBqCnUBVlwPLASoqKtSNY/jd+GxBYEwrV63iX/9tBVOrnuJ27//5/7Tia7S0tvbqt8jNzeWaa65hypQpDB06NOpYZs6cyY9//KOkuE5u4MaYIhXp7dj/BG4DEJHxQCbQDLwKVIlIloiMAcYBqTFziQt1dnby+KLFTK16ym/qvpsXLGPd+k9ajJdffjlf+tKX+MY3vsHs2bNjkjT6Y3OFpr5Qbse+CMwECkWkHlgMPAc8JyI1QCtwr7f2sUtE1gC76bpN+5DdUYm97j6MtWvXUn9wP58JcnfjRFMjlZWV3HjjjRQXFycstkiffTHJJZS7Knf28dU9fey/FLAesjjxeDysWLGip9NzaFFx0LsbZeXj+eIXv5jw+JJ9rlATGhs5miRaWlp4/fXX2bp1q9+dkhm3TOOdFV/rNWL0R0t+4EicdfveZ0SQGlCdje9IKfasShLYu3cvf/rTn/j44497fTd50iTKRo/mP1/9Lq/t/yBmU/dFysZ3XBqsxuFi586d46WXXmL16tVBk8YVV1zBgw8+yM9//nNqP9zDb1asAOB/LFjgWKdkJM/MmORjNQ6X2rt3L3/4wx84e/Zsr+8uu+wy5s6dS0VFBSJdQ2fc0ikZzjMzJnlZ4nCZtra2nr6MQCLCyJEjWbBgQa+nTt3UKdnfMzMmNVhTJYEuNr6hqamJZ599lq1bt7Jj506eXvYsS5b8E08ve5bDhw9TWFjE4iVLyc7O7nW8dUqaRLIaR4JcrClRU1PDq6++SltbGzt27mTt2xu4ecGynudA/s+/P8BLr7zOTXc/3TNC1Pd465Q0iWQ1jgTxbUoELs78+uuv8/LLL9PW1gbAuvUbuXnBMr99JXMQN939dJ+LO1unpEkkq3EkSF9ze/75w/fZuHGjX/mJpsZezQ7PiYNBmyLd819Yp6RJJKtxJEh3U8LX0dqNDC3yHw6elpbGyNFX9No3b+jooMf7NkXuvusu9u3dRUdHB/v27rKkYeLGEkeCBGtKBM7tmZ+fz3333cc/L13Sa19t9fCXlV+3pohxBWuqxEF/K6Mt+sF3+HPdvl5ze5aWllJVVUVeXl7QZse/PvMkAN99/DFeqz9gTRHjKEscMdbf3ZNrp0zhgfsW9FozdeLEicyfP99vAaK+xkKUlpSkzJwOJnlZ4oixvgZifW/Rt7n/vnvomn3gE9OnT2f27Nk9I0CNSQaWOGIs2N2Ts6caaWhs4IknljC0qJgZt0xjUmUlc+bMYdq0/tcvMcaNrHM0xgLvntRueZmtf1jK7V9d2bNw0dq3N5CRkWlJwyQtSxwxFnj3ZMsf/pkZC57uNbXfcy/81ulQjYmYNVVirLtD8/veuyeq2u/ALWOSkSWOOLjt1ltZ+MBBWltbeXrZs/YMiUk51lSJsdOnT7Nq1SpaW1uBvqf2s4FbJplZjSOGLly4wMqVK/F4PD1lkyorqZw4kd++aM+QmNRhiSNGOjs7eemll2hqavIrnzZtGnPmzOGJJ55wJjBj4sCaKjGydu1aamtr/cquuuoqbr/9dociMiZ+LHHEwHvvvceGDRv8ykpLS/nCF75gI0JNSrLEEaWjR4/yxz/+0a9s0KBBVFVV9ZoX1JhUcdHEISLPichx73KPgd99S0RURAp9yh4XkX0isldE5sQ6YDe5cOECa9asob29vacsPT295ylXY1JVKDWO54G5gYUiMgr4DHDIp2wCUAVc7T1mmYikxSRSl1FVXnnlFU6ePOlX/rnPfY6SkhKHojImMS6aOFR1HfBRkK/+N/AdwPdxz/nAalVtUdU6YB9wQywCdZstW7bw/vv+oz+vu+46Jk+e7FBExiRORLdjReRvgCOq+l5A518p4Du/Xb23LNg5FgILAYqKiqiuro4klLjyeDxB4zp79izbtm3zK8vLy2PgwIFx/3P0FZOTLKbQuDGmSIWdOERkILAICHafMdgtBA1ShqouB5YDVFRUqBsnp6muru41aU57ezvPPvssnZ2dPWWZmZncd999DBkyxJGYnGYxhcaNMUUqkrsq5cAY4D0ROQCMBLaJyAi6ahijfPYdCTREG6STAhdR+v73f8Dx48f99vnsZz+bkKRhjFuEnThUdaeqDlPVMlUtoytZXKuqR4FXgSoRyRKRMcA4YHNMI06gtWvf4pHHFlEx7yd85ckGKub9hGee/Q07du7s2aeyspJJkyY5GKUxiRfK7dgXgQ1AhYjUi8j9fe2rqruANcBu4DXgIVXt6Gt/t3thxapeiyjdvGAZ69Z3deNcdtll3HHHHQ5HaUzihXJX5U5VLVbVDFUdqaq/Dvi+TFWbfbaXqmq5qlao6p/jEXSiHDl8IOhcGieaGnu2J06+rs+1YI1JVfaQWz9KR5UFnUtjaFExHs9ZfvnM832uBWtMKrMh5/24d8FdbFr9SK9FlObNuY3fv/LHPteCNSbVWY2jH7NnzyI9PZ1fPfMQJ5oaexZR+uEPf0hFRUXQtWBtSkBzKbDE0Y8LFy6QmZnB17/2dz1lEydOZOzYsT2zmduUgOZSZE2Vfuzfv5+2trae7ezsbObM6XpuL9hasDYloLlUWI2jD3V1db1m85o1a1bPU6/B1ne1KQHNpcISRxCdnZ289tprfmXFxcVce+21fmV9re9qTKqzpkoQ27Zt6zWsfN68eQwYYJfLGLDE0UtLS0uvJxgnT57MqFGjgh9gzCXIEkeAv/zlL5w9e7ZnOyMjg1mzZjkYkTHuY30cPs6cOcOGDRvYsXMn69Zv5ERTIyWjyhhdVmZ9Gcb4sMTho7q6mm3vvsvatzdw84JljLCh5MYEZU0VrxMnTrB9+3bWrd/IzQuW2VByY/phicOruroaVeVEU2PQJ2LrbCi5MT0scQDHjh2jpqZr9YehRcUcrd3o970NJTfGnyUO8Lv9OuOWafzltw/ZUHJj+nHJd44eO3bMb5mDSZWVTL/xRp5Z/j3+/OH7XDHOhpIbE+iSTxzr16/32y4pKeGBBx7gm9/8ZkrNSm1MLF3STZWmpiZ27drlVzZjxgxbKNqYi7ikE8c777zjtz18+HDGjx/vUDTGJI9LNnGcOnWKnT7LHADccsstVtswJgSXbOLYsGEDqp8sMldYWMhVV13lYETGJI9LMnGcP3+ed999169s+vTp9ti8MSG6JP+lbNmyxW9KwLy8PCorKx2MyJjkEspKbs+JyHERqfEp+18i8r6I7BCR34vIYJ/vHheRfSKyV0TmxCnuiLW3t7Np0ya/sqlTp5KefsnfmTYmZKHUOJ4H5gaUvQlMVNVJwAfA4wAiMgGoAq72HrNMRNJiFm0M1NTU+M23kZmZyfXXX+9gRMYkn1CWgFwHfBRQ9oaqtns3N9K1Kj3AfGC1qraoah2wD7ghhvFGRVV71TamTJlCdna2QxEZk5xi0cfxP4HuNWJLgcM+39V7y1zh8OHDHD161K9s6tSpDkVjTPKKqmEvIouAdmBld1GQ3TRIGSKyEFgIUFRU1Guez3jYvXu33/bQoUN57733+tzf4/EkJK5wWEyhsZjiK+LEISL3Ap8DZuknAyLqAd9ZfUcCDcGOV9XlwHKAiooKjfczIWfOnGHdunV+ZXfccQdXXHFFn8e48VkViyk0FlN8RdRUEZG5wD8Cf6Oq53y+ehWoEpEsERkDjAM2Rx9m9LZs2eI34KuoqIgxY8Y4GJExyeuiNQ4ReRGYCRSKSD2wmK67KFnAm94h2htV9auquktE1gC76WrCPKSqHfEKPlQdHR29Bnx96lOfsuHlxkTooolDVe8MUvzrfvZfCrhqgs4PPvgAj8fTs52ZmcnkyZMdjMiY5HZJjBzdunWr33ZlZSWZmZkORWNM8kv5xHHy5Elqa2v9yq677jqHojEmNaR84ti2bZvfdklJCcXFxQ5FY0xqSOnE0dnZyfbt2/3KrLZhTPRSOnHU1tb26hSdOHGigxEZkxpSOnEEjgqdMGGCdYoaEwMpmzjOnz/vt+wBdD3QZoyJXsomjpqaGjo6Phl7VlBQwKhRo/o5whgTqpRNHIGdotdcc42NFDUmRlIycTQ3N9PQ4P9snY0UNSZ2UjJxBC57MGbMGC677DKHojEm9aRc4lDVXonDJiI2JrZSLnEcOXKEkydP9mynpaXZeinGxFjKJY7A2sb48eNtTlFjYiylEkdnZ2evRaRtpKgxsZdSiaOurs5v6YOsrCxbRNqYOEipxBE4GfFVV11lCy0ZEwcpkzg6Ozt7DTG/+uqrHYrGmNSWMonjwIEDnDv3ybzJ2dnZNhmxMXGSMokjsJly5ZVXkpbmqtUnjUkZKZE4Ojs72bNnj1/ZhAkTHIrGmNSXEonj4MGDfs2UrKysfhdaMsZEJyUSR2Btw5opxsRX0icOVWXv3r1+ZTbE3Jj4umjiEJHnROS4iNT4lA0RkTdF5EPve4HPd4+LyD4R2Ssic+IVeLfGxkbOnDnTs52RkWHNFGPiLJQax/PA3ICy7wJvqeo44C3vNiIyAagCrvYes0xE4tpmCBy7UV5eTkZGRjx/0phL3kUTh6quAz4KKJ4PvOD9/ALweZ/y1araoqp1wD7ghtiEGlxgM+XKK6+M588ZY4i8j2O4qjYCeN+HectLgcM++9V7y+Li5MmTHD9+vGdbRBg3bly8fs4Y4xXrBzmCTeqpQXcUWQgsBCgqKqK6ujrsH6uvr/fbzs/PZ/PmzWGfpy8ejyeiuOLJYgqNxRRfkSaOYyJSrKqNIlIMdP9vvx7wnUp8JNDQ62hAVZcDywEqKip05syZYQfx/PPP+21PnTqVG2+8Mezz9KW6uppI4ooniyk0FlN8RdpUeRW41/v5XuAVn/IqEckSkTHAOCB2VQAfFy5c4NChQ35l1r9hTGJctMYhIi8CM4FCEakHFgM/BdaIyP3AIeDLAKq6S0TWALuBduAhVe0IeuIo1dbWovpJK6ioqIiCgoJ+jjDGxMpFE4eq3tnHV7P62H8psDSaoELx4Ycf+m2PHTs23j9pjPFKypGjqsq+ffv8ymymL2MSJykTR0NDg98UgZmZmba8ozEJlJSJI7CZUl5ebg+1GZNAKZE4bNCXMYmVdInj7NmzvdaFtY5RYxIr6RLH/v37/bZHjBjBoEGDHIrGmEtT0ieO8vJyhyIx5tKVVIlDVamtrfUrs8RhTOIlVeJobm7m448/7tnOyMiw27DGOCCpEkdgbWP06NG2UpsxDkjqxGHNFGOckTSJo729nYMHD/qVWeIwxhlJkzgOHz5MW1tbz/agQYMoLCx0MCJjLl1Jkzjq6ur8tsvLyxEJNuGYMSbekiZxHDhwwG/bFpQ2xjlJkThaW1s5cuSIX1lZWZkzwRhjkiNxHDp0iM7Ozp7tIUOGkJ+f72BExlzakiJxBPZvWDPFGGclReII7N+wZooxznJ94rhw4QKNjY1+ZZY4jHGW6xPHwYMHe81mnpeX52BExhjXJw5rphjjPq5PHIHDzK1j1BjnuTpxtLS0cPToUb+yyy+/3KFojDHdokocIvINEdklIjUi8qKIZIvIEBF5U0Q+9L5HvLza4cOH/fo3CgsLyc3NjSZkY0wMRJw4RKQU+AfgelWdCKQBVcB3gbdUdRzwlnc7IoFrw1ptwxh3iLapkg7kiEg6MJCulennAy94v38B+HykJw9MHKNHj470VMaYGIo4cajqEeBndC063QicVtU3gOGq2ujdpxEYFsn529vbqa+v9yuzGocx7hDxvHvevov5wBjgFPAfInJPGMcvBBZC19iM6upqv+9Pnz5NR8cnC91nZWWxffv2SMONiMfj6RWX0yym0FhM8RXNhJ2zgTpVbQIQkd8B04FjIlKsqo0iUgwcD3awqi4HlgNUVFTozJkz/b5fv3693/b48eMJ3CfeqqurE/6bF2MxhcZiiq9o+jgOAdNEZKB0zagzC9gDvArc693nXuCViE5uHaPGuFbENQ5V3SQiLwHbgHbgXbpqEHnAGhG5n67k8uUIzs3hw4f9yqxj1Bj3iGptAVVdDCwOKG6hq/YRsaamJlpaWnq2c3JybH5RY1zElSNHA++mjBw50uYXNcZFXJk4ApspI0eOdCgSY0wwrkwcgTUOW+bRGHdxXeI4f/48zc3NPdsiQmlpqYMRGWMCuS5xBNY2hg0bRmZmpkPRGGOCcV3iCOzfsGaKMe7jusQR7I6KMcZdXJU4Ojs7ey28ZDUOY9zHVYmjqamJ1tbWnu2BAwdSUBDxPEDGmDhxVeIIrG3YwC9j3MnViaOkpMShSIwx/XF14rDxG8a4k2sSR1tbG8eP+0/dYYnDGHdyTeJobGz0m9F8yJAh5OTkOBiRMaYvrkkc1kwxJnm4JnE0NDT4bVvHqDHu5ZrEYTUOY5KHKxKHqnLy5MmebRFhxIgRDkZkjOmPKxJHZ2en3/bw4cPJyMhwKBpjzMW4InH4rp8C1r9hjNtZ4jDGhM0ViSOwqVJcXOxQJMaYULgucQwYMIBhwyJabtYYkyCuSBy+hg0bRnp6VMu9GGPiLKrEISKDReQlEXlfRPaIyI0iMkRE3hSRD73vYU2oYc0UY9wv2hrHU8BrqnolMJmutWO/C7ylquOAt7zbIbPEYYz7RZw4RCQfmAH8GkBVW1X1FDAfeMG72wvA58M5ryUOY9wvmhrHFUAT8O8i8q6I/JuI5ALDVbURwPseck+niDB8+PAoQjLGJIL4Psoe1oEi1wMbgZu8K9c/BZwBHlbVwT77nVTVXv0cIrIQWAhQXFx83YMPPkhubi7XX399RPHEg8fjIS8vz+kw/FhMobGYQnfrrbduVdWw/uFFc/uiHqhX1U3e7Zfo6s84JiLFqtooIsXA8WAHq+pyYDlASUmJAowdO5aZM2dGEVJsVVdXuyoesJhCZTHFV8RNFVU9ChwWkQpv0SxgN/AqcK+37F7glVDPaf0bxiSHaAdMPAysFJFMYD9wH13JaI2I3A8cAr4c6skscRiTHKJKHKq6HQjWNpoVznkGDOiq+Nij9MYkB1eMHM3NzeXb3/62LS5tTJJwReKArlXbjDHJwTWJwxiTPCxxGGPCZonDGBM2SxzGmLBZ4jDGhM0ShzEmbJY4jDFhs8RhjAmbJQ5jTNgscRhjwhbxRD4xDULkY2Cv03EEUQg0Ox1EAIspNBZT6CpUdVA4B7hlHYK94c5AlAgissVtcVlMobGYQiciW8I9xpoqxpiwWeIwxoTNLYljudMB9MGNcVlMobGYQhd2XK7oHDXGJBe31DiMMUnE8cQhInNFZK+I7BORsJaLjBcROSAiO0VkeyQ9zjGK4TkROS4iNT5lUa3LG8e4nhCRI97rtV1E7khgPKNE5G3v2sW7ROQRb7mj16qfuJy8VtkisllE3vPGtMRbHva1crSpIiJpwAfAZ+hap+WvwJ2qutuxoLriOgBcr6qO3XMXkRmAB/iNqk70lv0L8JGq/tSbZAtU9R9dENcTgEdVf5bIWLy/XQwUq+o2ERkEbKVr2dGv4OC16ieuv8W5ayVArqp6RCQDeAd4BPgiYV4rp2scNwD7VHW/qrYCq+lae/aSp6rrgI8CiqNalzcW+ojLMaraqKrbvJ8/pmvh81Icvlb9xOUY7eLxbmZ4X0oE18rpxFEKHPbZrsfhi+ulwBsistW7VKVbRLwubwJ8XUR2eJsyCW9CAYhIGTAF2ISLrlVAXODgtRKRNBHZTtcKi296V2IM+1o5nTgkSJkbbvPcpKrXAvOAh7zVc9O3Z4By4BqgEfh5ogMQkTzgZeBRVT2T6N/vS5C4HL1WqtqhqtcAI4EbRGRiJOdxOnHUA6N8tkcCDQ7F0kNVG7zvx4Hf09WkcoNj3rZzdxs66Lq8iaaqx7x/ITuBZ0nw9fK2118GVqrq77zFjl+rYHE5fa26qeopoBqYSwTXyunE8VdgnIiM8S4jWUXX2rOOEZFcb2cWIpIL3A7U9H9UwkS8Lm88df+l8/oCCbxe3g6/XwN7VPUXPl85eq36isvha1UkIoO9n3OA2cD7RHKtVNXRF3AHXXdWaoFFLojnCuA972uXUzEBL9JVlW2jq2Z2PzAUeAv40Ps+xCVxrQB2Aju8fwmLExjPzXQ1b3cA272vO5y+Vv3E5eS1mgS86/3tGuCH3vKwr5WNHDXGhM3ppooxJglZ4jDGhM0ShzEmbJY4jDFhs8RhjAmbJQ5jTNgscRhjwmaJwxgTtv8PbMoo7O+ECJgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# メイン\n", "w_init = np.array([50.0, 0.0, 0.0])\n", "w = fit_model_A(w_init, X, T)\n", "sd = np.sqrt(mse_model_A(w, X, T))\n", "# 結果表示\n", "print(f\"w0 = {w[0]:.2f}, w1 = {w[1]:.2f}, w2 = {w[2]:.2f}\")\n", "print(f\"SD = {sd:.2f} cm\")\n", "\n", "# グラフ描画\n", "plt.figure(figsize=(4,4))\n", "show_model_A(w)\n", "plt.plot(\n", " X, T, \"cornflowerblue\", \n", " marker=\"o\", linestyle=\"None\", markeredgecolor=\"black\",\n", ")\n", "plt.xlim(X_min, X_max)\n", "plt.ylim(50, 181)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "6dde2b00", "metadata": {}, "source": [ "## 5.7 モデルの選択" ] }, { "cell_type": "markdown", "id": "31d94e6d", "metadata": {}, "source": [ "前節では, 新しいモデルを作ってパラメータを最適化しデータにフィッティングすることができました.\n", "\n", "しかし, 前節で説明したモデルよりもよさそうなモデルを思いついた時, \n", "どちらのモデルがよりのかをどのようにして判断すればよいのか,\n", "\n", "つまりモデル間の比較はどのようにすべきかをこの節で説明する." ] }, { "cell_type": "code", "execution_count": 36, "id": "2e8cc507", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Gauss(M=3) SD = 5.49 cm\n", "Model A SD = 4.70 cm\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 交差検証 モデル A\n", "def kfold_model_A(x, t, k):\n", " n = len(x)\n", " mse_train = np.zeros(k)\n", " mse_test = np.zeros(k)\n", " for i in range(0, k):\n", " # 訓練データとテストデータに分割\n", " i_test = np.fmod(range(n), k)\n", " x_test = x[i_test == i]\n", " t_test = t[i_test == i]\n", " x_train = x[i_test != i]\n", " t_train = t[i_test != i]\n", " # 精度を上げるため\n", " w_init = np.array([169.04, 113.66, 0.22])\n", " w = fit_model_A(w_init, x_train, t_train)\n", " mse_train[i] = mse_model_A(w, x_train, t_train)\n", " mse_test[i] = mse_model_A(w, x_test, t_test)\n", " return mse_train, mse_test\n", "\n", "# メイン\n", "# model A の交差検定\n", "K = 16\n", "Cv_A_train, Cv_A_test = kfold_model_A(X, T, K)\n", "sd_A_test = np.sqrt(np.mean(Cv_A_test))\n", "# 線形基底関数モデルの交差検定の結果のロード\n", "sd_Gauss_test = np.load(\"ch5_Gauss_test.npy\")\n", "# 結果のまとめ\n", "SDs = np.append(sd_Gauss_test[0:5], sd_A_test)\n", "# 結果表示\n", "print(f\"Gauss(M=3) SD = {sd_Gauss_test[1]:.2f} cm\")\n", "print(f\"Model A SD = {sd_A_test:.2f} cm\")\n", "\n", "# グラフ描画\n", "M = range(6)\n", "label = [\"M=2\", \"M=3\", \"M=4\", \"M=5\", \"M=6\", \"Model A\"]\n", "\n", "plt.figure(figsize=(5, 3))\n", "plt.bar(\n", " M, SDs, facecolor=\"cornflowerblue\", align=\"center\", \n", " tick_label=label,\n", ")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "25eb6fb6", "metadata": {}, "source": [ "M = 2 ... 6 は線形基底関数モデル" ] }, { "cell_type": "markdown", "id": "0d19f3cc", "metadata": {}, "source": [ "## 5.8 まとめ" ] }, { "cell_type": "markdown", "id": "50714676", "metadata": {}, "source": [ "第 5 章では教師あり学習の回帰問題の解き方を一通り解説しました.\n", "\n", "非常に重要なので予測モデルを作成するまでの流れを最後にまとめます.\n", "\n", "1. 入力変数と目的変数のデータがあります.\n", "2. 何をもってして予測の精度をよしとするかという目的関数を決めます.\n", "3. モデルの候補を考えます.\n", "4. ホールドアウト検証をすることを想定するならば, データはテストデータと訓練データに分けておきます.\n", "5. 訓練データを使って, 目的関数が最小 (または最大) となるようにそれぞれのモデルのパラメータ $w^*$ を決定します.\n", "6. このモデルパラメータを用いて, テストデータの入力データ $X$ から目標データ $t$ の予測を行い, 最も誤差の少ないモデルを選びます.\n", "7. モデルが決まったら, 手持ちのデータをすべて使い, モデルパラメータを最適化します. この最適化されたモデルが未知の入力に対して最有力の予測モデルとなるのです." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.5" } }, "nbformat": 4, "nbformat_minor": 5 }