{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ベイズ線形回帰の可視化例 (PRML sec. 3.3)\n", "\n", "
\n", " このページのオリジナルのipynbファイル\n", "
\n", "\n", "https://qiita.com/ctgk/items/555802600638f41b40c5\n", "\n", "をもとに、目的変数の分布が、予測値(回帰式による値)の周りでガウシアンとなっているような場合のベイズ回帰を行い、予測値と確率分布の偏差を描画するプログラムを紹介する。\n", "\n", "改変は最小限であるので、基底の数やサンプル数を変えて試してみてほしい。\n", "\n", "(PRML 3.3節参照)\n", "\n", "トレーニングデータからガウシアン予測分布を算出する式は、[前項](BayesApproach.html)の(4)~(7)式で与えられる。(以下に再掲)\n", "\n", "$$\n", "p(t|x, {\\bf x},{\\bf t}) = \\mathcal{N}(t| m(x), s^2(x)) \\tag{5}\n", "$$\n", "\n", "$$\n", "m(x) = {\\bf m}_N^T \\phi (x) = \\beta \\phi (x)^T {\\bf S} \\sum_{n=1}^N \\phi (x_n) t_n \\tag{6}\n", "$$\n", "$$\n", "s^2(x) = \\beta^{-1} + \\phi (x)^T {\\bf S}\\phi (x) \\tag{7}\n", "$$\n", "\n", "上記の式に含まれる${\\bf w}$の事後分布の平均と分散は\n", "$$\n", "{\\bf m}_N = \\beta {\\bf S}_N {\\bf \\Phi}^T {\\bf t},\\quad\n", "{\\bf S}_N = (\\alpha {\\bf I} + \\beta {\\bf \\Phi}^T {\\bf \\Phi})^{-1} \\tag{4} \n", "$$\n", "である。\n", "\n", "$\\alpha$, $\\beta$はモデルに外から与えるパラメータである。$\\alpha$は、なにもデータが得られてない段階の${\\bf w}$の確率の分散、$\\beta$は目的変数の分散(これは観測者にとってはわからない)を表す。\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "code_folding": [] }, "outputs": [ { "data": { "image/png": "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lIBZCCGqE8gqAqJ10dqczLclw1S/iHWErNRax7YOYqJtOKuMJDs95cRE20hq66jhkQHiLz1X6pSgWQRHM6RjgATMQghRPa3lZCXRcC43/LXLnNgXbQv5LH32KMXAHokopSgs81BU5qWwzINS5vaAn/BXHX/QXOaSoFkElj8doxk+YzKXpRBCVKW15C+LhvH5ILfAnNgXovSLmiTE2kntnUxOsZsyTzlx1shyswTLfv6g2emCHZnQvXPQK4SIVqCZ0jFARpiFaDVc3nLWZxSweFMW6zMKcHkDP8qzdevWGmeACrbdu3ezefNmADZv3sxll13W+JVJhQzREGVOU3s4O9+UHgzS5CNNYYtSdEqI4aCkeDolxDRvsOynlNk3ZU7YmWl+ZIgaNUefDRHebzdTOgbICLMQrUJGfhmzl2wxh2JRaDQJcdFcndqLbh3iQt28gHj55Zfp2bMnvXv3pnfv3sydO7fxK5MKGaI+ysshKx/yC/fNdidq5x9pLimD3TnQNTnsflyEg9bQZ0MT++1mqo7hJyPMQrRwLm85s5dswefTdE+Mp1tiHN0T4/H5NLOXbMHtbfwoz5NPPsmQIUM4/vjjefTRRwFwu91ce+21pKamcv755+N0OikpKWHUqFEMHz6c8ePH43K5KCkp4aKLLmLYsGGccsopbNmyBYC0tDReffVVRo8ezZVXXslnn30GwJYtWxgxYgQ+n4/rrruOY489luOPP57169fz559/MmfOHB5//HGmTJlSacSkrKyMyy67jGHDhnHCCSfsnbZ1zpw5XHnllYwePZqjjjqKxx57bN8Ta8YJnUQE0tpMA70lwwTLMdEQbQ/u9NMtiT9oLigytZrl81ZJMPtsaEn99gAee+rJJu2LhpARZiFauN/3FFNY5qF7Ynyl2zvEO9iRV8qmPUX069a+wev95ptv+PLLL1m2bBlKKc455xySkpL4888/mTdvHj169OCWW25hxowZnHbaabRr144FCxawbds2YmJiePjhh+nbty/vvvsua9asYerUqcybNw+A3NxcPvvsM1atWsVDDz3E6NGjef3117nuuusoKSkhLS2NGTNmsHjxYmbNmsULL7zAFVdcQc+ePbniiivYunXr3nY+9thjHHroocydO5e8vLy9XxQA69evZ9myZfh8Pnr16sW0adPMg6SknKiJxwN7ck3AHG3fO6pc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Ydy4ccyZM4f8/HzOOussRowYwcSJEykqKjIPlIC5OlnAdUBIiwnXPP20HZfHFzbTT1esyVyR1GRuArvNHIrflSWf0SaK2D47L4+zxoxhxOmnM3HyZIqKi4K/s6qQHGYhRJOsWbOGuXPnctBBB3HLLbcwY8YMMjIyGDJkCKeffjqzZ8/G6XSybNkydu7cyfnnn893333HxIkTmTlzJoMGDWL58uXMmDFjv3XfcsstXHTRRVx66aWsX7+ejIwMJk+ezBNPPEF6enqNbfroo4+YM2cOhxxyCIWFhXTq1InnnnuOOXPm0LNnT26//XZOOukkpk6dSk5ODkcddZR5oE9KylWltf4WQIX4pKtISXVobE3mMifszrKxK9NGdm4Ubg94vApbFCS089G+naZLSjkHdi1vnUUjHHYoLjO1spM6hLo1ES0i++xbb+WktDSmTpli+uxjjwniHqpea/zYCSECqE+fPhx00EEAnHzyyXz44YcopTj99NMB0zn/9NNPpKWlAZCTk4Pb7Wb79u0MGjQIgCFDhlS77tWrV/Pss88C0K9fv3q36aWXXuK5556jsLCQqVOn7nf/hg0b9o6IJCUl0bt3b3OHjF41ilJqEjAJoEePHkHZRiSlOlStyRxnjSz7g+XSMsX3qxx8+4ODtRuj+fm3aP7cXr+vY7tdc1C3co7q4+HYo9wcN8DN8Ue7iWnp5xH685mz8iA+zlROEY0ScX221qbPvu98wOqzex1S73UHigTMQogm+eOPP8jOziY5OZnFixfTt29fPv/887339+/fn/bt2/Poo48C8O233+JwOOjZsyfLly9nyJAhLFiwoNoRzKOPPpr58+dz+eWXk5GRwZo1azjzzDNRSuF2u3E4qj+8XVBQwKOPPspff/3FP/7xDz766KO9j/G3adGiRQwcOJBt27axYcMGq0KGlvJVjaC1fgV4BWDw4MFB+dURadNP+2sy++3YFcXH/43jo//GsWylA49HERWlOeIQL8f0d3PF+aUc2LWcrp3KSenowxGtiY42aZuFxVEUFCkydtvYss3O71ttrNrg4KOFcQDEx/k46XgXZ57k5PxRTpI7hq5WbVBFRZlygDszoWe35pvgpoWJuD5ba/r368eir77a12dv/CU4O6cWEjAL0VLExIAzwCWK6qFz585MmzaNTZs20blzZx588MFKJ4BMmDCBKVOm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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# Polynomial basis\n", "class PolynomialFeatures(object):\n", " \"\"\"\n", " 基底関数を多項式(次数:degree)とし、計画行列を作成する\n", " transform: 引数: トレーニング用の説明変数データを与える\n", " 返り値: 計画行列\n", " \n", " \"\"\"\n", " def __init__(self, degree):\n", " self.degree = degree\n", "\n", " def transform(self, x):\n", " features = [x ** i for i in range(self.degree + 1)]\n", " return np.array(features).transpose()\n", "\n", "# Gaussian basis\n", "class GaussianFeatures():\n", " \"\"\"\n", " 基底関数をガウシアンとして計画行列を作成する\n", " 範囲 [0,1.01] をdegree等分して、それらをガウシアンの中心(平均)とする\n", " mu: 平均 S: 標準偏差\n", " \n", " transform: 引数: トレーニング用の説明変数データ\n", " 返り値: 計画行列\n", " \n", " \"\"\"\n", " def __init__(self, degree):\n", " self.degree = degree\n", " self.mu = np.linspace(0, 1.01, degree)\n", " self.S = (self.mu[1] - self.mu[0])*2.0 # muの刻み幅よりは大きくしたい\n", "\n", " def gaussian_basis_func(self, x, i):\n", " return np.exp(-(x - self.mu[i])**2 / (2 * self.S**2))\n", "\n", " def transform(self, x):\n", " features = [[self.gaussian_basis_func(x1, i) for i in range(self.degree)] for x1 in x]\n", " return np.array(features)\n", "\n", "\n", "class BayesianRegression(object):\n", " \"\"\"\n", " ベイズ回帰 (PRML3.3節に述べられているアルゴリズム)\n", " fit: トレーニング(X:説明変数データ, t:目的変数データ)\n", " 前項の(4)式により事後分布の分散と平均を計算\n", " predict: 予測 (X: 説明変数データ, 返り値: 予測値と標準偏差)\n", " fitにより求めた、平均値と分散より、予測値(平均値)と標準偏差(誤差範囲)を計算\n", " \"\"\"\n", " def __init__(self, alpha=0.1, beta=0.25):\n", " self.alpha = alpha\n", " self.beta = beta\n", "\n", " def fit(self, X, t):\n", " # 上記(4)式\n", " self.w_var = np.linalg.inv(\n", " self.alpha * np.identity(np.size(X, 1))\n", " + self.beta * X.T.dot(X)) \n", " # (6)式のm_Nの計算\n", " self.w_mean = self.beta * self.w_var.dot(X.T.dot(t))\n", "\n", " def predict(self, X):\n", " y = X.dot(self.w_mean) # (6)式の計算\n", " y_var = 1 / self.beta + np.sum(X.dot(self.w_var) * X, axis=1) # (7)式の計算\n", " y_std = np.sqrt(y_var)\n", " return y, y_std\n", "\n", "\n", "def create_toy_data(func, low=0, high=1, size=10, sigma=1.):\n", " \"\"\"\n", " サンプルデータ作成用の関数\n", " [low, high]の範囲をsize等分し、説明変数とする\n", " 説明変数の値をfunc関数で計算し、\n", " それにガウシアンノイズを乗せて目的変数の値を計算し、返す\n", " \"\"\"\n", " x = np.random.uniform(low, high, size)\n", " t = func(x) + np.random.normal(scale=sigma, size=size)\n", " return x, t\n", "\n", "def main(x, t, features = None, ax = None, title=\"\"): # メインルーチン\n", " \"\"\"\n", " 引数で与えられた基底(オブジェクト)でのベイズ回帰分布を求め、\n", " テスト用説明変数(下記x_test)に対する予測値と誤差範囲を描画する\n", "  ・feature=Noneならば、ガウシアン基底とする\n", " ・featureオブジェクトクラスは事前に作っておく\n", " (PolynomialFeature、GaussianFeatureは上で用意)\n", " \"\"\"\n", "\n", " if ax == None:\n", " fig = plt.figure(figsize=(6, 4))\n", " ax = fig.add_subplot(1,1,1)\n", " \n", " ax.scatter(x, t, s=50, marker='o', alpha=0.5, label=\"observation\")\n", " \n", " # features = PolynomialFeatures(degree=num_basis) # 多項式基底\n", " if features == None:\n", " features = GaussianFeatures(degree=num_basis) # ガウシアン基底\n", " X = features.transform(x) # 計画行列をつくる\n", " \n", " regression = BayesianRegression(alpha=1e-3, beta=2) # 回帰クラスオブジェクト生成\n", " regression.fit(X, t) # 回帰\n", "\n", " x_test = np.linspace(0, 1, 100)\n", " X_test = features.transform(x_test)\n", " y, y_std = regression.predict(X_test)\n", "\n", " ax.plot(x_test, func(x_test), color='blue', label=\"sin($2\\pi x$)\")\n", " ax.plot(x_test, y, color='red', label=\"predict_mean\")\n", " ax.fill_between(x_test, y - y_std, y + y_std,\n", " color='pink', alpha=0.5, label=\"predict_std\")\n", " ax.legend()\n", " ax.set_title(\"Predictive distribution \" + title)\n", " ax.set_xlabel(\"x\")\n", " ax.set_ylabel(\"t\")\n", " #plt.show()\n", "\n", "\n", "if __name__ == '__main__':\n", "\n", " def func(x):\n", " return np.sin(2 * np.pi * x)\n", " # サンプルデータ作成\n", " num_data = 30\n", " x, t = create_toy_data(func, low=0, high=1, size=num_data, sigma=0.5)\n", "\n", " # 描画準備\n", " fig, ax = plt.subplots(1, 2, figsize=(12, 5))\n", " \n", " # ベイズ回帰\n", " num_basis=8\n", " poly_features = PolynomialFeatures(degree=num_basis) # 多項式基底\n", " main(x, t, features=poly_features, ax=ax[0], title=\"(polynomial basis)\")\n", " \n", " gauss_features =GaussianFeatures(degree=num_basis) # ガウシアン基底\n", " main(x, t, features=gauss_features, ax=ax[1], title=\"(Gaussian basis)\")\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "演習補足:\n", "\n", "121行目からのfunc()がサンプルデータ作成のベースとなる関数である。この関数やデータ数(num_data)、付加ランダム項の分散(sigma)などを変えてテストしてみよう。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "学習データが周期関数($\\sin$)なので、べき多項式へのフィッティングでは範囲の右端では無理が生じていることがわかる。ガウシアンの方がその点ではまさる。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 参考:基底関数の図 (PRML Fig. 3.1)\n", "\n", "多項式\n", "\n", "ガウシアン\n", "\n", "シグモイド\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.10" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }