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

第3章-エビデンス近似をSageで試す

\n", "\t

\n", "\t\t第1章-Sageを使って線形回帰を試してみるでは、\n", "\t\t与えられたモデルパラメータM, α、βに対して解いていましたが、\n", "\t\t実際には自分でベストなモデルパラメータM, α、βを求める必要があります。\n", "\t\t\n", "\t\tパターン認識と機械学習\n", "\t\tの3章ではエビデンス関数を使って最適なパラメータを求める方法が説明されています。\n", "\t

\t\n", "\t

\n", "\t\tここでは、Sageを使ってエビデンス関数の評価、最適なモデルパラメータの推定を試してみます。\n", "\t

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

エビデンス関数の評価

\n", "\t

\n", "\t\tエビデンス関数の対数表現は、式(3.86)\n", "$$\n", "\t\t\\ln p(t|\\alpha, \\beta) = \\frac{M}{2} \\ln \\alpha + \\frac{N}{2} \\ln \\beta -E(m_N) - \\frac{1}{2} \\ln | A | + \\frac{N}{2} \\ln (2 \\pi)\n", "$$\n", "\t\tで与えられます。\n", "\t

\n", "\t

\n", "\t\tここで、$E(m_N)$は、式(3.82)\n", "$$\n", "\t\tE(m_N) = \\frac{\\beta}{2}|| t = \\Phi m_N ||^2 + \\frac{\\alpha}{2} m_N^T m_N\n", "$$\n", "\t\t$m_N$は、式(3.84)\n", "$$\n", "\t\tm_N = \\beta A^{-1} \\Phi^T t\n", "$$\n", "\t\tAは、式(3.81)\n", "$$\n", "\t\tA = \\alpha I + \\beta \\Phi^T \\Phi\n", "$$\n", "\t

\n", "\t

\n", "\t\t目指すは、図3.14です。\t\t\n", "\t

\n", "\t

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

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

準備

\n", "\t

\n", "\t\t第1章-Sageを使って線形回帰を試してみる\n", "\t\tで使ったデータと同じものを座標Xと目的値tにセットし、関数Φを定義します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# PRML fig.3.14の再現\n", "# 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", "# データを増やす場合\n", "# N = 25\n", "# X = vector([random() for i in range(25)])\n", "# t = vector([(sin(2*pi*x) + +gauss(0, 0.2)).n() for x in X.list()])" ] }, { "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まずは、α、βを固定値\n", "\t\t

\n", "\t\tとして、多項式の次数をMを0から9まで変えた値を計算し、プロットしてみます。\n", "\t

\n", "\t

