Last active
March 3, 2019 23:46
-
-
Save shotahorii/529a8c979ba0836a34c383c79c1e9f4b to your computer and use it in GitHub Desktop.
Regularization
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Regularization\n", | |
| "- https://www.slideshare.net/hirsoshnakagawa3/linea-r1\n", | |
| "- https://www.bananarian.net/entry/2018/09/03/003013\n", | |
| "- https://www.iwanttobeacat.com/entry/2018/01/24/225906\n", | |
| "- http://shogo82148.github.io/homepage/memo/algorithm/ridge-regression/\n", | |
| "\n", | |
| "[ここ](https://gist.github.com/shotahorii/c6033a4cc8de5b799b23d0bd386b1370)で少し書いたように、訓練データ数に対してモデルが複雑すぎるようなケースにおいて、学習データのノイズに追従してしまい新しいデータに対してうまく機能しない(汎化性能の悪い)モデルになってしまう事を**過学習**という。 \n", | |
| "これを抑えるための方法のひとつとして、係数wが大きくなることにペナルティを課す**正則化**(Regularization)がある。 \n", | |
| " \n", | |
| "この記事では、最小二乗法に対してこの正則化を行った正則化回帰分析について書く。特に、罰則項として回帰係数の二乗和(L2ノルム)をとった場合の**Ridge回帰**、そして罰則項として回帰係数の絶対値の和(L1ノルム)をとった場合の**Lasso回帰**について見ていく。 \n", | |
| " \n", | |
| "#### 通常の最小二乗法の誤差関数" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "正則化回帰に入る前に、最小二乗法の誤差関数(最小二乗法において最小化したい関数)を見ていく。二乗和誤差である。\n", | |
| "<br><br>\n", | |
| "$$E(w) = \\frac{1}{2}\\sum_{i=1}^n (y_i - f(x_i))^2$$<br><br>\n", | |
| "\n", | |
| "行列の形で書き直すと以下になる。<br>\n", | |
| "$$E(w) = \\frac{1}{2}||Xw - y||^2$$<br><br>\n", | |
| "\n", | |
| "ちなみにこの誤差関数の頭についている1/2というのは、微分した際にでてくる2を打ち消す(計算をきれいにする)ために\n", | |
| "ついているもので、無くても本質的な意味は変わらない。当然解も変わらない(最小化したい式に定数倍の条件がついても\n", | |
| "解が変わらないのは明らか)。つまり$$E(w) = RSS = ||Xw - y||^2$$としても全く問題ないが、この記事では\n", | |
| "多くの参考文献に合わせるため1/2をつけた式を使うことにする。" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Latex object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "%%latex\n", | |
| "正則化回帰に入る前に、最小二乗法の誤差関数(最小二乗法において最小化したい関数)を見ていく。二乗和誤差である。\n", | |
| "<br><br>\n", | |
| "$$E(w) = \\frac{1}{2}\\sum_{i=1}^n (y_i - f(x_i))^2$$<br><br>\n", | |
| "\n", | |
| "行列の形で書き直すと以下になる。<br>\n", | |
| "$$E(w) = \\frac{1}{2}||Xw - y||^2$$<br><br>\n", | |
| "\n", | |
| "ちなみにこの誤差関数の頭についている1/2というのは、微分した際にでてくる2を打ち消す(計算をきれいにする)ために\n", | |
| "ついているもので、無くても本質的な意味は変わらない。当然解も変わらない(最小化したい式に定数倍の条件がついても\n", | |
| "解が変わらないのは明らか)。つまり$$E(w) = RSS = ||Xw - y||^2$$としても全く問題ないが、この記事では\n", | |
| "多くの参考文献に合わせるため1/2をつけた式を使うことにする。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Ridge回帰 (L2正則化回帰)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "まずはRidge回帰。これは通常の最小二乗法の誤差関数に、回帰係数の二乗和を罰則項として加える正則化である。\n", | |
| "<br><br>\n", | |
| "$$E(w) = \\frac{1}{2}||Xw - y||^2 + \\frac{\\lambda}{2}||w||^2$$\n", | |
| "<br><br>\n", | |
| "ここで、上の式を展開すると以下となる。<br>\n", | |
| "$$E(w) = \\frac{1}{2}(Xw - y)^T(Xw - y) + \\frac{\\lambda}{2}w^Tw$$<br><br>\n", | |
| "\n", | |
| "この関数の最小値を求めたいので、パラメータwで偏微分して0と置く。(ここで先ほど触れた1/2が役に立つ。)<br>\n", | |
| "$$\\frac{\\partial E}{\\partial w} = X^TXw - X^Ty+\\lambda w = 0$$<br><br>\n", | |
| "\n", | |
| "式を変形すると以下のように書ける。(λはスカラーなので単位行列Iをかけている。)<br>\n", | |
| "$$(X^TX+\\lambda I)w = X^Ty$$<br><br>\n", | |
| "\n", | |
| "両辺に$$(X^TX+\\lambda I)$$の逆行列をかける。<br>\n", | |
| "$$(X^TX+\\lambda I)^{-1}(X^TX+\\lambda I)w = (X^TX+\\lambda I)^{-1}X^Ty$$<br>\n", | |
| "すなわち、推定したいパラメータwは解析的に以下のように求まる。<br>\n", | |
| "$$w = (X^TX+\\lambda I)^{-1}X^Ty$$" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Latex object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "%%latex\n", | |
| "まずはRidge回帰。これは通常の最小二乗法の誤差関数に、回帰係数の二乗和を罰則項として加える正則化である。\n", | |
| "<br><br>\n", | |
| "$$E(w) = \\frac{1}{2}||Xw - y||^2 + \\frac{\\lambda}{2}||w||^2$$\n", | |
| "<br><br>\n", | |
| "ここで、上の式を展開すると以下となる。<br>\n", | |
| "$$E(w) = \\frac{1}{2}(Xw - y)^T(Xw - y) + \\frac{\\lambda}{2}w^Tw$$<br><br>\n", | |
| "\n", | |
| "この関数の最小値を求めたいので、パラメータwで偏微分して0と置く。(ここで先ほど触れた1/2が役に立つ。)<br>\n", | |
| "$$\\frac{\\partial E}{\\partial w} = X^TXw - X^Ty+\\lambda w = 0$$<br><br>\n", | |
| "\n", | |
| "式を変形すると以下のように書ける。(λはスカラーなので単位行列Iをかけている。)<br>\n", | |
| "$$(X^TX+\\lambda I)w = X^Ty$$<br><br>\n", | |
| "\n", | |
| "両辺に$$(X^TX+\\lambda I)$$の逆行列をかける。<br>\n", | |
| "$$(X^TX+\\lambda I)^{-1}(X^TX+\\lambda I)w = (X^TX+\\lambda I)^{-1}X^Ty$$<br>\n", | |
| "すなわち、推定したいパラメータwは解析的に以下のように求まる。<br>\n", | |
| "$$w = (X^TX+\\lambda I)^{-1}X^Ty$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "ちなみに[ここ](https://gist.github.com/shotahorii/e34f065c43a2a5da81a736fab0af7e3a#file-map_curve_fitting-ipynb)でも触れたが、Ridge回帰の式(このセルの最初の式)は、観測データの誤差分布とパラメータwの事前分布を共に正規分布と仮定してMAP推定した場合の最小化式と全く同等である。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Lasso回帰 (L1正則化回帰)\n", | |
| "- [Lassoの理論と実装 -スパースな解の推定アルゴリズム-](https://satopirka.com/2017/10/lasso%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85--%E3%82%B9%E3%83%91%E3%83%BC%E3%82%B9%E3%81%AA%E8%A7%A3%E3%81%AE%E6%8E%A8%E5%AE%9A%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0-/)\n", | |
| "\n", | |
| "- http://statweb.stanford.edu/~tibs/lasso/lasso.pdf" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 43, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "次にLasso回帰。回帰係数のL1ノルムを正則化項としたものがLasso回帰である。<br><br>\n", | |
| "$$E(w) = ||Xw - y||^2 + \\lambda||w||_1$$<br><br>\n", | |
| "ちなみに、Ridge回帰の時に式の頭につけていた1/2をここではつけていないのは、L1正則化の正則化項には\n", | |
| "微分不可能な点があり、偏微分して解析的に解を求めることが不可能であるためである。<br>\n", | |
| "そのためCoordinate Descentなどのアルゴリズムによってwを推定することになるが、本記事ではその詳細には触れない。" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Latex object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "%%latex\n", | |
| "次にLasso回帰。回帰係数のL1ノルムを正則化項としたものがLasso回帰である。<br><br>\n", | |
| "$$E(w) = ||Xw - y||^2 + \\lambda||w||_1$$<br><br>\n", | |
| "ちなみに、Ridge回帰の時に式の頭につけていた1/2をここではつけていないのは、L1正則化の正則化項には\n", | |
| "微分不可能な点があり、偏微分して解析的に解を求めることが不可能であるためである。<br>\n", | |
| "そのためCoordinate Descentなどのアルゴリズムによってwを推定することになるが、本記事ではその詳細には触れない。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Lasso回帰の特徴\n", | |
| "- [LPノルムってなんだっけ?](https://qiita.com/kenmatsu4/items/cecb466437da33df2870)\n", | |
| "\n", | |
| "Lasso回帰の特徴として、回帰係数の推定と同時に変数の選択も行ってくれる(重要度の低い説明変数の回帰係数が0になりやすい)ことがあげられる。 \n", | |
| " \n", | |
| "**なぜLasso回帰で変数の選択ができるのか** \n", | |
| "この記事の下のセクション(正則化項の意味)で説明するように、正則化回帰分析は、wの取り得る範囲に制約を課した上での二乗和誤差の最小化(制約付き最適化問題)である。 \n", | |
| "今、パラメータwがw1,w2の二変数であるとする。この最適化問題を、横軸w1,縦軸w2のグラフ上で表現した場合、誤差関数が最小化されるw1,w2の値は、**(a) ||w||=μで表される大きさμの単位円(制約条件)**と、**(b) 二乗和誤差が等しい等高線(内側の円ほど誤差が小さい)**において、(a)と重なる(b)の等高線のうち最も内側にあるものと(a)との接点である。 \n", | |
| "\n", | |
| "L2正則化の場合、制約条件の範囲が原点を中心として円形であるのに対し、L1正則化では(0,μ), (μ,0), (0,-μ), (-μ,0)を頂点とした四角形となる。[ここの説明(p47)](https://www.slideshare.net/yasunoriozaki12/prml-29439402)がわかりやすいが、この四角形型の範囲では頂点(つまりあるパラメータw_iの値が0である点)が接点となりやすい。ゆえにLasso回帰では重要度の低い変数の係数が0となりやすく、結果として変数選択が行われることになる。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Lq正則化回帰" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 45, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "ここまで、L2正則化とL1正則化について書いてきたが、一般化して$$L_q$$正則化の式を以下のように書くことができる。\n", | |
| "<br><br>\n", | |
| "$$E(w) = ||Xw - y||^2 + \\lambda||w||_q$$<br><br>\n", | |
| "q=1の場合がLasso回帰、q=2の場合がRidge回帰である。" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Latex object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "%%latex\n", | |
| "ここまで、L2正則化とL1正則化について書いてきたが、一般化して$$L_q$$正則化の式を以下のように書くことができる。\n", | |
| "<br><br>\n", | |
| "$$E(w) = ||Xw - y||^2 + \\lambda||w||_q$$<br><br>\n", | |
| "q=1の場合がLasso回帰、q=2の場合がRidge回帰である。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### 正則化項の意味\n", | |
| "ここまでの説明で、さらっと「通常の最小二乗法の誤差関数に回帰係数のノルムを罰則項として加える」と書いてきた。 \n", | |
| "最小化する誤差関数に回帰係数の「大きさ」を項として加えるというコンセプトは直感的には理解できる(つまりどんなに二乗和誤差を小さくできても回帰係数が大きければ最終的な誤差関数の値は大きくなる)が、数式上は「ノルムを式の後ろに項として加える」という操作は数学的にどういう意味を持つのだろうか? \n", | |
| "以下の記事がわかりやすい。\n", | |
| "- https://www.iwanttobeacat.com/entry/2018/01/30/210446\n", | |
| "- https://www.iwanttobeacat.com/entry/2018/02/02/012002\n", | |
| "\n", | |
| "また、『イラストで学ぶ機械学習』(杉山将)p31~では、本記事のように「通常の最小二乗法の誤差関数に回帰係数のノルムを罰則項として加える」という入り方をせずに、初めからラグランジュの未定乗数法による制約条件付き最適化問題として正則化最小二乗法を説明している。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 38, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "ここまでの説明ではざくっと「通常の最小二乗法の誤差関数に回帰係数のノルムを罰則項として加える」とだけ言って下の式\n", | |
| "を出してしまっていた。<br><br>\n", | |
| "$$E(w) = ||Xw - y||^2 + \\lambda||w||_q$$<br><br>\n", | |
| "が、実際にはこの式は「wの取り得る値に制約条件を課した上で$$\\frac{1}{2}||Xw - y||^2$$を最小化したい」\n", | |
| "という制約条件付き最適化問題を<b>KKT条件下でラグランジュの未定乗数法によって解く</b>ということを式にしたものである。" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Latex object>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "%%latex\n", | |
| "ここまでの説明ではざくっと「通常の最小二乗法の誤差関数に回帰係数のノルムを罰則項として加える」とだけ言って下の式\n", | |
| "を出してしまっていた。<br><br>\n", | |
| "$$E(w) = ||Xw - y||^2 + \\lambda||w||_q$$<br><br>\n", | |
| "が、実際にはこの式は「wの取り得る値に制約条件を課した上で$$\\frac{1}{2}||Xw - y||^2$$を最小化したい」\n", | |
| "という制約条件付き最適化問題を<b>KKT条件下でラグランジュの未定乗数法によって解く</b>ということを式にしたものである。" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### 実装して確認\n", | |
| "- https://www.haya-programming.com/entry/2018/09/11/154129" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 98, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import math\n", | |
| "import numpy as np\n", | |
| "from functools import reduce\n", | |
| "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n", | |
| "from sklearn.preprocessing import PolynomialFeatures\n", | |
| "from sklearn.pipeline import Pipeline\n", | |
| "\n", | |
| "from matplotlib import pyplot as plt\n", | |
| "%matplotlib inline" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 120, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# generate data set\n", | |
| "x_train = np.linspace(0,1,11)\n", | |
| "x_test = np.linspace(0.05,0.95,100)\n", | |
| "\n", | |
| "x = np.concatenate((x_train, x_test), axis=None)\n", | |
| "y = 0.5 + 0.4*np.sin(2*np.pi*x) + np.random.normal(0.0, 0.1, len(x))\n", | |
| "\n", | |
| "y_train = y[:11]\n", | |
| "y_test = y[11:]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### スクラッチに実装" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 121, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# create matrix of X \n", | |
| "# for example, if fitting with 3 degrees, return [[1, x, x**2, x**3],[1, x, x**2, x**3],...]\n", | |
| "def create_matrix(x,d):\n", | |
| " \"\"\"\n", | |
| " x: predictor variable data(array)\n", | |
| " d: dimension (int>0) including intercept\n", | |
| " \"\"\"\n", | |
| " X = np.zeros((len(x), d), float) # make a matrix size of (data size - dimension)\n", | |
| " for i in range(d):\n", | |
| " X[:,i] = x**i\n", | |
| " return X\n", | |
| "\n", | |
| "def fitting_ols(x,y,d):\n", | |
| " d = d+1 # +1 means adding intercept\n", | |
| " X = create_matrix(x,d) \n", | |
| " \n", | |
| " #beta = np.dot(np.dot(np.linalg.inv(np.dot(X.T,X)),X.T),y) # raw implementation\n", | |
| " (beta, residuals, rank, s) = np.linalg.lstsq(X, y) # numpy function for least square \n", | |
| " #return reduce(lambda a,b:a+b, [beta[i]*X[:,i] for i in range(d)])\n", | |
| " \n", | |
| " return lambda x: reduce(lambda a,b:a+b, [beta[i]*(x**i) for i in range(d)])\n", | |
| "\n", | |
| "def fitting_ridge(x,y,d,l):\n", | |
| " d = d+1 # +1 means adding intercept\n", | |
| " X = create_matrix(x,d) \n", | |
| " \n", | |
| " beta = np.dot(np.dot(np.linalg.inv(np.dot(X.T,X)+l*np.eye(d)),X.T),y) # raw implementation\n", | |
| " return lambda x: reduce(lambda a,b:a+b, [beta[i]*(x**i) for i in range(d)])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 131, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "model_ols = fitting_ols(x_train,y_train,10)\n", | |
| "model_ridge_0001 = fitting_ridge(x_train,y_train,10,l=0.001)\n", | |
| "model_ridge_1 = fitting_ridge(x_train,y_train,10,l=1)\n", | |
| "model_ridge_3 = fitting_ridge(x_train,y_train,10,l=3)\n", | |
| "\n", | |
| "y_ols = model_ols(x_test)\n", | |
| "y_ridge_0001 = model_ridge_0001(x_test)\n", | |
| "y_ridge_1 = model_ridge_1(x_test)\n", | |
| "y_ridge_3 = model_ridge_3(x_test)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 138, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\ngg==\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1135a5438>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "fig, ax = plt.subplots(1,1,figsize=(10,7))\n", | |
| "raw_train = ax.scatter(x_train,y_train)\n", | |
| "raw_test = ax.scatter(x_test,y_test,alpha=0.3)\n", | |
| "ols_plt = ax.plot(x_test, y_ols, 'b-')\n", | |
| "ridge_plt = ax.plot(x_test, y_ridge_0001, 'g-') # Green: lambda=0.001\n", | |
| "ridge_plt = ax.plot(x_test, y_ridge_1, 'r-') # Red: lambda=1\n", | |
| "ridge_plt = ax.plot(x_test, y_ridge_3, 'y-') # Yellow: lambda=3" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Scikit learnで実装" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 139, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# common params\n", | |
| "d = PolynomialFeatures(degree=10)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 140, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# fitting with OLS\n", | |
| "ols = LinearRegression()\n", | |
| "ols_pl = Pipeline([('d',d),('model',ols)])\n", | |
| "ols_pl.fit(x_test.reshape(-1, 1), y_test)\n", | |
| "y_ols = ols_pl.predict(x_test.reshape(-1, 1))\n", | |
| "\n", | |
| "# fitting with Ridge\n", | |
| "ridge_0001 = Ridge(alpha=0.001)\n", | |
| "ridge_0001_pl = Pipeline([('d',d),('model',ridge_0001)])\n", | |
| "ridge_0001_pl.fit(x_test.reshape(-1, 1), y_test)\n", | |
| "y_ridge_0001 = ridge_0001_pl.predict(x_test.reshape(-1, 1))\n", | |
| "\n", | |
| "ridge_1 = Ridge(alpha=1)\n", | |
| "ridge_1_pl = Pipeline([('d',d),('model',ridge_1)])\n", | |
| "ridge_1_pl.fit(x_test.reshape(-1, 1), y_test)\n", | |
| "y_ridge_1 = ridge_1_pl.predict(x_test.reshape(-1, 1))\n", | |
| "\n", | |
| "ridge_3 = Ridge(alpha=3)\n", | |
| "ridge_3_pl = Pipeline([('d',d),('model',ridge_3)])\n", | |
| "ridge_3_pl.fit(x_test.reshape(-1, 1), y_test)\n", | |
| "y_ridge_3 = ridge_3_pl.predict(x_test.reshape(-1, 1))\n", | |
| "\n", | |
| "# fitting with Lasso\n", | |
| "lasso = Lasso(alpha=0.001)\n", | |
| "lasso_pl = Pipeline([('d',d),('model',lasso)])\n", | |
| "lasso_pl.fit(x_test.reshape(-1, 1), y_test)\n", | |
| "y_lasso = lasso_pl.predict(x_test.reshape(-1, 1))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 145, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmAAAAGnCAYAAAAQbutBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVdX6x/HPZjgMIoKIKJSQmnpT0RzTykAradLMSi2x\n0kqzwYZbWt1b2mj1ay4rzazIlMosm9BKycoJTSPNMcUBFFFEZJDDsH9/bPGigkyHw+D3/XrxKjh7\nr73OyV4+POtZzzJM00REREREnMelticgIiIicqZRACYiIiLiZArARERERJxMAZiIiIiIkykAExER\nEXEyBWAiIiIiTuaQAMwwjJmGYaQahpFYxus3GYbx57Gv3wzD6OyI54qIiIjUR47KgM0CBp7m9e1A\nP9M0uwDPADMc9FwRERGResfNEYOYpvmbYRihp3l9RYlvVwAhjniuiIiISH1UGzVgtwM/1MJzRURE\nROoEh2TAKsowjEjgNuCi01yjs5FERESk3jBN06jsPU7LgBmGEQ5MBwaZpnnodNeapqmvKnw9+eST\ntT6H+vylz0+fnz67+vmlz0+fX21+VZUjAzDj2NepLxhGK2AeEG2a5j8OfKaIiIhIveOQJUjDMD4F\nIoAAwzB2AU8CNsA0TXM68F+gKTDNMAwDyDdNs5cjni0iIiJS3zhqF+RN5bx+B3CHI54lZYuIiKjt\nKdRr+vyqR59f1emzqx59ftWjz692GNVZv6wJhmGYdW1OIiIiIqUxDAOzLhfhi4iIiIhFAZiIiIiI\nkykAExEREXEyBWAiIiIiTqYATERERMTJFICJiIiIOJkCMBEREREnUwAmIiIi4mQKwEREREScTAGY\niIiIiJMpABMRERFxMgVgIiIiIk6mAExERETEyRSAiYiIiDiZAjARERERJ1MAJiIiIuJkCsBERERE\nnEwBmIiIiIiTKQATERERcTIFYCIiIiJOpgBMRERExMkUgImIiIg4mQIwkQbCbreTkZGB3W6v7amI\niEg53Gp7AiJSfcnJKcTFJVJQ4I2bWw5RUeGEhATX9rRERKQMyoCJ1HN2u524uER8fPoSHNwPH5++\nxMUlKhMmIlKHKQATqedycnIoKPDG29sXAG9vXwoKvMnJyanlmYmISFkUgInUc97e1rJjTk4mADk5\nmbi55eDt7V3LMxMRkbIYpmnW9hxOYBiGWdfmJFLXqQZMRKR2GIaBaZpGpe+ra8GOAjCRqrHb7eTk\nWJkvm81W29MRETkjKAATERERcbKqBmCqARMRERFxMgVgIiIiIk6mAExERETEyRSAiYiIiDiZAjAR\nERERJ1MAJiIiIuJkCsBEREREnEwBmIiIiIiTKQATERERcTKHBGCGYcw0DCPVMIzE01zzhmEYWw3D\nWGcYRldHPFdERESkPnJUBmwWMLCsFw3DuAJoY5rmucBY4F0HPVekWux2OxkZGdjt9tqeioiInEHc\nHDGIaZq/GYYReppLBgMfH7t2pWEYTQzDCDJNM9URzxepiuTkFOLiEiko8MbNLYeoqHBCQoJre1oi\nInIGcFYNWAiwu8T3ycd+JlIr7HY7cXGJ+Pj0JTi4Hz4+fYmLS1QmTEREnMIhGTBHmzx58vF/j4iI\nICIiotbmIg1TTk4OBQXeeHv7AuDt7UtGhjc5OTnYbLZanp2IiNRV8fHxxMfHV3scwzTN6s8GOLYE\n+Y1pmuGlvPYusMQ0zdhj328CLiltCdIwDNNRcxIpi91uJyZmMT4+ffH29iUnJ5OsrGVER/dXACYi\nIhVmGAamaRqVvc+RS5DGsa/SLABGARiGcQGQofovqSnlFdbb7XZycnLo378DWVnLSElZSlbWMqKi\nwhV8iYiIUzhkCdIwjE+BCCDAMIxdwJOADTBN05xumub3hmFcaRjGNiAbuM0RzxU5WXmF9Se/3r9/\nB/z9/fD29lbwJSIiTuOwJUhH0RJkw1KcbXJGgFPesqKWHUVExNGqugRZJ4vwpWFwdpuH8grrVXgv\nIiJ1hY4ikhpRG20evL2tQC8nJxOAnJxM3Nys7FtFXq9v1ERWRKT+UgZMakRtZJtsNhtRUeHExS0j\nI+N/Wbfi55X3en2iJrIiIvWbAjCpESWzTcX1Vs7INoWEBBMd3azMurPyXq8PSmYXiz/buLhlREc3\nq5fvR0TkTKQATGpEbWabbDbbaZ9T3ut1nWrZRETqPwVgUmMaQrapLqqt7KKIiDiO2lCI1ICabr+h\nGjARkbqhqm0oFICJVFFZQZazgiNn9lgTEZHSKQATcaKygiw1exURObPUhbMgReqttLQ0EhISSEtL\nK/fa0/U4K61AvqDAKpAXEREppgBMznhz5sQSGtqByy4bR2hoB+bMiT3t9acLshpas1cREakZCsDk\njJaWlsaYMePJzV3C4cNryM1dwpgx40+bCTtdkFXcfiMraxkpKUvJylpWb5u9iohIzVEbCjmjJSUl\nYbOFkZsbfuwn4bi7h5KUlERgYGCp95TX40ztN0REpDwqwpczWlpaGqGhHcjNXQKEA4l4eUWyc+em\nMgOwYtqFKCIiKsIXqYLAwEBmzpyGl1ckvr7d8PKKZObMaeUGX2Blwvz8/BR8iYhIpSkDJoKVCUtK\nSiIsLKxCwZeIiAioD5hIrdJypIjImamqAZiK8EWqqSY73yuwExFpmBSAiVRDyaasxZ3v4+KWER3d\nrNoBk857FBFpuFSEL1KG3FxISYF9++DgQcjMhMLCE6+pqc73p+u2X5fZ7XYyMjLq/DxFRGqbMmBy\nRisqgk2b4I8/rK+1a2H3bti/H/LyoGlT65r8fCgogKNHoWVLaNUKQkPhvPN8OHTIEw+PTAICfB3W\n+b60wC4jwwrs6upSpDJ2IiIVpwBMSmeaPPRvg0OHICTE+mrVCsLCoG1bqKMxQIXk5sLixfD11/DN\nN9CoEXTvDt26waOPwjnnQPPm4OsLxklllXY7JCfDrl2wYwesXevG77935Y03XAgMzKJz5wPceWcP\nXFyq9wGV7LZfvLRZl480qsmlWBGRhki7IKV0P/3E0jti2NJ5KMmt+rAnL5BduyApCb76Cv71r1Nv\n+ecfCA4GLy+nz7ZCNm6Et9+G2bMhPBwGD4ZBg6yAsrqys+38/nseS5Z488MPruzZA9deC7fcAhdd\ndGogVxHVzSg5s4A/IyOD2NhEgoP7Hf9ZSspShg0Lx8/Pr0afLSJSm9SGQhyrqAhWrIDPPoMvvgB/\nf7jxRuurfftSb+nXD1atsrJlnTtbX+HhVpDj4eHk+R9jmhAXBy+/DOvXw513wtix1hxr0u7dMHcu\nfPihtWx5yy3Ws1u0qNw4VQ2inL0caLfbiYlZfEIGLCtrGdHR/ZUBE5EGTQGY1JyiIli+HGJj4fPP\nISgIhg2D4cOt9boS8vOtTNj69ZCYaP0zNhbc3U8d1jSrlhmqqOXLYdIkSEuDxx+H6693fiBomrBm\nDbz/vvU5DBkCDzxgBac1pbaCIdWAiciZSAGYOEdhIfz6q5XemTcP2rSBESOsgKwS6Z3UVOjQAXr2\nhL594cIL4YILoHHj6k9x+3Z46CFYvRqmTIFRo8CtCtWO+YX5pOemk1uQy9GCoxwtOIppmni6eR7/\naurVFA+3ikV1Bw/Cu+9ay6Bdu8LkydCrl+OXCmtzOVB9y0TkTKMATJwvPx9++gnmzLGq2Xv0gJtv\nttI8TZqUe3tqKqxcCcuWwe+/WzsQr7zSWvWsisJCeOMNePZZKwC7//7y69HSstP4M/VPNh/YzOaD\nm9mUtondmbs5kHOAjLwM/D398Xb3xtPN83iglVeQR15hHrn5uaTnptPI1oigRkEENw6mXUA72ge0\np11AO8KDwjnL9yyMk9J8eXkwa5Y1zw4djtK37xqCgwsdljXScqCIiPMoAJPalZsL335rVbgvWQID\nB8LIkRAVVeEtk3l51g7D1q1Pfe3wYWv50NOz9Hs3bIAxY6zXZ8yAc8899RrTNNmQtoGftv/Eij0r\nWJW8ivTcdLq26EqHZh1o4daCQ9tcaMLZ+Nu8uGZAT5oFBJw2m1NkFnEo9xCp2ansydzD1oNb2XzQ\nCubW7VuHi+FCz+Ce9A7pTeQ5kfQK6YWbi5WOy8y0M27cNuLiOtC5sws33ngEN7d4hgzpXe1DvrUc\nKCLiHArApO5IT7cK9z/5xNp6eMMN1jpg795VLvr64AMro3XhhVZMd8UV/wuyZsywaryeeQbuuANc\nSrQXzrZn893W7/h+6/cs+mcRnm6eXNb6Mi5sdSG9QnrRLqAdLobLKVmj3bs3s2rVAnr27I6np71K\nAYxpmuw6vIuElASW717Ozzt+JikjiYiwCK5oewWRLSNZ8u0+mjbtx5dfwjffFNG6dQI33ZRJYGBh\ntYMmLQeKiNQ8BWBSNyUlWVmxjz+2KtKjo62vsLBKD3X4sLXi+cMP1s5GDw9rmLQ0a29A8ebM3Pxc\nvtnyDZ9t+Iwft/9In7P6MKj9IAa2GUibpm1KHbtk3VR+vp34+MXk5vrRv38nXFyKHLaEl5qVys87\nfuabLd/ww9YfCDJb0dd/FP2aDuenr9ezatX5pKc3Z9SoXDp2XMqoUVo2FBGpyxSASd1mmpCQAB99\nZG0H7NzZ6s1w/fXg41Pp4datszN4sCt9+sAHH7ji7Q2JqYnMWDODT9d/SveW3RnWcRjXdriWAO+A\ncscrmQErKiri559X4OUVSGRkOO7u7jVSxH604ChzVs3lvd8/5s+cVQRmncvQ1hMJzLiBd99xpUmT\ng8ye7U54uK/DnikiIo5V1QBMZ0GKcxiGteXv7betQq9774Uvv4Szz4Zbb4VffrGCtAr49NOD9Otn\nEhGxjQGXxhHzx3T6zOzDlbOvxN/Ln9V3rKHNskU02jIGj6Lygy8Am81GVFQ4WVnLSE9fQ0HBX5x3\nXgDu7u4O6UJf2hmJnm6e3Nb3VpZOiOOv0eu4OLgv32T+H6+aYfR9ZAqhHbbTv39jXn751DMoRUSk\nflMGTGpXaqq1RPnBB5g5ORy96SZcR4/GVlolPvD22wU89lgh9zyQyYGzY/kq9WUaG148d/Vkrut4\nHW4ubhQWWiuen31m7bC8/HKrZdlVV5VdxF+suG7q0KEMFi/e5JAi9ooWxBdftz13D0ty5/J3wWoG\nnRPN5g8fwO1Ia2bNgnbtqjQFERGpIVqClHoteU8yq9/9gra/Lqbt6sWYvXvhOf4uq42+zUZRETzy\nCMz/JpsONz/BctdPadeoN9cFPUKTzIIylwcPHoT5861OGUVF1gbNinJEEXtlW0KUfOaBvAO8teot\npq+ZzrmFg9k043GeuLc1EyacuNFARERqjwIwqbdODlLyDu0jcOnLXLxlJS6bN1M0chSP/HMbX3v+\nRk6Pp2lWGMyIFv9Hx6YXV6rHVV6e8zvhO6Ip6qHcQ7y24jXeXPk27tuvpe2eJ4mdfjZnnVVTsxYR\nkYpSDZjUWzk5ORQUeOPtbRWbe/i3YFPPa8hcsAD7z78yJ24nj/wYzmfrJvKLxx18f/0cAguySUlZ\nSlbWMqKiwk8bfBXXXxmGvdTXZ8ywGqNmZzv+vXl7W8uOOTmZx95r5evJ/L38mRI5hW0TtjD6hiDW\n9u5K+/GPM/vzI46fsIiIOIUyYFLrylqm69q/FVGvTSK30d98eMPzDN0GxowZsHYthTffTPbNN+PZ\npctpg6+K1F8tWgRvvgm//WadNT52LHTr5rj35+imqHsy93Bn7OMs2raIPnlTiHvudhp563cpEZHa\noCVIqddKBim4HmZj0994e81MumQ9wi8vTKCRZ4m1w3/+sdJWH34IHTvCuHFw7bWnnPhd2fqr5GQr\nEzZjhnWsZXx8+UcZVVRNNEVduvUPhr5/H9lH85k94l2GXHC+Q8YVEZGKUwAmDpWXl8Lhw8vw9++P\nu3tTpzzTbrcT/088E356gP1bzqF/7pu896I/Pj5lBC12u9XK4t13YfNmuP12K311rDiqqvVXhYWw\nahX06ePwt+hwhUVFjH7jQ2L2PsrlwcP5bNzT+Hqob5iIiLOoBkwcKj//APv2fcCKFWGsWdOL7dsf\n59CheIqKSq+jqq7c/FwmLp7ILd/diutvTxK5L5bLe2/m888TiYlZTHJyyqk32WxWf4n4eOxxceSl\npmKGh8N118HPP+Pt5VWl+itX17KDr+zsCrcrcwpXFxc+un80i4f+zfLVWYQ825nvNi2q7WmJiEg5\nHJIBMwwjCngNK6CbaZrmCye97gt8ArQCXIGXTdP8sIyxlAGrQ4qK8jh8eDmHDv3IoUM/kpOzGT+/\nfvj7X07TpgPx8joXo4rnOxZbu3ctI+ePpEPTjqTHvEMLXz/69/8RX9+KLh3+b/nSq+AA1xzZgv/s\n2VBYSMbIkSxo0oFct2YOqb967DHrzPEHHoCbbnL+rsrTOXwYrrhnEWtC7mBo18t5d8jLyoaJiNSw\nWluCNAzDBdgCDABSgARguGmam0pc8yjga5rmo4ZhNAM2A0GmaRaUMp4CsDosP/8ghw79THr6QtLT\nF+Li4o6//0CaNh2Iv/8A3Nwq/hd+YVEhL/z+Aq+teI3/u+xVvnjyJrw8Dd5+O4N58yq2dFhmndfI\nSGwrVsBbb2EuXoz9hhsw7r0XW8eO1Xr/pgk//givvAJ//gn33AN33QVNnbNKW66iIpj8fCYv//Vv\nGnddSOzwj7kk7JLanpaISINVm0uQvYCtpmnuNE0zH5gLDD7pGhNofOzfGwMHSwu+pO5zdw+gefMb\n6dBhJn367KZTp2/w9j6XlJR3WL48hHXrItm16wWyshI5XSCdmpVK1OwoFv6zkITb1/DTKzdTkG8Q\nEwO+vqe2boDD2O32E47ysV47sYWFt7cvBQXe5OTmwiWXwOefY6xbh0dAALbISKsd/sKFVV5HNAyr\ns35cnHUw+Nat0KkT5OZWaTiHc3GBpx735cvbpnN03jsMihnOfxf/l4Ii/e8mIlKXOCIDNhQYaJrm\nnce+Hwn0Mk3zvhLX+AALgA6ADzDMNM0fyhhPGbB6qrAwm4yMeA4e/IH09B8oKsojIOAKmja9En//\nS3Fzs2Lw+KR4bv7yZm7rehtPXjKZhx5w448/rHYQxeVZJZcVjxzZDbjQuHHIKcuIldrpmJtrtcR/\n/XXIz4cJEyA6+n8PraLMTPCtgyt9//wDV9ywj6NRtxDS+ghzrv+UML8wpz2/JnZ+iojUNbW5BFmR\nAGwo0Nc0zYcMw2gD/AiEm6aZVcp45pNPPnn8+4iICCIiIqo1R3E+0zTJzd1yLBj7nszM5TRu3Jt1\nmR68nriKqVGfMLDtQKZMsY4Kio+HkzcmFjdQnT9/JX5+l5QZYFW6z5ZpWg989VVYvhzuvBPuvhuC\nq14bVpr8/FM6YzhdZiaMuKmIzf6vktn5RT64diZXt7u6xp/r6N5nIiJ1RXx8PPHx8ce/nzJlSq0F\nYBcAk03TjDr2/STALFmIbxjGt8Dzpmn+fuz7n4GJpmmuLmU8ZcAaoMzcVJ79cShNzS30beaKza0x\ne/ZczaxZV/P++xfRokXpGZKKtpKocrZl61Z44w3rQPBrroEHH4QuXar8Pku66Sbr+KMnnnDYkFVS\nWGhtHpi9dBmFQ4YxpsctTImYgquLa408r7L910RE6rParAFLANoahhFqGIYNGI613FjSTuBSAMMw\ngoB2wHYHPFvqgaSMJPp9NJB9RW2YcNUuLuqbwr59n/Hzz0157LFH2bYtiA0bhrFv3yfk5x884d6K\nHuVjs9nw8/Or/F/w555rtcHftg3OO8+qEbv00mrViRV7/3248EKIirI6YyQmVmu4KnN1hRdegKfv\n7EvBtDV8n7icgZ8MJC07rUaeV2ZdXk5OjTxPRKQ+cmQbitf5XxuKqYZhjMXKhE03DKMl8CHQ8tgt\nz5umOaeMsZQBa0B+3/U7139+PRMvnMiE3hMwDIOlS2HoUCvG6dYN8vL2kZ7+HQcOfENGxmJ8fLrR\nrNkgAgIG4e3d1rnLWXY7xMbCSy9Z3z/0EIwYYfUcq6KcHHjvPSsIGjIE3nmn8mOkpaWRlJREWFgY\ngYGBVZ7LkiUwbEQhPSY+zkaXWBYMX0DnoM5VHq80yoCJyJlEnfClzvlsw2fc8/09fDzkY6LaRgHw\n119Wgmn2bOufJy8dFhbmcujQzxw8uICDB7/Bza0pzZoNpkmTq3Bx+ReNGvk45y/x4n4TL70EmzZZ\njb/uuAMaNy7/3jJkZVlZsL59K3ffnDmxjBkzHpstDLs9iZkzpzFixLAqz2PTJivR1/mmT/nddwLv\nX/M+gzucvHG5elQDJiJnCgVgUmeYpslLy17izVVv8u2Ib+nSwiqA2r3bCj5eeMGqjyrvL2nTLCIz\ncxUHDnzFwYNfU1CQSbNmg2nWbAh+fpfg4uKkbMoff8CLL1p9J8aOtXZPNm9e5eEqU6+WlpZGaGgH\ncnOXAOFAIl5ekezcualambD9++Hqq6F51wTWdRjC+J7jefSiR6vdVLck7YIUkTOBAjCpEwqLCrn3\nh3v5fffvfHfTd5zla53LuHXrAQYObMQttxTy5JM+VVqmys7exIEDX3HgwFfk5m4hIOAqmjW7jqZN\nB+LqWr1WEhWyfTv83//B3LlWBPnvf0NYWKWGKC3oDA4OZsYMuPlmaNToxOsTEhK47LJxHD685vjP\nfH278dNP79GzZ89qvZ3sbOskp4zCPRy+8hq6h3Rl+qDpuLuWvXVTQZWIyIl0FqTUOnuhnZu+vIlN\nBzbx622/Hg++Pvroczp02EJy8jxeeCGUOXNiq1So3ahRB0JDJ9G9+wp69vwLX98+JCe/xbJlLVm/\n/npSU+dQUJBZc2+wdWuYNg02brSWInv0gFGj4O+/K3S73W4nLi4RH5++BAf3w8enL3FxiaSn21my\nBNq1swr3Cwv/d09YmLXsCMUV/Ink5+8krJKBX2lzyc/P4JVXknDNKSL9lR9YuWEjl826jMy80j/D\n5OQUYmIWExt7mvM5RUSkQhSAiUNk27O5Zs412AvtfH/z98fPINy3L43Roz0oKjoPu30kublLGDNm\nPNnZ2VU6KLuYh0cIISHj6dr1Z3r3/oeAgCtJTf2E5cvP4q+/BrFv30fk52fUzJsNCoLnn7c6nXbo\nAJGR1q6CNWtOe1tZQaeraw5z5lj90GJirJYVCxda9wQGBjJz5jS8vCLx9e2Gl1ckM2dOq9byY3Eg\nNXv2Gp599nNuvLGIS/q04ODbS8nd24SLPriI5MzkE+4pK3g8+WQCERGpGAVgUm3puelcGnMpIY1D\n+PyGz/F08wSsOvZ77y3C2gRb3LMrHHf3UFJSUoiKCicraxkpKUvJylpGVFR4lZa1bLZmtGw5mvDw\n77jggl0EBt5IWtp8VqwIJTHxKvbunUV+/iHHveFiTZpYDba2b4d+/WDwYLjySli2rNTLy2up0auX\n1R/22WetMyYXHGvmMmLEMHbu3MRPP73Hzp2bqlWAXzKQatq0O25undm48SBDh+YzdIiNTS/H0rfx\n9Vz4wYVsPrD5+H1qLSEi4liqAZNSVbTW50DOAS6LuYzIsEhevvzlE4q4n34aPvssn23bzuXo0QVY\nReRr8PS8lG3b1hMSElKjNUUFBUc4ePBb0tI+59Chn2nS5CKaN7+RgIDBuLv7lT9AZeXlwaxZMHUq\ntGljdWC95MSDsCu6O9But851dHNz7BRLNrbNz7cTH7+Y3Fw/+vfvhItLEfHx/zBvXldue3MWH+95\nnG9HfEv34O5qLSEiUgYV4YvDVDRISMtOY8DHA7jq3Kt4bsBzJwRf06dbux1//x2WLLHaKLi4BGO3\n5xEdPZa+fTs6tTVBcTC2f38sGRmL8fOLoHnzYQQEDDp+RqXD5OfDJ59YqayQEHjySWuZ8tjnU5uF\n7CcHUrt3b2bVqgX07NkdT087UVHhbNoUzIgRcOer85meMpbPbviMiLAItZYQESmFAjBxiIpmOlKz\nUhnw8QCGdBjCU5FPnRB8zZ9vHa24dCm0bWv9LDk5mXfeWUBo6NW0aHF2rWZQCgoOc+DA1+zfH8vh\nw7/h738ZQUEjaNr0KlxdPR35IPj0U3jmGatubPJk6N//eCBWFQsWQGAg9OlT9WmdHEj1798Bf3+/\nEwLCFSusFdVxLyzhnbRhfDD4A65ud7V2QYqInEQBmDhERc5e3J+9n4gPIxjWcRhPRjx5wv0//mi1\nU/jhB+jevXLj1ob8/HTS0r5k//45ZGX9QUDAIIKCbsLPbwAuLg5a/ysosFpXPPUUtGwJU6ZAFQ+Y\nnz/fqg+LirJWOqtai1+RQOrPP+GKK2D0f1cxI/sapl05jaHnDa3aA0VEGii1oRCHKK9QPD03nQEf\nDeCa1tfwaN9HT7j3t9+s9ljz5p0YfFVk3Nri7t6U4ODb6dr1Z3r2/JvGjbuxY8cTLF9+Flu33sfh\nwyuo9i8Ebm4wcqTVrmLMGLj9dmtJ8rffKj3UkCFWFww/P+jY0TrWqGTbioqqyNmZXbpYmwJipvbi\nVrc47v7+bub8VeoJYiIiUknKgMkpyqr1OXz0MJfMvIQWR8/l2kb34O6ee/y1NWusbMknn8Dll1du\n3LooJ2cb+/fPITX1E0yzkKCgkQQF3Yy397nVH7ygAD7+2MqIdehg/bNXr0oPs3493HWX1T9s5szq\nT6ssSUnWyul149bzqevlPDfgOW7temvNPVBEpB7REqQ41MlLVFn2LC7/+HI8M5px51kxNGrU5Hgd\nV/fuA7jiCnfeeQeuvbZy49Z1pmly5MgaUlM/Yf/+uXh6hhIUFE3z5sOx2ZpVb3C7HT74wCrW79bN\nqhXrfPqDsU/+/IqK4MCBap2MVCG7d8OAAXDlqE184X0pz/Z/llu63lKzDxURqQcUgEmNySvI4+o5\nVxPkGcSFB2/nrJCI46+tXLmG998/n9dec2H48NqbozMUFRVw6NCPpKbGcPDg9/j5XUKLFqMICLga\nFxePqg989Ci8+65V1NW/v1Ujdu6pmbbaziDu3WsFYZE3bGK+b39evOxFRoaPdNrzRUTqItWASY0o\nLCoken40vh6+zLhmBjb3o8fruP76K4s33ujE668XNvjgC6CgoAhX1z60bfshffrsolmzIceOQgph\ny5bxZGYDn8PsAAAgAElEQVSurFq9mKcn3H8/bN0K551nbXEcNw5S/nfUT2U70WdkQGpqVd9p6Vq2\ntGrCfpnXgWszf+KRHx9h7vq5jn2IiMgZQgGYlMk0Te774T7SctKYfd1svDy9jnevX7p0HVOnuvPG\nG1kMG1b24c0NxcnnIKamZtGy5a107bqEHj3WYLMFs3HjSBISOrJr14vk5VXhnMTGjeE//4HNm8HX\nFzp1gokTIT290p3oFy+2VjM//tg6kcBRmje3xl467zwGZy7igYUP8MXfXzjuASIiZwgFYFKmp5c+\nzbI9y/h6+NfHjxcKCQnGz28As2aFM2eOC7feGlDLs6x55WWfPD1DCQv7D716baF9+xnk5m4lIaEj\niYlXsn//FxQV5VXugQEB8OKL8NdfcOgQtG+Pz7RpeBQdqvAu0uuug7g4eOUV63SkXbuq9RGcoDgI\n+3VeJwZl/sDd39/ND1t/KPc+u91ORkaGzo8UEUE1YFKGpTuXMvrr0fw++neCfIIAK5PyyivW1/z5\nVdq4Vy9VpYdZYWEOaWnz2LdvFtnZf9G8+c20bDkaH5/wyk9g0yZ4/HEKli9n2cBhbOo1CFdbXoVq\nwPLzrRMJXn/dqvW/887KP74s+/dDZGQR3Qcv5fsm1/Nsl2e5rvt1pR4UXtv1ayIiNUVF+OJQpmmS\nnptOgLeV4bLbre72q1bBN99Aq1a1PEEnqu45iLm529m3bxb79n2IzdaSli3H0Lz5cNzcmlRuIitW\nUPTww5gHDlA0dSrugwZVuKv+hg2wcCE8+GDlHnk6yckpxMZu4qmnupLZ7FEYOhPb542Y9ez0Ew4M\n1zmSItKQKQCTGrN9O4waBf7+1sk6jR18dGJ94IgMjmkWkp6+iL173+fQoZ8JDBxCy5Z34Ovb54Sj\nnMoZxIqAJ060quJfeunUrrdOUBxUFRV15O67p5Kf/wq0mwmDnsBjbgG7/9h6PBNWV09BEBFxBO2C\nFIczTXjvPejd26op+uqrMzP4Aqv2LTq6P8OGhRMd3b9Ky2eG4UpAwBV06jSP3r034+39LzZtupWE\nhM7s2fM6+fnpFRkEBg2y6sOGD4drroHo6HKLvBxdf1W8KeDIkVzc3d0BD9gyGha9gP3GHFZuXHn8\n2rp6CoKISG1SBkxKlZxsnZpz4IC1k+6882p7Rg2TaZpkZPzC3r0zOHjwO5o1G0Rw8Fh8fftWLCt2\n5IiVBXv7bRg7FiZNsnZQlnC67N2qVbBzJ9xwQ+XmXTIDds89E7HbJwGHgD64XBhJ2xsPsOz2ZceX\nsFUDJiINlZYgxaG2boXYWGuly73hd5moE+z2A6SmfkxKynu4uNgIDh5HUNDIitWK7dljtbBYuNBq\n5DpmDLi6llt/tWaNdX5nz57w1lvWGZMVVRxULVu2gZiY97DZPCgoaISX1xIinpnMXo9f+HnUzzSy\nNTr2/urXKQgiIhWhAEykgbCyYvGkpLzLoUOLCAy8nuDg8TRufH75N69ZAw88YHVifeUVMnr0KLf+\nKicHHn4YvvsOPvoILrmk4nMtDqqys7NJSUkhLCyM3bsDGRhlcv7k0bj77efr4V/j5uJW2Y9BRKRe\nUAAm0gDl5e1j374PSEl5F5stmJCQ8QQG3oirq2fZN5kmfPklPPwwRR078kWfIZhtri93B+L338Pt\nt8M998Bjj1Vv3r/9BtcOzafNf6+hS2gr3rv6vYpvNBARqUcUgEmt0dJSzTPNQg4e/I7k5GlkZf1B\nixajCQ4eh5dXWNk3HT0Kr71G4YsvsqHXAFZHjcZsbJy2/mr/fqsR/8UXV3/OCxfCzaOPEPjwJYzs\nNpTH+z1e/UFFROoYBWBSK1Rc7Xw5OVtJSXmHffs+pkmTvoSE3Iu//6VlZ5j27qXw0UcxFi6k6Omn\ncRs9GlycswE6Nhbu/89eXMf2Yerlz+jwbhFpcBSAidOVVeA9bNhFFBQUKCNWwwoLs0lNnU1y8puY\nZgEhIfcSFDQKNzef0m9ISIB777WWKN9802lHGbz9Nrw4629ybozksxvmEnlOpFOeKyLiDArAxOlK\na7C5YcOXNGoENlszZcScpLiVRXLym2RkxNOixa2EhNyNl1frUy8uKoJPPrHaVURFwdSp1uGO5fjw\nQ+jY0dotWRWTJ8PsZUs4fNlwfr1tKe2bta/aQCIidYwasYrTndxgMzPzAJs2/YO//yWlHlotNcMw\nDPz9I+jUaR49evyBYbiyZk0v/vrrWg4diueEX2hcXKxjDTZtso426NjRyoYVFJz2GY0bw1VXwauv\nWgm0ynrySbisbSTN1j3PVZ9ezYGcAye8roO6ReRMowyYVEvJGjC7fT/Z2TY6dhx0/HUdOVM7Cguz\n2bcvhuTk13Fx8eSss+6nefPhuLh4nHjhhg1w331Wx92334aLLipzzB07rOb7zZtb7SqaNq3snGDo\nUNgaOomArsv4MfpHPNw8VEcoIvWaliCl1hTvgnRzcyM29jcdulyHmGYR6emL2LPnVbKzEwkOHk9w\n8DhstsCSF8Hnn1sndQ8YAC++CEFBpY5nt8Ojj8K8eTB/PpxfgdZkJeXkwIBLi0i/9AYu6ObD9Cum\n88knS/RnRkTqLS1BSo063RKRzWbDz88PHx8foqLCycpaRkrKUrKylhEVFa6/SGuRYbgQEBBFly4L\nCQ//kaNHd7JqVTs2bx5Ldvam4ovgxhth40YrvdWpk9UWv7DwlPFsNnj5ZXjttcp1zS/m7Q3ffuNC\n0RcxLF6/nqm/TqWgwBtvb99jr/tSUOBNTk5Odd62iEidpwyYlKuyS0TqC1a32e2pJCdPIyXlHXx9\nL+Dssx+mSZOL/tfGYsMGGD8esrPh3XehRw+Hz2HHDrjg8j3k39qbm5vcwUWBD1Y4A1bVP1/6cyki\nNUFLkFIjyjtLUOqvwsIc9u37mD17XsHNzZ+zz36YwMAhGIartSwZE2MdBnrddfDss1VLeZ1GQgJc\ndttKGHE1DwY8TZBxXrkBflXrxVRnJiI1RUuQUiNycnK0RNRAubp6ExIyjl69NtKq1ST27HmZlSvb\nk5z8DoVFR63dkhs2WDskO3a0uqqe5pcj04QlSyr+/J494aNne2MsepX3s1/k0kEhREf3LzMwstvt\nxMUl4uPTt1K7bKt6n4hITVIAJqd1cquJnJxM3NysZRxpGAzDlcDAIZx//jI6dPiQ9PQfWLEijKSk\nZ8hvbMB771lF+s88A1deCdu3lzrO/v0wdqzV67Wisc3gwTD5upHkJNzIrd/fjuFa9i+RVf1lQL9E\niEhdpABMTstms6mw/gxhGAZ+fhfRufMCunZdTG7uNlaubMO2bQ+R1z0U/vgDIiKsDvovvgj5+Sfc\nHxQEq1bBzp0QGQkpKRV77oQJMLz5s2xM9OShhQ+XeV1VfxnQLxEiUhepBkwqRAXMZ46S/62LilLZ\ns+cV9u37iMDAoZx99iN473OFceOslNeMGae0xy8qskrG3n3XWrU8TWux4woLIeraQyR07cVrQ//D\nTeeNKPXPm2rARKSuURG+iFRbWYGK3X6A5OQ3SUmZhp/fAEJbPYrPgvXw0ENWd9ZnngGfE8+g/P57\neOcdWLDA6nRRnsxM6Ba1gb0DL+GB5v/lbJfzSw2WtAtSROoSBWAiUi0V2fFaUHCElJT32LPnFRo3\n7kErv7tp8p9P4ZdfrJRXVNQJY5pmxYKvYlu22Dl/xHxcr36It7qswSPfS7tuRaROq9VdkIZhRBmG\nsckwjC2GYUws45oIwzDWGoax3jCMSuyVEhFnqEixuptbY1q1+je9e2+nadMo/t4zlnUPJJMx4x64\n6y4YOdI61uiYygRfAM2b5zC+f3vsq27j6Y3D8PDyrlTBvM6UFJH6otoBmGEYLsBbwECgIzDCMIwO\nJ13TBHgbuNo0zU7ADdV9rog4VmWK1V1dPQkJGU/v3lsJCrqZzb7vsfbzYNI75mJ26ghz51bp1G5v\nb286dNjHba0nsmu7J9O2PlDhgvnk5BRiYhYTG5tITMxikpMruAtARKQWOCID1gvYaprmTtM084G5\nwOCTrrkJmGeaZjKAaZoHEJE6pawdr0CZWSUXF3datryNnj03Enz2eLYN+Ju1sc05OO8RzGsHQ3Ly\nKfeMHg2ffnr6OfTo9ht9Ul4ift835LbZUe7yo3p9iUh9U+0aMMMwhgIDTdO889j3I4FepmneV+Ka\nVwF3rAyZD/CGaZoxZYynGjCRWlSyWD0t7UCldg+aZiFpaV+QtOMpXFMzCHs7i6bDXsG4bfTx9cjE\nRKv/1/Dh1m5Jl1J+DbTb7Rw5ksPVd/zDus5RJNy9hE7NO5X53IyMDGJjEwkO7nf8ZykpSxk2LBw/\nB3fwFxEpqao1YG41MZkyntMN6A80ApYbhrHcNM1tpV08efLk4/8eERFBRESEE6YoImBloWw22wlZ\npeKi/Li4ZURHNyszI2UYrjRvPozAwBtIS/uS7f6PkbTjPsLumUbTR77ECA0lPNw6hmjoUOuUo08+\nOWUDJTabjYAAGz980J1/DX+ZAe7XsfXh1fh6+Jb63JLLp8VzVa8vEakJ8fHxxMfHV3scR2TALgAm\nm6YZdez7SYBpmuYLJa6ZCHiapjnl2PfvAz+YpjmvlPGUAROpAxyRVTLNItL2fcbOP+7HJeUgYV53\n0fSm1zBcXLDbrbr91ath0SKrkWtpNm+Grv8ZxwX9D7B43Of/OzT8JOr1JSK1odbaUBiG4QpsBgYA\ne4FVwAjTNDeWuKYD8CYQBXgAK4Fhpmn+Xcp4CsBE6gBHHsRumkWkrX2NpC2P41bgQViPafi3HwEY\nzJ1rZcNON+SXC44yfNFFPH7NzTw58IHTzlm9vkTEmWq1D5hhGFHA61hF/TNN05xqGMZYrEzY9GPX\n/Bu4DSgEZpim+WYZYykAE6kjHJ1VMvPz2D9rFEk+87D5t+acC2bg539Jhe59YEoSb+f1ZtHtXxLR\n+sIqz6EiFMjJmSItLY2kpCTCwsIIDAys7enUS2rEKiI1oiaCkaK/1rH/rWtJumI/XsE9OafDi/j6\n9j79PUXQ99bvWB82ln8eWUOQTxlrltWkpUw5U8yZE8uYMeOx2cKw25OYOXMaI0YMq+1p1TsKwESk\nfsnPp2jqM+z7+xV2jrHhE3Qh55zzLD4+nTl8GDw9wcPjxFsyM6H17f+hebeV/PVIHK4urg6dkiOX\nXUXqsrS0NEJDO5CbuwQIBxLx8opk585NyoRVUq12whcRqTR3d1z+O4Xgh3+h18Mt8P8yiT/XDeDv\nv2/m1VcPcvnlkJ5+4i2+vvDL5Cls+6eA8bHPOHxKFTkNQKQhSEpKwmYLwwq+AMJxdw8lKSmp9iZ1\nhlEAJiK1q1s3XFf8wVm5V9J7pEGjXQYDBvyLtm0X0adPPv/8c+LlHc9z5e3+nzJz3XvMX/ezQ6dS\nmdMAROqzsDBr2RESj/0kkfz8nYSFhdXepM4wWoIUkbrjt9/gllvIv7Q3uyY0Z9pMN2JinmDePLj4\n4hN7gN046WcWuEaz7eE1nOXX0mFTUA2YnCmKa8Dc3UPJz9+pGrAqUg2YiDQMWVnw0EOwaBF5H/4f\nH21OYeLE4cTEfMsVVwzD1dXKRhUUwLm3P4UZtphtT/yEm4vj+kprF6ScKbQLsvoUgIlIw/Ltt3Dn\nnRAdzbrrR4P7f8nJWUZY2JO0aHEbLi5upOwtpPUTUQzp2Yc5dz5V2zMWkTOQAjARaXjS0qwgbPt2\nmD2bzFY5bN8+Ebt9H61bTyUgYBALFqdy3cJuxAyJ4aY+A2p7xiJyhtEuSBFpeAIDsc+dS84dd2BG\nRuI7azldOv9EmzYvs2PHf1i79mIieuxgTMDH3LpgFLvS99X2jEVEKkQZMBGps0oWxPunb+PaL97G\nFhAAH37Ifrcg0tPncujQJBo37s24j4LYadtM0tMLHd4fTESkLFqCFJEGpbSmqNmHf2XUnpW4TZ/O\n61ct4v1V4Xz7bS7wKrt2vcKXGz04ZN7Ch2Ofq+3pi8gZQkuQItKglNYUNd9sTNaDD8L8+dy3+FpG\nNZrHxRd5kJX1GL17/81VHS7j2nOmsuDX8RQWHq3ldyAiUjYFYCJSJ522KWqfPhh/ruPhdl/zXMFE\n+vfLZ/Xq5lza70N+3zaN9Skfsnxle/bvj0UZdRGpi7QEKSJ1VoWaos6ZQ9xdXxFdMIv45Z6c18mF\ndvc9QNtWCTwdmYuLi402bV6lSZMLaudNiEiDphowEWmQKtQUdccOtl43kTbNj+Dy0Sz2u/tz9pQ+\nRHcczTODG7N9++P4+fWjdeupeHq2cu4bEJEGTTVgItIg2Ww2/Pz8Tt+R/pxzODfhU1x69YBu3Wie\nsIS5Q2P5YMcUVu/pSu/em/Hyasfq1d3YseMJCgqynPcGRERKoQyYiDQsv/wCI0fCsGHc2qwjsQde\nJGXyavx9GnH06G62b3+UjIx4Wrd+jqCgkRiGfg8VkarTEqSISLGDB2HMGPbvyOK6zr5khjYj8dnp\nx18+fHgF27ZNAKBt29fLrQ/T2ZAiUhYFYCIiJZkm90b8xe7lu/GOvIvQka/wfPT1JV4uIjV1Ntu3\nT8LffwCtWz+Ph0fIKcNUaCOAiJyxVAMmIlKSYfDyj+F4RPYl+Zc5nDX1Llav3VTiZRdatIimV6/N\neHicTUJCF3bufO6E/mF2u524uER8fPoSHNwPH5++xMUlYrfba+MdiUgDogBMRBosmw0+/d6fDjf1\n4s0dSyiIvBT7H2tPuMbNzYfWrZ+le/dVHDmSQEJCRw4cWIBpmqU2gy0o8CYnJ6c23o6INCAKwESk\nQXN1hXdnujPo3o5cWRDP3ouuhPffx56XR0ZGxvFslpdXazp1mk+7du+yffskEhOvwDB2l90MVkSk\nGlQDJiJnjHc+OsCbSzsQ/2NjjrQM45cRj2A2Nk6p6yoqyic5+U127nyOxo1vZM2aS8nPb6YaMBE5\nhYrwRUQqYOIHX/LWugms+rMfoVtX8fuEWexplkV0dP9Tdjjm5e1j+/ZJHDr0Iy1aPElIyC14eHjU\n0sxFpC5SACYiUgEZGRl0fPh+7O5H+cHzGjrPvJ+VV99C+FuP4+fvX+o9hw8vZ+vWu3F1bcy5576F\nj09nJ89aGjK1OanftAtSRKQCvL29eeT8oWTY1vOoaz6Lnoij49IvaTxuHGRmlnpPkyZ96N49gebN\nh/PnnwPYuvV+CgoOO3nm0hAlJ6cQE7OY2NhEYmIWk5ycUttTEidRANZApKWlkZCQQFpaWm1PRaRO\ns9lsXD+4O3f6P8xPxiOMfT2UhU/9hmuTJtCjB/z5Z6n3GYYrISF30bPnBgoLs1i16jxSU2ejjL1U\nldqcnNkUgDUAc+bEEhragcsuG0doaAfmzImt7SmJ1GkhIcG8+ugIBvk9wqELHmXCxJZ8deV0eOIJ\nuPRSmDkTygisbLZAOnR4n44d57F798usWxdBVtZ6J78DaQjU5uTMpgCsnktLS2PMmPHk5i7h8OE1\n5OYuYcyY8cqEiZTDZrMxf9JDNA5JJnjQNO66Cz51GQlLl8Krr8Itt0B2dpn3N2lywbFlyRv5889I\n/vnnYR3yLZXi7e2tNidnMAVg9VxSUhI2WxgQfuwn4bi7h5KUlFR7kxKpJ1xcDBZPmMX6ps9yy6Or\nefhh+GD5v2DlSjAM6N0bNm0q835rWfJuevZcj92eSkLCv0hLm6dlSakQm81GVFQ4WVnLSElZSlbW\nMqKiwk9biP/DD7BzpxMnKTVGuyDrubS0NEJDO5CbuwQrCEvEyyuSnTs3ERgYWNvTE6lxjthB9tTc\n73lqzV18OWAZG/8MYuJEN2sJcuZMePRRePNNGD683HEyMn5hy5bxeHq24txz38LLq02V5iNnlsr8\nGW7fHubMgW7dnDQ5KZfaUJzB5syJZcyY8bi7h5Kfv5OZM6cxYsSw2p6WSI1z1EHZyckp9HnqMY6Y\nGbzYcyxXXtnlf+OsWwc33AADB8LLL0M5fcCKiuzs2fMqu3a9xFln3U+rVg/j4qLeYVJ927bBxRdD\ncjK4aP2qzlAAdoZLS0sjKSmJsLAwZb7kjGC324mJWYyPT1+8vX3JyckkK2tZqQ1VT/f/R/E4uHXj\nrrUDuMjlPm7uePaJ4xw+DLfdZv3N99lnEBpa7vyOHt3J1q33kZOzmXbt3sHfP9Jh713OTG++CWvX\nwgcf1PZMpCT1ATvDBQYG0rNnTwVfcsao6A6y8nYJF4/TvGlzHgz9lHj3x1ifkn3iOE2awLx5cOON\n0KuXVYhTDk/PUDp3/po2bV5g06Zb2bhxFHb7/uq/cTljffcdXHVVbc9CHEUBmIjUSxXZQVaRXcIl\nx7mwbWd65Ezinf3PYbi6A5CUBM88AyYGPPQQfPEF3HGH1bKisLDceTZrNpiePTdgswWRkNCJlJQZ\nmGaRYz8MafDsdli9GgrDFrJiz4rano44gAIwEamXKrKDrCK7hE8e5/bO5+FNINe8/DxgJb8WLIB7\n7oGiIqwinNWr4ddf4Yor4MCBcufq5uZDmzYv0aXLj+zdO5O1a/upd5hUiN1uJyMjA7CzLeko/156\nB0UK4BsE1YCJSL12uh1kldklXHKcjbsO0W36+bwdGcu4Ky7m8GEr1urUCd5991gBdEEB/Oc/1pa0\nzz6zWlZUgGkWkpIynaSkJ2jZ8g5CQ/+Lq6uXYz4MaVBO3mSyI/h3NmSuZ/6w+bU9NSlBNWAickay\n2Wz4+fmVun0/MDCQmTOn4eUVia9vN7y8Ipk5c1qptZIlx+nSNohJ583g3sXR7E7LoEkTWLgQNm+G\nMWOOrTy6ucHUqfDGG3DNNTBtWpnd80sqPtKoR49EcnP/ISGhE+npPzrio5AG5ORjivDqwOur32BK\nvym1PTVxEGXARKTBq+ou4fP+fQ9HXQ7yzwufYhgG2dkwaBBMmGD987ht2+C666BLF3jvPahEJ/OD\nB79n69a78fXtS9u2r2CzBVXinUlDlZGRQWxsohV8AbP2PEzakU18c2cMfn5+tTw7KUkZMBGRMlR1\nl/Avj7/EnvxEJnwQA0CjRlYm7ITgC6BtW1ixwuqef8EFsHVrhZ8REHAlPXuux8MjmISEzuzdO1Od\n9OWEzSFp9l38eGAm1/oN1zFFDYhDAjDDMKIMw9hkGMYWwzAmnua6noZh5BuGcZ0jnisi9VNxYbHd\nbq/tqZxWoL8XM6/4lLe2PsSyTf8A1spjqby94aOP4K674MIL4euvyx2/+HMoLHSnTZuXCA9fRErK\nu6xbF0lOzmYHvhOpb0puDnl50Rtc5HEVw6+KJDfXdrojSqUeqfYSpGEYLsAWYACQAiQAw03T3FTK\ndT8CucAHpml+WcZ4WoIUacAc1b3emaKmvMqKI5+R+vxSPNzdy79h5Uqre/7IkfD00+DqesolZX0O\npllIcvLbJCU9xVlnTaBVq4m4uFTtiCWp/375ey2R3dqStDOP3IxmDB4MkybBrbfW9sykWG0uQfYC\ntpqmudM0zXxgLjC4lOvuBb4A1IlQ5Ax1cmGxj09f4uIS63wmbMFjE+CoL4NfebrU13fuhLy8Ej/o\n3RvWrLECsagoKNF3DE7/ORiGK2eddR89eqzlyJEEVq8+n8OHl9Xgu5O6bMK0hfyr+wE2/NGMiy+2\nWtEp+GoYHBGAhQC7S3y/59jPjjMMIxi41jTNd4BKR4ki0jBUtHt9XWNzd+H7sR+y6OAMYn757ZQl\n1JdegiFD4OjREjcFBsKiRdCjh/W1atXxlyryOXh6nk2nTl8TFjaFDRtuYMuW8RQUHHbK+5WaVdEl\n+CU7lrD1t3DatzyLMWNg/nyrB7A0DGVVMzjaa0DJ2rDTBmGTJ08+/u8RERFERETUyKRExLlKFhYX\nn994cvf6uqpv55bcffZ0xnwXTdqG/6ORa+DxpcNXXw1m5Ei49lrrL0mv4rZerq7w/PPW8UVXX221\n1L/jjgp/DoZh0Lz59fj7D2D79kmsWtWRc899k8DAIc7/AMQhKroEb5om//7uCfI3/czmfHdWroSz\nz66FCcsp4uPjiY+Pr/Y4jqgBuwCYbJpm1LHvJwGmaZovlLhme/G/As2AbOBO0zQXlDKeasBEGrD6\nWANWLC/PTsidd+Lpl8u0AXPJzT1y/ABwFxcbo0ZZjfG/+qqUThRbtlhpsgsugLfeIjn9UKU/h4yM\npWzefAeNGnXk3HPfwsOjfnxuYqnMAfJf/P0Fd09dxuHPXmb7doNg/aeus2qzBiwBaGsYRqhhGDZg\nOHBCYGWaZutjX+dg1YGNLy34EpGGLyQkmOjo/gwbFk50dP96E3wB5Obm8GCnW9hnricm8ZMTlg7d\n3ODjj6F5c6tNRUHBSTe3a2fVhGVnw0UXEZJvr/Tn4OfXjx49/qRRo46sXt2FlJT3dK5kPVLRJfj8\nwnwe+v4xslYO55VXFHw1VNUOwEzTLATuARYBG4C5pmluNAxjrGEYd5Z2S3WfKSL12+m619dl3t7e\nBDXNY1SjD5iX9SAb9q47YenQzc3qRPHgg2W0q/DxsY4uio6GCy7AtmRJmZ9DWXVCrq6enHPO03Tp\nspi9e2exbl2EWlbUExU5QB7gpcXvk7o5jE+m9mL8+NqYqTiDOuGLSIN1unMiq6p4CfX5xavY1/wr\n1j84n7CzQys/0NKlMHw4jB8Pjz127IDJE59Rfp1QyZYV99Oq1SNqWVHHlfffNj0rixbPtmNs4295\n87FutThTqaiqLkEqABORBqkma83sdjtpadm0f+pmLu3Yja/ue6aqk7T6hTVrZq1f+vlVqk6o2NGj\nu9iyZRx5eXto3/59fH17VePdSU073S8GlzwxhW0ZW9jz+mwM9QyoF3QUkYjIMTXdb8xmsxES4s9X\nt37IN3s+IHZlfNUGCgmB+Hho1Qp69oS//qpSqw5Pz1Z07vwdrVo9yl9/DWLr1vspKMiq2pykxpW1\nBP9t/D5+zX+D+fc8U2bwVV9OkZDyKQATkQbHWf3GLu3TnFv9ZnHLV6PYf+Rgmdft2QNDh8KRI6W8\naGZq1sMAACAASURBVLPBW2/BE09A//74fPNNheqETmYYBkFBI+jZcz0FBekkJHTi4MG46rw9caKs\nLLh5+lNcFXILvdqdU+o1yckpxMQsJjY2kZiYxSQnpzh5luJICsBEpMGpaLGzI0yfOJBm+28g8rXb\nyzxEOzjY6ssaFQWZmWUMFB0NP/2E2+TJDFv2BdkZS0lJWUpW1jKiosIrXMNmszXjX//6mPbtp7N1\n63g2bozGbj9QtTcnTnP7xM3ktf2cD0c/ziOPwOefn/h6fT1FQsqmAExEGpySBxlXJYipDFdXWPKf\n59iSupPH579X6jUuLjBtGoSHlxOEdekCq1fjk7qPW2OmMvyS5lVu1dG06eX07PkX7u7NSUjoRGrq\n7DIDRKldcXHwTc5jPNrv3zSxBRATYxIWlnlCcFVfT5GQsqkIX0QarJrYBVmWVz/ewsMbL2T5uCX0\nDO1U6jWmCffcA3/8Yf2l26RJGYMVFVld86dPh7lz4aKLqjW3zMwENm++HQ+PYNq1exdPzyrs2pQa\nkZ0NbSKXUTRkODv/vZn5n+fw+ONuTJr05wmbR6qyOUOcQ0X4IiIncWa/sQdGtaPX4RcZ+P5wcvNz\nS73GMKxyr549rQCsTC4uVk3Y++9bxWOvv25Fb8dUthDb17cn3buvpkmTfqxe3Z3du1/DauEote2J\nJ00K+/+bF694ClfTlTffPEq/fh6nLDM6M6srzqEMmIiIg2RkmJw14Sb69fLn+7unOWbQHTusIKx9\ne5gxg+TDmdVqr5GTs5XNm++gqCiX9u1n4OMT7ph5SqWtXQsR47+g1chnWXfXavamHKFdOx/ee88N\nPz/rmpSUpQwbFo7fsR84M6sr/9/encfZXPZ/HH9dY+Ywi30fMogoNSTUrTDSMpEliahJ0SLpbtHq\npmjffne7VkralNJNaexCUsiWPSJmssVgDM4s1++P79BglnPmnDlnZryfj8c8OnPmOt/vdb5D5+26\nru/n8oxGwEREgqxSJcNXA95m+qZpvP/jV/45aIMG8OOPEB5OVps2/PThVJ8WYkdENKZFi9nUrn0b\nK1Z0YvPm/5CZecQ/fRWPZWbCrXe4KdvlYV656iXKhJTh998jadZsNy5X3jePlNRdJORUCmAiIn50\nZYeK3Fz+MwZ/fyd/7N3qn4OGh8PYsRwZNIguzz/ImctnAIVfiG1MCNHRt9Kq1QrS0tazZEksKSk/\n+Kev4pHRoyGl8WhaN2hKp4adAIiLC2PSJKtpxtOEpiBFRPwsIwPOvOlFQs6ZxIZHfyCsTFiBr1m9\nGmrXhipV8m7jdrv5/sm3uezt/+Ovdr35tdejHDz8i88Lsffs+R8bNw6hSpV4GjZ8gbCwyoU+lhQs\nORnOa7MPhjRh3oA5NKvR7ISfa5qxZNEUpIhIMREaCrOeHErS5grcOWGkR6/5+mvo1An+zrueKy6X\ni1aDejFp+Iu4Nsyj3agOdD6/ps8f0tWqdad169UY42Lx4mbs2vWFSlYUoQcegMYDnqZXs2tOCV+g\nacbThUbARESKyJsf7uLetefzdf8P6XrO5fm2tdbZk/v772HmTGd7yLy43W7SUlOJevVVQt9/Hz77\nDNq390uf9+9fyPr1txEe3pDGjd+kXLl6fjmuOH74AfrdtZkjCa1ZfddqakXV8u4ABw9CVBTaKLL4\n0GbcIiLFjLVw+e2z+an2jfz+4FJql69dYPvhw2HKFJg1y6meX6Bp06B/f2dYZehQv3wwZ2W5+fPP\nF9i+/RViYoZTt+7dGFPG5+Oe7tLToWVLiBzQi26tWjKs3TDvD9K3L3TsCLff7v8OSqEogImIFEMH\nDkDMzY9Tt+0Clt8/nTIh+QcZa+Hxx2HSJFi61NkqskB//gnXXefsefTBBxyvYeCjtLT1bNgwiIyM\ngzRp8h7ly5/vl+Oerl55BT6e/wN72vVn7V1rCQ8LB2DMGGjVytkIIV9Ll0LXrrBxI0RGFn2HxSNa\nAyYiUgxVqADfPfQY69dn8dC3TxfY3hh44gn48EMPwxdAvXowbx7Uret8ki9f7lOfj4mIaELz5rOp\nU+cuVq6M5/ffh5KRkeqXY5dE3hbAzWnHDnjqmUzS2t/HC5e/cDx8HTkCjz7qYZ569FEYMULhq5TQ\nCJiISAAMezaZlw5ewPcDP6PTmXFFd6LPP4e774bnnoMBA/y2Vsjt3sWmTQ+QkjKPxo3foFq1q/1y\n3JIiKSnZpwK4/fvDrjpjOdhoLPNvmY/J/r188gmMGwfTpxdwgJkz4c47Yc0aCCv4rloJHE1BiogU\nY1lZcEHvaWw6dwAbH/iVmlE1i+5k69ZBr15wwQVOwSk/jpjs2zeLDRsGERkZS6NGr1KuXF2/Hbu4\nKsw+jDlLSSxZ4qLXDQexdzVhSr/JtIpudbxdu3Zw333Qs2c+HcjKgjZt4KGHoHdvP7878ZWmIEVE\nirGQEJj6+pVk/TqAzmP6kZnl/V6MWVkFt3G73aTUqoV7/nzniTZtYO1ar8+Vl8qVO9Gq1SoiI5ux\nZEkLtm9/laysDL8dvzhKS0sjIyOCiIgKQMEFcJOSkhk/fjYTJqxk3LjZ3HGHm1b3PcMVjS4/IXz9\n9hts2uQs68rXxInOf3v18sfbkWJCAUxEJEBq14YJd45k9RrLw98/4dVr//7bWd61eXPebXJ+8I//\n+meSnn4G7r/fKVExfryPvf9HmTLlaNDgCc4/fwF79vyPX39tw4EDv/jt+MVNRIQz7ZiWlvcWQce4\n3W4SE1ce3y7q5587cDBsJQuPvMczlz5zQtuPPoJbby1gRjE9Hf7zH3j+eSfFS6mh36aIiA+8XZjd\n5aoyDKz0KW8sfJ/EjdPZvXs3ixcvZvfu3fm+rmpVp/JAXBxs2JB7P3J+8EdFtSVx2ircCQkwezY8\n8wwMHAhebluUn8jIpjRvPou6de/nt9+6s2HDYNLT9/nt+MWFy+UiPj7Woy2Cco6WHTgAEyeGE9b1\nPu5ueTd1KtQ5oe1TT8GDDxZw8tdfhzPPdKr0SqmiNWAiIoVU2IXZ6ekQ230OWy7oDe9mUPZoQ9zu\nLYwZM5q+ffvk+9qxY+Gxx2DGDDj77H+eT0lJYcKElURH/1OQNTl5Hn36xFKpUiVITXUWcS9bBl98\nAeecU+j3nft72scffwxnz56vadjweWrWTDi+0Ly08GSLoJzrxcaNq8COCt+QfN4Qfr9/HVHhUd6d\ncPt2aNECfvoJGjf2wzuQoqA1YCIiAZTriFPiSo9GwsLC4OMnYzky9w6OdG3A/tSfOHx4DgMHDi5w\nJGzAAHj2WWdAZOXKf54vcJosKsqZ87r/fujQwSk+5cd/7IaFVeass97k3HMns337ayxf3oHU1JUF\nv7AE8WSLoGOjZWvWrGLBooP8efZgBje4nf1793tfwuL++2HwYIWvUkoBTESkELxdmH2yrKzNhP96\nGNLqwhUPALGEhcWwZcuWAl+bkOAU9Vy16p/nPJomM8ZJcD/84BzghhucSrF+VKFCay644Gdq1OjH\nihWXsXHjvWRk7PfrOYq72rWjmT79XzRKeIB9G/fw4h1f0qBBR4YOHcP48bNJSkou+CDTp8OSJU7t\nLymVFMBERArBm4XZualfvz7YD2HSf6HxVDj3edLTtzrPe6B3byc/5VSnTjQJCZfSp08sCQmX5j0d\nes458MsvUL68szfOL/5dQG9MGerUGUTr1mvIyjrEL7+czY4d47DWg9s4S4Fx4yA1ZCvLwt8ja+qX\npKa+SHr6RD7+eClZWc0KHik9cgTuugteew3CwwPXcQkoBTARkULwZmF2bqpXr86YMaMpxyWETHwW\nrnqCUaMfpbpHG0Dm36+CpskA54P9nXecgq1XXw0vvOBZnQuv+lKNJk3e49xzvyEp6U2WLbuYAweW\n+PUcxc2+fc6gVbked1B2RU3Y1wGIAGIpU6YGmzdn8OOP9fMfKX3xRWjWzPm9SKmlRfgiIj44eWG2\nJwu1c9q9ezeLFiXT74VfqdztOVbd/QsVy1UMQM9z+PNPZzitXDlnnVjt/DcNLwxrs9ix40P++OM/\nVK16NQ0aPIXLVYTFaIPkrrtgS9h3rIkZwo7H9nMkdQawG4jG5XqONm3epUqVv/jyy5jc/3ysWgWX\nXupMP8bEBLr7UgiqhC8iEmS+bFfz3XfQZ9wQLu78J9/3/4YQ4/0ExaJFkJQE117r9UshIwOefhre\negvefht69CjEQQqWnp7C1q1PsmPHOOrVe5i6df9NSEjZIjlXoC1dCld1SyP8gWa81+0d/v5lHwMH\nDiYkJBq3+yjXXns/kycPYNGivZx3Xq1TD3D0qFM49557nLV6UiIogImIBFFhtqs52bARbkanduKe\nrpcx6tLHve7DihUQH+/MKvbv7/XLHT/9BDfe6IzCvPyyc/dkEUhL28CmTUM5dGgtZ575ItWq9SjR\nZSuysqBtW6jS+1Eqxmzhs2s/A5wRzi1bthAdHc1LL1Xl6NEwRo8uk/tBHnnE2UZq0iS/7eEpRU9l\nKEREgsjXuyIBnhzposXGL3n5h/eZvH6y131o3hzmzIHhw536nYXyr385tcLS050F+osWFfJA+YuI\nOIvzzpvCWWe9yZYtj7F8eVyJXh/27rtwpPxqFme+z8tXvnz8+erVq9O6dWvKl6/DRx+V48EH8whf\n8+c7q/fffVfh6zShACYi4ge+3hUJUKYMfDWuFpFTvyThy1tZv2e91/1o2tT5LH/tNafSeqEmFCpU\ngA8/dKrn9+gBI0aAN/WrvFClypVccMEyata8kd9+68aaNTdy5MjWIjlXUdmxA4aPyCKk+yBGxY2i\nVtSp04tffAGXXw4NGuRygIMHnSHLd96BGjWKvsNSLGgKUkTET3xZA5bTkiXQcegYqnV/gV/vXETl\n8MpeH2PHDujc2clRsbFev/wff/0Ft90GycnOfpLNmvlwsPxlZBxk27YXSUp6k1q1biYmZhhhYVWP\n/9zbGxwCpW9f2NvwLfY3GMePA36kTMipo1zWOjmrQoVcftCvH0RGwvvvB6bD4ldaAyYiUgz4KySM\nGQMPzLqHC65YT+JN3xIaEur1MTIyINT7l53KWiccDBvmVGd/8EE/HTh3R4/uYOvWUezePZG6dYdS\nt+7d7Nix3y/h1t+mTYPbHviTwwkX8MMtP3BOdS+3ePq//4NPP4UFC1Tzq4RSABMRKWXuvCuDieWu\n4sbLz+Pl+P8GuzuwdauzofeBA87Qmp/3kzxZWtp6/vjjMVJS5pOc3IOsrFFERFTP9QaHYIyOpaXB\nuedZqtzdmR4tL2Z4++HeHWDmTGdbg59/hnr1iqaTUuS0CF9EpJR57ZVQGi+fwEeLpvDBsg/ybOd2\nu73fZ7AwYmKcXcAHDID27Z2yFenpRXa6iIgmNGs2gQYNPic8fBnVq7cmLGwMERHhJ9zgkJSUzPjx\ns5kwYaXnW/34wRNPQPVO48ko9xcPX/ywdy/essW52/TTTxW+TlMaARMRKcZ27YIWl63lUO8OTEmY\nSPuY9if83Nt1ZwsXQsOGUCuXMlRe2boVBg1y1oaNGQOtWvl4wLwdK/FRuXIIFSq8iDEb+PvvnnTr\n9hQhIWE+l/8ojCVL4KpeO2FwLNMSvqdl7Zaevzg1Fdq1cxbe33tvkfVRAkMjYCIipVCNGjDlg7Mx\nkz6m52e9+X3v78d/5na7SUxcSVRUW6Kj2xMV1bbAfQYXLnTqVW3Y4GPHYmJg6lRnPViXLjB0qBMs\nfJDXSN6xbZ/27cti06YR7NhxNzExS1m+/Fz+/PN1MjPL+FT+w/t+ws23WGKGDOLWlgPyDF/Dhzuz\njCc4etS5s7RVK6fgqpy2FMBERIqIN1OD+bW94AJ456EryJo9iviPurD38F6gcLXHHngA/vMfZwbR\n5xJfxjjTaL/9Brt3O2vCvvmmULUvCppGzLnR+HXX/ZsLL5zH2Wd/yqFDc2jY8HrgSeBgocp/5OTJ\n7+zppyGs1TjckZsYGTcy1zZbtjibCjRvnuPJjAznjsfKlZ3dBlTv67SmKUgRkSLgzdSgp22feALe\n2jyUs9r/yoz+0yCTQk+/ffcd3HwzjB0LXbv64x3jVIG9805o3NipBFu/vkcv83UXgc2bZ7J69dNE\nRPzKwYOX06LFw9Sv39rr7nvye1i+HDpduwVub82cm2cRWzP3Gh89e8L55zsl1AAnlN56K2zbBlOm\nQNnSsf2SaApSRKTY8GZq0Ju2I0ZAB/cLbFpTkdsm30ZYWBjx8bGkpi4kOXkeqakLiY+P9Si0dOni\nhLAhQ5yaYX7RsaOzH9JFFznDdo8/7twqWABfdxFo2PAyrrxyGueeO5+zz45m+/YrWbPmBvbvX4Sn\n/6D35PeQng63DMik2m038cglD+UZvqZOdfbUfvDB7Cesdcp3rF4NX3+t8CWAnwKYMSbeGLPOGLPB\nGHPKrSDGmH7GmBXZXwuMMef547wiIsWRN4HCm7bGwAdjylD7p0+YtWIdI+aMOGFqLiHhUq9qY7Vp\nA+vX+2FBfk5lyzpznMuWOQc/+2z48st8pyX9sYuAy+WiZs1YmjR5jQsv3Ez58i1Zu/YGli5txV9/\njSUzM/8w58nv4Ykn4Mj5/6VWTcP9/7o/1+McPgx33+0MAJYrhzPtOGCAs8fm1KlFtremlDw+BzBj\nTAjwBnAl0Azoa4xpelKzzUB7a21z4CngPV/PKyJSXOUVKEJDQ09ZX+Rt+AgPh2+/jqTMhG95/6cv\neGvxW7hcLipVqpTryFdBa5rKlfP13eahXj34/HP46CNn0VS7dk4IycWxRfaFGcnLTVhYJc44YygX\nXriRBg2eYteuiSxcWJd16wZx8ODSXEfFCvo9LFgAb01azq6zXmDcNeNyrXYPsG+fM7UbH4+Txnr2\ndIYYZ82CKlUK9X6kdPJ5DZgx5iLgcWvtVdnfPwJYa+3zebSvBKyy1p6Rx8+1BkxESryT1xM1b16D\nFSt25bq+qDBbGK1fDxd33YS9uR1jeo6mR9MeBfYhaNXjMzOdbYxGjHCmJ599Fho1OqVZURRTPXYN\n4ACVK0+hRo25lC1blVq1bqJGjT6ULVvnlLYnX6/9+yG21UEyBl7Ai11G0u+8fgWfeN8+6NbNuVv0\ngw8gLMzn92KtZe/e7ylbti5RUb7sLyX+FLRK+MaYa4ErrbW3Z39/I9DGWvvvPNo/AJx1rH0uP1cA\nE5FS4VigCA0NZcKEBfkuMi9M+Fi4ELrctgRuvIopN0ziknqXnHDuwi5snzoVoqOhRQvf3vcp7yUt\nDV55Bf77X7jmGqdOQ0xM4U7iYT9OvQYL6No1hL17v2DPnm+IiIilQoXu1KrVk6iomFz7fmOC5ec6\nNxDXNpL3unkwgbNkCVx3HfTqBc8/DyG+TTZlZbnZufNTtm17CWNCadz4VSpV6uDTMcV/ChvAim4z\nr1wYYzoCtwCX5Ndu5MiRxx/HxcURFxdXpP0SESkKLpcLl8tFSkrKKeuLUlKc9UXHPuSPtfVG27Yw\n5slW3Pbcp/QI6cmMm6Zxfu3zgdzXNKWkRJCSkoLL5co36KWlwRVXwHvvQffu3r3nfEfdIiKc/SQH\nDXL2QGzZEq6/Hh59FOrW9e5EHsj9GkThcsXStGk827YNZ8GCD4mM/JatWx8jMrIxtWv3omrVqwkL\nOxdwZlFn/j2Gqhet4tWrfs7/hNY6tSdGjoTRo50A5oNDh1azc+cn7NgxjsjIc2jU6GUqV74Mo/IV\nQTV37lzmzp3r83H8EcCSgJz7KNTNfu4ExphY4F0g3lq7L78D5gxgIiIlXc71RcdGYnypVZVTz57w\n11+X8+RXbxFvOjNvwFyaVGuS6zkPHtzGpEn7gYr5Tkn26uUMTF1zjXM337Bhng3i5LyT8Ng5ExMX\nkpBQ7cSwV6WKsy7s3nudEaLYWOdkDz0ETZr4fE2Oye+6u91upk/fQFTUAxjzBHv27GHnznepVGkb\nv/3Wk8zMA4SGduLrGU2ofsWrTLhuARFh+fy+9uxxbildt84ZmsxlirUg1maRmrqCffums2vX57jd\nu6lZsy+xsYlEReneteLi5IGhUaNGFeo4/piCLAOsBzoBfwG/AH2ttWtztKkHzAISrLX5lv7TFKSI\nlEZFvR7rqafg7Z8/wHQcyY8D51OvYr0Tzgn7OXgwlTPO6OLxlORff8G110Lt2s7e2+XL59+HlJQU\nJkxYSXT0P9slJSfPo0+fWCpVqpT3C//+G958E954Ay65xAlm7dr5pVBpXte9oL7u27eVB4dNoX7H\nYVxYqxzljJsKFVpTvnxrIiLOITLyHCIimmCzIhjefRXDF3cnKuEaJ1iGh3vUN7d7D4cOreLQoZXs\n37+QlJTZhIZWoXLly6he/VoqVeqA8xErxVnQ1oBlnzweeBXnrsox1trnjDF34CzGf9cY8x7QE9gK\nGCDdWtsmj2MpgIlIqVQUi8yPsdbZDejr5FcIbTuaebfMJbp89PFzut1uJk1a53U4OnrUKWE1cKAz\nY5gfXwuqcuiQs2D9jTecchZDhjiV4yMjPb0Mefbr5OueX1/DwlzcfEsWs6p3p1tcPUZ3eRO3excH\nDvxCaupSDh1aS1raGg4f2sBH7w5j9W9tefuNpylXswmhoRUoUyaSkJBIQkLCyMo6SlaWG2uPkp6+\nh6NH/8LtTubo0W1kZh4mKuo8IiNjKV++NZUrd6JcuVzvT5NiLKgBzJ8UwERETuRpcLPWCUrz7DOU\nafkRc2+eQ+3ytY8fIxCbVvtlpM9aZxPF11+H+fOdedb+/f02KlZQX997D4bNHE6TK+Yz5+aZhJU5\n6Q7G5cvhySdZOPcwPdxfMHvhb9Ss5QSrzMxUMjMPkZl5CGvTCQkpizEuQkLKEhZWFZcrGperNmXL\n1qVs2Tpaz1UKKICJiJRC3gaajAxne8alkU9SpsWn/HDLXGpG1SzUsQrLryN9ycnwyScwbpxTV+u6\n65zNrNu08fnuwtz6unQpXDrkS6J6Psiywb9QI7KG0zAzE2bMcBbXL1nCur7303bsYPpc/wetWm0L\nXokPCToFMBGRUqawo1YZGXDDDbC0wkhczb9k7i1zjgcJf4ajlBTIb2mXX1nrVNf/+muYNMmps9W1\nK3TqBHFxUKOGz6fYvh0u6LKCI9ddxtyB0zm/ZnNYudIJgJ984typOWAAB67pS4t/WVq1KkdCQrki\nG02UkkF7QYqIlDKF3SMxNNTJC+fvf5z0lb1o/0EHkg44N6fnrJpfUJX8/Gzc6Nyw+PXX3r+vQjHG\nWYT21FPOnopz50LTpvDxx05HmjWD225z1o/Nnw/793t1+NRUuObaNTS96Apmu3tw/j3PQs2azohb\nWJhTyf6XX2DQINxlLB067ODGG51tBLzdu1IEAlwHTEREPOdL+YrQUPj0E0O/fqNY8WsEl2S0Y1b/\nmTSs3BAoeDqyoJGyxo1h8mRnjfy0afDyy06Zr4A56yzn6777nOnBZcucgLRihRPKVq1yFvKfcYYz\nclWzprPvUtmyztfRo05I278fu+dvjvyynh8ydpK6rzY12qbD1Vc7tcrOOHVRfIUKEVxyyRYOH472\ne1kROX1oClJEpBjzdd1WRgbceivMOzKao62fYcZN02lUsVG+U5venPPAARg0KJOlS2Hs2Cwuvtj3\nLXf8wlqnvMX27bBtG+za5YSuo0fhyBEnhFWsCBUr8sbnEbxT6TEuu6Y9L3f5r0eHLzbbPEnQaQ2Y\niEgp5eu6rawsp5TE15vGc6Tdg3za7WM2/eDKtSRFRESEV+vOjgWRRYtimDOnFrNmHSYmpuQEkWee\nzeTZTb25/NIwJvb9lBDj+cqck38vRVlmRIqvErEVkYiIeK8w2xTlFBLiTBFWfiKBd76vTO+svvSL\nGkyltBanTKHltYVRzm2TjslZ+b5btwp06nSAmTNXnlr5Ph/BDC2vvZ7Js+v6c/4lB/is97d5hq9J\nk5xtn2rWPPH5nL8XjYiJtxTAREROA8bA449D9epX89jbU/m0T1f2Ze6hfbk+xwPDsTDh6bqzk8Na\nZGQF9u/PPazlJpihZewHmTz68y00b/cXiTdPoWxo2VzbjR8PjzzirME/OYAd4/EWTCI56C5IEZHT\nyODB8NFzrWHMT8w5NIvfor+k3w0djgcfl8tFfHwsqakLSU6eR2rqwhPCWU45bxIAcg1raWnOnZIn\nryzJGVqio9sTFdWWxMSVhboj01uffZ7JkBkDOe/i7cwcMCXXPR6zspzA+p//OOW/mjbN+3iFvVtV\nTm8KYCIip5nOnWHOpAaYD35k6rK1XDPxGvYe3nv853XqRJOQcCl9+sSSkHBpnqNSnoS1HTtg1Cjo\n0AEWL/7ntcEKLW+9m87AyQNodvFWZg3MPXylpjobks+a5fT5nHPyP6YnQVTkZFqELyJymkpOhmuu\nzeDvlg+T1fh/TO73DefWONfr4xS0jisz09nM+7HHnJqpzzwDtWsHZmuknJ54LpXnNl1HmzYhfNf/\nCyJdue8x+dprTv3VN990bpb0hNaAnb50F6SIiHjt2GbbX238GHfH+3jz6tfoe17fIjlXaiq89JKz\nxeNPP0FkZGBCi7Vw18M7+eBoF3pc1ILxfd4mNCTvJdDHPoK83aZRd0GenhTARESk0D7+GO5+ehll\nb7yeq5q15fXOrxPliiqSc6WkOCW4jCn60JKaCr0GrWNu9NXc0/FGnot/XBtgi18pgImIiE9Wr4br\nb0rlwMX/JrThAr7s8zkta7cM2PkPHnSK1Yf5qZbr779DxyFfsKfNXbx69Qvc3uaWE36+Zg3s3Akd\nO+Z9DI1qSUG0F6SIiPikWTNYsjCKvhFj+XviE3QceyWPzXmMoxlHA3L+Tz6BevXg3/+GBQucOxEL\n65spbmIfupfDlzzCgkHTjocva2HRImeRfceOsGlT3sdISkpm/PjZTJiwkvHjZ5OUlFz4DomcRCNg\nIiJyivnz4cY7k0i/4i4i663nw57vc3G9i4v8vOvXwxdfwJdfwt690LWrs93jWWd59vrUVLh9peC4\n6wAAEM1JREFU2Hq+yriZ1s2qM2XAOCqHV+boUecmgC++cEbY7rwTbr8dInNfh4/bHfibBKRk0giY\niIj4Tbt2sG5xHW6rMIkdnz1F5w97c+v/bmdn6s4iPW+TJjBihHMX4owZzqbfZcrk3nbFCvj1Vye0\nbd8OH3+aQZ3O4/gq6lKe6N2XeYO/oXJ4ZQBcLqhaFb75xml/3315hy9QbS8pehoBExGRfP3+Owy6\ndx9Lo54io9k4Hmp/L0Pb3p9rDa1Auv56J0wdOADJO90cCdlDeIVDTJ8aziWxdX06tkbAxFNahC8i\nIkXGWpg9G4Y+tZktZw4jtOGPPHbpQwxsOSDPelpFLTUVhv3fRt7ZMIKwRj/w7OVPM+TiW/x2l6Nq\ne4knFMBERKTIWQvffQdD/7uY5AbPQ8w87mpzJ0PbDaF6ZPWA9GHPHnj23Y28veIlMpt8xd2t7mdk\n/D1FEgR1F6QURAFMREQCxlrnTsVn3tnA7CP/B80mcGGNTtzbMYGrm3TGVca/YcVaWPRLBsM/msK8\nw6MJrbuCfmffygvdh1I1oqpfzyXiDQUwEREJiqQkePvDFMYtnsiOGuMpU2sNbatdzbUtO3FN807U\nLl+7UMd1u2HaD/t5a9oM5v31HUfO+J66EY14pNOd3HJhL8qGerhPkEgRUgATEZGg27wZ3p+4hf+t\nmcqGjFlk1ZtDeVOLemWb06hSU5pHn825dRtQJbIClcLLUzmiPHv3u/ljRwp/7tzP5h27Wfznajbu\nX8U+10pMtQ2cGXYJvZp3ZmC7LpxZpWGw36LICRTARETE73bv3s2WLVuoX78+1at7t8YrKwt+W5PJ\nV/NX8mvSb2w+sI4dGWtJDd1KVuhB5yvsICHWRVhmJcraSkSVqULjSufwr4bnceX559EmJjbod1uK\n5EcBTERE/OqzzyYwcOBgXK76uN1bGDNmNH379gl2t0SKFQUwERHxm927dxMT05TDh+cAscBKwsM7\nsnXrOq9HwoJBdy9KoBQ2gIUWRWdERKRk27JlCy5XfQ4fjs1+JpawsBi2bNkSsABW2BCl+l1SEiiA\niYjIKerXd6YdYSXHRsDS07dSv379gJy/sCHK7XaTmLjyhAr2iYkLSUioppEwKVa0F6SIiJyievXq\njBkzmvDwjlSo0JLw8I6MGTM6IKNfOUNUdHR7oqLakpi4ErfbfUrb3bt3s3jxYnbv3g1oD0cpORTA\nREQkV3379mHr1nXMnPkOW7euC9gCfE9D1GefTSAmpimXXz6ImJimfPbZBCIinBGztLQD2cc6QGio\nM40pUpxoEb6IiBQrnmyEnd9NAm53utaAScBoEb6IiJQKLpeL+PhYEhMXkpLyT4jKuYYrv5sEWrdu\nTUJCNd0FKcWaRsBERMRrgSjzkN85kpKSaNToXI4cmQlcQEkrkyGlh0bAREQkIAJV5sHlcuUa7pzz\nr6Jfv+GMH98Xl6ssWVnJAbtJQMQfNAImIiIe82R9ViDPv2PHNrZu/ZY77+xGnTp1ivz8IifTCJiI\niBS53O5QTElx7lAMRAA7+fy1ap1BVlYzIiMji/zcIv6kMhQiIuKxYJd5CPb5RfxFU5AiIuKVYG/1\nE+zzi+SkzbhFRCRggr3ZdbDPL3KMApiIiIhIgBU2gPllDZgxJt4Ys84Ys8EY83AebV4zxmw0xiw3\nxrTwx3lFRERESiKfA5gxJgR4A7gSaAb0NcY0PanNVcCZ1trGwB3A276eV0REpDDcbjcpKSm5bu4t\nEij+KEPRBthord0KYIz5HOgOrMvRpjvwEYC19mdjTEVjTE1r7U4/nF9ERMQjWsAvxYU/piDrANty\nfL89+7n82iTl0kZERKTIuN1uEhNXEhXVlujo9kRFtSUxcaVGwiQoimUh1pEjRx5/HBcXR1xcXND6\nIiIipeOuw2AXkZXSYe7cucydO9fn4/gjgCUB9XJ8Xzf7uZPbnFFAm+NyBjAREQmu0jJtl7OI67Ft\nlFTEVbx18sDQqFGjCnUcf0xBLgYaGWNijDEu4Hpg8kltJgM3ARhjLgJStP5LRKT4K03Tdi6Xi/j4\nWFJTF5KcPI/U1IXEx8dq9EuCwucRMGttpjFmCDAdJ9CNsdauNcbc4fzYvmutnWqM6WyM+R04BNzi\n63lFRKTo+WParjhNX9apE01CQrVi0x85ffllDZi1NhFoctJz75z0/RB/nEtERALH12m74jh96XK5\nFLwk6FQJX0RE8lXYEOV2uxk/fjZRUW2Ph7fU1IUkJFyqACSlRmEr4RfLuyBFRKT4KOy0ne46FMmb\nApiIiBSoMNN2uutQJG+aghQRkSJTHNeAifhTYacgFcBERKRIFae7IEX8TQFMREREJMAKG8D8UYhV\nRERERLygACYiIiISYApgIiISMG63m5SUlBK5lZGIP6kMhYiIBITuiBT5h0bARESkyJWmTb1F/EEB\nTEREilxuVfEzMpyq+CKnIwUwEREpcjmr4gOqii+nPdUBExGRgNAaMCmNVIhVRESKPVXFl9JGAUxE\nREQkwFQJX0RERKSEUAATERERCTAFMBEREZEAUwATERERCTAFMBEREZEAUwATERERCTAFMBEREZEA\nUwATERERCTAFMBEREZEAUwATERERCTAFMBEREZEAUwATERERCTAFMBEREZEAUwATEREA3G43KSkp\nuN3uYHdFpNQLDXYHREQk+JKSkklMXElGRgShoWnEx8dSp050sLslUmppBExE5DTndrtJTFxJVFRb\noqPbExXVlsTElRoJEylCCmAiIqe5tLQ0MjIiiIioAEBERAUyMiJIS0sLcs9ESi8FMBGR01xEhDPt\nmJZ2AIC0tAOEhqYRERER5J6JlF7GWhvsPpzAGGOLW59EREo7rQETKRxjDNZa4/XrilvYUQATEQkO\nt9tNWpoz8uVyuYLdHZESQQFMREREJMAKG8C0BkxEREQkwBTARERERAJMAUxEREQkwHwKYMaYysaY\n6caY9caYacaYirm0qWuMmW2MWW2MWWWM+bcv5xQREREp6XwdAXsEmGmtbQLMBh7NpU0GcL+1thnw\nL+AuY0xTH88rIiIiUmL5GsC6A+OyH48DepzcwFq7w1q7PPtxKrAWqOPjeUVERERKLF8DWA1r7U5w\nghZQI7/Gxpj6QAvgZx/PKyIiIlJihRbUwBgzA6iZ8ynAAsNzaZ5nAS9jTBQwEbgneyQsTyNHjjz+\nOC4ujri4uIK6KSIiIlLk5s6dy9y5c30+jk+FWI0xa4E4a+1OY0wtYI619uxc2oUC3wLfW2tfLeCY\nKsQqIiIiJUKwCrFOBm7Oftwf+F8e7cYCawoKXyIiIiKnA19HwKoAXwBnAFuB3tbaFGNMbeA9a+3V\nxpiLgXnAKpwpSgsMs9Ym5nFMjYCJiIhIiaC9IEVEREQCTHtBioiIiJQQCmAiIiIiAaYAJiIiIhJg\nCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIi\nIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYA\nJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIi\nAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAi\nIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAaYAJiIiIhJgCmAiIiIiAeZTADPGVDbG\nTDfGrDfGTDPGVMynbYgx5ldjzGRfzil5mzt3brC7UKLp+vlG16/wdO18o+vnG12/4PB1BOwRYKa1\ntgkwG3g0n7b3AGt8PJ/kQ3+JfKPr5xtdv8LTtfONrp9vdP2Cw9cA1h0Yl/14HNAjt0bGmLpAZ+B9\nH88nIiIiUuL5GsBqWGt3AlhrdwA18mj3MvAgYH08n4iIiEiJZ6zNPxMZY2YANXM+hROkhgMfWmur\n5Gj7t7W26kmv7wJcZa0dYoyJA4Zaa7vmcz6FNBERESkxrLXG29eEenDQy/P6mTFmpzGmprV2pzGm\nFrArl2YXA92MMZ2BcKC8MeYja+1NeZzP6zchIiIiUpIUOAKW74uNeR7Ya6193hjzMFDZWvtIPu07\n4IyAdSv0SUVERERKOF/XgD0PXG6MWQ90Ap4DMMbUNsZ862vnREREREojn0bARERERMR7Qa2E70kh\nV2NMXWPMbGPMamPMKmPMv4PR1+LEGBNvjFlnjNmQPfWbW5vXjDEbjTHLjTEtAt3H4qyg62eM6WeM\nWZH9tcAYc14w+lkcefJnL7tda2NMujGmZyD7V9x5+Hc3zhizzBjzmzFmTqD7WJx58He3gjFmcvb/\n91YZY24OQjeLJWPMmOx12yvzaaPPjTwUdP0K9blhrQ3aF84U5kPZjx8GnsulTS2gRfbjKGA90DSY\n/Q7yNQsBfgdigDBg+cnXA7gK+C778YXAomD3u7h8eXj9LgIqZj+O1/Xz/NrlaDcL+BboGex+F5cv\nD//sVQRWA3Wyv68W7H4Xly8Pr9+jwLPHrh3wNxAa7L4Xhy/gEqAFsDKPn+tzw7fr5/XnRrD3giyw\nkKu1doe1dnn241RgLVAnYD0sftoAG621W6216cDnONcxp+7ARwDW2p+BisaYmgh4cP2stYustfuz\nv13E6f3nLSdP/uwB3A1MJPe7ok9nnly/fsBX1tokAGvtngD3sTjz5PpZoHz24/LA39bajAD2sdiy\n1i4A9uXTRJ8b+Sjo+hXmcyPYAczTQq4AGGPq4yTQn4u8Z8VXHWBbju+3c+ov+uQ2Sbm0OV15cv1y\nuhX4vkh7VHIUeO2MMdFAD2vtWzg1A+UfnvzZOwuoYoyZY4xZbIxJCFjvij9Prt8bwDnGmGRgBc4W\neOIZfW74j0efGwXWAfNVAYVcT5bnHQHGmCicf1Xfkz0SJlKkjDEdgVtwhp7FM6/gLCc4RiHMO6FA\nS+BSIBL4yRjzk7X29+B2q8S4Elhmrb3UGHMmMMMYE6vPDAkUbz43ijyAWd8LuWKMCcUJX+Ottf8r\noq6WFElAvRzf181+7uQ2ZxTQ5nTlyfXDGBMLvAvEW2vzG7Y/nXhy7VoBnxtjDM4anKuMMenW2skB\n6mNx5sn12w7ssdYeAY4YY+YBzXHWPp3uPLl+twDPAlhrNxlj/gCaAksC0sOSTZ8bPvL2cyPYU5CT\ngZuzH/cH8gpXY4E11tpXA9GpYm4x0MgYE2OMcQHX41zHnCYDNwEYYy4CUo5N9UrB188YUw/4Ckiw\n1m4KQh+LqwKvnbW2YfZXA5x/NA1W+DrOk7+7/wMuMcaUMcZE4CyGXhvgfhZXnly/rcBlANnrl84C\nNge0l8WbIe9RaX1uFCzP61eYz40iHwErwPPAF8aYATh/cXqDU8gVeM9ae7Ux5mLgBmCVMWYZzjTl\nMGttYrA6HUzW2kxjzBBgOk6AHmOtXWuMucP5sX3XWjvVGNPZGPM7cAjnX4WCZ9cPGAFUAUZnj+Sk\nW2vbBK/XxYOH1+6ElwS8k8WYh3931xljpgErgUzgXWvtmiB2u9jw8M/fU8CHOUoFPGSt3RukLhcr\nxphPgTigqjHmT+BxwIU+NzxS0PWjEJ8bKsQqIiIiEmDBnoIUEREROe0ogImIiIgEmAKYiIiISIAp\ngImIiIgEmAKYiIiISIApgImIiIgEmAKYiIiISID9P7hZ8tGYEexZAAAAAElFTkSuQmCC\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x104f474e0>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "fig, ax = plt.subplots(1,1,figsize=(10,7))\n", | |
| "raw_train = ax.scatter(x_train,y_train)\n", | |
| "raw_test = ax.scatter(x_test,y_test,alpha=0.3)\n", | |
| "\n", | |
| "ols_plt = ax.plot(x_test, y_ols, 'b-')\n", | |
| "ridge_0001_plt = ax.plot(x_test, y_ridge_0001, 'g-') # Green: lambda=0.001\n", | |
| "ridge_1_plt = ax.plot(x_test, y_ridge_1, 'r-') # Red: lambda=1\n", | |
| "ridge_3_plt = ax.plot(x_test, y_ridge_3, 'y-') # Yellow: lambda=3\n", | |
| "\n", | |
| "lasso_plt = ax.plot(x_test, y_lasso, 'b--') # Blue dotted: lambda=0.001 Lasso" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "最小二乗法の結果がスクラッチ実装とsklearnで違うし、Ridgeも同じλで違う結果が帰ってきてるからsklearnでは内部で何か別の操作が入ってるのかも? \n", | |
| " \n", | |
| "まあ、いずれにしても正則化によって過学習が抑えられ(過ぎている感もここではあるが)ること、またλを大きくすると修正の度合いも大きくなることが見て取れる。" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.5.2" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 0 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
