Skip to content

Instantly share code, notes, and snippets.

@szdr
Last active November 24, 2016 02:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save szdr/af86d61bdf423509b62e404022a129c5 to your computer and use it in GitHub Desktop.
Save szdr/af86d61bdf423509b62e404022a129c5 to your computer and use it in GitHub Desktop.
カーネル法の導入
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn import datasets\n",
"plt.rcParams[\"figure.figsize\"] = (6, 6)\n",
"plt.rcParams[\"font.size\"] = 16"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"N_train = 20"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"diabetes = datasets.load_diabetes()\n",
"X, y = diabetes.data[:N_train, 2], diabetes.target[:N_train]\n",
"# normalization\n",
"X = (X - np.mean(X)) / np.std(X)\n",
"y = (y - np.mean(y)) / np.std(y)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f93a2d810b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# train data\n",
"plt.plot(X, y, \"o\")\n",
"plt.title(\"train data\")\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y\")\n",
"plt.ylim([-2, 4])\n",
"plt.savefig(\"train_data.png\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nRJrI70+S8hARpBYb+JcklZAhI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqN\nISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEj\nScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nK\njSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyk1p\nQiYiXhkRv4yIeyNiQ0TcExHfi4jDi65NklTbzkUXMALTgRuBLwAPAgcC5wPXR8QLUkr3FFmcpHJb\ntWo1nZ2L6e3tp61tJ7q65jN79kFFl1V6kVIquoZRi4jnAbcB56WU/rHG86nM70/S+Fi1ajWnnnoZ\nK1cuAqYC65gzZwFLlpzTkkETEaSUohH7Kk132TAeqXzcXGgVkkqts3NxVcAATGXlykV0di4usKqJ\noXQhExE7RcTkiHgu8BWgD/hOwWVJKrHe3n62BcyAqfT19RdRzoRSupABeoCNwO3A84GTU0oPFVuS\npDJra9sJWDdo6Tpmzizjn8jmUroxmYg4FJgGHAx8BNgPeGlK6e4a6zomI2mHHJN5pkaOyZQuZKpF\nxO7AXcB3Ukp/W+P5tGDBgq1fd3R00NHRMW71SSqPgdllfX39zJzZWrPLuru76e7u3vr1okWLDJkB\nEbEMeDSl9Moaz3kkI0kj5OyyiojYFzgM+FPRtUiShirNyZgR8e/AcuAWYC1wKHAu8DTw2QJLkyQN\nozQhA1wPvBX4MPAs4B7gGuCiWoP+kqTilX5MZnsck5GkkXNMRpJUCoaMJCk3howkKTeGjCQpN4aM\nJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQp\nN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeG\njCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howkKTeGjCQpN4aMJCk3howk\nKTeGjCQpN4aMJCk3howkKTelCZmIeEtEXBURd0fE+oi4LSI+HRHPLro2SVJtkVIquoa6RMT1wBrg\nqsrHFwKLgFtTSi8ZZptUlvcnSc0iIkgpRUP2VZY/whExI6X08KBlZwCLgZNTSt01tjFkJGmEGhky\npekuGxwwFcuAANrGuRxJUh1KEzLD6AAScGvBdUiSaihNd9lgEdEGLAduSim9aph17C6TpBFqye6y\nahExFfgx8DTwzoLLkSQNY+eiCxipiNgV+E9gFnBSSqmv2IokScMpVchExM7AD4FjgVNSSn/Y0TYL\nFy7c+nlHRwcdHR15lSdJpdTd3U13d3cu+y7NmExEBPA94DXAa2pNWa6xjWMykjRCjRyTKdORzBeB\ntwCfAp6KiPaq59aklHqLKUuSNJwyHcmsAg4c5ulFKaULamzjkYwkjVBLnvE/GoaMJI1cy09hliSV\ngyEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0h\nI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJ\nyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqNISNJyo0hI0nKjSEjScqN\nISNJyo0hI0nKjSEjScrNzkUXIAlWrVpNZ+dienv7aWvbia6u+cyefVDRZUljFimlomvITUSkifz+\nNDGsWrWaU0+9jJUrFwFTgXXMmbOAJUvOMWhUiIggpRSN2JfdZVLBOjsXVwUMwFRWrlxEZ+fiAquS\nGsOQkQrW29vPtoAZMJW+vv4iypEaypCRCtbWthOwbtDSdcyc6a+nyq80P8UR0RYRl0XEdRGxLiL6\nI+LAouuSxqqraz5z5ixgW9BkYzJdXfMLq0lqlNIM/EfEnwPfBX4DTAJeCcxOKd29nW0c+FcpDMwu\n6+vrZ+ZMZ5epWI0c+C9NyFSLiHcBX8WQkaSGc3aZJKkU6g6ZyljIGRGxS54FSZImjpEcyTwNfB3o\ni4jPRsRhOdUkSZog6g6ZlFIHcARZ0JwJrIiI7oh4W0RMzqk+SVKJjejaZSml24APR8T5wFuB9wDf\nBh6KiCuBr6aU7mx8maO3cOHCrZ93dHTQ0dFRWC2S1Iy6u7vp7u7OZd9jml0WEccCnwVOqizqB64C\nzkkp3Tf28oZ9XWeXSVJOCp1dFhG7RcQ7I2IpsAzYB/ggMBM4G3gJ8K1GFCdJKre6u8si4gXA3wDv\n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\ncPN9N9Ozpocj9zmy5lnzT295uiUvFtksd9uUiuDAv0bt5vtu5mvLv0ZPbw8rHlzBoTMOpb2tneNm\nHldz/VYMGCjmbpvSRGTITFAbN29kl513GbJ8S/8WZu0xi7c9/20cu/+xTJk8pYDqml8Rd9uUJiK7\nyyaAjZs3Zt1elbPme9b0cODuB3L1WVcXXVppOSajVuaYTJ1aIWTuefweDvvCYTx3+nO3Dsy3t7Vz\n2F6HDTkvRSMz1rttSmVlyNRpIoTMw+sfZlnfMn7T9xvOf9n57BTP7K5JKbF+03qmPmvw+IEkjY4D\n/xPc5b+5nGvvvpaeNT3c9+R9HD/zeNrb2tmwecOQMZSIMGCkFlOmc7g8kilISon+1F+zS+uiX13E\n3lP2pv2Adg7f63C7vSRtNR7jhXaX1amZQubRpx5lae/SrYPzS3uXsvgNi3nN815TdGmSSmQ8zuGy\nu6xkPv6Lj/OFZV/guP2Po72tnXcd8y6++tqv0jatrejSJJVM2c7hMmTGwcdP/DgXvuJCu70kjVnZ\nzuGyu0ySSsQxmSZiyEiaiPI+h8uQqZMhI0kj18iQac5OPEnShODAf47KdMKUJOXB7rKceIFFSWVl\nd1kJdHYurgoYgKmsXLmIzs7FBVYlSePLkMlJ2U6YkqQ8OCaTk7KdMNXsWmV8q1Xep1pISmnCPrK3\nV4w777wrzZlzXoInE6QET6Y5c85Ld955V2E1lVWrtGWrvE81v8rfzob8HXbgP0fe9KoxxuOCgM2g\nVd6nmp8XyCyJ2bMP8o9DA7TK+FarvE+1FgcI1PS2jW9Vm3jjW63yPtVa/OlV0+vqms+cOQvY9gc4\nO+eoq2t+YTXloVXep1qLYzIqhVYZ32qV96nm1pIXyIyIDwMdwPHAfsDClNIFO9jGkJGkEWrVM/7/\nGtgbuAowOSSpBEozuyyldARAREwCzi64HElSHcp0JCNJKhlDRpKUG0NGkpSbQkImIk6OiP46HlcX\nUZ8kqTGKGvj/NXBYHeutH+sLLVy4cOvnHR0ddHR0jHWXkjShdHd3093dncu+S3OezIDK7LJNeJ6M\nJOWiVc+TkSSVTGnOk4mI44BZwKTKoiMi4s2Vz/8rpbShkMIkScMqTXdZRFwJnDnM07NTSnfX2Mbu\nMkkaoZa8dtloGDKSNHKOyUiSSsGQkSTlpjQD/yqPgXui9Pb209bmPVGkVuaYjBpq1arVnHrqZaxc\n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\nVTn0XgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f93a22bb208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# linear model\n",
"w = (1. / X.T.dot(X)) * X.T.dot(y) # we use 1d example\n",
"xs = np.linspace(min(X), max(X), 100)\n",
"y_pred = w * xs\n",
"plt.plot(X, y, \"o\")\n",
"plt.plot(xs, y_pred, \"--\")\n",
"plt.title(\"linear model\")\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y\")\n",
"plt.ylim([-2, 4])\n",
"plt.savefig(\"linear_model.png\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# kernel method\n",
"def rbf_kernel(x1, x2, gamma=0.1):\n",
" return np.exp(-gamma * (x1 - x2) * (x1 - x2))\n",
"K = rbf_kernel(np.tile(X, (N_train, 1)), np.tile(X, (N_train, 1)).T)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f93a272c4a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# overfit\n",
"alpha = np.linalg.inv(K + 1e-15 * np.eye(K.shape[0])).dot(y) # avoid singular matrix\n",
"xs = np.linspace(min(X), max(X), 100)\n",
"y_pred = [np.dot(alpha, rbf_kernel(X, x)) for x in xs]\n",
"plt.plot(X, y, \"o\")\n",
"plt.plot(xs, y_pred, \"--\")\n",
"plt.title(\"kernel method (overfit)\")\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y\")\n",
"plt.ylim([-2, 4])\n",
"plt.savefig(\"kernel_overfit.png\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f93c838d6d8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# regularization\n",
"lmd = 1e-6\n",
"alpha = np.linalg.inv(K + lmd * np.eye(K.shape[0])).dot(y)\n",
"xs = np.linspace(min(X), max(X), 100)\n",
"y_pred = [np.dot(alpha, rbf_kernel(X, x)) for x in xs]\n",
"plt.plot(X, y, \"o\")\n",
"plt.plot(xs, y_pred, \"--\")\n",
"plt.title(\"kernel method (regularization)\")\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y\")\n",
"plt.ylim([-2, 4])\n",
"plt.savefig(\"kernel_regularization.png\")"
]
}
],
"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