{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "オリジナル作成: 2011/04/08" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\tHiroshi TAKEMOTO\n", "\t(take.pwave@gmail.com)\n", "\t\n", "\t

第1章-Sageを使って線形回帰を試してみる

\n", "\t

\n", "\tパターン認識と機械学習\n", "\tは、機械学習に関するとても優れた教科書です。ここでは、Sageを使って教科書の例題を実際に試してみます。\n", "\t

\n", "\t\n", "\t

\n", "\t\t第1章の例題として、$ sin(2 \\pi x) $の回帰問題について見てみます。\n", "\t

\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

データについて

\n", "\t

\n", "\t\t上巻の付録Aにあるように http://research.microsoft.com/~cmbishop/PRML から\n", "\t\t例題のデータをダウンロードすることができます。\n", "\t

\n", "\t

\n", "\t\tこれから計算に使うSin曲線は、\n", "$$ \n", "\t\ty = sin(2 \\pi x) + \\mathcal{N}(0,0.3) \n", "$$\n", "\t\tで与えられたデータです。ここでは、curve fitting dataで提供されているデータを使用します。\n", "\t

\n", "\t

\n", "\t\t最初に、データを座標Xと目的値tにセットし、sin曲線と一緒に表示してみます。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAvofT88tTfNjXvoAAAAASUVORK5CYII=\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PRMLのsin曲線のデータ\n", "data = matrix([\n", " [0.000000, 0.349486],\n", " [0.111111, 0.830839],\n", " [0.222222, 1.007332],\n", " [0.333333, 0.971507],\n", " [0.444444, 0.133066],\n", " [0.555556, 0.166823],\n", " [0.666667, -0.848307],\n", " [0.777778, -0.445686],\n", " [0.888889, -0.563567],\n", " [1.000000, 0.261502],\n", " ]);\n", "X = data.column(0)\n", "t = data.column(1)\n", "M = 3;\n", "# データのプロット\n", "x = var('x');\n", "sin_plt = plot(sin(2*pi*x),[x, 0, 1], rgbcolor='green')\n", "data_plt = list_plot(zip(X, t))\n", "(data_plt + sin_plt).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

最小自乗法の解

\n", "\t

\n", "\t\t3章の式(3.15)によると最小自乗法の解は、\n", "$$ \n", "\t\tW_{ML} = ( \\Phi^T \\Phi )^{-1} \\Phi^T t\n", "$$\n", "\t\tで与えられます。ここで、$\\Phi$ は計画行列(design matrix)と呼ばれ、その要素は、$\\Phi_{nj} = \\phi_j(x_n)$\n", "\t\t与えらます。\t\n", "\t

\n", "\t

\n", "\t\tまた、行列 $ \\Phi^{\\dagger} $は、ムーア_ベンローズの疑似逆行列と呼ばれています。\n", "$$\n", "\t\t\\Phi^{\\dagger} = \\left( \\Phi^T \\Phi \\right)^{-1} \\Phi^T\n", "$$\n", "\t

\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

多項式フィッティング

\n", "\t

\n", "\t\t多項式フィッティングの式(1.1)では、$y(x, w)$を以下のように定義します。\n", "$$ \n", "\t\ty(x, w) = \\sum^{M}_{j=0} w_j x^j\n", "$$\n", "\t

\n", "\t

\n", "\t\tそこで、$\\phi_j(x)$を以下のように定義します。\n", "$$\n", "\t\t\\phi_j(x) = x^j\n", "$$\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Φ関数定義\n", "def _phi(x, j):\n", " return x^j" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

行列のセットと解の計算

\n", "\t

\n", "\t\t定義に従って計画行列$\\Phi$、計画行列の転置行列$\\Phi^T$、ムーア_ベンローズの疑似逆行列$\\Phi^\\dagger$を求め、\n", "\t\t平均の重み$W_ML$を計算します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.313702727439780, 7.98537103199157, -25.4261022423404, 17.3740765279263)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 計画行列Φ\n", "Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()])\n", "Phi_t = Phi.transpose()\n", "# ムーア_ベンローズの疑似逆行列\n", "Phi_dag = (Phi_t * Phi).inverse() * Phi_t\n", "# 平均の重み\n", "Wml = Phi_dag * t; Wml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

多項式yの定義

\n", "\t

\n", "\t\tsageでは、多項式y(x)を以下のように定義します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 出力関数yの定義\n", "y = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

多項式線形回帰の結果

\n", "\t

\n", "\t\t$M=3$の時の、多項式回帰の結果(赤)をサンプリング(青)とオリジナルの$sin(2 \\pi x)$を合わせて\n", "\t\tプロットします。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y_plt = plot(y, [x, 0, 1], rgbcolor='red')\n", "(y_plt + data_plt + sin_plt).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

様々なMの結果

\n", "\t

\n", "\t\t図1.3に相当する図を表示します。スライダーでMの値を変えてみてください。\n", "\t

\n", "\t

\n", "\t\t$M=9$ではすべての点を通る曲線になりますが、元のsin曲線とはかけ離れた形になります。\n", "\t\tこれは、過学習(over fitting)と呼ばれる現象で、機械学習はこの過学習との戦いになります。\n", "\t

\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "jupyterノートブックでは@interactがうまく動かない。\n", "```python\n", "# PRMLの図1.3\n", "@interact\n", "def _(M=(0..9)):\n", " # 計画行列Φ\n", " Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()])\n", " Phi_t = Phi.transpose()\n", " # ムーア_ベンローズの疑似逆行列\n", " Phi_dag = (Phi_t * Phi).inverse() * Phi_t\n", " # 平均の重み\n", " Wml = Phi_dag * t\n", " f = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)))\n", " y_plt = plot(f, [x, 0, 1], rgbcolor='red')\n", " (y_plt + data_plt + sin_plt).show(ymin=-1.5, ymax=1.5)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

100個の検証用データを生成

\n", "\t

\n", "\t\tサンプルを100個に増やした検証用データを生成します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 100個の検証用データを生成する\n", "X100 = vector([random() for i in range(100)]); \n", "t100 = vector([(sin(2*pi*x) + +gauss(0, 0.3)).n() for x in X100.list()]);\n", "# 100個のデータをプロット\n", "lst100_plt = list_plot(zip(X100, t100), rgbcolor='gray');\n", "(data_plt + lst100_plt + sin_plt).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

サンプルを増やした場合

\n", "\t

\n", "\t\tサンプルを100個に増やし、$M=9$の多項式フィッティングを行ったのが、以下の図です(原書の図1.6に対応)。\n", "\t

\n", "\t

\n", "\t\tサンプルを増やせば、$M=9$でも元のsin曲線に近い形になりますが、少数の貴重なサンプルではこのような方法は使えません。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "M = 9;\n", "# 計画行列Φ\n", "Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X100.list()]); \n", "Phi_t = Phi.transpose();\n", "# ムーア_ベンローズの疑似逆行列\n", "Phi_dag = (Phi_t * Phi).inverse() * Phi_t; \n", "# 平均の重み\n", "Wml = Phi_dag * t100; Wml\n", "f = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)));\n", "y_plt = plot(f, [x, 0, 1], rgbcolor='red'); \n", "(y_plt + lst100_plt + sin_plt).show(figsize=4, ymin=-1.5, ymax=1.5);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

平均自乗平方根誤差

\n", "\t

\n", "\t\t原書の1.1では訓練データとテスト用データの平均自乗平方根誤差、\n", "$$\n", "\t\tE(w) = \\frac{1}{2} \\sum^N_{n=1} \\{ y(x_n, w) - t_n \\}^2\n", "$$\n", "\t\tを使って最適なMの値を求める手法を紹介しています。\n", "\t

\n", "\t

