Files
FYS-STK4155/doc/pub/svm/ipynb/svm.ipynb
T
2018-11-09 05:04:05 +01:00

1998 lines
270 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- dom:TITLE: Data Analysis and Machine Learning: Support Vector Machines -->\n",
"# Data Analysis and Machine Learning: Support Vector Machines\n",
"<!-- dom:AUTHOR: Morten Hjorth-Jensen at Department of Physics, University of Oslo & Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University -->\n",
"<!-- Author: --> \n",
"**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n",
"\n",
"Date: **Nov 8, 2018**\n",
"\n",
"Copyright 1999-2018, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n",
"\n",
"\n",
"\n",
"## Support Vector Machines, overarching aims\n",
"\n",
"A Support Vector Machine (SVM) is a very powerful and versatile\n",
"Machine Learning model, capable of performing linear or nonlinear\n",
"classification, regression, and even outlier detection. It is one of\n",
"the most popular models in Machine Learning, and anyone interested in\n",
"Machine Learning should have it in their toolbox. SVMs are\n",
"particularly well suited for classification of complex but small-sized or\n",
"medium-sized datasets. \n",
"\n",
"The case with two well-separated classes only can be understood in an intuitive way in terms of lines in a two-dimensional space separating the two classes (see figure below). \n",
"\n",
"The basic mathematics behind the SVM is however less familiar to most of us. \n",
"It relies on the definition of hyperplanes and the\n",
"definition of a **margin** which separates classes (in case of\n",
"classification problems) of variables. It is also used for regression\n",
"problems.\n",
"\n",
"With SVMs we distinguish between hard margin and soft margins. The\n",
"latter introduces a so-called softening parameter to be discussed\n",
"below. We distinguish also between linear and non-linear\n",
"approaches. The latter are the most frequent ones since it is rather\n",
"unlikely that we can separate classes easily by say straight lines.\n",
"\n",
"**Note: several figures are missing. They will be added shortly. To run the codes, use the jupyter notebook**\n",
"\n",
"\n",
"## Hyperplanes and all that\n",
"\n",
"The theory behind support vector machines (SVM hereafter) is based on\n",
"the mathematical description of so-called hyperplanes. Let us start\n",
"with a two-dimensional case. This will also allow us to introduce our\n",
"first SVM examples. These will be tailored to the case of two specific\n",
"classes, as displayed in the figure here based on the usage of the petal data.\n",
"\n",
"We assume here that our data set can be well separated into two\n",
"domains, where a straight line does the job in the separating the two\n",
"classes. Here the two classes are represented by either squares or\n",
"circles."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LinearSVC: [0.28474532] [[1.05364923 1.09903601]]\n",
"SVC: [0.31896852] [[1.1203284 1.02625193]]\n",
"SGDClassifier(alpha=0.00200): [0.319] [[1.12072936 1.02666842]]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 792x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"from sklearn import datasets\n",
"from sklearn.svm import SVC, LinearSVC\n",
"from sklearn.linear_model import SGDClassifier\n",
"from sklearn.preprocessing import StandardScaler\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 12\n",
"plt.rcParams['ytick.labelsize'] = 12\n",
"\n",
"\n",
"iris = datasets.load_iris()\n",
"X = iris[\"data\"][:, (2, 3)] # petal length, petal width\n",
"y = iris[\"target\"]\n",
"\n",
"setosa_or_versicolor = (y == 0) | (y == 1)\n",
"X = X[setosa_or_versicolor]\n",
"y = y[setosa_or_versicolor]\n",
"\n",
"\n",
"\n",
"C = 5\n",
"alpha = 1 / (C * len(X))\n",
"\n",
"lin_clf = LinearSVC(loss=\"hinge\", C=C, random_state=42)\n",
"svm_clf = SVC(kernel=\"linear\", C=C)\n",
"sgd_clf = SGDClassifier(loss=\"hinge\", learning_rate=\"constant\", eta0=0.001, alpha=alpha,\n",
" max_iter=100000, random_state=42)\n",
"\n",
"scaler = StandardScaler()\n",
"X_scaled = scaler.fit_transform(X)\n",
"\n",
"lin_clf.fit(X_scaled, y)\n",
"svm_clf.fit(X_scaled, y)\n",
"sgd_clf.fit(X_scaled, y)\n",
"\n",
"print(\"LinearSVC: \", lin_clf.intercept_, lin_clf.coef_)\n",
"print(\"SVC: \", svm_clf.intercept_, svm_clf.coef_)\n",
"print(\"SGDClassifier(alpha={:.5f}):\".format(sgd_clf.alpha), sgd_clf.intercept_, sgd_clf.coef_)\n",
"\n",
"# Compute the slope and bias of each decision boundary\n",
"w1 = -lin_clf.coef_[0, 0]/lin_clf.coef_[0, 1]\n",
"b1 = -lin_clf.intercept_[0]/lin_clf.coef_[0, 1]\n",
"w2 = -svm_clf.coef_[0, 0]/svm_clf.coef_[0, 1]\n",
"b2 = -svm_clf.intercept_[0]/svm_clf.coef_[0, 1]\n",
"w3 = -sgd_clf.coef_[0, 0]/sgd_clf.coef_[0, 1]\n",
"b3 = -sgd_clf.intercept_[0]/sgd_clf.coef_[0, 1]\n",
"\n",
"# Transform the decision boundary lines back to the original scale\n",
"line1 = scaler.inverse_transform([[-10, -10 * w1 + b1], [10, 10 * w1 + b1]])\n",
"line2 = scaler.inverse_transform([[-10, -10 * w2 + b2], [10, 10 * w2 + b2]])\n",
"line3 = scaler.inverse_transform([[-10, -10 * w3 + b3], [10, 10 * w3 + b3]])\n",
"\n",
"# Plot all three decision boundaries\n",
"plt.figure(figsize=(11, 4))\n",
"plt.plot(line1[:, 0], line1[:, 1], \"k:\", label=\"LinearSVC\")\n",
"plt.plot(line2[:, 0], line2[:, 1], \"b--\", linewidth=2, label=\"SVC\")\n",
"plt.plot(line3[:, 0], line3[:, 1], \"r-\", label=\"SGDClassifier\")\n",
"plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"bs\") # label=\"Iris-Versicolor\"\n",
"plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"yo\") # label=\"Iris-Setosa\"\n",
"plt.xlabel(\"Petal length\", fontsize=14)\n",
"plt.ylabel(\"Petal width\", fontsize=14)\n",
"plt.legend(loc=\"upper center\", fontsize=14)\n",
"plt.axis([0, 5.5, 0, 2])\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is a hyperplane?\n",
"\n",
"The aim of the SVM algorithm is to find a hyperplane in an $p$-dimensional space, where $p$ is the number of features that distinctly classifies the data points. \n",
"\n",
"In a $p$-dimensional space, a hyperplane is what we call an affine subspace of dimension of $p-1$.\n",
"As an example, in two dimension, a hyperplane is simply as straight line while in three dimensions it is \n",
"a two-dimensional subspace, or stated simply, a plane. \n",
"\n",
"In two dimensions, with the variables $x_1$ and $x_2$, the hyperplane is defined as"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b+w_1x_1+w_2x_2=0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"where $b$ is the intercept and $w_1$ and $w_2$ define the elements of a vector orthogonal to the line \n",
"$b+w_1x_1+w_2x_2=0$. \n",
"In two dimensions we define the vectors $\\boldsymbol{x} =[x1,x2]$ and $\\boldsymbol{w}=[w1,w2]$. \n",
"We can then rewrite the above equation as"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\boldsymbol{w}^T\\boldsymbol{x}+b=0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A $p$-dimensional space of features\n",
"\n",
"We limit ourselves to two classes of outputs $y_i$ and assign these classes the values $y_i = \\pm 1$. \n",
"In a $p$-dimensional space of say $p$ features we have a hyperplane defines as"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b+wx_1+w_2x_2+\\dots +w_px_p=0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we define a \n",
"matrix $\\boldsymbol{X}=\\left[\\boldsymbol{x}_1,\\boldsymbol{x}_2,\\dots, \\boldsymbol{x}_p\\right]$\n",
"of dimension $n\\times p$, where $n$ represents the observations for each feature and each vector $x_i$ is a column vector of the matrix $\\boldsymbol{X}$,"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\boldsymbol{x}_i = \\begin{bmatrix} x_{i1} \\\\ x_{i2} \\\\ \\dots \\\\ \\dots \\\\ x_{ip} \\end{bmatrix}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If the above condition is not met for a given vector $\\boldsymbol{x}_i$ we have"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b+w_1x_{i1}+w_2x_{i2}+\\dots +w_px_{ip} >0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"if our output $y_i=1$.\n",
"In this case we say that $\\boldsymbol{x}_i$ lies on one of the sides of the hyperplane and if"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b+w_1x_{i1}+w_2x_{i2}+\\dots +w_px_{ip} < 0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"for the class of observations $y_i=-1$, \n",
"then $\\boldsymbol{x}_i$ lies on the other side. \n",
"\n",
"Equivalently, for the two classes of observations we have"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i\\left(b+w_1x_{i1}+w_2x_{i2}+\\dots +w_px_{ip}\\right) > 0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we try to separate hyperplanes, if it exists, we can use it to construct a natural classifier: a test observation is assigned a given class depending on which side of the hyperplane it is located.\n",
"\n",
"<!-- !split -->\n",
"## The two-dimensional case\n",
"\n",
"Let us try to develop our intuition about SVMs by limiting ourselves to a two-dimensional\n",
"plane. To separate the two classes of data points, there are many\n",
"possible lines (hyperplanes if you prefer a more strict naming) \n",
"that could be chosen. Our objective is to find a\n",
"plane that has the maximum margin, i.e the maximum distance between\n",
"data points of both classes. Maximizing the margin distance provides\n",
"some reinforcement so that future data points can be classified with\n",
"more confidence.\n",
"\n",
"What a linear classifier attempts to accomplish is to split the\n",
"feature space into two half spaces by placing a hyperplane between the\n",
"data points. This hyperplane will be our decision boundary. All\n",
"points on one side of the plane will belong to class one and all points\n",
"on the other side of the plane will belong to the second class two.\n",
"\n",
"Unfortunately there are many ways in which we can place a hyperplane\n",
"to divide the data. Below is an example of two candidate hyperplanes\n",
"for our data sample.\n",
"\n",
"## Getting into the details\n",
"\n",
"Let us define the function"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"f(x) = \\boldsymbol{w}^T\\boldsymbol{x}+b = 0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"as the function that determines the line $L$ that separates two classes (our two features), see the figure here. \n",
"\n",
"\n",
"Any point defined by $\\boldsymbol{x}_i$ and $\\boldsymbol{x}_2$ on the line $L$ will satisfy $\\boldsymbol{w}^T(\\boldsymbol{x}_1-\\boldsymbol{x}_2)=0$. \n",
"\n",
"The signed distance $\\delta$ from any point defined by a vector $\\boldsymbol{x}$ and a point $\\boldsymbol{x}_0$ on the line $L$ is then"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\delta = \\frac{1}{\\vert\\vert \\boldsymbol{w}\\vert\\vert}(\\boldsymbol{w}^T\\boldsymbol{x}+b).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## First attempt at a minimization approach\n",
"\n",
"How do we find the parameter $b$ and the vector $\\boldsymbol{w}$? What we could\n",
"do is to define a cost function which now contains the set of all\n",
"misclassified points $M$ and attempt to minimize this function"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"C(\\boldsymbol{w},b) = -\\sum_{i\\in M} y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We could now for example define all values $y_i =1$ as misclassified in case we have $\\boldsymbol{w}^T\\boldsymbol{x}_i+b < 0$ and the opposite if we have $y_i=-1$. Taking the derivatives gives us"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial C}{\\partial b} = -\\sum_{i\\in M} y_i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial C}{\\partial \\boldsymbol{w}} = -\\sum_{i\\in M} y_ix_i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solving the equations\n",
"\n",
"We can now use the Newton-Raphson method or gradient descent to solve the equations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b \\leftarrow b +\\eta \\frac{\\partial C}{\\partial b},\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\boldsymbol{w} \\leftarrow \\boldsymbol{w} +\\eta \\frac{\\partial C}{\\partial \\boldsymbol{w}},\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"where $\\eta$ is our by now well-known learning rate. \n",
"\n",
"There are however problems with this approach, although it looks\n",
"pretty straightforward to implement. In case we separate our data into\n",
"two distinct classes, we may up with many possible lines, as indicated\n",
"in the figure and shown by running the following program. For small\n",
"gaps between the entries, we may also end up needing many iterations\n",
"before the solutions converge and if the data cannot be separated\n",
"properly into two distinct classes, we may not experience a converge\n",
"at all.\n",
"\n",
"## A better approach\n",
"\n",
"A better approach is rather to try to define a large margin between\n",
"the two classes (if they are well separated from the beginning).\n",
"\n",
"Thus, we wish to find a margin $M$ with $\\boldsymbol{w}$ normalized to\n",
"$\\vert\\vert \\boldsymbol{w}\\vert\\vert =1$ subject to the condition"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, p.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All points are thus at a signed distance from the decision boundary defined by the line $L$. The parameters $b$ and $w_1$ and $w_2$ define this line. \n",
"\n",
"We seek thus the largest value $M$ defined by"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{1}{\\vert \\vert \\boldsymbol{w}\\vert\\vert}y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, n,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"or just"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq M\\vert \\vert \\boldsymbol{w}\\vert\\vert \\hspace{0.1cm}\\forall i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we scale the equation so that $\\vert \\vert \\boldsymbol{w}\\vert\\vert = 1/M$, we have to find the minimum of \n",
"$\\boldsymbol{w}^T\\boldsymbol{w}=\\vert \\vert \\boldsymbol{w}\\vert\\vert$ (the norm) subject to the condition"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq 1 \\hspace{0.1cm}\\forall i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have thus defined our margin as the invers of the norm of $\\boldsymbol{w}$. We want to minimize the norm in order to have a as large as possible margin $M$. Before we proceed, we need to remind ourselves about Lagrangian multipliers. \n",
"\n",
"## A quick reminder on Lagrangian multipliers\n",
"\n",
"Consider a function of three independent variables $f(x,y,z)$ . For the function $f$ to be an\n",
"extreme we have"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"df=0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A necessary and sufficient condition is"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial f}{\\partial x} =\\frac{\\partial f}{\\partial y}=\\frac{\\partial f}{\\partial z}=0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"due to"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"df = \\frac{\\partial f}{\\partial x}dx+\\frac{\\partial f}{\\partial y}dy+\\frac{\\partial f}{\\partial z}dz.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In many problems the variables $x,y,z$ are often subject to constraints (such as those above for the margin)\n",
"so that they are no longer all independent. It is possible at least in principle to use each \n",
"constraint to eliminate one variable\n",
"and to proceed with a new and smaller set of independent varables.\n",
"\n",
"The use of so-called Lagrangian multipliers is an alternative technique when the elimination\n",
"of variables is incovenient or undesirable. Assume that we have an equation of constraint on \n",
"the variables $x,y,z$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\phi(x,y,z) = 0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"resulting in"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"d\\phi = \\frac{\\partial \\phi}{\\partial x}dx+\\frac{\\partial \\phi}{\\partial y}dy+\\frac{\\partial \\phi}{\\partial z}dz =0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we cannot set anymore"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial f}{\\partial x} =\\frac{\\partial f}{\\partial y}=\\frac{\\partial f}{\\partial z}=0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"if $df=0$ is wanted\n",
"because there are now only two independent variables! Assume $x$ and $y$ are the independent \n",
"variables.\n",
"Then $dz$ is no longer arbitrary.\n",
"\n",
"## Adding the muliplier\n",
"\n",
"However, we can add to"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"df = \\frac{\\partial f}{\\partial x}dx+\\frac{\\partial f}{\\partial y}dy+\\frac{\\partial f}{\\partial z}dz,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"a multiplum of $d\\phi$, viz. $\\lambda d\\phi$, resulting in"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"df+\\lambda d\\phi = (\\frac{\\partial f}{\\partial z}+\\lambda\n",
"\\frac{\\partial \\phi}{\\partial x})dx+(\\frac{\\partial f}{\\partial y}+\\lambda\\frac{\\partial \\phi}{\\partial y})dy+\n",
"(\\frac{\\partial f}{\\partial z}+\\lambda\\frac{\\partial \\phi}{\\partial z})dz =0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Our multiplier is chosen so that"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial f}{\\partial z}+\\lambda\\frac{\\partial \\phi}{\\partial z} =0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need to remember that we took $dx$ and $dy$ to be arbitrary and thus we must have"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial f}{\\partial x}+\\lambda\\frac{\\partial \\phi}{\\partial x} =0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial f}{\\partial y}+\\lambda\\frac{\\partial \\phi}{\\partial y} =0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When all these equations are satisfied, $df=0$. We have four unknowns, $x,y,z$ and\n",
"$\\lambda$. Actually we want only $x,y,z$, $\\lambda$ needs not to be determined, \n",
"it is therefore often called\n",
"Lagrange's undetermined multiplier.\n",
"If we have a set of constraints $\\phi_k$ we have the equations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial f}{\\partial x_i}+\\sum_k\\lambda_k\\frac{\\partial \\phi_k}{\\partial x_i} =0.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setting up the problem\n",
"In order to solve the above problem, we define the following Lagrangian function to be minimized"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}(\\lambda,b,\\boldsymbol{w})=\\frac{1}{2}\\boldsymbol{w}^T\\boldsymbol{w}-\\sum_{i=1}^n\\lambda_i\\left[y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)-1\\right],\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"where $\\lambda_i$ is a so-called Lagrange multiplier subject to the condition $\\lambda_i \\geq 0$.\n",
"\n",
"Taking the derivatives with respect to $b$ and $\\boldsymbol{w}$ we obtain"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial {\\cal L}}{\\partial b} = -\\sum_{i} \\lambda_iy_i=0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial {\\cal L}}{\\partial \\boldsymbol{w}} = 0 = \\boldsymbol{w}-\\sum_{i} \\lambda_iy_i\\boldsymbol{x}_i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Inserting these constraints into the equation for ${\\cal L}$ we obtain"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\boldsymbol{x}_i^T\\boldsymbol{x}_j,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to the constraints $\\lambda_i\\geq 0$ and $\\sum_i\\lambda_iy_i=0$. \n",
"We must in addition satisfy the [Karush-Kuhn-Tucker](https://en.wikipedia.org/wiki/Karush%E2%80%93Kuhn%E2%80%93Tucker_conditions) (KKT) condition"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\lambda_i\\left[y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) -1\\right] \\hspace{0.1cm}\\forall i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. If $\\lambda_i > 0$, then $y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1$ and we say that $x_i$ is on the boundary.\n",
"\n",
"2. If $y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)> 1$, we say $x_i$ is not on the boundary and we set $\\lambda_i=0$. \n",
"\n",
"When $\\lambda_i > 0$, the vectors $\\boldsymbol{x}_i$ are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin $M$. \n",
"\n",
"## The problem to solve\n",
"\n",
"We can rewrite"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\boldsymbol{x}_i^T\\boldsymbol{x}_j,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and its constraints in terms of a matrix-vector problem where we minimize w.r.t. $\\lambda$ the following problem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{1}{2} \\boldsymbol{\\lambda}^T\\begin{bmatrix} y_1y_1\\boldsymbol{x}_1^T\\boldsymbol{x}_1 & y_1y_2\\boldsymbol{x}_1^T\\boldsymbol{x}_2 & \\dots & \\dots & y_1y_n\\boldsymbol{x}_1^T\\boldsymbol{x}_n \\\\\n",
"y_2y_1\\boldsymbol{x}_2^T\\boldsymbol{x}_1 & y_2y_2\\boldsymbol{x}_2^T\\boldsymbol{x}_2 & \\dots & \\dots & y_1y_n\\boldsymbol{x}_2^T\\boldsymbol{x}_n \\\\\n",
"\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
"\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
"y_ny_1\\boldsymbol{x}_n^T\\boldsymbol{x}_1 & y_ny_2\\boldsymbol{x}_n^T\\boldsymbol{x}_2 & \\dots & \\dots & y_ny_n\\boldsymbol{x}_n^T\\boldsymbol{x}_n \\\\\n",
"\\end{bmatrix}\\boldsymbol{\\lambda}-\\mathbb{1}\\boldsymbol{\\lambda},\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to $\\boldsymbol{y}^T\\boldsymbol{\\lambda}=0$. Here we defined the vectors $\\boldsymbol{\\lambda} =[\\lambda_1,\\lambda_2,\\dots,\\lambda_n]$ and \n",
"$\\boldsymbol{y}=[y_1,y_2,\\dots,y_n]$. \n",
"\n",
"\n",
"## The last steps\n",
"\n",
"Solving the above problem, yields the values of $\\lambda_i$.\n",
"To find the coefficients of your hyperplane we need simply to compute"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\boldsymbol{w}=\\sum_{i} \\lambda_iy_i\\boldsymbol{x}_i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With our vector $\\boldsymbol{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"resulting in"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b = \\frac{1}{y_i}-\\boldsymbol{w}^T\\boldsymbol{x}_i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"or if we write it out in terms of the support vectors only, with $N_s$ being their number, we have"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"b = \\frac{1}{N_s}\\sum_{j\\in N_s}\\left(y_j-\\sum_{i=1}^n\\lambda_iy_i\\boldsymbol{x}_i^T\\boldsymbol{x}_j\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With our hyperplane coefficients we can use our classifier to assign any observation by simply using"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i = \\mathrm{sign}(\\boldsymbol{w}^T\\boldsymbol{x}_i+b).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below we discuss how to find the optimal values of $\\lambda_i$. Before we proceed however, we discuss now the so-called soft classifier. \n",
"\n",
"## A soft classifier\n",
"\n",
"Till now, the margin is strictly defined by the support vectors. This defines what is called a hard classifier, that is the margins are well defined.\n",
"\n",
"Suppose now that classes overlap in feature space, as shown in the\n",
"figure here. One way to deal with this problem before we define the\n",
"so-called **kernel approach**, is to allow a kind of slack in the sense\n",
"that we allow some points to be on the wrong side of the margin.\n",
"\n",
"We introduce thus the so-called **slack** variables $\\boldsymbol{\\xi} =[\\xi_1,x_2,\\dots,x_n]$ and \n",
"modify our previous equation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"to"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1-\\xi_i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"with the requirement $\\xi_i\\geq 0$. The total violation is now $\\sum_i\\xi$. \n",
"The value $\\xi_i$ in the constraint the last constraint corresponds to the amount by which the prediction\n",
"$y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1$ is on the wrong side of its margin. Hence by bounding the sum $\\sum_i \\xi_i$,\n",
"we bound the total amount by which predictions fall on the wrong side of their margins.\n",
"\n",
"Misclassifications occur when $\\xi_i > 1$. Thus bounding the total sum by some value $C$ bounds in turn the total number of\n",
"misclassifications.\n",
"\n",
"## Soft optmization problem\n",
"\n",
"\n",
"This has in turn the consequences that we change our optmization problem to finding the minimum of"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}=\\frac{1}{2}\\boldsymbol{w}^T\\boldsymbol{w}-\\sum_{i=1}^n\\lambda_i\\left[y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)-(1-\\xi_)\\right]+C\\sum_{i=1}^n\\xi_i-\\sum_{i=1}^n\\gamma_i\\xi_i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1-\\xi_i \\hspace{0.1cm}\\forall i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"with the requirement $\\xi_i\\geq 0$.\n",
"\n",
"Taking the derivatives with respect to $b$ and $\\boldsymbol{w}$ we obtain"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial {\\cal L}}{\\partial b} = -\\sum_{i} \\lambda_iy_i=0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{\\partial {\\cal L}}{\\partial \\boldsymbol{w}} = 0 = \\boldsymbol{w}-\\sum_{i} \\lambda_iy_i\\boldsymbol{x}_i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\lambda_i = C-\\gamma_i \\hspace{0.1cm}\\forall i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Inserting these constraints into the equation for ${\\cal L}$ we obtain the same equation as before"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\boldsymbol{x}_i^T\\boldsymbol{x}_j,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"but now subject to the constraints $\\lambda_i\\geq 0$, $\\sum_i\\lambda_iy_i=0$ and $0\\leq\\lambda_i \\leq C$. \n",
"We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"5\n",
"0\n",
" \n",
"<\n",
"<\n",
"<\n",
"!\n",
"!\n",
"M\n",
"A\n",
"T\n",
"H\n",
"_\n",
"B\n",
"L\n",
"O\n",
"C\n",
"K"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\gamma_i\\xi_i = 0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) -(1-\\xi_) \\geq 0 \\hspace{0.1cm}\\forall i.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Kernels and non-linearity\n",
"\n",
"The cases we have studied till were all characterized by two classes\n",
"with a close to linear separability. The classifiers we have described\n",
"so far find linear boundaries in our input feature space. It is\n",
"possible to make our procedure more flexible by exploring the feature\n",
"space using other basis expansions such higher-order polynomials,\n",
"wavelets, splines etc.\n",
"\n",
"If our feature space is not easy to separate, as shown in the figure\n",
"here, we can achieve a better separation by introducing more complex\n",
"basis functions. The ideal would be, as shown in the next figure, to, via a specific transformation to \n",
"obtain a separation between the classes which is almost linear. \n",
"\n",
"The change of basis, from $x\\rightarrow z=\\phi(x)$ leads to the same type of equations to be solved, except that\n",
"we need to introduce for example a polynomial transformation to a two-dimensional training set."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 792x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import os\n",
"\n",
"np.random.seed(42)\n",
"\n",
"# To plot pretty figures\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 12\n",
"plt.rcParams['ytick.labelsize'] = 12\n",
"\n",
"\n",
"from sklearn.svm import SVC\n",
"from sklearn import datasets\n",
"\n",
"\n",
"\n",
"X1D = np.linspace(-4, 4, 9).reshape(-1, 1)\n",
"X2D = np.c_[X1D, X1D**2]\n",
"y = np.array([0, 0, 1, 1, 1, 1, 1, 0, 0])\n",
"\n",
"plt.figure(figsize=(11, 4))\n",
"\n",
"plt.subplot(121)\n",
"plt.grid(True, which='both')\n",
"plt.axhline(y=0, color='k')\n",
"plt.plot(X1D[:, 0][y==0], np.zeros(4), \"bs\")\n",
"plt.plot(X1D[:, 0][y==1], np.zeros(5), \"g^\")\n",
"plt.gca().get_yaxis().set_ticks([])\n",
"plt.xlabel(r\"$x_1$\", fontsize=20)\n",
"plt.axis([-4.5, 4.5, -0.2, 0.2])\n",
"\n",
"plt.subplot(122)\n",
"plt.grid(True, which='both')\n",
"plt.axhline(y=0, color='k')\n",
"plt.axvline(x=0, color='k')\n",
"plt.plot(X2D[:, 0][y==0], X2D[:, 1][y==0], \"bs\")\n",
"plt.plot(X2D[:, 0][y==1], X2D[:, 1][y==1], \"g^\")\n",
"plt.xlabel(r\"$x_1$\", fontsize=20)\n",
"plt.ylabel(r\"$x_2$\", fontsize=20, rotation=0)\n",
"plt.gca().get_yaxis().set_ticks([0, 4, 8, 12, 16])\n",
"plt.plot([-4.5, 4.5], [6.5, 6.5], \"r--\", linewidth=3)\n",
"plt.axis([-4.5, 4.5, -1, 17])\n",
"plt.subplots_adjust(right=1)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The equations\n",
"\n",
"Suppose we define a polynomial transformation of degree two only (we continue to live in a plane with $x_i$ and $y_i$ as variables)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"z = \\phi(x_i) =\\left(x_i^2, y_i^2, \\sqrt{2}x_iy_i\\right).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With our new basis, the equations we solved earlier are basically the same, that is we have now (without the slack option for simplicity)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\boldsymbol{x}_i^T\\boldsymbol{z}_j,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to the constraints $\\lambda_i\\geq 0$, $\\sum_i\\lambda_iy_i=0$, and for the support vectors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"y_i(\\boldsymbol{w}^T\\boldsymbol{z}_i+b)= 1 \\hspace{0.1cm}\\forall i,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"from which we also find $b$.\n",
"To compute $\\boldsymbol{z}_i^T\\boldsymbol{z}_j$ we define the kerne $K(\\boldsymbol{x}_i,\\boldsymbol{x}_j)$ as"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"K(\\boldsymbol{x}_i,\\boldsymbol{x}_j)=\\boldsymbol{z}_i^T\\boldsymbol{z}_j= \\phi(\\boldsymbol{x}_i)^T\\phi(\\boldsymbol{x}_j).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the above example, the kernel reads"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"K(\\boldsymbol{x}_i,\\boldsymbol{x}_j)=[x_i^2, y_i^2, \\sqrt{2}x_iy_i]^T\\begin{bmatrix} x_j^2 \\\\ y_j^2 \\\\ \\sqrt{2}x_jy_j \\end{bmatrix}=x_i^2x_j^2+2x_ix_jy_iy_j+y_i^2y_j^2.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We note that this is nothing but the dot product of the two original\n",
"vectors $(\\boldsymbol{x}_i^T\\boldsymbol{x}_j)^2$. Instead of thus computing the\n",
"product in the Lagrangian of $\\boldsymbol{z}_i^T\\boldsymbol{z}_j$ we simply compute\n",
"the dot product $(\\boldsymbol{x}_i^T\\boldsymbol{x}_j)^2$. This leads to the so-called\n",
"kernel trick and the result leads to the same as if we went through\n",
"the trouble of performing the transformation\n",
"$(\\phi(\\boldsymbol{x}_i)^T\\phi(\\boldsymbol{x}_j)$ during the SVM calculations.\n",
"\n",
"\n",
"## The problem to solve\n",
"Using our definition of the kernel We can rewrite again the Lagrangian"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\boldsymbol{x}_i^T\\boldsymbol{z}_j,\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to the constraints $\\lambda_i\\geq 0$, $\\sum_i\\lambda_iy_i=0$ in terms of a convex optimization problem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{1}{2} \\boldsymbol{\\lambda}^T\\begin{bmatrix} y_1y_1K(\\boldsymbol{x}_1,\\boldsymbol{x}_1) & y_1y_2K(\\boldsymbol{x}_1,\\boldsymbol{x}_2) & \\dots & \\dots & y_1y_nK(\\boldsymbol{x}_1,\\boldsymbol{x}_n) \\\\\n",
"y_2y_1K(\\boldsymbol{x}_2,\\boldsymbol{x}_1) & y_2y_2(\\boldsymbol{x}_2,\\boldsymbol{x}_2) & \\dots & \\dots & y_1y_nK(\\boldsymbol{x}_2,\\boldsymbol{x}_n) \\\\\n",
"\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
"\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
"y_ny_1K(\\boldsymbol{x}_n,\\boldsymbol{x}_1) & y_ny_2K(\\boldsymbol{x}_n\\boldsymbol{x}_2) & \\dots & \\dots & y_ny_nK(\\boldsymbol{x}_n,\\boldsymbol{x}_n) \\\\\n",
"\\end{bmatrix}\\boldsymbol{\\lambda}-\\mathbb{1}\\boldsymbol{\\lambda},\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to $\\boldsymbol{y}^T\\boldsymbol{\\lambda}=0$. Here we defined the vectors $\\boldsymbol{\\lambda} =[\\lambda_1,\\lambda_2,\\dots,\\lambda_n]$ and \n",
"$\\boldsymbol{y}=[y_1,y_2,\\dots,y_n]$. \n",
"If we add the slack constants this leads to the additional constraint $0\\leq \\lambda_i \\leq C$.\n",
"\n",
"We can rewrite this (see the solutions below) in terms of a convex optimization problem of the type"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align*}\n",
" &\\mathrm{min}_{\\lambda}\\hspace{0.2cm} \\frac{1}{2}\\boldsymbol{\\lambda}^T\\boldsymbol{P}\\boldsymbol{\\lambda}+\\boldsymbol{q}^T\\boldsymbol{\\lambda},\\\\ \\nonumber\n",
" &\\mathrm{subject\\hspace{0.1cm}to} \\hspace{0.2cm} \\boldsymbol{G}\\boldsymbol{\\lambda} \\preceq \\boldsymbol{h} \\hspace{0.2cm} \\wedge \\boldsymbol{A}\\boldsymbol{\\lambda}=f.\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below we discuss how to solve these equations. Here we note that the matrix $\\boldsymbol{P}$ has matrix elements $p_{ij}=y_iy_jK(\\boldsymbol{x}_i,\\boldsymbol{x}_j)$.\n",
"Given a kernel $K$ and the targets $y_i$ this matrix is easy to set up. The constraint $\\boldsymbol{y}^T\\boldsymbol{\\lambda}=0$ leads to $f=0$ and $\\boldsymbol{A}=\\boldsymbol{y}$. How to set up the matrix $\\boldsymbol{G}$ is discussed later. Here note that the inequalities $0\\leq \\lambda_i \\leq C$ can be split up into\n",
"$0\\leq \\lambda_i$ and $\\lambda_i \\leq C$. These two inequalities define then the matrix $\\boldsymbol{G}$ and the vector $\\boldsymbol{h}$.\n",
"\n",
"\n",
"## Different kernels and Mercer's theorem\n",
"\n",
"There are several popular kernels being used. These are\n",
"1. Linear: $K(\\boldsymbol{x},\\boldsymbol{y})=\\boldsymbol{x}^T\\boldsymbol{y}$,\n",
"\n",
"2. Polynomial: $K(\\boldsymbol{x},\\boldsymbol{y})=(\\boldsymbol{x}^T\\boldsymbol{y}+\\gamma)^d$,\n",
"\n",
"3. Gaussian Radial Basis Function: $K(\\boldsymbol{x},\\boldsymbol{y})=\\exp{\\left(-\\gamma\\vert\\vert\\boldsymbol{x}-\\boldsymbol{y}\\vert\\vert^2\\right)}$,\n",
"\n",
"4. Tanh: $K(\\boldsymbol{x},\\boldsymbol{y})=\\tanh{(\\boldsymbol{x}^T\\boldsymbol{y}+\\gamma)}$,\n",
"\n",
"and many other ones.\n",
"\n",
"An important theorem for us is [Mercer's theorem](https://en.wikipedia.org/wiki/Mercer%27s_theorem). \n",
"The theorem states that if a kernel function $K$ is symmetric, continuous and leads to a positive semi-definite matrix $\\boldsymbol{P}$ then\n",
"there exists a function $\\phi$ that maps $\\boldsymbol{x}_i$ and $\\boldsymbol{x}_j$ into another space\n",
"(possibly with much higher dimensions) such that"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"K(\\boldsymbol{x}_i,\\boldsymbol{x}_j)=\\phi(\\boldsymbol{x}_i)^T\\phi(\\boldsymbol{x}_j).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So you can use $K$ as a kernel since you know $\\phi$ exists, even if\n",
"you dont know what $\\phi$ is. \n",
"Note that some frequently used kernels (such as the Sigmoid kernel) dont respect all of Mercers conditions, yet they generally work\n",
"well in practice.\n",
"\n",
"\n",
"## The moons example"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 792x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 792x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Phi(-1.0, -2) = [0.74081822]\n",
"Phi(-1.0, 1) = [0.30119421]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 792x504 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from __future__ import division, print_function, unicode_literals\n",
"\n",
"import numpy as np\n",
"np.random.seed(42)\n",
"\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 12\n",
"plt.rcParams['ytick.labelsize'] = 12\n",
"\n",
"\n",
"from sklearn.svm import SVC\n",
"from sklearn import datasets\n",
"\n",
"\n",
"\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.svm import LinearSVC\n",
"\n",
"\n",
"from sklearn.datasets import make_moons\n",
"X, y = make_moons(n_samples=100, noise=0.15, random_state=42)\n",
"\n",
"def plot_dataset(X, y, axes):\n",
" plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"bs\")\n",
" plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"g^\")\n",
" plt.axis(axes)\n",
" plt.grid(True, which='both')\n",
" plt.xlabel(r\"$x_1$\", fontsize=20)\n",
" plt.ylabel(r\"$x_2$\", fontsize=20, rotation=0)\n",
"\n",
"plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])\n",
"plt.show()\n",
"\n",
"from sklearn.datasets import make_moons\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"\n",
"polynomial_svm_clf = Pipeline([\n",
" (\"poly_features\", PolynomialFeatures(degree=3)),\n",
" (\"scaler\", StandardScaler()),\n",
" (\"svm_clf\", LinearSVC(C=10, loss=\"hinge\", random_state=42))\n",
" ])\n",
"\n",
"polynomial_svm_clf.fit(X, y)\n",
"\n",
"def plot_predictions(clf, axes):\n",
" x0s = np.linspace(axes[0], axes[1], 100)\n",
" x1s = np.linspace(axes[2], axes[3], 100)\n",
" x0, x1 = np.meshgrid(x0s, x1s)\n",
" X = np.c_[x0.ravel(), x1.ravel()]\n",
" y_pred = clf.predict(X).reshape(x0.shape)\n",
" y_decision = clf.decision_function(X).reshape(x0.shape)\n",
" plt.contourf(x0, x1, y_pred, cmap=plt.cm.brg, alpha=0.2)\n",
" plt.contourf(x0, x1, y_decision, cmap=plt.cm.brg, alpha=0.1)\n",
"\n",
"plot_predictions(polynomial_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
"plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])\n",
"\n",
"plt.show()\n",
"\n",
"\n",
"from sklearn.svm import SVC\n",
"\n",
"poly_kernel_svm_clf = Pipeline([\n",
" (\"scaler\", StandardScaler()),\n",
" (\"svm_clf\", SVC(kernel=\"poly\", degree=3, coef0=1, C=5))\n",
" ])\n",
"poly_kernel_svm_clf.fit(X, y)\n",
"\n",
"poly100_kernel_svm_clf = Pipeline([\n",
" (\"scaler\", StandardScaler()),\n",
" (\"svm_clf\", SVC(kernel=\"poly\", degree=10, coef0=100, C=5))\n",
" ])\n",
"poly100_kernel_svm_clf.fit(X, y)\n",
"\n",
"plt.figure(figsize=(11, 4))\n",
"\n",
"plt.subplot(121)\n",
"plot_predictions(poly_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
"plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])\n",
"plt.title(r\"$d=3, r=1, C=5$\", fontsize=18)\n",
"\n",
"plt.subplot(122)\n",
"plot_predictions(poly100_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
"plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])\n",
"plt.title(r\"$d=10, r=100, C=5$\", fontsize=18)\n",
"\n",
"plt.show()\n",
"\n",
"def gaussian_rbf(x, landmark, gamma):\n",
" return np.exp(-gamma * np.linalg.norm(x - landmark, axis=1)**2)\n",
"\n",
"gamma = 0.3\n",
"\n",
"x1s = np.linspace(-4.5, 4.5, 200).reshape(-1, 1)\n",
"x2s = gaussian_rbf(x1s, -2, gamma)\n",
"x3s = gaussian_rbf(x1s, 1, gamma)\n",
"\n",
"XK = np.c_[gaussian_rbf(X1D, -2, gamma), gaussian_rbf(X1D, 1, gamma)]\n",
"yk = np.array([0, 0, 1, 1, 1, 1, 1, 0, 0])\n",
"\n",
"plt.figure(figsize=(11, 4))\n",
"\n",
"plt.subplot(121)\n",
"plt.grid(True, which='both')\n",
"plt.axhline(y=0, color='k')\n",
"plt.scatter(x=[-2, 1], y=[0, 0], s=150, alpha=0.5, c=\"red\")\n",
"plt.plot(X1D[:, 0][yk==0], np.zeros(4), \"bs\")\n",
"plt.plot(X1D[:, 0][yk==1], np.zeros(5), \"g^\")\n",
"plt.plot(x1s, x2s, \"g--\")\n",
"plt.plot(x1s, x3s, \"b:\")\n",
"plt.gca().get_yaxis().set_ticks([0, 0.25, 0.5, 0.75, 1])\n",
"plt.xlabel(r\"$x_1$\", fontsize=20)\n",
"plt.ylabel(r\"Similarity\", fontsize=14)\n",
"plt.annotate(r'$\\mathbf{x}$',\n",
" xy=(X1D[3, 0], 0),\n",
" xytext=(-0.5, 0.20),\n",
" ha=\"center\",\n",
" arrowprops=dict(facecolor='black', shrink=0.1),\n",
" fontsize=18,\n",
" )\n",
"plt.text(-2, 0.9, \"$x_2$\", ha=\"center\", fontsize=20)\n",
"plt.text(1, 0.9, \"$x_3$\", ha=\"center\", fontsize=20)\n",
"plt.axis([-4.5, 4.5, -0.1, 1.1])\n",
"\n",
"plt.subplot(122)\n",
"plt.grid(True, which='both')\n",
"plt.axhline(y=0, color='k')\n",
"plt.axvline(x=0, color='k')\n",
"plt.plot(XK[:, 0][yk==0], XK[:, 1][yk==0], \"bs\")\n",
"plt.plot(XK[:, 0][yk==1], XK[:, 1][yk==1], \"g^\")\n",
"plt.xlabel(r\"$x_2$\", fontsize=20)\n",
"plt.ylabel(r\"$x_3$ \", fontsize=20, rotation=0)\n",
"plt.annotate(r'$\\phi\\left(\\mathbf{x}\\right)$',\n",
" xy=(XK[3, 0], XK[3, 1]),\n",
" xytext=(0.65, 0.50),\n",
" ha=\"center\",\n",
" arrowprops=dict(facecolor='black', shrink=0.1),\n",
" fontsize=18,\n",
" )\n",
"plt.plot([-0.1, 1.1], [0.57, -0.1], \"r--\", linewidth=3)\n",
"plt.axis([-0.1, 1.1, -0.1, 1.1])\n",
" \n",
"plt.subplots_adjust(right=1)\n",
"\n",
"plt.show()\n",
"\n",
"\n",
"x1_example = X1D[3, 0]\n",
"for landmark in (-2, 1):\n",
" k = gaussian_rbf(np.array([[x1_example]]), np.array([[landmark]]), gamma)\n",
" print(\"Phi({}, {}) = {}\".format(x1_example, landmark, k))\n",
"\n",
"rbf_kernel_svm_clf = Pipeline([\n",
" (\"scaler\", StandardScaler()),\n",
" (\"svm_clf\", SVC(kernel=\"rbf\", gamma=5, C=0.001))\n",
" ])\n",
"rbf_kernel_svm_clf.fit(X, y)\n",
"\n",
"\n",
"from sklearn.svm import SVC\n",
"\n",
"gamma1, gamma2 = 0.1, 5\n",
"C1, C2 = 0.001, 1000\n",
"hyperparams = (gamma1, C1), (gamma1, C2), (gamma2, C1), (gamma2, C2)\n",
"\n",
"svm_clfs = []\n",
"for gamma, C in hyperparams:\n",
" rbf_kernel_svm_clf = Pipeline([\n",
" (\"scaler\", StandardScaler()),\n",
" (\"svm_clf\", SVC(kernel=\"rbf\", gamma=gamma, C=C))\n",
" ])\n",
" rbf_kernel_svm_clf.fit(X, y)\n",
" svm_clfs.append(rbf_kernel_svm_clf)\n",
"\n",
"plt.figure(figsize=(11, 7))\n",
"\n",
"for i, svm_clf in enumerate(svm_clfs):\n",
" plt.subplot(221 + i)\n",
" plot_predictions(svm_clf, [-1.5, 2.5, -1, 1.5])\n",
" plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])\n",
" gamma, C = hyperparams[i]\n",
" plt.title(r\"$\\gamma = {}, C = {}$\".format(gamma, C), fontsize=16)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Mathematical optimization of convex functions\n",
"\n",
"A mathematical (quadratic) optimization problem, or just optimization problem, has the form"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align*}\n",
" &\\mathrm{min}_{\\lambda}\\hspace{0.2cm} \\frac{1}{2}\\boldsymbol{\\lambda}^T\\boldsymbol{P}\\boldsymbol{\\lambda}+\\boldsymbol{q}^T\\boldsymbol{\\lambda},\\\\ \\nonumber\n",
" &\\mathrm{subject\\hspace{0.1cm}to} \\hspace{0.2cm} \\boldsymbol{G}\\boldsymbol{\\lambda} \\preceq \\boldsymbol{h} \\wedge \\boldsymbol{A}\\boldsymbol{\\lambda}=f.\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to some constraints for say a selected set $i=1,2,\\dots, n$.\n",
"In our case we are optimizing with respect to the Lagrangian multipliers $\\lambda_i$, and the\n",
"vector $\\boldsymbol{\\lambda}=[\\lambda_1, \\lambda_2,\\dots, \\lambda_n]$ is the optimization variable we are dealing with.\n",
"\n",
"In our case we are particularly interested in a class of optimization problems called convex optmization problems. \n",
"In our discussion on gradient descent methods we discussed at length the definition of a convex function. \n",
"\n",
"Convex optimization problems play a central role in applied mathematics and we recommend strongly [Boyd and Vandenberghe's text on the topics](http://web.stanford.edu/~boyd/cvxbook/).\n",
"\n",
"\n",
"\n",
"## How do we solve these problems?\n",
"\n",
"If we use Python as programming language and wish to venture beyond\n",
"**scikit-learn**, **tensorflow** and similar software which makes our\n",
"lives so much easier, we need to dive into the wonderful world of\n",
"quadratic programming. We can, if we wish, solve the minimization\n",
"problem using say standard gradient methods or conjugate gradient\n",
"methods. However, these methods tend to exhibit a rather slow\n",
"converge. So, welcome to the promised land of quadratic programming.\n",
"\n",
"The functions we need are contained in the quadratic programming package **CVXOPT** and we need to import it together with **numpy** as"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import numpy\n",
"import cvxopt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This will make our life much easier. You don't need t write your own optimizer.\n",
"\n",
"\n",
"## A simplex example\n",
"\n",
"We remind ourselves about the general problem we want to solve"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align*}\n",
" &\\mathrm{min}_{x}\\hspace{0.2cm} \\frac{1}{2}\\boldsymbol{x}^T\\boldsymbol{P}\\boldsymbol{x}+\\boldsymbol{q}^T\\boldsymbol{x},\\\\ \\nonumber\n",
" &\\mathrm{subject\\hspace{0.1cm} to} \\hspace{0.2cm} \\boldsymbol{G}\\boldsymbol{x} \\preceq \\boldsymbol{h} \\wedge \\boldsymbol{A}\\boldsymbol{x}=f.\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us show how to perform the optmization using a simple case. Assume we want to optimize the following problem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align*}\n",
" &\\mathrm{min}_{x}\\hspace{0.2cm} \\frac{1}{2}x^2+5x+3y \\\\ \\nonumber\n",
" &\\mathrm{subject to} \\\\ \\nonumber\n",
" &x, y \\geq 0 \\\\ \\nonumber\n",
" &x+3y \\geq 15 \\\\ \\nonumber\n",
" &2x+5y \\leq 100 \\\\ \\nonumber\n",
" &3x+4y \\leq 80. \\\\ \\nonumber\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The minimization problem can be rewritten in terms of vectors and matrices as (with $x$ and $y$ being the unknowns)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{1}{2}\\begin{bmatrix} x\\\\ y \\end{bmatrix}^T \\begin{bmatrix} 1 & 0\\\\ 0 & 0 \\end{bmatrix} \\begin{bmatrix} x \\\\ y \\end{bmatrix} + \\begin{bmatrix}3\\\\ 4 \\end{bmatrix}^T \\begin{bmatrix}x \\\\ y \\end{bmatrix}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, we can now set up the inequalities (we need to change $\\geq$ to $\\leq$ by multiplying with $-1$ on bot sides) as the following matrix-vector equation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{bmatrix} -1 & 0 \\\\ 0 & -1 \\\\ -1 & -3 \\\\ 2 & 5 \\\\ 3 & 4\\end{bmatrix}\\begin{bmatrix} x \\\\ y\\end{bmatrix} \\preceq \\begin{bmatrix}0 \\\\ 0\\\\ -15 \\\\ 100 \\\\ 80\\end{bmatrix}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have collapsed all the inequalities into a single matrix $\\boldsymbol{G}$. We see also that our matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\boldsymbol{P} =\\begin{bmatrix} 1 & 0\\\\ 0 & 0 \\end{bmatrix}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"is clearly positive semi-definite (all eigenvalues larger or equal zero). \n",
"Finally, the vector $\\boldsymbol{h}$ is defined as"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\boldsymbol{h} = \\begin{bmatrix}0 \\\\ 0\\\\ -15 \\\\ 100 \\\\ 80\\end{bmatrix}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since we don't have any equalities the matrix $\\boldsymbol{A}$ is set to zero\n",
"The following code solves the equations for us"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" pcost dcost gap pres dres\n",
" 0: 1.0780e+02 -7.6366e+02 9e+02 0e+00 4e+01\n",
" 1: 9.3245e+01 9.7637e+00 8e+01 1e-16 3e+00\n",
" 2: 6.7311e+01 3.2553e+01 3e+01 1e-16 1e+00\n",
" 3: 2.6071e+01 1.5068e+01 1e+01 1e-16 7e-01\n",
" 4: 3.7092e+01 2.3152e+01 1e+01 2e-16 4e-01\n",
" 5: 2.5352e+01 1.8652e+01 7e+00 2e-16 3e-16\n",
" 6: 2.0062e+01 1.9974e+01 9e-02 5e-17 1e-16\n",
" 7: 2.0001e+01 2.0000e+01 9e-04 8e-17 4e-16\n",
" 8: 2.0000e+01 2.0000e+01 9e-06 9e-17 2e-16\n",
"Optimal solution found.\n"
]
},
{
"data": {
"text/plain": [
"20.00000617311241"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Import the necessary packages\n",
"import numpy\n",
"from cvxopt import matrix\n",
"from cvxopt import solvers\n",
"P = matrix(numpy.diag([1,0]), tc='d')\n",
"q = matrix(numpy.array([3,4]), tc='d')\n",
"G = matrix(numpy.array([[-1,0],[0,-1],[-1,-3],[2,5],[3,4]]), tc='d')\n",
"h = matrix(numpy.array([0,0,-15,100,80]), tc='d')\n",
"# Construct the QP, invoke solver\n",
"sol = solvers.qp(P,q,G,h)\n",
"# Extract optimal value and solution\n",
"sol['x'] \n",
"sol['primal objective']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Back to the more realistic cases\n",
"\n",
"We are now ready to return to our setup of the optmization problem for a more realistic case. Introducint the **slack** parameter $C$ we have"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\frac{1}{2} \\boldsymbol{\\lambda}^T\\begin{bmatrix} y_1y_1K(\\boldsymbol{x}_1,\\boldsymbol{x}_1) & y_1y_2K(\\boldsymbol{x}_1,\\boldsymbol{x}_2) & \\dots & \\dots & y_1y_nK(\\boldsymbol{x}_1,\\boldsymbol{x}_n) \\\\\n",
"y_2y_1K(\\boldsymbol{x}_2,\\boldsymbol{x}_1) & y_2y_2K(\\boldsymbol{x}_2,\\boldsymbol{x}_2) & \\dots & \\dots & y_1y_nK(\\boldsymbol{x}_2,\\boldsymbol{x}_n) \\\\\n",
"\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
"\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
"y_ny_1K(\\boldsymbol{x}_n,\\boldsymbol{x}_1) & y_ny_2K(\\boldsymbol{x}_n\\boldsymbol{x}_2) & \\dots & \\dots & y_ny_nK(\\boldsymbol{x}_n,\\boldsymbol{x}_n) \\\\\n",
"\\end{bmatrix}\\boldsymbol{\\lambda}-\\mathbb{I}\\boldsymbol{\\lambda},\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"subject to $\\boldsymbol{y}^T\\boldsymbol{\\lambda}=0$. Here we defined the vectors $\\boldsymbol{\\lambda} =[\\lambda_1,\\lambda_2,\\dots,\\lambda_n]$ and \n",
"$\\boldsymbol{y}=[y_1,y_2,\\dots,y_n]$. \n",
"With the slack constants this leads to the additional constraint $0\\leq \\lambda_i \\leq C$.\n",
"\n",
"**code will be added**\n",
"\n",
"\n",
"## Multiclass problems and regression with SVMs\n",
"This material will be added later."
]
}
],
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}