\n", "\t\t一番良いエビデンスは、M=4あたりになります。\n", "\t\t理由は分かりませんが、図3.14のようなM=3以降の急激な下降は見られません。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEdCAYAAADkeGc2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAF0ZJREFUeJzt3XtQFef9x/HPclEDHBQigmKi0MSqRK2aQRoco9Gpl0Sp\nUROO0do0Gls0Rs1UbTqtvcQxOnZspyaOYzpNOxMkaa0TL3FMg6Rao9QLYCZRbKvBekFzASHoDwX2\n9wcRg6AI5xx24Xm/Zphh9+x5nq87zuc8PLv7HMu2bVsAAKMEOV0AAKD1Ef4AYCDCHwAMRPgDgIEI\nfwAwEOEPAAYi/AHAQIQ/ABiI8AcAAxH+AGAgV4b/K6+8ooSEBN11111KSUnRwYMHnS7JNVauXKnk\n5GRFRkYqNjZWkydP1okTJ5wuy7VWrlypoKAgLV682OlSXOfcuXOaOXOmunbtqrCwMA0aNEhHjhxx\nuizXqKmp0c9+9jMlJiYqLCxM9913n1566SWny/Ib14X/m2++qRdeeEG//OUvlZeXp0GDBmns2LH6\n7LPPnC7NFfbu3avnnntOubm5eu+993Tt2jV95zvf0ZUrV5wuzXUOHjyojRs3atCgQU6X4jqlpaVK\nTU1Vx44dtWvXLh07dky/+c1vFBUV5XRprvHyyy9rw4YNevXVV3X8+HGtXr1aq1ev1rp165wuzT9s\nlxk2bJi9YMGCuu2amho7Pj7eXrVqlYNVudenn35qW5Zl79271+lSXKW8vNzu06ePnZ2dbY8cOdJe\ntGiR0yW5ytKlS+0RI0Y4XYarPfbYY/bs2bPr7ZsyZYo9c+ZMhyryL1eN/K9du6bDhw9r9OjRdfss\ny9KYMWO0f/9+Bytzr9LSUlmWpejoaKdLcZV58+Zp4sSJeuSRR5wuxZW2bdumBx98UE888YRiY2M1\nZMgQvfbaa06X5SoPPfSQsrOz9e9//1uSVFBQoH379mnChAkOV+YfIU4X8HWfffaZqqurFRsbW29/\nbGysCgsLHarKvWzb1sKFCzV8+HD179/f6XJcIysrS/n5+Tp06JDTpbjWyZMntX79er3wwgv66U9/\nqtzcXC1YsECdOnXSjBkznC7PFZYtW6aysjL17dtXwcHBqqmp0YoVK5Senu50aX7hqvC/Fdu2ZVmW\n02W4TkZGhj7++GPt27fP6VJc48yZM1q4cKH+/ve/KzQ01OlyXKumpkbJycn69a9/LUkaNGiQPvro\nI61fv57w/8qbb76pzMxMZWVlqX///srPz9fzzz+vHj16aObMmU6X5zNXhX/Xrl0VHBysCxcu1Nt/\n8eLFBn8NmG7+/Pl65513tHfvXnXv3t3pclzj8OHD+vTTTzV06FDZX31PUXV1tfbs2aN169apsrKS\ngYSk7t27q1+/fvX29evXT3/7298cqsh9lixZohdffFHTpk2TJCUlJemTTz7RypUr20X4u2rOPzQ0\nVEOHDlV2dnbdPtu2lZ2drYceesjBytxl/vz5evvtt5WTk6N7773X6XJcZcyYMfrwww+Vn5+vgoIC\nFRQU6MEHH9SMGTNUUFBA8H8lNTW1wVRqYWGhevXq5VBF7nP58uUG/1+CgoJUU1PjUEX+5aqRvyQt\nXrxYs2bN0tChQ5WcnKy1a9fq8uXL+v73v+90aa6QkZGhTZs2aevWrQoPD6/7K6lz587q1KmTw9U5\nLzw8vMH1j/DwcN19990NRromW7RokVJTU7Vy5Uo98cQTys3N1WuvvaaNGzc6XZprTJw4UStWrNA9\n99yjpKQkHTlyRGvXrtXs2bOdLs0/nL3ZqHGvvPKK3atXL7tTp052SkqKffDgQadLcg3LsuygoKAG\nP3/605+cLs21Ro0axa2ejdixY4c9YMAA+6677rL79+9v/+EPf3C6JFf58ssv7UWLFtm9e/e2w8LC\n7Pvuu8/++c9/bl+7ds3p0vzCsm2+wB0ATOOqOX8AQOsg/AHAQIQ/ABiI8AcAAxH+AGAgwh8ADOTY\nQ162bau8vNyp7gGg3fJ4PE0+ze5Y+JeXl6tz585OdQ8A7dalS5cUGRl522Mce8irqZF/enq6srKy\nfO7HX+34s6322o4/22qv7fizrfbajj/baq/tNNWWq0f+lmXd9pMpJCSkyU+uO+GvdvzZVnttx59t\ntdd2/NlWe23Hn22113b80Va7v+Dr9Xpd15Y/a/IHzlHTOEdN4xw1zU3nyLVr+0yaNElbt251ugxX\n4xw1jXPUNM5R09rjOWr3I38AQEPBv/jFL37hdBG3MmDAAKdLcD3OUdM4R03jHDWtvZ0j1077AAAC\nh2kfADAQ4Q8ABiL8AcBAhD8AGIjwBwADtUr4P/300woKCqr3M2HChFseb9u2ysrKxI1IABAYrba2\nz/jx4/X666/XBXrHjh1veez1FT/vZGU6AEDztVr4d+zYUTExMa3VHQDgNlptzv/9999XbGys+vbt\nq4yMDH3xxRet1TUA4Cat8oTvW2+9pbCwMCUkJOi///2vfvKTn8jj8Wj//v2NrjldVlbGtA8ABJDf\nwz8zM1Nz586tbdyytHPnTqWmptY75tSpU/rGN76h7OxsjRo1qkEb18N//PjxCgmpPzPl9Xpdt0wr\nALQ1fg//iooKXbhwoW47Pj6+0Yu73bp104oVKzRnzpwGrzHyB4DA8vsF3/DwcCUmJt72mDNnzujz\nzz9X9+7d/d09AOAOBPyCb0VFhZYsWaLc3FwVFRUpOztb3/3ud9WnTx+NHTs20N0DABoR8Fs9g4OD\ndfToUf35z39WaWmpevToobFjx+pXv/qVQkNDA909AKARrlzPnzl/AAgs1vYBAAMR/gBgIMIfAAxE\n+AOAgQh/ADCQq8M/PT1dkyZN0qZNm5wuBQDaFW71BAADuXrkDwAIDMIfAAxE+AOAgQh/ADAQ4Q8A\nBiL8AcBAhD8AGIjwBwADEf4AYCBXhz/LOwBAYLC8AwAYyNUjfwBAYBD+AGAgwh8ADET4A4CBCH8A\nMBDhDwAGIvwBwECEPwAYyNXhzxO+ABAYPOELAAZy9cgfABAYhD8AGIjwBwADEf4AYCDCHwAMRPgD\ngIEIfwAwEOEPAAYi/AHAQK4Of5Z3AIDAYHkHADCQq0f+AIDAIPwBwECEPwAYyOfw37Jli8aNG6eY\nmBgFBQXp6NGjDY6prKzUvHnz1LVrV3k8Hk2dOlUXL170tWsAQAv5HP4VFRUaPny4Vq1aJcuyGj1m\n4cKF2rFjhzZv3qw9e/bo3LlzmjJliq9dAwBayG93+xQVFSkhIUH5+fkaOHBg3f6ysjLFxMQoKytL\nkydPliQVFhaqX79+OnDggJKTkxu0xd0+ABBYAZ/zP3z4sKqqqjR69Oi6fd/85jd17733av/+/YHu\nHgDQiICHf3FxsTp06NBgBB8bG6vi4uJAdw8AaESzwj8zM1Mej0cej0eRkZHat29fizu2bfuW1wgA\nAIEV0pyD09LSlJKSUrcdHx/f5Hvi4uJ09epVlZWV1Rv9X7x4UbGxsbd9b3p6ukJC6pfo9Xrl9Xqb\nUzYA4CbNCv/w8HAlJibe8vXGRvJDhw5VSEiIsrOz6y74njhxQqdPn9a3v/3t2/aXlZXFBV8ACIBm\nhX9jSkpKdPr0aZ09e1a2bev48eOybVtxcXGKjY1VZGSknnnmGS1evFhRUVHyeDxasGCBUlNTG73T\nBwAQeD5f8N26dasGDx6siRMnyrIseb1eDRkyRBs2bKg7Zu3atXrsscc0depUjRw5Uj169NDmzZt9\n7RoA0EKs6gkABmJtHwAwEOEPAAYi/AHAQIQ/2q3du6Vt26TKSqcrAdyH8Ee79KMfSaNHS5MmSY88\nIl296nRFgLu4+m6f8ePHKyQkhKd60SwVFVJERP19778vPfywI+UAruTzQ16BxBO+bcOVK9KTT0q7\ndkkDB0pbtkg9ezpXT4cOUnh47YfAdVFRztUDuBHTPvDZ2rW1c+tXr0qHDkkvvOBsPaGh0htv1AZ+\nx47SihW1H0oAbnD1yB9tw6ef1t/+/HNn6vi6tDTpiy8k25ZYPBZoiJE/fPaDH0jXZ+eCg6WMDGfr\n+TqCH2gcI3/4bMAA6ehRaf9+qX9/plhuJS9Pevdd6YEHpEcfdboamI7wh1/06lX7g8YdOFB7t9H1\nW05//3tp/nxna4LZmPYBWsHmzfWfNcjKcq4WQCL8gVZx83cgJSQ4UwdwHdM+QCuYO1cqLJR27Kid\n8//tb52uCKZz9RO+rOcPAIHh6mmf9PR0TZo0SZs2bXK6FABoVxj5A4Y6ckSaN08qL5eWLpVmznS6\nIrQmwh8wVHy8dO5c7e/BwdKHH0r9+jlbE1qPq6d9AATG//3fjeCXpOpqqajIuXrQ+gh/wECdOtWu\nf3Rdr15SSopz9aD1casnYKi33pJef10qK5NmzJC6dHG6IrQm5vwBuMaePbXPQvTtKz39tNPVtG+M\n/AG4wj//WfuVm9XVtdunT0vLlztbU3vGnD8AV3jnnRvBL9V+QRACh/AH4ApJSbffhn+5etonPT2d\nL3AHDPHUU7VTPW+/Xfu8gVvWP7Jtqaqq9utB2xMu+ALALWzfXnsnVHm5tGiRtGaN0xX5D+EPALcQ\nFSWVlt7Y3rtXGj7cuXr8iTl/AGhEdbX05Zf191265EwtgUD4A0AjgoOlJUtubCcnS6NHO1ePvxH+\nAHALK1ZI+/dLO3dK//hH7bIYTqqulp55pvZp7ORk6dSplrfFnD8AtBEbN0rPPntje9y42g+mlmDk\nDwBtRHHx7bebg/AHgDbiySfrL8A3d27L23L1Q14AgBv69JHy86Xdu6X77/fttlPm/AHAQK6e9uEL\n3AEgMBj5A4CBXD3yBwAEBuEPAAYi/AHAQD6H/5YtWzRu3DjFxMQoKChIR48ebXDMyJEjFRQUVPcT\nHBysjIwMX7sGALSQz+FfUVGh4cOHa9WqVbIsq9FjLMvSs88+qwsXLqi4uFjnz5/X6tWrfe0aANBC\nPj/kNWPGDElSUVGRbnfjUFhYmGJiYnztDgDgB6025//GG28oJiZGAwYM0IsvvqgrV660VtcAgJu0\nyvIOTz31lHr16qUePXro6NGjWrJkiU6cOKG//vWvrdE9AOAmzQr/zMxMzf1qJSHLsrRz506lpqY2\n+b7Zs2fX/Z6UlKS4uDiNGTNGp06dUkJCQjNLdkZNjRTEvVEA2olmhX9aWppSUlLqtuPj41vU6bBh\nw2Tbtv7zn//cNvzT09MVElK/RK/XK6/X26J+W6K8XJo8uXYhpUGDpG3bpJ49W617AAiIZoV/eHi4\nEhMTb/n6re72uVleXp4sy1L37t1ve1xWVpbjyzusXi1lZ9f+np8vLV0qvfGGoyUBgM98nvMvKSnR\n6dOndfbsWdm2rePHj8u2bcXFxSk2NlYnT55UZmamJkyYoLvvvlsFBQVavHixHn74YT3wwAP++DcE\nVEnJ7bcBoC3yeRZ769atGjx4sCZOnCjLsuT1ejVkyBBt2LBBktShQwe99957Gjt2rPr166cf//jH\nmjZtmrZu3epz8a3h2Welzp1rf+/QQVqwwNl6AMAfWNXzDpw5Ix08KCUl1X6ZAgC0dXyT1x3o2ZOL\nvADaF25eBAADEf4AYCDCHwAMRPgDgIFcHf58gTsABAa3egKAgVw98gcABAbhDwAGIvwBwECEPwAY\niPAHAAMR/gBgIMIfAAxE+AOAgQh/ADCQq8Of5R0AIDBY3gEADOTqkT8AIDAIfwAwEOHfRhUUSLm5\nUk2N05UAaIsI/zZo6VLpW9+SUlKkxx/nAwBA83HBt425dEnq0qX+vgMHpGHDnKkHQNvEyL+NCQ2V\nQkLq77vrLmdqAdB2Ef5tTFiYtH79jQ+AJUukgQOdrQlA28O0Txt1+bJUVSVxegC0REjTh8CNwsKc\nrgBAW+bqaR+WdwCAwGDaBwAM5OqRPwAgMAh/ADAQ4Q8ABiL8AcBAhD8AGIjwBwADEf4AYCDCHwAM\n5Orw5wlfAAgMnvAFAAO5euQPAAgMwh8ADET4A4CBfAr/qqoqLV26VAMHDlRERITi4+M1a9YsnT9/\nvt5xJSUleuqpp9S5c2dFRUVp9uzZqqio8KlwAEDL+RT+ly9fVn5+vpYvX668vDxt2bJFhYWFSktL\nq3fc9OnTdezYMWVnZ2vHjh3as2eP5s6d61PhAICW8/vdPocOHdKwYcNUVFSknj176tixY0pKStLh\nw4c1ePBgSdKuXbv06KOP6syZM4qLi2vQBnf7AEBg+X3Ov7S0VJZlqUuXLpKkAwcOKCoqqi74JWnM\nmDGyLEu5ubn+7h4AcAf8Gv6VlZVatmyZpk+froiICElScXGxunXrVu+44OBgRUdHq7i42J/dAwDu\nULPCPzMzUx6PRx6PR5GRkdq3b1/da1VVVZo2bZosy9Krr77aZFu2bcuyrOZXDADwWUhzDk5LS1NK\nSkrddnx8vKQbwf+///1Pu3fvrhv1S1JcXJwuXrxYr53q6mqVlJQoNjb2tv2lp6crJKR+iV6vV16v\ntzllAwBu4vMF3+vBf/LkSeXk5Cg6Orre68ePH1dSUpIOHTpUN+//7rvvasKECVzwBQCHNGvkf7Pq\n6mpNmTJF+fn52r59u65du6YLFy5IkqKjoxUaGqq+fftq7NixmjNnjtavX6+rV6/queeek9frbTT4\nv/hCWr269vezZyWyHwD8z6eRf1FRkRITE+vtuz6Xn5OToxEjRkiqvQNo/vz52rZtm4KCgjR16lT9\n7ne/U1hYWL331tRIDz4o5eWVSeqse+65pI8+ipTH09IKAQCNcdWqnmfPSj17SlJt+EuXlJsbqeRk\nZ+sCgPbGVWv7xMRIX58JCg+Xevd2rBwAaLdcFf4dOki7dkljxtRu/+Uv0k2PCAAA/MBV0z7XcbcP\nAASWq0b+AIDWQfgDgIFcHf58gTsABAZz/gBgIFeP/AEAgUH4A4CBCH8AMBDhDwAGIvwBwECEPwAY\niPAHAAMR/gBgIMIfAAzk6vBneQcACAyWdwAAA7l65A8ACAzCHwAMRPgDgIEIfwAwEOEPAAYi/AHA\nQIQ/ABiI8AcAAxH+AGAgV4c/yzsAQGCwvAMAGMjVI38AQGAQ/gBgIMIfAAxE+AOAgQh/ADAQ4Q8A\nBiL8AcBAhD8AGMjV4c8TvgAQGDzhCwAGcvXIHwAQGIQ/ABiI8AcAA/kU/lVVVVq6dKkGDhyoiIgI\nxcfHa9asWTp//ny943r37q2goKC6n+DgYK1evdqnwgEALRfiy5svX76s/Px8LV++XAMHDlRJSYkW\nLFigtLQ0/etf/6o7zrIsvfTSS5ozZ46uX1/2eDy+VQ4AaDGfwj8yMlK7du2qt2/dunUaNmyYzpw5\no549e9btj4iIUExMjC/dAQD8xO9z/qWlpbIsS126dKm3/+WXX1bXrl01ZMgQrVmzRtXV1f7uGgBw\nh3wa+d+ssrJSy5Yt0/Tp0xUREVG3//nnn9eQIUMUHR2tDz74QMuWLVNxcbHWrFnjz+4BAHeoWQ95\nZWZmau7cubVvtCzt3LlTqampkmov/j7++OM6f/68cnJy6oX/zf74xz/qhz/8ob788kuFhoY2eJ2H\nvAAgsJoV/hUVFbpw4ULddnx8vDp27KiqqipNmzZNn3zyiXbv3q2oqKjbtvPxxx9rwIABOn78uO6/\n//4Gr18P//HjxyskpP4fJ16vV16v905LBgA0olnTPuHh4UpMTKy373rwnzx5Ujk5OU0GvyTl5eUp\nKChI3bp1u+1xWVlZjPwBIAB8mvOvrq7WlClTlJ+fr+3bt+vatWt1fxlER0crNDRUBw4cUG5urkaN\nGiWPx6MPPvhAixcv1syZM9W5c2e//CMAAM3j08JuRUVFDf4SsG1blmUpJydHI0aMUF5enjIyMlRY\nWKjKykolJCToe9/7nhYtWtTofL/EnD8ABBqregKAgVjbBwAMRPgDgIEIfwAwEOEPAAYi/AHAQIQ/\nABjI1eGfnp6uSZMmadOmTU6XAgDtCvf5A4CBXD3yBwAEBuEPAAYi/AHAQK6c87dtW+Xl5fJ4PLIs\ny+lyAKDdcWX4AwACi2kfADAQ4Q8ABiL8AcBAhD8AGIjwBwADEf4AYCDCHwAM9P+5xtKo/VO/4QAA\nAABJRU5ErkJggg==\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# α=5*10^-3, β=11.1を固定して計算すると\n", "ln_p_List = []\n", "N = len(t)\n", "alpha = 5*10^-3\n", "beta = 11.1\n", "for M in range(10):\n", " Phi = matrix(RDF, [[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()])\n", " Phi_t = Phi.transpose()\n", " # m_N, Aを定義\n", " A = alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta*A.inverse() * Phi_t * t\n", " # エビデンスの対数\n", " res = (t - Phi*m_N)\n", " E_mN = beta/2* res * res + alpha/2 * m_N * m_N\n", " ln_p_t = M/2 * ln(alpha) + N/2 * ln(beta) - E_mN - 1/2 * ln(A.det()) - (N/2 * ln(2*pi))\n", " ln_p_List += [ln_p_t]\n", "list_plot(ln_p_List, ymin = -26, ymax = -5).show(figsize=4)\n", "# 結果は、M=3以降でfig.3.14のような急激な降下は見られない" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

β_MLを使ってエビデンスを計算

\n", "\t

\n", "\t\tそこで、βを平均値の分散$\\beta_{ML}$を使って計算してみました。\n", "$$\n", "\t\t\\frac{1}{\\beta_{ML}} = \\frac{1}{N} \\sum (y(x_n, W_ML) - t_n)^2 \n", "$$\n", "\t

\n", "\t

\n", "\t\t期待に反し、M=0でも高い値となり、あまり良くありません。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEcCAYAAAAvJLSTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAFl1JREFUeJzt3XtwFeX9x/HPniQCuZKQECQQSMRKoEChFKihKhXl0mIU\nwUm4FKxYWqBA6FSwrTq1MCDS6WU6pg60RWxDenGwIGVQY5AOQmyQQOUqxQYpJLSYC4QaDNnfH+dH\n6CGQEM7Z7JLn/Zo549nNnn2+WeInT57dZ9eybdsWAMAoPrcLAAC0PcIfAAxE+AOAgQh/ADAQ4Q8A\nBiL8AcBAhD8AGIjwBwADeTL8bdvWr3/9azH/rHnr1693uwTP4xi1jGPUsvZ4jDwZ/mfPntVjjz2m\ns2fPul2Kp7XHH8hQ4xi1jGPUsvZ4jDwZ/gAAZ7X78A/lb+xQ7ctrvQiOUcs4Ri3jGLXMS8eI8Hdh\nX/xAtt1+QoVj1DKOUcu8dIzCQ1RHq9m2fc0x/ZqamoD/BqO+vj4k+wnlvtrrfkK5r/a6n1Duq73u\nJ5T7aq/7aWlfMTExsiyr2c9bbt3SuaamRnFxcW40DQDtWnV1tWJjY5vdxrXwb6nn37NnT3300Uct\nfgMAgEDX0/N3bdjHsqwWgz02NpbwBwAHtPsTvgCApgh/ADAQ4Q8ABiL8AcBAhP9NZvny5Ro2bJhi\nY2OVnJyshx56SEeOHHG7LM9avny5fD6fFi1a5HYpnnPy5ElNnz5diYmJioyM1KBBg/Tee++5XZZn\nNDQ06KmnnlJ6eroiIyPVp08fLV261O2yQsa1q31wY/7617/q29/+toYOHar6+no9+eSTuv/++3Xw\n4EF16tTJ7fI85W9/+5tWr16tQYMGuV2K51RVVSkzM1P33nuvtm7dqsTERH3wwQeKj493uzTPWLFi\nhV588UWtW7dO/fr1U0lJiWbOnKnOnTtr3rx5bpcXNML/JvOXv/wlYHnt2rXq2rWrdu/erZEjR7pU\nlfecO3dO06ZN05o1a/SjH/3I7XI8Z8WKFUpNTdWaNWsa1/Xq1cvFirxn586dysrK0tixYyVJqamp\nys/P17vvvutyZaHh6WGf7OxsPfDAA567P4eXVFVVybIsJSQkuF2Kp8ydO1cTJkzQl7/8ZbdL8aRN\nmzZp6NCheuSRR5ScnKwhQ4YE/CKAdOedd6qwsFAffPCBJGnv3r3asWOHxo8f73JloeHpnn9BQQGT\nvJph27YWLlyokSNHql+/fm6X4xkFBQUqLS1VSUmJ26V41rFjx5SXl6fvfOc7+v73v6/i4mLNnz9f\nHTt21LRp09wuzxOWLFmimpoa9e3bV2FhYWpoaNCyZcuUnZ3tdmkh4enwR/PmzJmjAwcOaMeOHW6X\n4hknTpzQwoUL9cYbbygiIsLtcjyroaFBw4YNaxwSGzRokPbv36+8vDzC///9/ve/V35+vgoKCtSv\nXz+VlpZqwYIF6t69u6ZPn+52ecGzPai6utqWZFdXV7tdimfNnTvXTk1NtcvKytwuxVNeffVV2+fz\n2REREXZ4eLgdHh5uW5bVuK6hocHtEj2hV69e9uOPPx6wLi8vz+7Ro4dLFXlPz5497by8vIB1S5cu\ntTMyMlyqKLTo+d+E5s2bpz//+c96++23lZqa6nY5njJ69Gj9/e9/D1g3c+ZMZWRkaMmSJS3e7MoU\nmZmZOnz4cMC6w4cPc9L3f5w/f77Jz4vP51NDQ4NLFYUW4X+TmTNnjtavX6+NGzcqKipKFRUVkqS4\nuDh17NjR5ercFxUV1eT8R1RUlLp06aKMjAyXqvKe3NxcZWZmavny5XrkkUdUXFysNWvWaPXq1W6X\n5hkTJkzQsmXL1LNnT/Xv31/vvfeefvKTn2jWrFlulxYabv/pcTUM+1zbpSGMK18vvfSS26V51qhR\no+zc3Fy3y/CczZs32wMGDLA7depk9+vXz/7Vr37ldkmecu7cOTs3N9fu3bu3HRkZaffp08d++umn\n7U8//dTt0kLCtfv5N+fSg16u54EEAIDW8/R1/gAAZxD+AGAgT4c/M3wBwBmM+QOAgTzd8wcAOIPw\nBwADEf4AYCDCHwAMRPgDgIEIfwAwEOEPAAbydPgzyQsAnMEkLwAwkKd7/gAAZxD+AGAgwh8ADET4\nA4CBCH8AMBDhDwAGIvwBwECEPwAYyNPhzwxfAHAGM3wBwECe7vkDAJxB+AOAgdok/B999FH5fL6A\n1/jx49uiaQDAVYS3VUPjxo3T2rVrdekUQ4cOHdqqaQDAFdos/Dt06KCkpKS2ag4A0Iw2G/Pftm2b\nkpOT1bdvX82ZM0cff/xxWzUNALhCm1zq+Yc//EGRkZFKS0vTP/7xDz355JOKiYnRzp07ZVlWk+25\n1BMAnBXy8M/Pz9fs2bP9O7csbdmyRZmZmQHbfPjhh7rttttUWFioUaNGNdkH4Q8Azgr5mH9WVpZG\n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\nRK5CYII=\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 1/β_ML = 1/N Σ{y(x_n,W_ML) - t_n}^2から計算したβ_MLでエビデンスを計算\n", "beta_ML_List = []\n", "ln_p_List = []\n", "for M in range(10):\n", " Phi = matrix(RDF, [[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]) \n", " Phi_t = Phi.transpose()\n", " # m_N, Aを定義\n", " A = alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta* A.inverse() * Phi_t* t \n", " # エビデンスの対数\n", " res = (t - Phi*m_N)\n", " beta_ML = N / (res*res)\n", " E_mN = beta_ML/2* res * res + alpha/2 * m_N * m_N\n", " ln_p_t = M/2 * ln(alpha) + N/2 * ln(beta_ML) - E_mN - 1/2 * ln(A.det()) - N/2 * ln(2*pi)\n", " ln_p_List += [ln_p_t]\n", " beta_ML_List += [beta_ML]\n", "list_plot(ln_p_List, ymin = -26, ymax = 0).show(figsize=4)\n", "#print beta_ML_List" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

どうして図3.14と合わないのか?

\n", "\t

\n", "\t\tどうして図3.14のような結果にならないのかと調べたのですが、他にも同様の計算をした\n", "\t\t方がいらして、私と同じ傾向になったとの記述がありました。\n", "\t\t基底関数を色々変えて、線形回帰のエビデンスを計算してみた\n", "\t

\n", "\t

\n", "\t\t私の推測では、ln |A|の計算をA.norm()と間違えたのではないかと思われます。以下にA.norm()としたときの図を示します。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 当初、式3.85, 3.86のミスプリと考えたのですが、\n", "# →http://d.hatena.ne.jp/n_shuyo/20090715/evidence#c\n", "# n_shuyoさんのコメントで 正則行列の行列式は、逆行列の行列式の逆数:|A| = 1/|A^-1|\n", "# 式3.85, 3.86 は正しい!\n", "# 私の推測:図3.14の計算で ln |A|とするところをln A.norm()と間違えたのではないか\n", "ln_p_List = []\n", "for M in range(10):\n", " Phi = matrix(RDF, [[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]) \n", " Phi_t = Phi.transpose()\n", " # m_N, Aを定義\n", " A = alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta* A.inverse() * Phi_t* t \n", " # エビデンスの対数\n", " res = (t - Phi*m_N)\n", " E_mN = beta/2* res * res + alpha/2 * m_N * m_N\n", " ln_p_t = M/2 * ln(alpha) + N/2 * ln(beta) - E_mN - 1/2 * ln(A.norm()) - N/2 * ln(2*pi)\n", " ln_p_List += [ln_p_t]\n", "list_plot(ln_p_List, figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

最適なα、βを求める

\n", "\t

\n", "\t\tα、βを固定にした場合に、エビデンスが最大はM=4だったので、M=4に対する\n", "\t\t最適なα、βを求めてみます。\n", "\t

\n", "\t

\n", "\t\tエビデンスを最大にするαは、式(3.92)\n", "$$\n", "\t\t\\alpha = \\frac{\\gamma}{m_N^T m_N}\n", "$$\n", "\t\tここで$\\gamma$は、式(3.87)\n", "$$\n", "\t\t(\\beta \\Phi^T \\Phi) u_i = \\lambda_i u_i\n", "$$\n", "\t\tの固有値から、式(3.91)\n", "$$\n", "\t\t\\gamma = \\sum_{i} \\frac{\\lambda_i}{\\alpha + \\lambda_i}\n", "$$\n", "\t\tで求まります。\n", "\t

\n", "\t

\n", "\t\tβについても、式(3.95)\n", "$$\n", "\t\t\\frac{1}{\\beta} = \\frac{1}{N - \\gamma} \\sum_{n=1}^{N} ( t_n - m_N^T \\phi(x_n))^2\n", "$$\n", "\t

\n", "\t

\n", "\t\t$\\gamma$は、$\\alpha$に依存し、$m_N$も$\\alpha$に依存するため、すぐに最適な値を得ることが\n", "\t\tできません。\n", "\t\t\n", "\t\t

    \n", "\t\t\t
  1. 適当な $\\alpha, \\beta$を初期値とする
  2. \n", "\t\t\t
  3. $m_N$, $\\gamma$を求め
  4. \n", "\t\t\t
  5. 式(3.95)から$\\beta$を求める
  6. \n", "\t\t\t
  7. 式(3.92)から$\\alpha$を求め、2番目からを繰り返す
  8. \n", "\t\t
\n", "\t

\n", "\t

\n", "\t\t以下の例では、\n", "\t\t