\n", "\t\t以下に訓練用データの$E_{RMS}$(青)、テスト用データの$E_{RMS}$(赤)でMに対する\n", "\t\t値の変化を示します。M=3で訓練、テスト共に低い値となることが見て取れます。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nr+kAAE3h8zX/pKQkJSYmauXKlZIkwzAUHR2tjIwMzZ49u972zz//vJYvX65jx44pKCio0WMvWybN\nmSNJZyV11uTJZXrhBa75A4C/+TTyr6qqUkFBgYYNG1azzuFwKCUlRfn5+Q3u8/rrr+vnP/+5pkyZ\nou7du+vGG2/U0qVL5fF46m17/Hjd5eJiX9IFSGWl9OST0sKF0v/8j9lpvAoKpMxM6aWXJOvdrwfQ\nBgT7srHb7VZ1dbWioqLqrI+KilJhYWGD+xQXF+vtt9/W2LFjtWPHDhUVFWnKlCmqrq7WggUL6mw7\nerS0Zo104efC3Xf7ki5AUlOlt9/2/n7NGunjj6UrrzQvz+HDUnKy9P333uXCQmnxYvPyAGiT/DLb\nxzAMORyOBv/M4/EoKipKL774ogYMGKC0tDTNnz9fOTk59bYdPlzau9c7yJaksWP9ka4FKitri1+S\nvv7aO+o205tv1ha/JG3ebF4WAG2WTyP/yMhIBQUFqaSkpM760tLSeu8GLrjqqqvUoUOHOj8cYmNj\ndebMGZ0/f17BwXUjJCdLN94oLVokxcTEyOFwyOVy1dwgTk9PV3p6ui+xm69jR6lXL+nLL73LHTpI\n117bOue+mOuvr7vct685OQC0aT6Vf0hIiBISEpSXl6fU1FRJ3lF/Xl6eMjIyGtwnOTm53hO6hYWF\nuuqqq+oV/48VFRWZ/5DXjh3SzJneqUdz5phf/qNHS0uWSK+84s3ypz+ZmwdA22T4KDc31wgNDTXW\nr19vHD161Jg8ebIRERFhlJaWGoZhGOPGjTPmzZtXs/3JkyeNTp06GRkZGcbnn39ubN++3YiKijKW\nLl160XOUlZUZkoyysjJf4wEAmsCnkb8kpaWlye12KzMzUyUlJYqPj9fOnTvVtWtXSdKpU6fqjOh7\n9uypXbt2acaMGYqLi5PL5dKMGTManBYKAGgdfLYPANgQn+0DADZE+QOADVH+AGBDli5/vswFAAKD\nG74AYEOWHvkDAAKD8gcAG6L8AcCGKH8AsCHKHwBsiPIHABui/AHAhixd/jzkBQCBwUNeAGBDlh75\nAwACg/IHABui/C/ho4+kW2+VBg6UXn3V7DRe334rHTggnT5tdhIAbRXX/BthGFKvXtKpU97l4GDp\ns8+kmBjTIunvf5d+8Qvp6FEpNNT7Pe6/+pV5eQC0TYz8G/Htt7XFL0nnz0t/+5t5eSRp3Tpv8UvS\n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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 平均自乗平方根誤差\n", "Erms_t = [];\n", "Erms_t100 = [];\n", "for M in range(10):\n", " # 計画行列Φ\n", " Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]); \n", " Phi_t = Phi.transpose();\n", " # ムーア_ベンローズの疑似逆行列\n", " Phi_dag = (Phi_t * Phi).inverse() * Phi_t; \n", " # 平均の重み\n", " Wml = Phi_dag * t; \n", " f = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)));\n", " Erms_t += [sqrt(sum((t[i] - f(X[i]))^2 for i in range(len(t)))/len(t))];\n", " Erms_t100 += [sqrt(sum((t100[i] - f(X100[i]))^2 for i in range(len(t100)))/len(t100))];\n", "Erms_t_plt = list_plot(Erms_t);\n", "Erms_t100_plt = list_plot(Erms_t100, rgbcolor = 'red');\n", "(Erms_t_plt + Erms_t100_plt).show(figsize=4);\n", "# グラフの傾向はPRMLと同じですが、値が若干ずれている?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

リッジ回帰

\n", "\t

\n", "\t\t誤差関数にペナルティ項を追加し、過学習を防ぐ例として、リッジ回帰が紹介されています。\n", "$$\n", "\t\t\\tilde{E}(w) = \\frac{1}{2} \\sum^N_{n=1} \\{ y(x_n, w) - t_n \\}^2 + \\frac{\\lambda}{2} ||w||^2\n", "$$\n", "\t\tを使って正規化します。\n", "\t

\n", "\t

\n", "\t\t$y(x_n,w)$を$\\phi$と$w$で書き替えると、原書式(3.27)になる。\n", "$$\n", "\t\t\\tilde{E}(w) = \\frac{1}{2} \\sum^N_{n=1} \\{ t_n - w^T\\phi(x_n) \\}^2 + \\frac{\\lambda}{2} ||w||^2\n", "$$\n", "\t

\n", "\t

\n", "\t\twに関する勾配を0にすると、原書式(3.28)が求まる。\n", "$$\n", "\t\tw = \\left( \\lambda I + \\Phi^T\\Phi \\right)^{-1} \\Phi^T t\n", "$$\n", "\t

\n", "\t

\n", "\t\t以下にM=9の練習用データにリッジ回帰を行った結果を示します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# リッジ回帰\n", "M = 9;\n", "N = len(t);\n", "lam = n(e^-18);\n", "Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]); \n", "Phi_t = Phi.transpose();\n", "# ムーア_ベンローズの疑似逆行列\n", "Phi_dag = (lam*matrix((M+1),(M+1),1) + Phi_t * Phi).inverse() * Phi_t; \n", "# 平均の重み\n", "Wml = Phi_dag * t;\n", "f = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)));\n", "y_plt = plot(f, [x, 0, 1], rgbcolor='red'); \n", "(y_plt + data_plt + sin_plt).show(figsize=4, ymin=-1.5, ymax=1.5);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

リッジ回帰に対する平均自乗平方根誤差

\n", "\t

