{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Support Vector Machines ##" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.svm import SVR\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.cross_validation import KFold\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear SVM Classifier ###\n", "\n", "We generate some data in 2 dimensions and make them a little separated.\n", "\n", "Code for the plot with the hyperplane and support margins was largely copied from [here](http://scikit-learn.org/0.11/auto_examples/svm/plot_separating_hyperplane.html#example-svm-plot-separating-hyperplane-py)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "X = np.random.randn(20, 2)\n", "y = np.concatenate((np.ones(10)*-1, np.ones(10)))\n", "X[y == 1] = X[y == 1] + 1\n", "plt.scatter(X[y == 1][:, 0], X[y == 1][:, 1], marker='o', color='red')\n", "plt.scatter(X[y == -1][:, 0], X[y == -1][:, 1], marker='o', color='blue')\n", "plt.xlabel(\"X[:,0]\")\n", "plt.ylabel(\"X[:,1]\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "# Fit the Support Vector Regressor with a linear kernel\n", "reg = SVR(C=10.0, kernel=\"linear\")\n", "reg.fit(X, y)\n", "\n", "# plot the hyperplane on the scatterplot\n", "plt.scatter(X[y == 1][:, 0], X[y == 1][:, 1], marker='o', color='red')\n", "plt.scatter(X[y == -1][:, 0], X[y == -1][:, 1], marker='o', color='blue')\n", "plt.xlabel(\"X[:,0]\")\n", "plt.ylabel(\"X[:,1]\")\n", "# hyperplane\n", "xs = range(int(np.min(X[:,0]))-1, int(np.max(X[:,0]))+1)\n", "m = -reg.coef_[0][0] / reg.coef_[0][1]\n", "c = reg.intercept_ / reg.coef_[0][1]\n", "ys = [m * x + c for x in xs]\n", "plt.plot(xs, ys, color='black', linewidth=2.5)\n", "# support margins\n", "sup = reg.support_vectors_[0]\n", "ys_down = [m * x + (sup[1] - m * sup[0]) for x in xs]\n", "sup = reg.support_vectors_[-1]\n", "ys_up = [m * x + (sup[1] - m * sup[0]) for x in xs]\n", "plt.plot(xs, ys_down, 'k--')\n", "plt.plot(xs, ys_up, 'k--')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "ypred = reg.predict(X)\n", "mean_squared_error(y, ypred)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "0.48715370910430711" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "# We use cross-validation to find a good value for C\n", "cs = range(1, 20)\n", "mses = []\n", "for c in cs:\n", " kfold = KFold(X.shape[0], n_folds=10)\n", " kmses = []\n", " for train, test in kfold:\n", " Xtrain, Xtest, ytrain, ytest = X[train], X[test], y[train], y[test]\n", " reg = SVR(C=c, kernel=\"linear\")\n", " reg.fit(Xtrain, ytrain)\n", " ypred = reg.predict(Xtest)\n", " kmses.append(mean_squared_error(ytest, ypred))\n", " mses.append(np.mean(kmses))\n", "plt.plot(cs, mses, linewidth=2.5)\n", "plt.xlabel(\"C\")\n", "plt.ylabel(\"MSE\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nSUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Nonlinear SVM ###" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Data comes from http://www-stat.stanford.edu/~tibs/ElemStatLearn/datasets/ESL.mixture.rda\n", "# load(url(\"http://www-stat.stanford.edu/~tibs/ElemStatLearn/datasets/ESL.mixture.rda\"))\n", "# dat = data.frame(y=factor(y), x)\n", "# write.csv(dat, \"ESLMixture.csv\", row.names=FALSE)\n", "eslmix_df = pd.read_csv(\"../data/ESLMixture.csv\")\n", "eslmix_df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yX1X2
0 0 2.526093 0.321050
1 0 0.366954 0.031462
2 0 0.768219 0.717486
3 0 0.693436 0.777194
4 0-0.019837 0.867254
\n", "

5 rows \u00d7 3 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ " y X1 X2\n", "0 0 2.526093 0.321050\n", "1 0 0.366954 0.031462\n", "2 0 0.768219 0.717486\n", "3 0 0.693436 0.777194\n", "4 0 -0.019837 0.867254\n", "\n", "[5 rows x 3 columns]" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "# Plot the data to visualize the relationship\n", "x1 = eslmix_df[eslmix_df[\"y\"] == 0][\"X1\"]\n", "x2 = eslmix_df[eslmix_df[\"y\"] == 0][\"X2\"]\n", "plt.scatter(x1, x2, marker='o', color='red')\n", "x1 = eslmix_df[eslmix_df[\"y\"] == 1][\"X1\"]\n", "x2 = eslmix_df[eslmix_df[\"y\"] == 1][\"X2\"]\n", "plt.scatter(x1, x2, marker='o', color='blue')\n", "plt.xlabel(\"X1\")\n", "plt.ylabel(\"X1\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "# Fit a non-linear SVM using a radial kernel\n", "X = eslmix_df[[\"X1\", \"X2\"]].values\n", "y = eslmix_df[\"y\"]\n", "reg = SVR(C=5.0, kernel=\"rbf\")\n", "reg.fit(X, y)\n", "\n", "# plot the hyperplane on the scatterplot\n", "xx, yy = np.meshgrid(np.linspace(-3, 5, 50), np.linspace(-2, 3, 50))\n", "Z = reg.decision_function(np.c_[xx.ravel(), yy.ravel()])\n", "Z = Z.reshape(xx.shape)\n", "plt.contour(xx, yy, Z, levels=[0], linewidths=2, linetypes=\"--\")\n", "\n", "x1 = eslmix_df[eslmix_df[\"y\"] == 0][\"X1\"]\n", "x2 = eslmix_df[eslmix_df[\"y\"] == 0][\"X2\"]\n", "plt.scatter(x1, x2, marker='o', color='red')\n", "x1 = eslmix_df[eslmix_df[\"y\"] == 1][\"X1\"]\n", "x2 = eslmix_df[eslmix_df[\"y\"] == 1][\"X2\"]\n", "plt.scatter(x1, x2, marker='o', color='blue')\n", "plt.xlabel(\"X1\")\n", "plt.ylabel(\"X1\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The boundaries of the hyperplane generated by the Support Vector machine are non-linear and approximate the boundaries of the data it models (better than a linear hyperplane).\n", "\n", "Code for the plot above was copied from [here](http://scikit-learn.org/0.11/auto_examples/svm/plot_svm_nonlinear.html#example-svm-plot-svm-nonlinear-py)." ] } ], "metadata": {} } ] }