\n", "\t\tから20回の計算を繰り返し、$\\gamma, \\alpha, \\beta$の値をプリントアウトしてみました。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.02295319874 0.0160029572678 15.5703330431\n", "3.86957616939 0.0192233025727 14.6079344569\n", "3.81804019954 0.0208658867531 14.0162355337\n", "3.79079625631 0.021876053777 13.6574090928\n", "3.77410819657 0.0225480023858 13.4248103487\n", "3.76308615077 0.0230152846069 13.2666278994\n", "3.75546956914 0.0233495381967 13.1554382026\n", "3.75004882783 0.0235932327887 13.0754487343\n", "3.74611222743 0.0237732924978 13.0169432556\n", "3.74321234677 0.0239076177514 12.973632867\n", "3.7410540217 0.0240085312871 12.9412853436\n", "3.73943541844 0.0240847392383 12.9169657574\n", "3.7382147331 0.0241425141272 12.8985911035\n", "3.73729026269 0.0241864427411 12.8846563016\n", "3.73658790674 0.0242199173426 12.8740587014\n", "3.73605302024 0.0242454685376 12.8659818046\n", "3.73564493065 0.0242649966702 12.8598160009\n", "3.73533314922 0.0242799360403 12.8551032449\n", "3.73509469602 0.0242913734086 12.8514976848\n", "3.73491217789 0.0243001346625 12.848737196\n" ] } ], "source": [ "# M=4の場合のα、βを決める\n", "M=4\n", "Phi = matrix(RDF, [[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]) \n", "Phi_t = Phi.transpose()\n", "# Φ^T Φは固定なので、先に固有値を計算\n", "B = Phi_t*Phi\n", "lambs = B.eigenvalues()\n", "# 初期化\n", "alpha = 5*10^(-3)\n", "beta = 11.1\n", "gamma = M\n", "for i in range(20):\n", " A = alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta* A.inverse() * Phi_t* t \n", " gamma = sum((lamb*beta) /(alpha + (lamb*beta)) for lamb in lambs)\n", " alpha = gamma/(m_N*m_N)\n", " res = (t - Phi*m_N)\n", " beta = (N - gamma) / (res*res)\n", " print gamma, alpha, beta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\t

γと2αEw(mN)のグラフ

\n", "\t

\n", "\t\tM=4の多項式回帰に対して、図3.16(a)\n", "\t

\n", "\t

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

\n", "\t

\n", "\t\tのように$\\gammaと2\\alpha E_w(m_N)$のグラフを$\\ln \\alpha$の関係を図化してみます。\n", "\t

\n", "\t

\n", "\t\t形が図3.16とは異なり、曲線の交差する点もα=0.024だとln αの値は負になるのに、図3.16は正の部分で\n", "\t\t交差しています。(何かちがう!)\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# γをln(a)の関数として定義\n", "def g(ln_a):\n", " return abs(sum((lamb*beta) /(e^ln_a + (lamb*beta)) for lamb in lambs))\n", "a_plt = plot(g, [x,-6, 6], color='red')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 2αEw(m_N)をln(a)の関数として定義\n", "def aEw(ln_a):\n", " a = (e^ln_a).n()\n", " A = a*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta* A.inverse() * Phi_t* t\n", " # m_Nいくつかの点が複素数になるためabs(a*m_N*m_N)とした\n", " return abs(a*m_N*m_N)\n", "Ew_plt = plot(aEw, [x,-6, 6], color='blue')\n", "(a_plt + Ew_plt).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

残差と対数エビデンスのグラフ

\n", "\t

\n", "\t\t同様に、M=4の多項式回帰に対して、図3.16(b)\n", "\t

\n", "\t

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

\n", "\t

\n", "\t\tのように残差と対数エビデンスを$\\ln \\alpha$の関係を図化してみます。\n", "\t

\n", "\t

\n", "\t\tやはり形が、図3.16とは異なります。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "b_phi_2 = beta*Phi_t*Phi\n", "Phi_t_t = Phi_t* t\n", "def ln_pt(ln_a):\n", " a = (e^ln_a).n()\n", " A = a*matrix(RDF, (M+1),(M+1),1) + b_phi_2\n", " m_N = beta* A.inverse() * Phi_t_t\n", " res = (t - Phi*m_N)\n", " E_mX = beta/2 * res*res + a/2 * m_N*m_N\n", " # E_mXいくつかの点が複素数になるためabs(E_mX)とした\n", " return (M/2 * ln_a + N/2 * ln(beta) - abs(E_mX) -1/2*ln(A.det()) - N/2*ln(2*pi)).n()\n", "#\n", "def res2(ln_a):\n", " a = (e^ln_a).n()\n", " A = a*matrix(RDF, (M+1),(M+1),1) + b_phi_2\n", " m_N = beta* A.inverse() * Phi_t_t\n", " res = (t - Phi*m_N)\n", " return abs(res*res)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ln_pt_plt = plot(ln_pt, [x,-6, 6], color='red')\n", "res_2_plt = plot(res2, [x,-6, 6])\n", "(ln_pt_plt + res_2_plt).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

M=4に対する最適な解

\n", "\t

\n", "\t\tM=4の多項式回帰に対する最適なα、βを使って$sin(2 \\pi x)$、観測データ、フィッティング曲線、分散をグラフに表示してみます。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# データのプロット\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))" ] }, { "cell_type": "code", "execution_count": 12, "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", "alpha = 0.0243001346625 \n", "beta = 12.848737196\n", "\n", "Phi = matrix(RDF, [[ _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 = (alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi).inverse()\n", " s_sqr = 1/beta + phi_x * S * 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(ymin=-1.25, ymax=1.25, figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

\n", "\t\tM=9の最適解(図1.17)\n", "\t

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

\n", "\t\tと比べると若干フィッティングが良くありませんが、与えられた点をスムーズに補完しているのがわかります。\n", "\t

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

どうしてエビデンス関数が合わないのか

\n", "\t

\n", "\t\tつぎにどうして、図3.16と合わないのか、調べてみます。\n", "\t

\n", "\t

\n", "\t\t図3.16の説明をよく読むと、基底関数が多項式ではなく、ガウス基底関数になっていました。\n", "\t

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

基底関数のチェック

\n", "\t

\n", "\t\tガウス基底関数がどのようなものなのか、図3.1を再現しながら、見てみましょう。\n", "\t

\n", "\t

\n", "\t\t以下に、\n", "\t\t

\n", "\t\tを表示します。\n", "\t

\n", "\t

\n", "\t\tガウス基底関数、シグモイド基底関数では、μの値として-1から1(問題によって0から1の場合もある)に\n", "\t\tとり、それを基底関数の数で等分した値をとるみたいです。\n", "\t\t線形回帰モデルとかを参考にしました。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 基底関数のチェック\n", "from pylab import linspace\n", "M = 11\n", "mu = linspace(-1, 1, M)\n", "s = 0.1\n", "s_sq = (s)^2\n", "# 多項式基底関数定義\n", "def _phi_poly(x, j):\n", " return x^j\n", " \n", "# ガウス基底関数\n", "def _phi_gauss(x, j):\n", " return e^(-1*(x - mu[j])^2/(2* s_sq))\n", " \n", "# ロジスティック基底関数\n", "def _logi_sig(x):\n", " return 1/(1 + e^(-1*x))\n", " \n", "def _phi_sigmoid(x, j):\n", " return _logi_sig((x - mu[j])/s)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 11 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = var('x')\n", "poly_plt =Graphics()\n", "for j in range(1, M+1):\n", " f = lambda x : _phi_poly(x, j)\n", " poly_plt += plot(f, [x, -1, 1])\n", "poly_plt.show(figsize=4)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 11 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gauss_plt =Graphics()\n", "for j in range(M):\n", " f = lambda x : _phi_gauss(x, j)\n", " gauss_plt += plot(f, [x, -1, 1])\n", "gauss_plt.show(figsize=4)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 11 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sigmoid_plt =Graphics()\n", "for j in range(M):\n", " f = lambda x : _phi_sigmoid(x, j)\n", " sigmoid_plt += plot(f, [x, -1, 1])\n", "sigmoid_plt.show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

ガウス基底関数を使ったγと2αEw(mN)のグラフ

\n", "\t

\n", "\t\tM=9個のガウス基底関数を使ったγと2αEw(mN)のグラフを以下に示します。\n", "\t

\n", "\t

\n", "\t\t関数の形状と交差点の位置が図3.16と合います。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.97526712356 2.74314585233 3.30139118584\n", "4.42110226407 6.39625703349 10.1314598003\n", "4.79283709455 6.1963658677 10.6098731118\n", "4.8967250477 6.15221412668 10.6952056914\n", "4.9168569352 6.14416827636 10.7091975089\n", "4.92032750261 6.14279733566 10.711525715\n", "4.92091184724 6.14256697047 10.7119152912\n", "4.92100983164 6.14252835527 10.7119805478\n", "4.92102625056 6.14252188502 10.7119914807\n", "4.92102900151 6.14252080095 10.7119933124\n", "4.92102946241 6.14252061933 10.7119936193\n", "4.92102953963 6.1425205889 10.7119936707\n", "4.92102955257 6.1425205838 10.7119936793\n", "4.92102955474 6.14252058294 10.7119936808\n", "4.9210295551 6.1425205828 10.711993681\n", "4.92102955516 6.14252058278 10.7119936811\n", "4.92102955517 6.14252058277 10.7119936811\n", "4.92102955518 6.14252058277 10.7119936811\n", "4.92102955518 6.14252058277 10.7119936811\n", "4.92102955518 6.14252058277 10.7119936811\n" ] } ], "source": [ "# ガウス基底関数で三角関数の例題を近似\n", "# j=0に対応するため_phiを以下のように定義\n", "def _phi(x, j):\n", " if j == 0:\n", " return 1\n", " else:\n", " return _phi_gauss(x, j-1)\n", "\n", "# 定数をセット\n", "M=9\n", "mu = linspace(0, 1, M)\n", "Phi = matrix(RDF, [[ _phi(x,j) for j in range(0, (M+1))] for x in X.list()]) \n", "Phi_t = Phi.transpose()\n", "# Φ^T Φは固定なので、先に固有値を計算\n", "B = Phi_t*Phi\n", "lambs = B.eigenvalues()\n", "# 初期化\n", "alpha = 5*10^(-3)\n", "beta = 11.1\n", "gamma = M\n", "for i in range(20):\n", " A = alpha*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta* A.inverse() * Phi_t* t \n", " gamma = sum((lamb*beta) /(alpha + (lamb*beta)) for lamb in lambs)\n", " alpha = gamma/(m_N*m_N)\n", " res = (t - Phi*m_N)\n", " beta = (N - gamma) / (res*res)\n", " print gamma, alpha, beta" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEdCAYAAAAFP7AiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XlYVFeaP/BvFUuxrwICEcGNRWQTCgTFrTXigls0kE7U\naE8nLklM0pN2+pee7umObSbJTKczxsSY1miMkJiOosS0ewRBkF0UxI0IBEVQqELW2n5/nIZI3FCq\n6lTd+36epx6R5d5XQu6Xe88575HodDodCCGEiI6UdwGEEEL4oAAghBCRogAghBCRogAghBCRogAg\nhBCRogAghBCRogAghBCRogAghBCRogAgoqXT6aBUKkFrIYlYUQAQ0WptbYWzszNaW1t5l0IIFxQA\nhBAiUhQAhBAiUpa8CyCEEGPR6XRob29Ha2srdDodbG1t4ezsDIlEwrs0LigAiOilpKTA0tISqamp\nSE1N5V0O0TONRoMLFy7g3LlzqK6uRnt7e5+PW1paws/PD4GBgRgzZgxsbW05VWp8EmoHTcRKqVTC\n2dkZCoUCTk5OvMsheqbValFWVoYTJ05AoVDA29sbw4cPh4+PD5ycnCCRSNDW1obGxkZcuXIF1dXV\nsLCwgFwux/jx42FjY8P7n2BwFABEtCgAhKuxsRF79+5FfX09QkJCkJiYCC8vrwd+ze3bt5Gfn4+8\nvDxYW1tj1qxZCAkJMVLFfFAAENGiABCm4uJiHDhwAK6urpg7dy6eeOKJR/r61tZWfPfdd6isrERk\nZCRmzZoFCwsLA1XLFwUAES0KAGHRarU4dOgQ8vPzMXbsWDz55JOwsrJ6rGPpdDqUlpbi22+/ha+v\nLxYvXgx7e3s9V8wfBQARLQoA4dBqtdi7dy/Onj2LGTNmQC6X6+W4tbW1+PLLLyGTybB06VLB/ZzQ\nOgBCiFm78+K/cOFCvV38AWDIkCFYvnw51Go1tm/fDqVSqbdjmwIKAEKI2dLpdMjMzOy9+I8ePVrv\n53Bzc8OyZcugVqvx+eefo6OjQ+/n4IUCgBBitnJzc1FSUoLk5GSDXPx7uLq6YsmSJWhra8Pu3buh\n0WgMdi5jogAghJilyspKHDlyBBMmTEBERITBz+fu7o6nn34aNTU1yMzMFEQXWQoAQojZuXnzJvbu\n3YuQkBBMnjzZaOcdOnQokpOTUVpaisLCQqOd11AoAAghZkWtVuPrr7+Gg4MDkpOTjd7HJywsDDEx\nMTh48CCuXbtm1HPr24B7AeXnAzdvAjY2P71sbfv+3cYGkMkAKcUNIWSADh8+jMbGRqxYsQIymYxL\nDdOnT0ddXR12796NF154gVsdAzXgdQBz5gCZmf37XGvre4dDz8vBoe/L0fHu9935MUdHwMUFcHam\ncCGPrmcdQFJSEjWDMxNVVVVIT09HUlKSXqd7Po5bt27hk08+QVBQEObNm8e1lsc14ABQKoG2NqCj\nA+jsvPfrfh+78/0dHew4t2//9Gpt/ent7u4H/CMkLARcXABXV/b6+dtuboCnJ+Dlxf709GRfI9Iu\nsAS0EMzcdHR0YNOmTfD29kZqaqpJtHAuLS1FRkYGUlJSEBgYyLucRzbgR0BOTuxlaN3dPwVETzAo\nlUBLC9Dc/NPrzr/X1fX92M9nbllb9w2FO8PBxwcYMoS9fHyAx1xRTgjRk4MHD0KlUmH27NkmcfEH\ngPDwcFRUVCAzMxN+fn5m10paNK0gtFoWAjduAA0Nff+819u3b//0tRIJMHjwT4EwZAjg5wcEBAAj\nRgDDhgF2dvz+beTx0B2A+bh06RK++OILJCcnIzIyknc5fSiVSmzatAmBgYGYP38+73IeiWg2hJFK\nAXd39goOfvjnK5VAbS171dX99HZtLXD2LFBTwx5b9fD2ZmEwfDh7jRjBzhMYyMY3CCGPR61W48CB\nAwgICDDKfP9H5eTkhBkzZiAjIwPh4eEYNmwY75L6TTR3APqm07E7hUuXgMuX2evOt2/eZJ8nlbIw\nGD2672vUKDYzivBDdwDmISsrCydOnMDKlSsxaNAg3uXck06nw2effYa2tjasXLnSbNpHUwAYSHMz\nUFEBnDvX93X9Ovu4hQW7O4iKAqKj2SsiAhBgx1mTRQFg+lpaWvDhhx9CLpdj2rRpvMt5oIaGBmze\nvBlTpkzB+PHjeZfTL6J5BGRsrq5AQgJ73enWrZ/C4MwZoKgI2L0b6OpidwvBwcDYsSwQ5HIgMpIN\nVhMiRocOHYKNjQ0SExN5l/JQXl5eiI2NRVZWFsaMGQNnZ2feJT0U3QGYAJWKBUJREVBYyP4sK2Mz\nn2xtgdhYYPx4YMIEIC7OOLOuxIDuAEzb5cuXsXPnTixYsABjxozhXU6/dHV1YePGjRg6dCieeuop\n3uU8FAWAieruBkpLgZMnf3o1NrK7hPBwYOJEYNo09ic9Nno8FACmS6vVYvPmzbCxscGyZctMZtpn\nf5SUlGDfvn1YsWLFI29HaWwUAGZCpwMuXmRBkJ0NHDvGZiJZWQHx8SwMpk1jj4/MZPyJOwoA01VW\nVoa9e/eaxUX058wpvKiBgpmQSNjMoeXLgW3bgB9+AM6fB/73f9mK5v/+b/aoyMMDePpp4Isv2EA0\nIeZGrVbj+PHjCA4ONruLPwBIpVJMmzYNNTU1qKqq4l3OA1EAmCmJhM0iWrMGyMhg005PngRefplN\nQ332WbaieepU4IMPWGCQe0tJSUFycjLS0tJ4l0IAFBQUQKlUYsqUKbxLeWzDhw/HsGHDcOTIEZPe\nPIYeAQlUXR2wfz8Lh2PH2EBzWBgwfz67Q+jPYjiho0dApqezsxMffPABgoODMWfOHN7lDMj169ex\nefNmzJw5EzExMbzLuSe6AxCoJ54AVq4E/vlPoKkJ+OorYMwY4K9/BUJC2EDyhg3AlSu8KyXkJ6dO\nnYJKpcKkSZN4lzJggwcPRlhYGLKysqBSqXiXc08UACLg5AQsWgTs3MlWL+/Zw+4A3nqLta2IjWWP\niXpWLxPCQ0dHB/Lz8xETEwNHR0fe5ejFxIkT0dbWZrK7h1EAiIyNDTBvHpCezhrfpaezRnevv866\nni5aBBw4AKjVvCslYpOXlweNRoP4+HjepeiNm5sbIiIicPLkSXQ/qKc9JxQAImZvz8YDMjKAH38E\n3n4bqKoCZs0Chg4F1q1jfyfE0Hp++4+OjoaDgwPvcvQqMTERnZ2dOH36NO9S7kIBQACwGUOvvspW\nIBcUsLuEzZuBoCA2k2jPHrorIIaTn58PjUaDhJ/3ThEAFxcXREVFITc3F11dXbzL6YMCgPQhkbA+\nRB9+CFy7xtYTdHYCCxawfQ/+8hf26MgUabVa/P73v8ewYcNgZ2eHESNG4K233uJdFnmIzs5O5OXl\nYezYsYL77b/HhAkT0N3djYKCAt6l9EEBQO7LxgZ45hkgJwcoLgamTwf+/Ge2Ic6SJYCp3dG+/fbb\n2Lx5MzZt2oTz58/jnXfewTvvvIONGzfyLo08gJB/++/h5OSE8PBw5OXlmdSMIAoA0i+RkcCnn7L1\nBevXs0VnsbHAuHHs8ZAprHU5deoU5s6dixkzZsDPzw8LFizA9OnTTfLZK2G6u7uRl5eHqKgowcz8\nuZ+EhAS0t7ejpKSEdym9KADII3F3B37zG9aXaN8+1qp6wQK2tuCTT9jjIl7i4+Nx9OhRXLx4EQDr\nJ5OTk4OZM2fyK4o8UElJCbq6ugQ18+d+3NzcEBoaitzcXJNZHUwBQB6LhQUwZw5w4gSQl8cWmb34\nIuDvz8YJFArj17Ru3To8/fTTCAoKgrW1NcaOHYu1a9ciJSXF+MWQh9JoNDh16pTZ9M7Xh/Hjx0Oh\nUKC8vJx3KQAoAIgexMYCX3/NpozOmwf86U8sCP7rv4CWFuPV8eWXX2LXrl1IT09HSUkJtm/fjnff\nfReff/658Yog/VZRUQGFQoFx48bxLsVoPD09ERgYiJMnT0Kr1fIuh3oBEf2rrwfeeYdNI7W2Bl55\nBVi7FnBzM+x5/fz88Lvf/Q4vvvhi7/vWr1+PL774AhUVFXd9fk8voKSkJFha9t0cLzU1FampqYYt\nWMR0Oh02b94MBwcHPPvss7zLMaq6ujr8/e9/x6JFixASEsK1FtoSkuidjw/w/vtsIdl777HXX/8K\nvPQSGz8wVBC0t7ff1XtdKpU+9Det9PR0agZnZFeuXEFDQwOefPJJ3qUY3RNPPIGAgABkZ2cjODiY\n634B9AiIGMzgwezi/8MPwOrVrN9Qz1qCtjb9n2/OnDlYv349Dhw4gKtXr2LPnj3461//igULFuj/\nZGRAcnJy4O3tDX9/f96lcDF+/Hhcv34dP3Du004BQAzO05O1mbh8ma0f+OMfWRO6jRvZ1pf6snHj\nRjz11FNYvXo1QkJC8MYbb2DlypX405/+pL+TkAGrr69HdXU1EhISTHq3LEMKCAiAl5cXTp06xbUO\nGgMgRvfDDywEPv+c9Rz605/YgjOpkX8dof0A+Pj6669RX1+PNWvWQGrs/+gmpGfby1WrVsHDw4NL\nDeL97hNu/P2Bzz4DysuBiAjgueeAmBggK4t3ZcTQFAoFKioqEBcXJ+qLPwCEhobCwcEBeXl53GoQ\n938BwlVICPDNN2xVsYUFMHEisHAhe1REhKmgoADW1tYIDw/nXQp3FhYWkMvlKCsrQ5shBsX6gQKA\ncJeQwBaT7dzJ+gsFB7PZQsZcQ0AMT6VSobi4GBEREZDJZLzLMQnR0dGQSqXcmsRRABCTIJUCv/wl\nW0z2n/8JfPwxMGIEsGmTafQZIgNXXl6Ojo4OyOVy3qWYDFtbW0RERKCgoIBLkzgKAGJS7OyAN98E\nLlwAkpOBNWvY+ADnyRJkgHQ6HfLz8zFq1Ci4GXpFoJmJi4tDe3s7zpw5Y/RzUwAQk+TjA2zdyh4N\nSaVAfDywYgXQ2Mi7MvI4rl69ihs3biA2NpZ3KSbHzc0NQUFByMvLg7EnZVIAEJMmlwP5+cBHH7G2\n04GB7PEQPRYyL/n5+fDw8EBAQADvUkxSXFwcmpqacNnIMyAoAIjJs7BgnUarqljr6ZUrgbg4tnUl\nMX3Nzc2oqqqCXC4X7cKvh/Hz88PgwYONvncFBQAxGx4ebFOa3Fx2BxAby5rM3b49sOOmpKQgOTkZ\naWlp+imU9FFQUACZTIawsDDepZgsiUQCuVyOixcv4tatW0Y7LwUAMTvjxrHf/t97j21CExoK/POf\nj3+89PR07Nu3j7p/GkB3dzeKi4sRFRUFa2tr3uWYtNDQUNja2hr1LoACgJglCwvgtdeAs2eBUaOA\npCS2oripiXdl5E5nzpxBd3c3YmJieJdi8qysrBAVFYXS0lJ067NJ1gNQABCzNmwYcPAgay3x7bds\nEdmuXQB1uOKvZ+pnUFAQXFxceJdjFmJiYtDd3Y2ysjKjnI8CgJg9iQRYuhSorASmTmULymbPBmpq\neFcmblevXkVTUxP99v8InJ2dERQUhNOnTxtlSigFABEMLy8gPZ1tVl9WBowezcYI6G6Aj8LCQri7\nu4u25//jksvlaGpqQnV1tcHPRQFABGfOHKCiAkhJAV54gY0P1NXxrkpcbt++jcrKSkRHR9PUz0c0\ndOhQeHp6GmUwmAKACJKTE7BlC3DgAGs7HRoK7NhBdwPGUlJSAqlUSl0/H0PPlNCqqio0Nzcb9FwU\nAETQkpLYTKE5c9g4wbx5QEMD76qETavVoqioqHdaI3l0YWFhsLGxMXiXUAoAIniurmz3sT17WG+h\nMWPYjCFiGJcuXYJCoUB0dDTvUsyWlZUVIiMjUVpaatAuoRQARDTmzWOPg+RyNkvoN7/hXZEwFRYW\nwtvbGz4+PrxLMWtjx45FR0cHKioqDHYOCgAiKp6ewP79bEP6HTvY+8rL+dYkJC0tLbh48SIN/uqB\nu7s7hg0bZtDHQBQARHQkEmD1auDECfb3CRNSEBqajC++oF5AA1VUVASZTIbQ0FDepQhCTEwMfvzx\nR1y7ds0gx6cAIKIVHMz+XLkyHefO7cP27amor+dbkznTaDQoKSlBWFgY9f3Rk1GjRsHJyclgdwEU\nAET0Nmxg7STKy4GwMCAjg3dF5qmyshJtbW00+KtHUqkUUVFROHv2LDo7O/V/fL0fkRAzNH06cOYM\n26B+3jy2FaUB/n8TtKKiIvj5+cHT05N3KYISFRUFjUZjkP5AFACE/IuHB7B3L/Dhh2wRWUICYOQN\nmsxWY2MjfvjhB/rt3wAcHR0RFBSEwsJCvfcHogAg5A4SCbBqFVsvoFAAUVHA7t28qzJ9hYWFsLOz\nQ3DPwArRq+joaDQ1NeHq1at6PS4FACH3EBkJFBcDM2YAixfTI6EHUalUKCsrQ2RkJCwtLXmXI0j+\n/v4YNGiQ3geDKQAIuQ8nJ9Zd9KOP2FaU8fHApUu8qzI9Z8+eRVdXF8aOHcu7FMGSSCSIjo7G+fPn\n0draqrfjUgAQ8gASCduQ/tQpoLWVPRL65hveVZmWwsJCjBgxAq6urrxLEbTw8HBYWFiguLhYb8ek\nACCkHyIjgaIi4MkngYULgXXrALWad1X81dfXo76+ngZ/jcDGxgahoaEoLi6GVqvVyzEpAAjpJycn\n4Kuv2Gb0773HwqCxkXdVfBUWFsLJyQkjR47kXYooxMTEQKlU4sKFC3o5HgUAIY9AIgFefx04fJgt\nHIuKAoywb4dJ6uzsRHl5OaKioiCV0qXEGLy9veHr64vCwkK9HI/+qxHyGCZPZrOEfH2BCRPEufVk\nWVkZtFotoqKieJciKtHR0bh8+TJu3bo14GNRABDRS0lJQXJyMtLSHq0Z3BNPsIZyK1awrSdXrAA6\nOgxUpInR6XQoKipCYGAgHB0deZcjKqNHj4aNjY1e7gJo0i4RvfT0dDg5OT3W18pkwKZNQGwsmy1U\nVsZmCQ0dquciTUxNTQ0aGxsxY8YM3qWIjpWVFcaNG6eXY9EdACF6sHQpkJsL3LwJxMQAJ0/yrsiw\nioqK4ObmhoCAAN6liFJiYiISExMHfBwKAEL0JDISKChgbaanTAH+/nfeFRlGe3s7KioqMHbsWNr0\nxcxRABCiRx4ebIbQ8uXAr34FvPKK8NYLlJaWAgAiIiI4V0IGisYACNEza2vWPiIsDHj5ZaCiAvjy\nS8DNjXdlA9cz+BsSEgI7Ozve5ZABojsAQgygp6vooUNsumhsLFBZybuqgauursatW7eo749AUAAQ\nQamvr8dzzz2HQYMGwc7ODuHh4XrtnfKopkxh4wIyGQuBAwe4laIXhYWF8PDwgJ+fH+9SiB5QABDB\naGlpQUJCAmQyGQ4ePIjKykr8z//8D/cmZcOGsRlCkyYBs2cD775rnovGWltbUVVVRYO/AkJjAEQw\n3n77bfj5+eHTTz/tfd9QE5mQ7+TEdhv7/e+BN94Azp1jq4fNae/0kpISSKVShIeH8y6F6AndARDB\n2L9/P6Kjo7F48WJ4eXkhKiqqTxjwJpUC69cDO3cCaWmsmVxzM++q+ker1aK4uBihoaGwsbHhXQ7R\nEwoAIhhXrlzBRx99hMDAQBw6dAgvvvgiXn75ZezcuZN3aX388pfAkSNsE/px44ArV3hX9HCXLl2C\nQqGgts8CI9Hpe5dhQjiRyWSQy+XIzs7ufd8rr7yCwsJC5OTk3PX5SqUSzs7OUCgUj90KYiAuXgRm\nzWJ3ARkZbMcxU5WWlgalUolf//rX9PxfQGgMgAiGt7f3XZuSBwcH45uHbOGVkpJy1162qampSE1N\n1XuNdxo5ku00Nn8+my20fTvw9NMGPeVjUSgUuHjxImbNmkUXf4GhACCCkZCQgKqqqj7vq6qqeuhA\n8ECawQ2UuztbObxiBZCSAly+DPzHf7B1BKaiuLgYVlZWCA0N5V0K0TMKACIYr776KhISErBhwwYs\nXrwY+fn5+PTTT7FlyxbepT2QTAZ8/jkwYgTw//4f23j+449NY4aQRqNBcXExxowZA5lMxrscomc0\nCEwEIzo6Gnv27EFaWhrGjBmD9evX429/+xtSUlJ4l/ZQEgnwxz8CO3awWUJJSYBCwbsq4MKFC7h9\n+zYN/goUDQIT0eI9CHw/J04Ac+eyPQW++w7w8eFXy86dO9HV1YUVK1bwK4IYDN0BEGJiJk5k+wnc\nusVmBp0/z6eOW7du4fLly9T3R8AoAAgxQaGhrH2EgwOQkMDeNraioiLY2Nhg9OjRxj85MQoKAEJM\n1JAhQHY2C4OpU9laAWNRq9UoLS1FeHg4rKysjHdiYlQUAISYMFdX4OBBtmBswQJg82bjnPf8+fNo\nb2+nxz8CRwFAiImzsWEbyqxaxTae/8//NHw30cLCQgwdOhQeHh6GPRHhitYBEGIGLCyADz5gj4V+\n+1vgxx/Z3YClAf4PbmxsxNWrV7Fw4UL9H5yYFAoAQsyERMJaSXt7sz2HGxqAr74C9L0zY2FhIezs\n7BAUFKTfAxOTQ4+ACDEzzz0HfPst8P33rKV0S4v+jt3V1YXS0lJERUXd1R+JCA8FABG9lJQUJCcn\nIy0tjXcp/TZ9OnD0KNtYZtIkdjegD2fOnIFKpaKVvyJBK4GJaJnqSuBHce4cCwM7O9ZUzt//8Y+l\n0+nw0Ucfwd3dHU+bYltSond0B0CIGRs9mq0a1unYgrFz5x7/WFevXkVjYyNiYmL0VyAxaRQAhJi5\ngAAWAoMGAYmJQH7+4x2noKAAgwYNQkBAgH4LJCaLAoAQARg8mDWRCw5mq4aPHHm0r1cqlaisrERM\nTAxt+iIiFACECISLC3DoELsLmDUL+Mc/+v+1RUVFsLKyQnh4uOEKJCaHAoAQAbGzA/buZW0jFi8G\n/v73h3+NRqNBUVERwsLCaNMXkaGJvoQIjLU121TG1RX41a8ApRJ49dX7f35lZSXa2tpo8FeEKAAI\nESALC+DDDwFnZ+C114D2drbd5L0UFBTA398fnp6exi2ScEcBQIhASSTAX/4C2NsDb74JtLUB69f3\n3XD++vXrqKmpwaJFi/gVSrihACBEwCQSdvG3swNef52FwPvv/xQCp0+fhqOjIwIDA/kWSrigACBE\nBF57DbC1ZS2lOzqAjz4CurraUV5ejsTERFhYWPAukXBAAUBELyUlBZaWlkhNTUVqairvcgxm5Up2\nJ7B8ORsT+Ld/KwIA2vRFxCgAiOilp6ebbS+gR7V0KbsTeO45Dfz9CxATEwY7ffeTJmaD1gEQIjKL\nFwOffFIBK6tWfP55LDo6eFdEeKEAIERkdDodurvz4Ow8DAcOeGL2bOD2bd5VER4oAAgRmbq6OtTX\n12PmzFj885/A6dNsYxmFgndlxNgoAAgRmby8PLi5uWHkyJFITGQby1RUAL/4BXDrFu/qiDFRABAi\nIgqFApWVlYiNje3t+imXA8ePA9XVLARu3uRcJDEaCgBCROT06dOwtrZGREREn/dHRADHjgG1tayd\ndFMTpwKJUVEAECIS3d3dKC4uRlRUFKytre/6eFgYuxO4dg2YMgVobORQJDEqCgBCRKKsrAxdXV2Q\ny+X3/ZzQUBYCN24Akyfrb7N5YpooAAgRAa1Wi1OnTiE4OBguLi4P/NyQEOD779mA8OTJwPXrxqmR\nGB8FACEicP78eTQ3NyM+Pr5fnx8UxEJAoQAmTQLq6w1aHuGEAoAQgdPpdMjJyYG/vz98fX37/XWj\nRrF9htvaWAj8+KPhaiR8UAAQ0UtJSUFycjLS0tJ4l2IQV69eRX19fb9/+7/TiBEsBLq6gIkT2Swh\nIhwSnU6n410EITwolUo4OztDoVAIuhncrl27oFAo8OKLL/bO/X9UP/zAxgMkEjZIPHSofmskfNAd\nACECduPGDVy8eBHx8fGPffEHAH9/NiYAsDuB6mq9lEc4owAgRMByc3Ph5OSE0NDQAR9r6FD2OMjS\nko0JXLky8PoIXxQAhAiUUqlEeXk54uLi9Lbj15AhLARkMnYncOmSXg5LOKEAIESg8vLyYGVlhaio\nKL0e19eXPQ6ys2N3AhQC5osCgBAB6uzsRFFREaKjoyGTyfR+fB8fFgIODuxO4OJFvZ+CGAEFABGk\nDRs2QCqV4rXXXuNdChenT5+GRqNBbGyswc7h7c1CwMmJhcCFCwY7FTEQCgAiOAUFBdiyZQvCw8N5\nl8JFd3c38vLyEBUVBUdHR4Oea/BgFgIuLuxxUFWVQU9H9IwCgAjK7du38eyzz+LTTz99aM8boSoo\nKEBXVxcSEhKMcj4vL7Y2wNWVhcD580Y5LdEDCgAiKKtXr8acOXMwZcoU3qVwoVKpcOrUKURERMDZ\n2dlo5+0JAXd3tmCsstJopyYDQAFABCM9PR2lpaXYsGED71K4KS4uRnt7O8aPH2/0c3t6sk1lBg1i\nIVBRYfQSyCOiACCCUFdXh7Vr12Lnzp2wsrLiXQ4XarUaOTk5GDNmDFxdXbnU0BMCnp4sBM6d41IG\n6SfqBUQEISMjAwsWLICFhQV6fqQ1Gg0kEgksLCzQ1dV1VyuEnl5ASUlJsLS07POx1NRUpKamGq1+\nfSgqKkJmZiZWr16NQYMGca2lqYltLXntGgsEPSxEJgZAAUAEoa2tDVevXu3zvmXLliE4OBjr1q1D\ncHDwXV8jpGZwGo0GGzduhK+vL5566ine5QBgIfCLX7C9BCgETJPlwz+FENNnb2+PkJCQu97n7u5+\nz4u/0JSXl6OlpQUpKSm8S+k1aBBw9CgLgcmTWQiMGcO7KnInGgMggjWQ7pfmRKPRICsrC0FBQfDy\n8uJdTh/u7sCRI6yH0OTJQFkZ74rInegOgAjWsWPHeJdgFKWlpWhubsbTTz/Nu5R76gmBadPYuMDR\no4BI1+iZHLoDIMSMqdVqZGVlITQ01OR++7+TmxsLAX9/YMoUoLSUd0UEoAAgxKwVFRWhtbUVEydO\n5F3KQ7m6AocPA8OGsRAoKeFdEaEAIMRMqVQqZGdnIzw8nPu0z/7qCYERI9jjoOJi3hWJGwUAIWbq\n9OnT6OjoQGJiIu9SHomLC3DoEDByJAuBoiLeFYkXBQAhZqirqws5OTmIjIzktup3IHpCIDCQTRMt\nLORdkThRABBihvLy8tDd3W12v/3fydmZhUBQEAuBggLeFYkPBQAhZqatrQ25ubmIiYkx+xXMTk7A\nwYNASAi1IWehAAAUmklEQVQLgdOneVckLhQARPRSUlKQnJyMtLQ03qX0y4kTJyCVSs36t/879YRA\naChbK5Cfz7si8aBeQES0zLEX0M2bN7Fp0yZMmTLFaBu+GEtrK5CUBJw5wwJh3DjeFQkf3QEQYkaO\nHj0KR0dHg+71y4ujI/Ddd0BEBPDkk0BuLu+KhI8CgBAzUVtbi8rKSkyePPmu9tVC4egIHDgAREay\nEMjJ4V2RsFEAEGIGdDodDh8+DC8vL4SFhfEux6AcHIBvvwXGjgVmzABOnuRdkXBRABBiBiorK1Fb\nW4tp06aJostpTwhER7MQyM7mXZEwUQAQYuJUKhUOHTqEUaNGYfjw4bzLMRp7eyAzE5DL2eBwVhbv\nioSHAoAQE5ebm4vW1lZMnz6ddylG1xMCsbEsBE6c4F2RsFAAEGLCFAoFTp48ibi4OLi7u/Muhws7\nO2D/fiA+Hpg5E/j+e94VCQcFACEm7MiRI5DJZIJZ9PW47OyAffuAhAQWAseP865IGCgACDFRNTU1\nOHv2LKZOnQqZTMa7HO5sbYGMDGDCBGDWLLbHMBkYCgBCTJBWq8V3330HHx8fRERE8C7HZNjaAnv3\nAomJLASOHOFdkXmjACDEBBUUFOD69euYOXOmKKZ9PoqeEJg0CZg9m00XJY+HAoCInqk1g2ttbcWx\nY8cQHR0NX19f3uWYJBsbFgIzZwLz5gFffcW7IvMkzPXkhDyC9PR0k2oGd/DgQVhZWWHq1Km8SzFp\nMhm78D//PJCaCty+DSxfzrsq80IBQIgJuXTpEs6dO4f58+fDxsaGdzkmz9IS2L6drRxesYKFwMsv\n867KfFAAEGIiVCoVDhw4AH9/f4wZM4Z3OWZDKgU2bWIh8MorrK30734H0NDJw1EAEGIijh07htbW\nVvzyl7+kgd9HJJEA77zDNpd5800WAhs2UAg8DAUAISagtrYWeXl5mDZtmmhX/A6URAL8/vespfSr\nr7IQ+L//Y3cI5N4oAAjhTK1WY9++ffD19UVcXBzvcsze2rXscdCvf81CYOtWNlZA7kbfFkI4+/77\n79Hc3IwXXngBUvp1VS9+9SsWAs89ByiVQFoaWz9A+qKfNkI4qq+vR25uLiZOnAgPDw/e5QhKSgpb\nK3DoENtToKWFd0WmhwKAEE7UajUyMjLg5eWF+Ph43uUIUk+7iDNngIkTgWvXeFdkWigACOHk+PHj\naGpqwty5c2FhYcG7HMGKj2c7ijU1sW6ily7xrsh0UAAQwkF1dTVyc3MxdepUDB48mHc5ghcaCuTm\nAlZWLASKi3lXZBooAAgxso6ODuzZswcBAQEYN24c73JEY+hQtsH80KGskRztKUABQIhRm8HpdDpk\nZmZCpVJh3rx5tODLyDw82D4CcXFsYDg9nXdFfNE0UCJ6xmwGV1paioqKCixatMikGtCJiYMD22d4\nxQrWRO7qVeCNN8S5apgCgBAjaWhowIEDBxAREYGQkBDe5YiatTWwYwfg7w+sWwdUVwMbN4pvwZjI\n/rmE8NHV1YXdu3fD3d0dM2fO5F0OAfuN/89/BgICgBdeAGpqgC+/ZK0kxILGAAgxMJ1Oh3379qG1\ntRWLFi2ClZUV75LIHZYvZ7uKnTzJ1grU1/OuyHgoAAgxsNOnT6OiogJz586lRm8mavp0FgA3brAB\n4rNneVdkHBQAhBhQbW0tDh06hLi4OHrub+LCwoC8PMDVla0VOHqUd0WGRwFABGPDhg2Qy+VwcnKC\nl5cX5s+fjwsXLnCrp7W1Fbt374aPjw9+8YtfcKuD9N8TT7BVwz3TRD/5hHdFhkUBQAQjOzsbL730\nEvLz83HkyBGoVCpMnz4dHR0dRq9FpVIh/V+TzBcvXkytHsyIkxObJvrrX7PB4ZdfBtRq3lUZhkSn\n0+l4F0GIITQ1NcHT0xNZWVkYP378XR9XKpVwdnaGQqHQ65x8nU6Hb775BufPn8fzzz8PHx8fvR2b\nGNfHHwMvvcRWDn/5JeDmxrsi/aI7ACJYLS0tkEgkcDPy/7XZ2dk4e/Ys5s2bRxd/M/fii6yddHEx\nEBsLVFbyrki/KACIIOl0Oqxduxbjx4836uDruXPncPz4cUycOBGjR4822nmJ4UyeDBQUADIZGxv4\n7jveFekPBQARpFWrVqGioqL3ObwxVFdXY8+ePQgNDcXEiRONdl5ieMOGsW6iEycCs2cD774LCOHh\nOY0BEMFZs2YN9u/fj+zsbPj5+d3383rGAJKSkmD5sx4AqampSE1N7fc5r127hs8++wxDhgxBamoq\nDfoKlEbDNp7fsAFYuJDtN2zOLZ0oAIigrFmzBhkZGThx4gSGDRv2wM/V1yDwrVu3sHXrVjg7O2Pp\n0qWwtrZ+7GMR87B3L7B0KeDtDfzjH4C5Pu2jR0BEMFatWoUvvvgCu3btgr29PRoaGtDQ0IDOzk6D\nnfP27dvYuXMnbGxs8Mwzz9DFXyTmzWPjAlZWbHD4yy95V/R46A6ACIZUKr1nf/1t27ZhyZIld71/\noHcAHR0d2LFjB9ra2rB8+XK4uLg8Vt3EfLW1sfUCu3YBr7zCxgbMqdUTdQMlgqHVao12ro6ODnz+\n+edQKBRYunQpXfxFyt4e2LmTzQ567TWgsJDdDfj68q6sf+gRECGPqOfi39LSgiVLlsDLy4t3SYQj\niYQtFjtxgu0rEBFhPlNFKQAIeQQ/v/jThu6kR3w8UFoKyOXAzJnAv/870N3Nu6oHowAgpJ/a2tro\n4k8eyMMD2L8feO894P33gQkT2F2BqaIAIKQfWlpasG3bNiiVSrr4kweSSoHXXwdycoDGRiA8HNi+\n3TQXjlEAEPIQN27cwNatW6HRaLB8+XK6+JN+kcuBkhJgwQJg2TLgqaeApibeVfVFAUDIA9TU1GDb\ntm2ws7PD8uXLjd5Yjpg3Z2fgs8+Ar79mg8ShocCBA7yr+gkFACH3UVZWhh07dsDLywvLli2Do5h2\nCyd6tXAhUF4OREUBs2YBK1eyNQS80UIwIlo/7wXU0/9Hp9Ph2LFjOHnyJCIiIjB79mzq7UP0Qqdj\newy8/jrbfWz7dmDcOH71UAAQ0brXSuDu7m7s2bMH58+fx7Rp0zBu3Lh7ri4mZCAuXACee461k3jp\nJWD9esDBwfh10CMgQv7l5s2b2Lp1K65cuYLU1FTEx8fTxZ8YxKhRrL30e+8BW7awsYFDh4xfBwUA\nIWAbuXzyySdQqVRYvnw5Ro0axbskInAWFqx9xNmzwPDhwJNPstlCt24ZrwZ6BEREq+cR0Ndff42z\nZ89i9OjRmDNnDmQyGe/SiMjodGxvgddfZzuPvf8+kJLC2kwYEt0BENG6ceMGAKC4uBhJSUlYuHAh\nXfwJFxIJsGIFUFHBVg8/8wzbivLsWcOelwKAiI5Wq0VOTg4+++wzAMCyZcsgl8vpeT/hzseHrRk4\neBC4fp01llu7FlAoDHM+CgAiKs3Nzdi+fTuOHDmC6OhoAKBunsTkTJ8OnDnDZgd9+ikQGAjs2AHo\nu+M5jQEQUdBoNMjNzUVWVhYcHBwwb948uLq66mVLSEIMqa4O+M1v2D4D8fHAxo1AZKR+jk0BQASv\npqYGmZmZaGpqQlxcHCZNmgRra2u97QlMiDEcO8bWDFRWstlCb73FHhkNBAUAEazW1lYcO3YMpaWl\n8PX1xezZs/s0cqMAIOZGpWLrBv7wBzY+cPjwwI5HAUAEp7u7G6dOnUJOTg4sLS0xefJkjB07FlJp\n3yEvCgBirhQK1ll0+PCBHYf2BCaCodVqcebMGRw7dgzt7e2Qy+WYMGECbG1teZdGiF45O7PXQFEA\nELOn1Wpx7tw5ZGVloampCaNHj8bUqVPh6urar69PSUnp0wyOELGgR0DEbGm1WpSXlyM7Oxs3b97E\nyJEjkZiYiCeeeKJfX0+PgIjY0R0AMTsqlQpnzpxBTk4OmpubERgYiAULFsBnoFMiCBEZCgBiNhQK\nBQoKClBcXIyOjg4EBwdj8eLFtEUjIY+JAoCYNJ1Oh9raWuTn56OyshLW1taIjIyEXC7v9zN+Qsi9\nUQAQk3T79m2cOXMGJSUlaGpqgru7O2bMmIGIiAhYW1vzLo8QQaAAICZDpVLh4sWLKC8vx4ULFyCR\nSBAcHIykpCQEBARQszZC9IwCgHClVqtx+fJlnDt3DlVVVeju7oa3tzeefPJJjBkzhubwE2JAFADE\n6FQqFa5cuYLz58+jsrISXV1d8PDwQEJCAkaPHg13d3feJRIiChQAxCgUCgUuXLiAixcvorq6Gmq1\nGm5ubpDL5QgNDYWnpyfvEgkRHQoAYhBqtRp1dXW4fPkyLl68iIaGBkilUvj5+WHKlCkYNWoU/aZP\nCGcUAEQvtFotrl27hurqalRXV6OmpgZqtRp2dnYYOXIkJkyYgOHDh8PGxoZ3qYSQf6EAII+lu7sb\nP/74I2pqalBbW4u6ujp0dXXB2toaQ4cOxZQpUxAQEAAvLy+avUOIiaJeQOShdDodWlpaUF9f33vB\nv379OnQ6HWxsbDBkyBAMGTIE/v7+8PHxgYWFBe+S+6WnF1BSUhI1gyOiRAFA+tDpdFAqlaivr0d9\nfT2uXbuG+vp6dHR0AABcXV17L/h+fn7w8PAw29/wqRkcETt6BCRiarUajY2NaGhowI0bN9DQ0ICG\nhga0tbUBABwcHODj44PY2Fj4+PjA29sbDg4OnKsmhOgLBYAIaDQaNDc3o6mpqfeC39DQgJs3b6Ln\nBtDV1RVeXl4YO3YsfHx84OPjA0dHR86VE0IMiQJAIHQ6Hdra2nDz5k00NTXh5s2bvW83Nzf3Xuhl\nMhm8vLwQEBCAuLg4eHl5wcPDAzKZjPO/gBBibBQAZkSr1UKhUKClpQXNzc1oaWlBS0sLbt26haam\nJnR1dQEAJBIJXFxcMGjQoN759oMGDYK7uzscHBzM9pk9IUS/BBcAaWlpZjmTQ6fToaurC0qlEq2t\nrVAqlVAqlb0X+ZaWFigUCtw5Zu/k5NR7oQ8KCuq90Lu6usLSsu9/WnP9vhA+6Ofl3oT2fRHcLKDk\n5GTs27ePdxm9dDodVCoV2tra0NbWhtbW1t4L/M//VKlUfb7W3t4ezs7OcHV1hYuLC1xcXHrfdnZ2\nvusi/yCm9n0xBTQL6P7o5+XehPZ9EdwdgKFpNBp0dnaio6Oj98/29vbeC/ydb/e81Gp1n2NYWFjA\n0dERTk5OcHR0xODBg+Hk5NT7dycnJzg4ODzSBZ4QQh6VXq4w+rotMuTtVc9v4l1dXeju7u7zuvN9\nnZ2d6OzsxOHDhxEdHd37954L/s9/S+8hk8lgb28Pe3t72NnZYfDgwcjPz8fs2bN7329vbw8HBwfY\n2dk90nN4U7rt1Ect5vDz8qjo+3Jv9H25N1P5vhgtALRaLbRaLTQaDTQaTZ+3e/6+bds2jB8/vvdj\narW696VSqe77tkaj6X1fXV0dtm7dCpVKddeF/mGsrKwgk8lga2uLo0ePIjo6Gi4uLrCxsYGNjQ1s\nbW3vetvW1hZ2dnb3/G19y5YteOuttx77+9qDfnANexx9oO/LvdH35d5M5fvSrwDQ6XRobW2958cO\nHz6My5cv491334VOp7vnBV6r1aI/Qw3V1dXYtGnT/Yu1tOx9WVlZwcLCovdtS0tLWFhY9LYncHBw\ngLW19T1fVlZWsLa2hkwm633bysoKUqm091yZmZmYNWtWf749aG9vv+f71Wo1lEplv47xIPo4DtVy\nt56vNYVa9HUMqoVq6eHo6PjQJw39GgTuGSwjhBBiHvozuaFfAfCgOwBCzJVSqcSQIUNQW1tLs4CI\n4PTnDqBfj4AkEgn9D0IEq2cGFiFiI334pxBCCBEiCgBCCBEpCgBCCBEpwbWCIKS/eiY39GewjBAh\nEuwdwAsvvACpVIoPPviAdylcqdVq/Pa3v0VYWBgcHBzg6+uLpUuX4tq1a7xL465ncgNd/JkNGzZA\nLpfDyckJXl5emD9/Pi5cuMC7LJOyYcMGSKVSvPbaa7xL0QtBBsDevXtx+vRp+Pr68i6Fu/b2dpSW\nluIPf/gDSkpKsGfPHlRVVWHu3Lm8SyMmJjs7Gy+99BLy8/Nx5MgRqFQqTJ8+vXc7ULErKCjAli1b\nEB4ezrsU/dEJTF1dnW7IkCG6iooKnb+/v+5vf/sb75JMTkFBgU4qlepqa2t5l0JMWGNjo04ikeiy\ns7N5l8Jda2urbtSoUbqjR4/qJk2apHv11Vd5l6QXgroD0Ol0WLJkCd544w0EBwfzLsdktbS09G4a\nQ8j99PycuLm58S6Fu9WrV2POnDmYMmUK71L0SlD9ht9++21YW1tjzZo1vEsxWV1dXVi3bh2eeeYZ\n2uCd3JdOp8PatWsxfvx4hISE8C6Hq/T0dJSWlqKwsJB3KXpntncAu3btgqOjY2///KysLHzwwQfY\ntm0b79K4+vn3JScnp/djarUaixYtgkQieWDTPUJWrVqFiooKpKen8y6Fq7q6OqxduxY7d+6ElZUV\n73L0zmyngba1taGhoaH371999RXefPPNPjM6NBoNpFIp/Pz8cOXKFR5lGt3Pvy++vr6QyWS9F/8f\nfvgBx44dg6urK8cqiSlbs2YN9u/fj+zsbPj5+fEuh6uMjAwsWLCgt9MwwK4rEokEFhYW6OrqMutZ\nZGYbAD/X3Nx819TG6dOnY8mSJXj++ecxcuRITpXx13Pxv3LlCo4fP07PdMl9rVmzBhkZGThx4gSG\nDRvGuxzu2tracPXq1T7vW7ZsGYKDg7Fu3TqzH2sUzBiAq6vrXb/VWllZYfDgwaK++Gs0GixcuBCl\npaXIzMyESqXqvUNwc3MT5G0teTyrVq1CWloa9u3bB3t7+96fE2dnZ9jY2HCujg97e/u7xkDs7e3h\n7u5u9hd/QEABcC/mfGumL3V1dcjMzAQAREREAGADfBKJBMePH0diYiLP8ogJ+fjjjyGRSDBp0qQ+\n79+2bRuWLFnCpygTJKTrimAeARFCCHk0ZjsLiBBCyMBQABBCiEhRABBCiEhRABBCiEhRABBCiEhR\nABBCiEhRABBCiEhRABBCiEhRABBCiEhRABBCiEhRABBCiEhRABBCiEj9f7IURLy+NtMDAAAAAElF\nTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a_plt = plot(g, [x,-5, 5])\n", "# 2αEw(m_N)をln(a)の関数として定義\n", "def aEw(ln_a):\n", " a = (e^ln_a).n()\n", " A = a*matrix((M+1),(M+1),1) + beta*Phi_t * Phi\n", " m_N = beta* A.inverse() * Phi_t* t\n", " # m_Nいくつかの点が複素数になるためabs(a*m_N*m_N)とした\n", " return abs(a*m_N*m_N)\n", "Ew_plt = plot(aEw, [x,-5, 5], color='gray')\n", "(a_plt + Ew_plt).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\t