\n", "\t\tリッジ回帰に対する訓練用データの$E_{RMS}$(青)、テスト用データの$E_{RMS}$(赤)でMに対する\n", "\t\t値の変化を示します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEeCAYAAACDq8KMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XtcVNXaB/DfDHjB8AKHizqikpl6OiZKr5KZaaJCJZmW\ngTey42umRZmlaWaH6piaHTKjj1pZZiWaaWm+pqaZZngJUcsbKGnegPDC1QuX5/1jHRiHvQcRGGbG\n+X0/n/k0e3hmz8NO1jN77bXWNoiIgIiIXI7R3gkQEZF9sAAQEbkoFgAiIhfFAkBE5KJYAIiIXBQL\nABGRi2IBICJyUSwAREQuigWAiMhFsQAQEbkoFgAiohq0bds2REREwGQywWg0YvXq1ZV+7/bt21Gn\nTh106dLFhhmasQAQEdWg/Px8BAUFIT4+HgaDodLvy8nJQXR0NEJDQ22YnSUDF4MjIrINo9GIb775\nBhEREdeNjYqKwu233w6j0Yhvv/0We/bssX1+Nv8EIiKq0CeffIK0tDS89tprtfq57rX6aUREZCE1\nNRVTp07Fzz//DKOxct/JRQS5ublo2LDhDXUzlcczACIiOykpKcGwYcMQGxuLNm3aAFCN+/Xk5uai\ncePGyM3Nrdbn8xoAEZGNXO8aQHZ2Nry8vODu7l7W8JeUlEBE4O7ujg0bNqBXr16a9+Xk5KBx48bw\n8/ODwWCAyWSCyWQCoK4lREVFVSq/6nUBFRcD69er5/37A25u+nHbtwMZGUBoKNCoUbU+kojoZtGo\nUSP8/vvvFq/Fx8fjxx9/xNdff43WrVtX+P7U1FQ0qkabWvUCIAI88giwZo3aHjAA+PZboHx/1Ouv\nA6UXNtq1A3bsAJo0sYzJzAQiI4G9e1Uh+fRToF69KqdGRGQv+fn5OHr0aNk3+rS0NOzbtw/e3t4I\nCAjAlClTcObMGSxevBgGgwF///vfLd7v5+eH+vXro0OHDjbPterXAFJTzY0/oJ4fPaqN+89/zM+P\nHAHWrtXGvPgi8OOPwIULQEKC5XtKXb2qikSDBkBwMHD8eJVTJyKylV9//RWdO3dGcHAwDAYDJk6c\niC5dupSN8ElPT8fJkyftnKVS9WsAGRmAyaS6gQDA3R04dQrw97eMu/VW4I8/zNvr1gFhYZYxffsC\nP/xg3n72WeC99yxj5s4Fnn/evD1gAHADM+yIiG4WpdcAsrOzq9UFVPUzAH9/YOFCwNNTPRYs0Db+\nALBkiSoUdesCzz2nbfwBYPRooHT4k4cHMGKENuavvyy3MzP18zp9GpgzB/j4Y6Co6MZ+JyIiF1J7\no4BEtNcHrrVzJ/Dbb0CPHkD79tqfHz4M3H03cPGiKhaffqotFFlZQFCQKgKA6jJaurTGfgUiIkdQ\nU2cAzjUM9M8/gW3b1MXku+7S/nzVKmDQIPO2m5u6dlDJyRVERM6gpgqAc80EbtkSGDbM+s8DA9VZ\nRmlNa9WKjT8R3bQiIyPh7u5+Q2P/r+VcZwCV8dFHahSRlxcwfz7QsaO9MyIiqlGu2QVEREQOMArI\nme3aBfTsCYSEmGcyExG5GNc7A7h8GWjRAjh3Tm17eABpaUDTpvbNi4iokngGUFXnzpkbfwC4dEmN\nLiIicjGuVwCaNVNdP6XatgX+8Q/75UNEZCfONQy0JhiNwIYNaoTQ1avA//6vWl+IiMjFuN41ACIi\nJ8drAERELi4yMhIRERFYWsUlb3gGQETkZHgGQERE1cICQETkolgAiIhcFAsAEZGLYgEgInJRLABE\nRC7K9WYC34gVK4CTJ4GHH1Y3tyciuolwHoA1L78MzJqlnnt5AUlJ6o5jRER2VjoPIDw8nHcEswmT\nCThzxrz9/vvA+PH2y4eI6L84EczWWreueJuISMe2bdsQEREBk8kEo9GI1atXVxi/atUq9OvXD35+\nfmjcuDG6d++ODRs21EquLADWLFmi7hoWGAjExgIPPmjvjIjICeTn5yMoKAjx8fEwGAzXjd+6dSv6\n9euHdevWYc+ePejduzcGDBiAffv22TxXdgEREdmI0WjEN998g4iIiBt63z/+8Q9ERkZi2rRpuj9n\nFxAR0U1IRJCbmwtvb2+bfxYLABGRA3n77beRn5+PIUOG2PyzOA+AiMhBfPnll3jjjTewevVq+Pj4\n2PzzWACIiBxAQkICxowZgxUrVqB3796Vek/btm1hMBhgMplgMpkA4IbmBLAAEBHZ2dKlSzF69Ggk\nJCQgLCys0u9LTU2t1kVgFgAiohqUn5+Po0ePonSAZVpaGvbt2wdvb28EBARgypQpOHPmDBYvXgxA\nNf7R0dF477330LVrV2RkZAAAPDw8qtW4VwaHgRIR1aCffvoJvXv31swBiI6OxqJFizBq1CicOHEC\nmzdvBgD07t0bW7du1eynNF5PTQ0DZQEgInIynAdARETVwgJAROSiWACIiFwUCwARkYtiASAiclKR\nkZGIiIjA0qVLq/R+jgIiInIyHAVERETVwgJAROSiWACIiFwUCwARkYtiASAiclEsAERELooFgIjI\nSXEeABGRi+E8ACIiqhYWgOpKSgIWLAD277d3JkREN4S3hKyONWuARx4BiouBOnWA778H7r/f3lkR\nEVUKzwCq45NPVOMPAIWFwGef2TcfIqIbwAJQHc2bV7xNROTA2AVUHW++CRw/DuzcCfTsCbzyir0z\nIiKqNA4DJSJyMhwGSkTk4jgRjIjIxfAMgIjoJrFt2zZERETAZDLBaDRi9erVtfK5LABERHaWn5+P\noKAgxMfHw2Aw1NrnchQQEZGdhYWFISwsDABQm73yPAMgInJRLABERC6KBYCIyEXxGgARkZNq27Yt\nDAYDTCYTTCYTACAqKgpRUVGVej8LABGRk0pNTa3WPAAWACIiO8vPz8fRo0fLRgClpaVh37598Pb2\nRkBAgM0+lzOBiYjs7KeffkLv3r01cwCio6OxaNEiTXxNzQRmASAicjJcCoKIiKqFBYCIyEWxABAR\nuSgWACIiF8UCQETkpHhDGCIiF8NRQEREVC0sAERELooFgIjIRbEAEBG5KBYAIiIXxQJAROSiWACI\niJwU5wEQEbkYzgMgIqJqYQEgInJRLABERC6KBYCIyEWxABARuSgWACIiF8UCQETkolgAiIicFCeC\nERG5GE4EIyKiamEBsDURYMIEoHlz4N57gRMn7J0REdlYfHw8AgMD4eHhgZCQEOzevbvC+HfffRft\n27dHgwYN0LJlS7zwwgu4cuWK7RMVsq3PPxdRZUA9+va1d0ZEZEMJCQlSr149Wbx4sRw6dEjGjBkj\nXl5e8tdff+nGf/HFF1K/fn1JSEiQEydOyMaNG6V58+YyceJEq5+RnZ0tACQ7O7taufIMwNZOnrTc\nPnXKPnkQUa2Ii4vDU089hZEjR6J9+/aYP38+GjRogEWLFunGJyYmokePHnj88cfRsmVLhIaGIioq\nCrt27bJ5riwAtjZoENC4sXn7iSfslgoR2VZhYSGSkpLQp0+fstcMBgNCQ0ORmJio+57u3bsjKSmp\nrJsoLS0N//d//4cHH3zQ5vm62/wTXN3ttwNJScD33wNt2gBhYfbOiIhsJCsrC8XFxfD397d43d/f\nH0eOHNF9T1RUFLKystCjRw+ICIqLizF27FhMnjzZ5vmyANSGNm2A8ePtnQUR2YmIwGAw6P5sy5Yt\nmDFjBubPn4+uXbvi6NGjiImJQbNmzTBt2jSb5sUCQERUQ3x8fODm5oaMjAyL1zMzMzVnBaWmT5+O\nkSNHYtSoUQCAO+64A3l5eXjqqaeuWwDatm0Lg8EAk8kEk8kEQJ1RREVFVSpfFgAiohpSp04dBAcH\nY9OmTYiIiACgvv1v2rQJMTExuu8pKCiA0Wh5OdZoNEJEKjxzAIDU1NRqTQRjASAiqkEvvPACoqOj\nERwcjK5duyIuLg4FBQV44r8DQEaOHIkWLVpgxowZAIABAwYgLi4OQUFB6NatG1JTUzF9+nQ8/PDD\nFTb+NYEFgIioBg0ZMgRZWVmYPn06MjIyEBQUhPXr18PX1xcAcOrUKbi7m5veV199FUajEa+++ipO\nnz4NX19fRERE4M0337R5rlwLiIjIyXAtICIiqhYWACIiF8UCQETkolgAiIicFG8IQ0TkYngRmIiI\nqoUFgIjIRbEAEBG5KBYAIiIXxQJAROSiWACIiFwUCwARkYtiASAiclKcCEZE5GI4EYyIiKqFBYCI\nyEWxABARuSgWACIiF8UCQETkbI4fr5HdsAAQETmTF18EOnVSz6dNq9auOAyUiMhZHD8OBAYiB0Bj\nAOEA3ENDEfXkk4iKirrh3bEAEBE5ixMngNatywpANoBGx48DrVpVaXfsAiIichatWgGTJ5u3n3++\nyo0/wAJARFTj4uPjERgYCA8PD4SEhGD37t0VxmdnZ2P8+PFo3rw5PDw80L59e3z//ff6wTNnAr//\nrp7HxlYrT/dqvZuIiCwsW7YMEydOxMKFC9G1a1fExcWhf//+SElJgY+Pjya+sLAQoaGhaNq0KVau\nXInmzZvjxIkTaNKkifUPCQiokVx5DYCIqAaFhISgW7dumDt3LgBARBAQEICYmBhMmjRJEz9//ny8\n8847OHz4MNzc3Cr1GVwLiIjIwRQWFiIpKQl9+vQpe81gMCA0NBSJiYm671mzZg3uvvtujBs3Dk2b\nNkXHjh3x1ltvoaSkxOb5sgA4iu++A+65B+jXz9y/R0ROJSsrC8XFxfD397d43d/fH+np6brvSUtL\nw1dffYWSkhKsW7cOr776Kt555x3MmDHD5vnyGoAj+OMPYPBg4OpVtR0eDvz5J2Aw2DcvIqoRIgKD\nlb/nkpIS+Pv7Y+HChTAYDOjcuTNOnz6NOXPmYFo1J3pdDwuAIzh2zNz4A8CpU0BeHtCwof1yIqIb\n5uPjAzc3N2RkZFi8npmZqTkrKNWsWTPUrVvXokB06NAB6enpKCoqgru79Wa6bdu2MBgMMJlMMJlM\nAICoqKhKTwpjAXAEwcGAyQScPq2277uPjT+RE6pTpw6Cg4OxadMmREREAFDf/jdt2oSYmBjd99xz\nzz2aO3odOXIEzZo1q7DxB4DU1FReBHZ6Xl5AYiLw6qtqjO/atfbOiIiq6IUXXsDChQvx2Wef4fDh\nwxg7diwKCgrwxBNPAABGjhyJqVOnlsU//fTTOHfuHJ577jmkpqZi7dq1eOutt/DMM8/YPFeeATiK\ngADg9dftnQURVdOQIUOQlZWF6dOnIyMjA0FBQVi/fj18fX0BAKdOnbL4Zt+iRQts2LABEyZMQKdO\nnWAymTBhwgTdIaM1jfMAiIgcRXY28MMPgL8/0KOH1TDOAyAiuplcvAh07Qo8+ihw77210iPAAkBE\n5AjWrgVSUszbcXE2/0gWACIiR/C3v1lue3vb/CNZAIiIHEFYmFreuW5doEULYMmS674lMjISERER\nmmGklcWLwEREjkTkuqsA8CIwEdHNqBaXgGEBICJyUSwAREQuigWAiMhFsQAQEbkoFgAiIhfFAkBE\nVFscbNQ9CwARka3l5amJXu7uQOfOwMmTNbJbTgRzJUVFQEICkJ8PPP440KSJvTMiosqIjQX+9S/z\ndmQkUMVGG6i5iWC8H4AzefxxYOVK9XzuXGDXLsDT0745EdH1nT9f8badsAvIWeTmmht/ADh0SBUA\nInJ8o0cDjRur53XqAM8+W63d7dlTAzmBBcB5NGhguTqg0Qg0b26/fIio8jp2BH77DVixAti/H3jo\noSrv6skngd691fPx46uXFq8BOJNt24CxY9U1gOnT1b8EInIZx44Bt90GADkAGgPIxtGjjdCmTdX2\nx2sAzuTee4EDB+ydBRHZSb16aq24a7+2169f9f2xC4iIyEm0aAG89ZZ5OzYWMJmqvj92ARERVceV\nK8Abb6iBGRERQHS0zT/yzJkcmEyNER4eDnd3d0RFRSEqKuqG98MCcLMpKQEWLADS0oBHHgG6d7d3\nRkQ3t2efBd5/37z9zTfAww/b9CN5QxjS99JLwLhxwJw5QK9ewK+/2jsjopvbjh0VbzswFoCbzdq1\n5ueFhcDGjfbLhcgV3HuvZjs+Ph6BgYHw8PBASEgIdu/eXaldJSQkwGg0YtCgQTZIVIsF4Gbzj39U\nvF1q3z7VVcQzBKLqmT0b+Pe/gWHDgIQELMvNxcSJExEbG4vk5GR06tQJ/fv3R1ZWVoW7OXHiBF56\n6SX07NmzlhLnNYCbz/nzwPPPqwHDkZH6Mw43b1YLUxUWAm5uwKpVwIABtZ8rkTMoKAAuXQL+9rdK\nhYeEhKBbt26YO3cuAEBEEBAQgJiYGEyaNEn3PSUlJbjvvvvw5JNPYuvWrcjOzsbKa2f+l8NrAKTP\n2xv47DNg+3br080/+0w1/gBQXAx8+ql+3MWLwJo1QHKyTVIlcnjLl6u/KR+fSk28LCwsRFJSEvr0\n6VP2msFgQGhoKBITE62+LzY2Fn5+fhg1alSNpF1ZLACuqPwSEnpLSmRlAcHBalhbcDAQH187uRE5\nkv/9XzXMEwA++QTYtKnC8KysLBQXF8Pf39/idX9/f6Snp+u+Z/v27fjkk0/w0Ucf1UjKN4IFwBW9\n8gowaJD6VvPgg2oMc3lffaWGkgJq2uHs2bWbI5G9lZSYG/9Sly9XaVciAoPBoHk9Ly8PI0aMwIcf\nfggvLy8AatX32uqY51IQruiWW4Cvv644pvy9Bqzde2D5clVQ6tQB5s0Drjn1JXJ4WVnqOth/G18L\nRiPw5ptqaDWgVmDr16/C3fn4+MDNzQ0ZGRkWr2dmZmrOCgDg2LFjOHHiBAYMGAARQXExIFICAKhT\npy5SUo4gMDDQ6ue1bdsWBoMBJpMJpv9OCb6hSWFCpKe4WGTECBGjUaR5c5GdO7Uxf/4pUqeOiPrC\nItKwoUh+fu3nSlQVL72k/t0ajSJxcdbjDh8W2bFDpLCwUrvt1q2bxMTElG2XlJRIixYtZPbs2ZrY\nK1euyIEDB+TAgQMyb94BAQ4IMFCAUGna9KAUWvnM7OxsASDZ2dmVyskajgKiihUVqdvY6dm9G+ja\n1fK106e11xSKi9Xdjy5cAIYMAXS+CRHVqoMHgTvuMG8bjepsQO9M4AYtX74c0dHRWLBgAbp27Yq4\nuDisWLEChw8fhq+vL0aOHIkWLVpgxowZFu9buhQYOhQARgHIhpfXSqv3jeEdwah2WGv8AeDOO4Gg\nIGDvXrUdGgo0a6aNGzUKWLJEPX/nHXU3i2vvbXCtwkLVnURUXSJq6Uw9paPgSpWUqC8qNWDIkCHI\nysrC9OnTkZGRgaCgIKxfvx6+vr4AgFOnTsFd5+8qIkLdLrh00N1rr9VIOhXiGQBVT04O8OWXQN26\naiJMvXqWPy8pUT+79o9r1Spg4EDLuCNH1E0yjh4FwsPVNQoPD+3nbdmiRmIEBQGDB+vnVFCghsH6\n+QGdOlnPvfSfvrVGgpyTCDBmDLB4sVo+c8UKoEsXbdzw4cAXX6jnkyYBs2bVbp46Ll0CEhPVP11r\ncziBmjsD4DUAsr2WLc3XCQwGkaQkbUxYmDkGEJkzRxuzfr3qry2NmTdPG5ObK9KpkznmnXf0c/rw\nQ5EGDURuuUU915OXJ/LqqyJjxogkJlr//dLTRbZvF7l40XoM1ZwLF9T/j6ws/Z8vW2b5bykoyPq+\n9u4VOXjQNnnaUE1dA2ABINtLShIJDha59VaR+Hj9mJAQyz/aadO0MePHW8b06aON+eILyxgvL23M\n2bMibm7mGDc31YiXN2CAOcbDQ+TIEW3Mtm3q4jcgYjKJ/PGHNubKFZEhQ0Tq1xfp3Fk/RkQ1XN26\nqWKYkqIf88cfIk88ITJsmMi+ffox+fnq+EVHi2zcqB9TXCwye7bI4MEic+fqx4io4xkRITJhgiqI\nehITRR59VH3en3/qx5w4oQYVDBqkiqWeCxdEnnxS5L77RD74QD/m0CERPz91vL29RZKTtTEffGD5\nbyAgwPrv56RYAOjmsmKFiLu7+oP18xM5dkwbM2+e5R/2uHHamNWrLWNattTGpKRYxgD6Da6np2XM\n4sXamPBwy5gJE7QxcXGWMQMGaGN++82yKLVvr425elUkMNAc4+Mjcv68Ni4y0hzj7q5/xjVzpmVO\neg3uxo2WMSNGaGNOnbI8Tnp5i4i0a2eO8fRU7yvvsccsP++777Qxo0dbxjz+uDYmI8PyrPM//9HP\nyYnVVAHgRDByDIMHq5tmr1mj/nvrrdqYceOAyZPVlbJRo/T7bB96yDxlv0kTYNEibcxtt1mu1/7w\nw6U3WrUUHGx+7u6ufz2h/DUPvfvzlV8E7K+/tDGpqZbXSVJS1PWTa2VkAH/8YbnflBTtvn76yfy8\nqAj45RdtTPllCfSWKdi1q+JtQN0EJS/PvH34sLoudK2cHHWNp1Rennpfefv3V7wNqOtJFW0DqgN9\nzx7V979jBzBhgjaGlBoqSESO5dIlkZIS6z8vKhJZt049ior0YzIzVZfEgw+KfPutfszBgyItWqhv\nmp066fdLHzok0qSJecz5kiXamLNnRXx9zd9aIyK0MYWFIrfdZo7x81PdJuUNHGiOMRr1r1+8/bbl\nN+kFC7QxW7daXnMZM0Ybk56uutlKYzp10saIqH740hhvb/UtvbyYGMszF725J6dOmc8mAgP1zxQd\nUEGB6v265RaRe+5R/7uro/QMIDw8XAYMGCBffvlllfbDUUBE1VVYCJw7p755Gq2cVJ88CWzbBrRr\nZ3lmca1jx9TIFS8vdbZT/uyidD9vvglcvapmqP7979qYnBxg2jTg1ClgxAh1Z7jyRID33gN27gR6\n9gTGjtXPae1atSxImzbq7EvvG/f+/cDcuYCnp5oV7uenjfnrL3Uz27w8ICZGf4hLcTHwwQfqOAwa\npPLSU1yszob8/CoepuxA/v1v9b+k1LBhwOefV31/NTUKiAWAiMjGYmLUSiml+vYFNmyo+v64HDQR\nkZN44gm1BBeglh566im7plPGOc6fiIicWJcuasL8L78AHTuqcQyOgAWAiKgaSkqA999XywtFRAAP\nPKAfd9tt+oPN7InXAIiIqmHKFGDmTPXcYADWr1d9/LbEawBERA7ghx/Mz0XULbedBQsAEVE1lF9n\nrjb79yMjIxEREYGlS5dW6f3sAiIisiI/H3j3XXUri3/+E+jQQRtTUABMnaomNw8YADzzjO3z4jwA\nIiIbCwtTffqAmp/3++/a+x3ZA68BEBHZUHGx5WStCxfUxOmbCQsAEZEONzfLu0bWqQO0b2+/fGyB\n8wCIyCVlZ6v1eOrUAUaO1F/Idc0aYOJE9e3/+ef1rwE4M14DICKXc/ky0K2becXp++9Xwzmd5e6g\nvAZARFRF+/db3m5g82bg7Fn75WMvLABE5HKaN7dc2bpxYzXKx9WwABCRy2nRAvjyS3V7ho4dgVWr\nAA8Pe2d14zgRjIionEOHgJUrgYAAdU8cZ+nbryxeAyAi0pGaqi7wTpsGREfb55bA8fHxCAwMhIeH\nB0JCQrB7926rsR999BF69uwJb29veHt7o2/fvhXG1yQWACK6qaxfD+TmmrdXrKjdz1+2bBkmTpyI\n2NhYJCcno1OnTujfvz+ysrJ043/66ScMHToUW7ZswY4dOxAQEIB+/frhbC1clWYXEBHdVL7/HggP\nN2/fdx+wZUvtfX5ISAi6deuGuXPnAgBEBAEBAYiJicGkSZOu+/6SkhJ4eXkhPj4ew4cP141hFxAR\nuaTEROCdd4CtW/V/HhYGvP22uu98WBiwZEnt5VZYWIikpCT06dOn7DWDwYDQ0FAkJiZWah/5+fko\nLCyEt7e3rdIsw5nAROQ01q0DHnpI3YXLYACWLQMee0wb9+KL6lHbsrKyUFxcDH9/f4vX/f39ceTI\nkUrtY/LkyTCZTAgNDbVFihZ4BkBEDuHKFSA2Vi3LsGaNfkxCgmr8AXXzlSqOfqx1IgJDJYYizZw5\nE8uXL8c333yDutdOVLARFgAiF1VcDGRmmhtUPVlZaoz83r3WY9LSgMmTgddfB3Jy9GM2bgRatQJ8\nfIB58/RjnnkG+Ne/VJfNwIH6XTytW1e8bW8+Pj5wc3NDRkaGxeuZmZmas4Ly5syZg9mzZ2Pjxo24\n49pV6CrQtm1bNG3aFMHBwYiIiLjxOQFC5KIuX1aPimRliRw9KlJcbD3m1CmRzZtFzp2zHnPypMjS\npSJ79liPycwUmT9fZNky65934YJIbKzItGkip0/rx5w5IzJ4sEjXriIffKAf88cfIm3aiAAiHTqo\n9+jl3Ly5ijEYRD7+WBuTlSXStKmKAUTuuUcbU1Qk0qiROcZgEPn9d21cu3bmGEBkxgxtzKVLItHR\nIoGBIpGRIrm5+r+fPXXr1k1iYmLKtktKSqRFixYye/Zsq++ZPXu2NGnSRHbt2lWpz8jOzhYAkp2d\nXa1cWQDIYRQWqkawpMR6zJIlIsOHi8yZY72RjI0V8fMT6dhRJDlZPyYuTsTNTT3i4vRjEhJE6tZV\njVF4uMqvvB9/FGnQQMX4+6tiUd7hwyJeXirGaBT5/HNtzPnzqlErbfxGjdLGFBeLdOlijgkM1G8A\n+/SxbEh/+EEbM3KkZcwzz2hjZs2yjLnjDm3Mxo2WMYBITo5lTG6uNmbzZu2+Roy4ft7OYNmyZVK/\nfn1ZvHixHDp0SMaMGSPe3t6SmZkpIiIjRoyQKVOmlMXPmjVL6tWrJytXrpT09PSyR15entXPYAEg\np7J5s8jXX1v/xrZ3r0izZuoPv3t3bSMiohrkaxuIf/1LG/PDD5Yx7dtrY06fVt9Cr/1Gqvdt2s/P\ncl9ffaWNCQuzjHn+eW3MK69YxoSEaGNWrbKMcXPTFriTJ7UN6c6d2n2VHsfSx7x52pghQyxj/vlP\nbczChZYxPXpoY44fF6lf3xzTqpV+AR8+3BwTFCRSUKCNyc8XmThRZOBAdbbkzOLj46VVq1ZSv359\nCQkJkd27d5f9rHfv3jLqmgrfunVrMRqNmkdsbKzV/bMAULVcuaK6ASrqAklJEZk9u+I/xi1bRO6/\nX6R/f9WI65k40fzHf+edInpfbMp/a33rLW3MuHGWMfffr4357DPLmEaNtDGpqdqGNDVVG+fraxmz\nfLk2ZtBY059UAAAOUklEQVQgy5hXXtHGxMVZxjz0kDZm1y7LmIAAbczly5ZF6ZZbRNLTtXFjx5pj\nGjQQOXRIG/PrryJNmqgYX1+RAwe0MYWFIo8/ropRmzYiv/2mjRERWb9epHdvkQED1NmOnuJiVeQ+\n/9wxu22cDQsAWbV7t+pH1mscRET+/NPc/9uypX7jd+yYSOPG5obkxRe1MRkZIp6e5hh/f21BKS4W\ncXe3bNy+/Va7r3vusYyZPl0bs3ixZcw1Z9FlMjNV41ka88IL+sdg2DBzzLBh+jFLlphz79NHFc3y\njhwRad1axdx1l+rKKe/KFZFHH1XdSUFBImlp+p/37rsq9zvvVAVBz549In37itx3n343iojqc//g\nA3V8rHWBiahj9fPPFV+7EKn4+gfZBwsA6VqwwNy90bSpyIkT2pinn7ZsSIcP18bMm2cZYzJpY3bs\n0H6TPnVKG1f+m/T27dqYdevMXQmtWunvR0Q1bAMHqu4fvT55EVX4PvxQZPVq/Z+LqG6Kn39Wj4qu\nOZw9K3LwoGpUK9qXXsNPZCs1VQA4EcyJFBWpJWzz84HISP31y+fOVc0sAKSnq3HT5WefFxVZbhcW\navdz662W24GB2pg77lDD8I4fV9udOwPNmmnjEhKA4cPVbfVefBHo3l0bExamFvE6fhy4807A2uz2\np59Wj4r4+wOjR1ccYzAA99xTcQwANG2qHtfblyuuJU/Oj2sBOZFBg9SYbEDdnHr3bsDT0zKmZ09g\n2zbz9kcfAf/8p2VMSgrQq5e6A5KPD7Bpk2p0y5sxA/j0U7Wk7scf64+5Pn0aiI9XN9d47jk2hES1\noabWAmIBcBK5udpvxZs2qXuZXuvgQWDwYDU5Z8gQ1YC7uWn3l5MDHD2qvuk3aWKztInIBkoLQHh4\nONzd3REVFYWoqKgb3g8LgJMoKQH8/IBz59S20aga+3bt7JsXEdU+rgZ6k8nOVt01S5eqKfrlGY3A\nt9+q29cFBqouGTb+RFQdPANwAPn56g5GBw6o7cceA5Yvt29OROS4eAZwE9m509z4A8BXXwF5efbL\nh4hcAwuAA2jWTHXxlPLyAho0sF8+ROQaWAAcQIcOwPz5gMmk+vVXrbIsCEREtsBrAERETobXAJxM\nTk7FN94gIrpRkZGRN34TmGvwDMDGrlxRdzf6/nu1RMF33wF33WXvrIjImfEMwEksWqQafwDIyACe\nfda++RARlWIBsLH8fMttDu8kIkfBAmBjI0eaV9Z0dwemTbNvPkREpbgctI35+QHJyWrlzlatgNtu\ns3dGREQKC0AtaNQI6NPH3lkQEVliAaimlSvVUg49ewIPPmjvbIiIKo/DQKth0SLLm60sX64WciMi\nsiUOA3UAq1dbbn/3nX3yICLXVN2JYOwCqoa//12t0V+qQwf75UJErichIcH1zgCqWu1u1MmTavTO\nlSv6P3/tNTWxq2tXdbPzF1+seH+1lXdNY961i3nXLmfNuyawAFj9DDV+v2tXoHt3dU/e8urVA957\nT10EfvttNc6/4n065z805l27mHftcta8a4JTFoCakJ1tvr+unldeAYqK1PM9e4CEhNrJi4iottRI\nAahMBa2pmOu5cgXYvBl46y3r+5o7F/D2Bnx8lmLKFP2YOnXKsgIA1K1r/TNr8htEbR/LmsqdeTPv\nmtpPTebk6nlfT7UKQHIyEBEBTJiwFMnJ+jHp6Wo5hOeeW4qVK/VjLl0Cxo8Hxo9fitdfB/QGphYX\nA2PGAE2bAr/8Apw5o425fBno3VtNupo6dSneeEMbc/Ei8MILpUszL8XMmcChQ9q4998HGjZUMf37\nA1FR+rkDLACV3Q/zZt7O2pA6a97XU6lRQCKC3HKd4Lm5QGgocP48ABQhNDQH+/eXNppmjzwC7Nih\nYh57LAdbtgCdOlnGTJoELFigYl57LQcNG1qOrweADz9UD6UIY8fm4PPPLWPWrQMSE80xb7yRg2ef\ntby71vnz167LXwQgB+fPq/X6r9WtG5CSAgwdWoRly3Jw+bIqMHqKioqQU34HVYyrzRhHzIl5O14M\nc3K8vEt/VlFMw4YNYTAYKvycSk0EK510QEREzqEyk8QqVQD0zgAuXwZCQoA//lDbgYHqm379+pbv\nHToUWLtWPffwALZvB9q0sYyZN89ylczly4H+/S1jfv8d6NsXKChQ23FxwJNPanN98UV1ptCgAfDx\nx8ADD+j/TocOAVevas9GiIgcXU5ODgICAnDy5EmrjXyNnQFYc/q0aogBYMIEdVPz8i5dAubMATIz\ngeho63fDWrIE2LtXNfJhYfoxR46oC7wdOgC9elnP69IlddHWze2Gfh0iIqdQU0tBcC0gIiInw7WA\niIioWlgAiIhcFLuAiIicTOnAnMpc6K2IQ58BxMbGokOHDvD09IS3tzf69u2LXbt2WcS0bt0aRqOx\n7OHm5obZs2fbKWOlMnlfuHABw4YNQ+PGjeHl5YXRo0cjv/wd5GtRUVERJk+ejDvvvBOenp4wmUyI\njo7G2bNnLeIc7XhXNm9HO94AsGrVKoSFhcHX1xdGoxH79+/XxPTq1UtzvMeNG2eHbM0qk/eVK1cw\nfvx4+Pj4oGHDhnj00UeRmZlph2wrNmrUKIvjazQa8YC1oYMOxGAwoFGjRtVq/AEHLwDt2rVDfHw8\nfv/9d2zfvh2tW7dGv379cO6aRXwMBgPefPNNZGRkID09HWfPnsWzzz5rx6wrl/fQoUNx6NAhbNq0\nCWvXrsXWrVvx1FNP2S3ngoIC7N27F6+99hqSk5OxatUqHDlyBA8//LBFnKMd78rm7WjHGwDy8/PR\no0cPzJo1y+ofssFgwJgxYyyOt72/4FQm7+effx5r167F119/ja1bt+LMmTMYPHhwLWdaOeHh4WXH\nNz093bUWhxMnkpOTIwaDQTZv3lz2WuvWrWXu3Ll2zOr6yud98OBBMRgMsmfPnrKY77//Xtzc3OTs\n2bP2SlNj9+7dYjQa5eTJk2WvOcPxLp+3ox/v48ePi8FgkH379ml+1qtXL5kwYYIdsro+a3lnZ2dL\n3bp1ZeXKlWWvHT58WAwGg+zcubO206zQE088IY888oi907Abhz4DuFZhYSEWLFiAJk2aoFO52Vsz\nZ86Ej48PunTpgjlz5qC4uNhOWWrp5b1jxw54eXmhc+fOZXGhoaEwGAzYuXOnvVLVuHjxIgwGA5o0\naWLxuiMfb0Cbt7Mcb2u++OIL+Pr6omPHjpg6dSouXbpk75QqlJSUhKKiIvTp06fstXbt2qFly5ZI\nNK/V4jC2bNkCf39/tG/fHuPGjcN5tb6NS3D4O4KtXbsWkZGRKCgoQPPmzbFx40Z4e3uX/fy5555D\nly5d4O3tjV9++QUvv/wy0tPTMWfOHDtmXXHe6enp8PPzs4h3c3ODt7c30tPT7ZGuxpUrV/Dyyy9j\n6NCh8PT0LHvdUY93Kb28neF4WzNs2DC0atUKzZs3x/79+zFp0iSkpKRgxYoV9k7NqvT0dNStW1cz\nPt3f39/hjnd4eDgGDx6MwMBAHDt2DFOmTMEDDzyAxMTEavevOwV7n4KU+uKLL8TT01M8PT2lYcOG\n8vPPP4uISEFBgRw7dkx27twpo0ePlsDAQPnrr7+s7mfRokVSt25duXr1qsPmPWPGDGnfvr1mX76+\nvrJgwQK75i0iUlhYKAMGDJC77rpLcnNzK9yPoxxvEet5O/rxrqgLqLzNmzeL0WiUtLQ0W6Zbpip5\nf/nll1K/fn3Nvv7nf/5HpkyZYvOcranodymVlpam6Wa+mTlMAcjLy5Njx46VPS5fvqwb17ZtW5k5\nc6bV/Rw4cECMRqOkpKTYKlULVcl70aJF4u3tbfHzoqIicXd3l2+++cbmOYtYz7uwsFAGDhwoQUFB\ncv78+evux1GOd0V5O/LxFrmxApCfny8Gg0E2bNhgy3TLVCXv0iKVnZ1t8XqrVq3k3XffrZW89VT2\nb9XX11cWLlxYy9nZh8N0Ad1yyy249dZbrxtXUlKCK9Zu0gsgOTkZRqNRc8pvK1XJ++6778bFixeR\nnJxc1i+9adMmiAi6detm03xL6eVdVFSExx57DGlpafjxxx/h5eV13f04wvG+Xt6OeryvVdnuhuTk\nZBgMBjRr1qymUqtQVfIODg6Gu7s7Nm3ahEceeQQAkJKSgj///BN33323zXK9nsr8rZ46dQrnzp2r\nteNrd/auQNbk5+fL1KlTZceOHXLixAlJSkqSUaNGiYeHhxw8eFBERBITE+Xdd9+Vffv2SVpamnz+\n+efi5+cno0aNcui8RUTCw8MlODhYdu3aJT///LPcfvvtMnz4cLvlXVRUJBEREdKyZUvZv3+/pKen\nlz1Ku3cc8XhXJm8RxzveIiLnz5+XvXv3ytq1a8VgMMiyZctk7969kp6eLiIix44dkzfeeEOSkpLk\n+PHj8u2330qbNm2kd+/eDp23iMjTTz8trVu3lh9//FF+/fVX6d69u/To0cOOWWvl5eXJSy+9JDt2\n7JDjx4/LDz/8IMHBwdK+ffta69K0N4ctAJcvX5ZBgwZJixYtpH79+mIymWTgwIGSlJRUFrNnzx4J\nCQkRLy8vadCggdxxxx0ya9Ysu/7Pq0zeIiIXLlyQYcOGSaNGjaRJkyYyevRoyc/Pt1PW6nTeaDRa\nPAwGgxiNRvnpp59ExDGPd2XyFnG84y0i8umnn5bleu0jNjZWREROnjwp9913n/j4+IiHh4fcfvvt\n8vLLL1/3uoy98xZRfwfPPPOM/O1vfxNPT0959NFHJSMjw45Za126dEn69+8v/v7+Uq9ePQkMDJSx\nY8dKZmamvVOrNVwKgojIRTnNPAAiIqpZLABERC6KBYCIyEWxABARuSgWACIiF8UCQETkolgAiIhc\nFAsAEZGLYgEgInJRLABERC6KBYCIyEWxABARuaj/Bz2kilo2pWhGAAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Ermsを取って過学習の度合いを見る\n", "# 平均自乗平方根誤差\n", "Erms_t = [];\n", "Erms_t100 = [];\n", "for ln_lam in range(-38, 1):\n", " lam = n(e^ln_lam);\n", " Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]); \n", " Phi_t = Phi.transpose();\n", " # ムーア_ベンローズの疑似逆行列\n", " Phi_dag = (lam*matrix((M+1),(M+1),1) + Phi_t * Phi).inverse() * Phi_t; \n", " # 平均の重み\n", " Wml = Phi_dag * t;\n", " f = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)));\n", " Erms_t += [[ln_lam, sqrt(sum((t[i] - f(X[i]))^2 for i in range(len(t)))/len(t))]];\n", " Erms_t100 += [[ln_lam, sqrt(sum((t100[i] - f(X100[i]))^2 for i in range(len(t100)))/len(t100))]];\n", "Erms_t_plt = list_plot(Erms_t);\n", "Erms_t100_plt = list_plot(Erms_t100, rgbcolor = 'red');\n", "(Erms_t_plt + Erms_t100_plt).show(figsize=4);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

ベイズ的なフィッティング

\n", "\t

\n", "\t\tもっとも良い結果を示すのが、ベイズ的なフィッティングの結果です(原著図1.17)。\n", "$$\n", "\t\tm_N = \\beta S_N \\Phi^T t\n", "$$\n", "$$\n", "\t\tS^{-1}_{N} = \\alpha I + \\beta \\Phi^T \\Phi\n", "$$\n", "\t\tで与えられます。($m_N$は、直線回帰の$W_{ML}$に相当します)\n", "\t

\n", "\t

\n", "\t\t以下に$\\alpha = 5 \\times 10^{-3}, \\beta = 11.1$の練習用データのベイズ的なフィッティング結果を示します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 5 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ベイズ的なフィッティング\n", "# α=5*10^-3, β=11.1を使用\n", "alpha = 5*10^-3;\n", "beta = 11.1;\n", "Phi = matrix([[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]); \n", "Phi_t = Phi.transpose();\n", "# ムーア_ベンローズの疑似逆行列\n", "Phi_dag = (alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi).inverse() * Phi_t; \n", "# 平均の重み\n", "Wml = beta*Phi_dag * t;\n", "f = lambda x : sum(Wml[i]*x^i for i in range(0, (M+1)));\n", "# 分散\n", "def s(x):\n", " phi_x = vector([x^i for i in range(M+1)]);\n", " s_sqr = 1/beta + phi_x * Phi_dag * phi_x;\n", " return sqrt(s_sqr);\n", "s_u_plt = plot(lambda x : f(x) + s(x), [x, 0, 1], rgbcolor='grey'); \n", "s_d_plt = plot(lambda x : f(x) - s(x), [x, 0, 1], rgbcolor='grey'); \n", "y_plt = plot(f, [x, 0, 1], rgbcolor='red'); \n", "(y_plt + data_plt + sin_plt + s_u_plt + s_d_plt).show(figsize=4, ymin=-1.5, ymax=1.5);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