ガウス基底関数を使った残差と対数エビデンスのグラフ

\n", "\t

\n", "\t\t同様に、ガウス基底関数を使った残差と対数エビデンスのグラフを示します。\n", "\t

\n", "\t

\n", "\t\t残差の形状がやや違いますが、残差の最低値の付近に対数エビデンスの最大値が位置する\n", "\t\t部分はほぼ合っています。\n", "\t

\n", "" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAIiITOr/ACbusvaN0n2dAAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "b_phi_2 = beta*Phi_t*Phi\n", "Phi_t_t = Phi_t* t\n", "def ln_pt(ln_a):\n", " a = (e^ln_a).n()\n", " A = a*matrix(RDF, (M+1),(M+1),1) + b_phi_2\n", " m_N = beta* A.inverse() * Phi_t_t\n", " res = (t - Phi*m_N)\n", " E_mX = beta/2 * res*res + a/2 * m_N*m_N\n", " return ((M/2 * ln_a + N/2 * ln(beta) - E_mX -1/2*ln(A.det()) - N/2*ln(2*pi))).n()\n", "# 残差の定義\n", "def res2(ln_a):\n", " a = (e^ln_a).n()\n", " A = a*matrix(RDF, (M+1),(M+1),1) + b_phi_2\n", " m_N = beta* A.inverse() * Phi_t_t\n", " res = (t - Phi*m_N)\n", " return abs(res*res)\n", "# 結果のプロット\n", "ln_pt_plt = plot(ln_pt, [x,-5, 5], color='red')\n", "res_2_plt = plot(res2, [x,-5, 5])\n", "(ln_pt_plt + res_2_plt).show(figsize=4)" ] }, { "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 }