lasso回帰

\n", "\t

\n", "\t\t鈴木由宇さんから、最近はlasso回帰も注目されていると聞き、\n", "\t\tsmlyさんのブログ「線形回帰モデルとか」\n", "\t\tから、cvx_optを使った方法を使わせて頂き、Sageでプロットしてみました。\n", "\t

\n", "\t

\n", "\t\tlasso回帰は、リッジ回帰のペナルティ項が2次から絶対値になったものです。\n", "$$\n", "\t\t\\tilde{E}(w) = \\frac{1}{2} \\sum^N_{n=1} \\{ y(x_n, w) - t_n \\}^2 + \\frac{\\lambda}{2} ||w||\n", "$$\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " pcost dcost gap pres dres\n", " 0: -7.3129e-01 -1.5730e+04 2e+04 5e-17 8e+01\n", " 1: -1.1908e+00 -2.3198e+02 2e+02 2e-16 1e+00\n", " 2: -1.6934e+00 -1.1863e+01 1e+01 2e-16 5e-02\n", " 3: -1.8817e+00 -2.4425e+00 6e-01 2e-16 2e-03\n", " 4: -1.8890e+00 -1.9346e+00 5e-02 2e-16 2e-04\n", " 5: -1.8949e+00 -1.9100e+00 2e-02 2e-16 4e-05\n", " 6: -1.8990e+00 -1.9027e+00 4e-03 2e-16 2e-14\n", " 7: -1.8998e+00 -1.9009e+00 1e-03 4e-16 3e-14\n", " 8: -1.9003e+00 -1.9005e+00 2e-04 3e-16 4e-14\n", " 9: -1.9004e+00 -1.9005e+00 1e-04 2e-16 3e-14\n", "10: -1.9004e+00 -1.9004e+00 1e-05 4e-16 3e-14\n", "11: -1.9004e+00 -1.9004e+00 2e-07 5e-16 5e-14\n", "Optimal solution found.\n", "[ 3.50668337e-01 4.72355549e+00 -5.66598955e-01 -3.33176635e+01\n", " 5.28640506e-04 5.46111227e+01 2.04434686e+01 -9.73943588e-04\n", " -1.30982583e+02 8.49936038e+01]\n" ] } ], "source": [ "# lasso回帰\n", "# http://d.hatena.ne.jp/smly/20100630/1277904761\n", "# を参考にlasso回帰を実施\n", "# cnvx_optの宣言\n", "from cvxopt import solvers\n", "from cvxopt.base import matrix as _matrix\n", "import numpy as np\n", "#\n", "M = 9\n", "lim = 30.0\n", "# 計画行列Φ\n", "phi = _matrix([[ float(_phi(x,j).n()) for j in range(0, (M+1))] for x in X.list()]).T; \n", "P = _matrix(float(0.0), (2*(M+1), 2*(M+1)))\n", "P[:M+1, :M+1] = phi.T * phi\n", "q = _matrix(float(0.0), (2*(M+1), 1))\n", "t = _matrix(np.matrix(t)).T\n", "q[:M+1] = -phi.T * t\n", "Ident = _matrix(np.identity(M+1, float))\n", "G = _matrix([[Ident, -Ident, _matrix(float(0.0), (1,M+1))],[-Ident, -Ident, _matrix(float(1.0), (1,M+1))]])\n", "h = _matrix(float(lim), (2*(M+1)+1,1))\n", "# constraint (PRML ex.3.5, eq3.30)\n", "x = solvers.qp(P, q, G, h)['x'][:M+1]\n", "Wml = np.array(x).reshape(M+1)\n", "print Wml" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nDMCpqFMM3DyQPm/0oXHhxjoHm0TmjBHFxsaqsLCwJ4/Tp08rg8Ggjh8//sx2NWrUUB988IFZ409v\nvPGG+vjjj5/7noz5C3s05eAUxQjUijMrLLfTa9eU6tFDKaNRKT8/pZYvVyqNj03r6sIFpbp3V8rZ\nWals2ZT6/nul4uOf2eT+o/uq5NSSqsSUEupe/D2dAjWfWT1/d3d3ChYs+ORRvHhxcubMybZt255s\nc/fuXQ4cOEDlypWTvN/Y2FjCwsLIlSuXOeEIka71fr03bxV9i65rur566cekypkTZs7Uhi/8/LSy\n0LJltYF200sWl7cniYla6eZbb2lzKK1bp9WchoVBnz7acNpTPtr6EaE3Q1nUfBGuTq46BZ0MKf32\nGD9+vPLy8lJr1qxRJ06cUE2bNlV+fn7q4VPVBbVr11ZTpkx58nzgwIFq586d6s8//1R79+5VdevW\nVd7e3urGjRvPPYb0/IW9unXvlso3KZ+qPKeyik+If3UDc+3cqVTdulp5TbFiSs2erVRcnOWPk9aZ\nTEqdPKnU8OFK5c+vnY9SpZSaMUNdvXRfTZum1Irn/AG29vxaxQjUN/u/SfWQUyrFyV8ppT777DOV\nK1cu5erqqurXr69CQ0Ofed/X11eNHDnyyfM2bdooHx8f5eLiovLmzauCg4PVpUuXXrh/Sf7Cnu29\nvFc5jHRQH299/rCoRezfr1STJlrZYpYsSg0YoNTFi9Y7XlqQmKjU0aNKffqpUkWLagnfw0OpLl2U\n+u03pUwmFRmpVO7c2lug1NOj2X/e/lNlGZdFNVnUJM2XdT6PzO0jhA34YvcXfPLrJ2zusJm6Beta\n70CXLsG0aVop4+3bWoVQ27bQsiVkzWq946aW8HBtRtStW2HbNm1VNE9PaNpU+4z16mmT5v3fjz9C\np07/NPf01KagiE+Mp/q86kTGRnK011GyuGbR4cOkjCR/IWyASZlosKABp6JOcazXMXJkzPHqRilx\n/742YdyiRbBlCxgM2voBgYHaw8/Puse3hPv34ehROHRIu9P5wAFt3N5o1OZAqlsX6tTRbiZwdn7u\nLrZt0zZ7rEQJOHUKPtz4IVMOTWFP1z1U9KmYSh/IsiT5C2EjImMjKTO9DCW9S7Kp/abUmyI4Kkq7\nILxmDezYoZWIvvaa9ldBtWraZGZ+ftodWnowmbQe/Zkz2uP0ae2C9qlT2mR3GTJoJZpvvAE1a2pf\n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\nTCfs4FudAAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "var('x')\n", "f = lambda x : sum(Wml[i]*_phi(x,i) for i in range(0, (M+1)));\n", "y_plt = plot(f(x), [x, 0, 1], rgbcolor='red'); \n", "(y_plt + data_plt + sin_plt).show(figsize=4, ymin=-1.5, ymax=1.5);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 7.5.1", "language": "", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }