From 3fe132f4ce35dbb351cdaa2d9a3ad4d69e6ca437 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Mon, 5 Nov 2018 21:27:51 +0100 Subject: [PATCH] mathbf--> bm --- doc/pub/svm/html/._svm-bs003.html | 4 +- doc/pub/svm/html/._svm-bs004.html | 12 +-- doc/pub/svm/html/._svm-bs006.html | 8 +- doc/pub/svm/html/._svm-bs007.html | 8 +- doc/pub/svm/html/._svm-bs008.html | 2 +- doc/pub/svm/html/._svm-bs009.html | 18 ++-- doc/pub/svm/html/._svm-bs012.html | 16 ++-- doc/pub/svm/html/._svm-bs013.html | 14 +-- doc/pub/svm/html/._svm-bs014.html | 12 +-- doc/pub/svm/html/._svm-bs015.html | 8 +- doc/pub/svm/html/._svm-bs016.html | 14 +-- doc/pub/svm/html/svm-reveal.html | 116 ++++++++++++------------- doc/pub/svm/html/svm-solarized.html | 116 ++++++++++++------------- doc/pub/svm/html/svm.html | 116 ++++++++++++------------- doc/pub/svm/ipynb/ipynb-svm-src.tar.gz | Bin 207 -> 207 bytes doc/pub/svm/ipynb/svm.ipynb | 114 ++++++++++++------------ doc/pub/svm/pdf/svm-minted.pdf | Bin 235739 -> 243532 bytes doc/src/SupportVMachines/svm.do.txt | 116 ++++++++++++------------- 18 files changed, 347 insertions(+), 347 deletions(-) diff --git a/doc/pub/svm/html/._svm-bs003.html b/doc/pub/svm/html/._svm-bs003.html index 24e0f0043..4ce42b1ac 100644 --- a/doc/pub/svm/html/._svm-bs003.html +++ b/doc/pub/svm/html/._svm-bs003.html @@ -147,10 +147,10 @@ $$ where \( b \) is the intercept and \( w_1 \) and \( w_2 \) define the elements of a vector orthogonal to the line \( b+w_1x_1+w_2x_2=0 \). -In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). +In two dimensions we define the vectors \( \boldsymbol{x} =[x1,x2] \) and \( \boldsymbol{w}=[w1,w2] \). We can then rewrite the above equation as $$ -\mathbf{w}^T\mathbf{x}+b=0. +\boldsymbol{w}^T\boldsymbol{x}+b=0. $$

diff --git a/doc/pub/svm/html/._svm-bs004.html b/doc/pub/svm/html/._svm-bs004.html index e75fee4e0..37db97a20 100644 --- a/doc/pub/svm/html/._svm-bs004.html +++ b/doc/pub/svm/html/._svm-bs004.html @@ -139,25 +139,25 @@ b+wx_1+w_2x_2+\dots +w_px_p=0. $$ If we define a -matrix \( \mathbf{X}=\left[\mathbf{x}_1,\mathbf{x}_2,\dots, \mathbf{x}_p\right] \) -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 \( \mathbf{X} \), +matrix \( \boldsymbol{X}=\left[\boldsymbol{x}_1,\boldsymbol{x}_2,\dots, \boldsymbol{x}_p\right] \) +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} \), $$ -\mathbf{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\boldsymbol{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. $$ -If the above condition is not met for a given vector \( \mathbf{x}_i \) we have +If the above condition is not met for a given vector \( \boldsymbol{x}_i \) we have $$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} >0, $$ if our output \( y_i=1 \). -In this case we say that \( \mathbf{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \boldsymbol{x}_i \) lies on one of the sides of the hyperplane and if $$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} < 0, $$ for the class of observations \( y_i=-1 \), -then \( \mathbf{x}_i \) lies on the other side. +then \( \boldsymbol{x}_i \) lies on the other side.

Equivalently, for the two classes of observations we have diff --git a/doc/pub/svm/html/._svm-bs006.html b/doc/pub/svm/html/._svm-bs006.html index 62479f519..cce29d74b 100644 --- a/doc/pub/svm/html/._svm-bs006.html +++ b/doc/pub/svm/html/._svm-bs006.html @@ -134,18 +134,18 @@ MathJax.Hub.Config({

Let us define the function $$ -f(x) = \mathbf{w}^T\mathbf{x}+b = 0, +f(x) = \boldsymbol{w}^T\boldsymbol{x}+b = 0, $$ as the function that determines the line \( L \) that separates two classes (our two features), see the figure here.

-Any point defined by \( \mathbf{x}_i \) and \( \mathbf{x}_2 \) on the line \( L \) will satisfy \( \mathbf{w}^T(\mathbf{x}_1-\mathbf{x}_2)=0 \). +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 \).

-The signed distance \( \delta \) from any point defined by a vector \( \mathbf{x} \) and a point \( \mathbf{x}_0 \) on the line \( L \) is then +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 $$ -\delta = \frac{1}{\vert\vert \mathbf{w}\vert\vert}(\mathbf{w}^T\mathbf{x}+b). +\delta = \frac{1}{\vert\vert \boldsymbol{w}\vert\vert}(\boldsymbol{w}^T\boldsymbol{x}+b). $$

diff --git a/doc/pub/svm/html/._svm-bs007.html b/doc/pub/svm/html/._svm-bs007.html index 6186224d0..148601449 100644 --- a/doc/pub/svm/html/._svm-bs007.html +++ b/doc/pub/svm/html/._svm-bs007.html @@ -132,23 +132,23 @@ MathJax.Hub.Config({

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \mathbf{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \boldsymbol{w} \)? What we could do is to define a cost function which now contains the set of all misclassified points \( M \) and attempt to minimize this function $$ -C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). +C(\boldsymbol{w},b) = -\sum_{i\in M} y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \mathbf{w}^T\mathbf{x}_i+b < 0 \) and the opposite if we have \( y_i=-1 \). Taking the derivatives gives us +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 $$ \frac{\partial C}{\partial b} = -\sum_{i\in M} y_i, $$ and $$ -\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \boldsymbol{w}} = -\sum_{i\in M} y_ix_i. $$

diff --git a/doc/pub/svm/html/._svm-bs008.html b/doc/pub/svm/html/._svm-bs008.html index e06135a53..b650a6265 100644 --- a/doc/pub/svm/html/._svm-bs008.html +++ b/doc/pub/svm/html/._svm-bs008.html @@ -139,7 +139,7 @@ $$ and $$ -\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{w}}, +\boldsymbol{w} \leftarrow \boldsymbol{w} +\eta \frac{\partial C}{\partial \boldsymbol{w}}, $$ where \( \eta \) is our by now well-known learning rate. diff --git a/doc/pub/svm/html/._svm-bs009.html b/doc/pub/svm/html/._svm-bs009.html index a2fb4b4c1..e0042ab0d 100644 --- a/doc/pub/svm/html/._svm-bs009.html +++ b/doc/pub/svm/html/._svm-bs009.html @@ -136,11 +136,11 @@ A better approach is rather to try to define a large margin between the two classes (if they are well separated from the beginning).

-Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to -\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \boldsymbol{w} \) normalized to +\( \vert\vert \boldsymbol{w}\vert\vert =1 \) subject to the condition $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. $$ 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. @@ -148,22 +148,22 @@ All points are thus at a signed distance from the decision boundary defined by t

We seek thus the largest value \( M \) defined by $$ -\frac{1}{\vert \vert \mathbf{w}\vert\vert}y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$ or just $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M\vert \vert \boldsymbol{w}\vert\vert \hspace{0.1cm}\forall i. $$ -If we scale the equation so that \( \vert \vert \mathbf{w}\vert\vert = 1/M \), we have to find the minimum of -\( \mathbf{w}^T\mathbf{w}=\vert \vert \mathbf{w}\vert\vert \) (the norm) subject to the condition +If we scale the equation so that \( \vert \vert \boldsymbol{w}\vert\vert = 1/M \), we have to find the minimum of +\( \boldsymbol{w}^T\boldsymbol{w}=\vert \vert \boldsymbol{w}\vert\vert \) (the norm) subject to the condition $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

-We have thus defined our margin as the invers of the norm of \( \mathbf{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. +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.

diff --git a/doc/pub/svm/html/._svm-bs012.html b/doc/pub/svm/html/._svm-bs012.html index be48612ae..5274b124e 100644 --- a/doc/pub/svm/html/._svm-bs012.html +++ b/doc/pub/svm/html/._svm-bs012.html @@ -132,40 +132,40 @@ MathJax.Hub.Config({

Setting up the problem

In order to solve the above problem, we define the following Lagrangian function to be minimized $$ -{\cal L}(\lambda,b,\mathbf{w})=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right], +{\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], $$ where \( \lambda_i \) is a so-called Lagrange multiplier subject to the condition \( \lambda_i \geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i. +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ subject to the constraints \( \lambda_i\geq 0 \) and \( \sum_i\lambda_iy_i=0 \). We must in addition satisfy the Karush-Kuhn-Tucker (KKT) condition $$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

    -
  1. If \( \lambda_i > 0 \), then \( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -
  3. If \( y_i(\mathbf{w}^T\mathbf{x}_i+b)> 1 \), we say \( x_i \) is not on the boundary and we set \( \lambda_i=0 \).
  4. +
  5. 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.
  6. +
  7. 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 \).
-When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin \( M \). +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 \).

diff --git a/doc/pub/svm/html/._svm-bs013.html b/doc/pub/svm/html/._svm-bs013.html index 3a0c677f3..230eacbcd 100644 --- a/doc/pub/svm/html/._svm-bs013.html +++ b/doc/pub/svm/html/._svm-bs013.html @@ -134,21 +134,21 @@ MathJax.Hub.Config({

We can rewrite $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ and its constraints in terms of a matrix-vector problem where we minimize w.r.t. \( \lambda \) the following problem $$ -\frac{1}{2} \mathbf{\lambda}^T\begin{bmatrix} y_1y_1\mathbf{x}_1^T\mathbf{x}_1 & y_1y_2\mathbf{x}_1^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_1^T\mathbf{x}_n \\ -y_2y_1\mathbf{x}_2^T\mathbf{x}_1 & y_2y_2\mathbf{x}_2^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_2^T\mathbf{x}_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 \\ +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 \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\mathbf{x}_n^T\mathbf{x}_1 & y_ny_2\mathbf{x}_n^T\mathbf{x}_2 & \dots & \dots & y_ny_n\mathbf{x}_n^T\mathbf{x}_n \\ -\end{bmatrix}\mathbf{\lambda}-\mathbb{1}\mathbf{\lambda}, +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 \\ +\end{bmatrix}\boldsymbol{\lambda}-\mathbb{1}\boldsymbol{\lambda}, $$ -subject to \( \mathbf{y}^T\mathbf{\lambda}=0 \). Here we defined the vectors \( \mathbf{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and -\( \mathbf{y}=[y_1,y_2,\dots,y_n] \). +subject to \( \boldsymbol{y}^T\boldsymbol{\lambda}=0 \). Here we defined the vectors \( \boldsymbol{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and +\( \boldsymbol{y}=[y_1,y_2,\dots,y_n] \).

diff --git a/doc/pub/svm/html/._svm-bs014.html b/doc/pub/svm/html/._svm-bs014.html index 5a6d01064..690035116 100644 --- a/doc/pub/svm/html/._svm-bs014.html +++ b/doc/pub/svm/html/._svm-bs014.html @@ -135,27 +135,27 @@ MathJax.Hub.Config({ Solving the above problem, yields the values of \( \lambda_i \). To find the coefficients of your hyperplane we need simply to compute $$ -\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. +\boldsymbol{w}=\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$ -With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \boldsymbol{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$ resulting in $$ -b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{x}_i, +b = \frac{1}{y_i}-\boldsymbol{w}^T\boldsymbol{x}_i, $$ or if we write it out in terms of the support vectors only, with \( N_s \) being their number, we have $$ -b = \frac{1}{N_s}\sum_{j\in N_s}\left(y_j-\sum_{i=1}^n\lambda_iy_i\mathbf{x}_i^T\mathbf{x}_j\right). +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). $$ With our hyperplane coefficients we can use our classifier to assign any observation by simply using $$ -y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{x}_i+b). +y_i = \mathrm{sign}(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$ Below we discuss how to find the optimal values of \( \lambda_i \). Before we proceed however, we discuss now the so-called soft classifier. diff --git a/doc/pub/svm/html/._svm-bs015.html b/doc/pub/svm/html/._svm-bs015.html index af6bc9a7a..6ee62d029 100644 --- a/doc/pub/svm/html/._svm-bs015.html +++ b/doc/pub/svm/html/._svm-bs015.html @@ -141,20 +141,20 @@ so-called kernel approach, is to allow a kind of slack in the sense that we allow some points to be on the wrong side of the margin.

-We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \boldsymbol{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$ to $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i, $$ with the requirement \( \xi_i\geq 0 \). The total violation is now \( \sum_i\xi \). The value \( \xi_i \) in the constraint the last constraint corresponds to the amount by which the prediction -\( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), we bound the total amount by which predictions fall on the wrong side of their margins.

diff --git a/doc/pub/svm/html/._svm-bs016.html b/doc/pub/svm/html/._svm-bs016.html index 35c382c58..eafe9c5b7 100644 --- a/doc/pub/svm/html/._svm-bs016.html +++ b/doc/pub/svm/html/._svm-bs016.html @@ -134,25 +134,25 @@ MathJax.Hub.Config({

This has in turn the consequences that we change our optmization problem to finding the minimum of $$ -{\cal L}=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-(1-\xi_)\right]+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\gamma_i\xi_i, +{\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, $$ subject to $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, $$ with the requirement \( \xi_i\geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i, +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i, $$ and @@ -162,13 +162,13 @@ $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain the same equation as before $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ but now subject to the constraints \( \lambda_i\geq 0 \), \( \sum_i\lambda_iy_i=0 \) and \( 0\leq\lambda_i \leq C \). We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads $$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$ $$ @@ -177,7 +177,7 @@ $$ and $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. $$

diff --git a/doc/pub/svm/html/svm-reveal.html b/doc/pub/svm/html/svm-reveal.html index 1a58fcbc6..5243d34be 100644 --- a/doc/pub/svm/html/svm-reveal.html +++ b/doc/pub/svm/html/svm-reveal.html @@ -225,11 +225,11 @@ $$ where \( b \) is the intercept and \( w_1 \) and \( w_2 \) define the elements of a vector orthogonal to the line \( b+w_1x_1+w_2x_2=0 \). -In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). +In two dimensions we define the vectors \( \boldsymbol{x} =[x1,x2] \) and \( \boldsymbol{w}=[w1,w2] \). We can then rewrite the above equation as

 
$$ -\mathbf{w}^T\mathbf{x}+b=0. +\boldsymbol{w}^T\boldsymbol{x}+b=0. $$

 
@@ -248,15 +248,15 @@ $$

 
If we define a -matrix \( \mathbf{X}=\left[\mathbf{x}_1,\mathbf{x}_2,\dots, \mathbf{x}_p\right] \) -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 \( \mathbf{X} \), +matrix \( \boldsymbol{X}=\left[\boldsymbol{x}_1,\boldsymbol{x}_2,\dots, \boldsymbol{x}_p\right] \) +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} \),

 
$$ -\mathbf{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\boldsymbol{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. $$

 
-If the above condition is not met for a given vector \( \mathbf{x}_i \) we have +If the above condition is not met for a given vector \( \boldsymbol{x}_i \) we have

 
$$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} >0, @@ -264,7 +264,7 @@ $$

 
if our output \( y_i=1 \). -In this case we say that \( \mathbf{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \boldsymbol{x}_i \) lies on one of the sides of the hyperplane and if

 
$$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} < 0, @@ -272,7 +272,7 @@ $$

 
for the class of observations \( y_i=-1 \), -then \( \mathbf{x}_i \) lies on the other side. +then \( \boldsymbol{x}_i \) lies on the other side.

Equivalently, for the two classes of observations we have @@ -321,20 +321,20 @@ for our data sample. Let us define the function

 
$$ -f(x) = \mathbf{w}^T\mathbf{x}+b = 0, +f(x) = \boldsymbol{w}^T\boldsymbol{x}+b = 0, $$

 
as the function that determines the line \( L \) that separates two classes (our two features), see the figure here.

-Any point defined by \( \mathbf{x}_i \) and \( \mathbf{x}_2 \) on the line \( L \) will satisfy \( \mathbf{w}^T(\mathbf{x}_1-\mathbf{x}_2)=0 \). +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 \).

-The signed distance \( \delta \) from any point defined by a vector \( \mathbf{x} \) and a point \( \mathbf{x}_0 \) on the line \( L \) is then +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

 
$$ -\delta = \frac{1}{\vert\vert \mathbf{w}\vert\vert}(\mathbf{w}^T\mathbf{x}+b). +\delta = \frac{1}{\vert\vert \boldsymbol{w}\vert\vert}(\boldsymbol{w}^T\boldsymbol{x}+b). $$

 
@@ -344,18 +344,18 @@ $$

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \mathbf{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \boldsymbol{w} \)? What we could do is to define a cost function which now contains the set of all misclassified points \( M \) and attempt to minimize this function

 
$$ -C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). +C(\boldsymbol{w},b) = -\sum_{i\in M} y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$

 

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \mathbf{w}^T\mathbf{x}_i+b < 0 \) and the opposite if we have \( y_i=-1 \). Taking the derivatives gives us +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

 
$$ \frac{\partial C}{\partial b} = -\sum_{i\in M} y_i, @@ -365,7 +365,7 @@ $$ and

 
$$ -\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \boldsymbol{w}} = -\sum_{i\in M} y_ix_i. $$

 
@@ -385,7 +385,7 @@ $$ and

 
$$ -\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{w}}, +\boldsymbol{w} \leftarrow \boldsymbol{w} +\eta \frac{\partial C}{\partial \boldsymbol{w}}, $$

 
@@ -411,12 +411,12 @@ A better approach is rather to try to define a large margin between the two classes (if they are well separated from the beginning).

-Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to -\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \boldsymbol{w} \) normalized to +\( \vert\vert \boldsymbol{w}\vert\vert =1 \) subject to the condition

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. $$

 
@@ -426,27 +426,27 @@ All points are thus at a signed distance from the decision boundary defined by t We seek thus the largest value \( M \) defined by

 
$$ -\frac{1}{\vert \vert \mathbf{w}\vert\vert}y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$

 
or just

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M\vert \vert \boldsymbol{w}\vert\vert \hspace{0.1cm}\forall i. $$

 
-If we scale the equation so that \( \vert \vert \mathbf{w}\vert\vert = 1/M \), we have to find the minimum of -\( \mathbf{w}^T\mathbf{w}=\vert \vert \mathbf{w}\vert\vert \) (the norm) subject to the condition +If we scale the equation so that \( \vert \vert \boldsymbol{w}\vert\vert = 1/M \), we have to find the minimum of +\( \boldsymbol{w}^T\boldsymbol{w}=\vert \vert \boldsymbol{w}\vert\vert \) (the norm) subject to the condition

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

 

-We have thus defined our margin as the invers of the norm of \( \mathbf{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. +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. @@ -572,14 +572,14 @@ $$ In order to solve the above problem, we define the following Lagrangian function to be minimized

 
$$ -{\cal L}(\lambda,b,\mathbf{w})=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right], +{\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], $$

 
where \( \lambda_i \) is a so-called Lagrange multiplier subject to the condition \( \lambda_i \geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain

 
$$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, @@ -589,14 +589,14 @@ $$ and

 
$$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i. +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$

 
Inserting these constraints into the equation for \( {\cal L} \) we obtain

 
$$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$

 
@@ -604,18 +604,18 @@ subject to the constraints \( \lambda_i\geq 0 \) and \( \sum_i\lambda_iy_i=0 \). We must in addition satisfy the Karush-Kuhn-Tucker (KKT) condition

 
$$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

 

    -

  1. If \( \lambda_i > 0 \), then \( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -

  3. If \( y_i(\mathbf{w}^T\mathbf{x}_i+b)> 1 \), we say \( x_i \) is not on the boundary and we set \( \lambda_i=0 \).
  4. +

  5. 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.
  6. +

  7. 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 \).

-When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin \( M \). +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 \). @@ -626,24 +626,24 @@ When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vect We can rewrite

 
$$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$

 
and its constraints in terms of a matrix-vector problem where we minimize w.r.t. \( \lambda \) the following problem

 
$$ -\frac{1}{2} \mathbf{\lambda}^T\begin{bmatrix} y_1y_1\mathbf{x}_1^T\mathbf{x}_1 & y_1y_2\mathbf{x}_1^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_1^T\mathbf{x}_n \\ -y_2y_1\mathbf{x}_2^T\mathbf{x}_1 & y_2y_2\mathbf{x}_2^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_2^T\mathbf{x}_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 \\ +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 \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\mathbf{x}_n^T\mathbf{x}_1 & y_ny_2\mathbf{x}_n^T\mathbf{x}_2 & \dots & \dots & y_ny_n\mathbf{x}_n^T\mathbf{x}_n \\ -\end{bmatrix}\mathbf{\lambda}-\mathbb{1}\mathbf{\lambda}, +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 \\ +\end{bmatrix}\boldsymbol{\lambda}-\mathbb{1}\boldsymbol{\lambda}, $$

 
-subject to \( \mathbf{y}^T\mathbf{\lambda}=0 \). Here we defined the vectors \( \mathbf{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and -\( \mathbf{y}=[y_1,y_2,\dots,y_n] \). +subject to \( \boldsymbol{y}^T\boldsymbol{\lambda}=0 \). Here we defined the vectors \( \boldsymbol{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and +\( \boldsymbol{y}=[y_1,y_2,\dots,y_n] \). @@ -655,35 +655,35 @@ Solving the above problem, yields the values of \( \lambda_i \). To find the coefficients of your hyperplane we need simply to compute

 
$$ -\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. +\boldsymbol{w}=\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$

 
-With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \boldsymbol{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$

 
resulting in

 
$$ -b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{x}_i, +b = \frac{1}{y_i}-\boldsymbol{w}^T\boldsymbol{x}_i, $$

 
or if we write it out in terms of the support vectors only, with \( N_s \) being their number, we have

 
$$ -b = \frac{1}{N_s}\sum_{j\in N_s}\left(y_j-\sum_{i=1}^n\lambda_iy_i\mathbf{x}_i^T\mathbf{x}_j\right). +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). $$

 
With our hyperplane coefficients we can use our classifier to assign any observation by simply using

 
$$ -y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{x}_i+b). +y_i = \mathrm{sign}(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$

 
@@ -704,24 +704,24 @@ so-called kernel approach, is to allow a kind of slack in the sense that we allow some points to be on the wrong side of the margin.

-We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \boldsymbol{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$

 
to

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i, $$

 
with the requirement \( \xi_i\geq 0 \). The total violation is now \( \sum_i\xi \). The value \( \xi_i \) in the constraint the last constraint corresponds to the amount by which the prediction -\( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), we bound the total amount by which predictions fall on the wrong side of their margins.

@@ -737,21 +737,21 @@ misclassifications. This has in turn the consequences that we change our optmization problem to finding the minimum of

 
$$ -{\cal L}=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-(1-\xi_)\right]+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\gamma_i\xi_i, +{\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, $$

 
subject to

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, $$

 
with the requirement \( \xi_i\geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain

 
$$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, @@ -761,7 +761,7 @@ $$ and

 
$$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i, +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i, $$

 
@@ -775,7 +775,7 @@ $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain the same equation as before

 
$$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$

 
@@ -783,7 +783,7 @@ but now subject to the constraints \( \lambda_i\geq 0 \), \( \sum_i\lambda_iy_i= We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads

 
$$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$

 
@@ -796,7 +796,7 @@ $$ and

 
$$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. $$

 
diff --git a/doc/pub/svm/html/svm-solarized.html b/doc/pub/svm/html/svm-solarized.html index b3cc9ba1f..85221cb67 100644 --- a/doc/pub/svm/html/svm-solarized.html +++ b/doc/pub/svm/html/svm-solarized.html @@ -164,10 +164,10 @@ $$ where \( b \) is the intercept and \( w_1 \) and \( w_2 \) define the elements of a vector orthogonal to the line \( b+w_1x_1+w_2x_2=0 \). -In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). +In two dimensions we define the vectors \( \boldsymbol{x} =[x1,x2] \) and \( \boldsymbol{w}=[w1,w2] \). We can then rewrite the above equation as $$ -\mathbf{w}^T\mathbf{x}+b=0. +\boldsymbol{w}^T\boldsymbol{x}+b=0. $$

@@ -183,25 +183,25 @@ b+wx_1+w_2x_2+\dots +w_px_p=0. $$ If we define a -matrix \( \mathbf{X}=\left[\mathbf{x}_1,\mathbf{x}_2,\dots, \mathbf{x}_p\right] \) -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 \( \mathbf{X} \), +matrix \( \boldsymbol{X}=\left[\boldsymbol{x}_1,\boldsymbol{x}_2,\dots, \boldsymbol{x}_p\right] \) +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} \), $$ -\mathbf{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\boldsymbol{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. $$ -If the above condition is not met for a given vector \( \mathbf{x}_i \) we have +If the above condition is not met for a given vector \( \boldsymbol{x}_i \) we have $$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} >0, $$ if our output \( y_i=1 \). -In this case we say that \( \mathbf{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \boldsymbol{x}_i \) lies on one of the sides of the hyperplane and if $$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} < 0, $$ for the class of observations \( y_i=-1 \), -then \( \mathbf{x}_i \) lies on the other side. +then \( \boldsymbol{x}_i \) lies on the other side.

Equivalently, for the two classes of observations we have @@ -247,18 +247,18 @@ for our data sample.

Let us define the function $$ -f(x) = \mathbf{w}^T\mathbf{x}+b = 0, +f(x) = \boldsymbol{w}^T\boldsymbol{x}+b = 0, $$ as the function that determines the line \( L \) that separates two classes (our two features), see the figure here.

-Any point defined by \( \mathbf{x}_i \) and \( \mathbf{x}_2 \) on the line \( L \) will satisfy \( \mathbf{w}^T(\mathbf{x}_1-\mathbf{x}_2)=0 \). +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 \).

-The signed distance \( \delta \) from any point defined by a vector \( \mathbf{x} \) and a point \( \mathbf{x}_0 \) on the line \( L \) is then +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 $$ -\delta = \frac{1}{\vert\vert \mathbf{w}\vert\vert}(\mathbf{w}^T\mathbf{x}+b). +\delta = \frac{1}{\vert\vert \boldsymbol{w}\vert\vert}(\boldsymbol{w}^T\boldsymbol{x}+b). $$

@@ -267,23 +267,23 @@ $$

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \mathbf{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \boldsymbol{w} \)? What we could do is to define a cost function which now contains the set of all misclassified points \( M \) and attempt to minimize this function $$ -C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). +C(\boldsymbol{w},b) = -\sum_{i\in M} y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \mathbf{w}^T\mathbf{x}_i+b < 0 \) and the opposite if we have \( y_i=-1 \). Taking the derivatives gives us +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 $$ \frac{\partial C}{\partial b} = -\sum_{i\in M} y_i, $$ and $$ -\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \boldsymbol{w}} = -\sum_{i\in M} y_ix_i. $$

@@ -299,7 +299,7 @@ $$ and $$ -\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{w}}, +\boldsymbol{w} \leftarrow \boldsymbol{w} +\eta \frac{\partial C}{\partial \boldsymbol{w}}, $$ where \( \eta \) is our by now well-known learning rate. @@ -324,11 +324,11 @@ A better approach is rather to try to define a large margin between the two classes (if they are well separated from the beginning).

-Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to -\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \boldsymbol{w} \) normalized to +\( \vert\vert \boldsymbol{w}\vert\vert =1 \) subject to the condition $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. $$ 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. @@ -336,22 +336,22 @@ All points are thus at a signed distance from the decision boundary defined by t

We seek thus the largest value \( M \) defined by $$ -\frac{1}{\vert \vert \mathbf{w}\vert\vert}y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$ or just $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M\vert \vert \boldsymbol{w}\vert\vert \hspace{0.1cm}\forall i. $$ -If we scale the equation so that \( \vert \vert \mathbf{w}\vert\vert = 1/M \), we have to find the minimum of -\( \mathbf{w}^T\mathbf{w}=\vert \vert \mathbf{w}\vert\vert \) (the norm) subject to the condition +If we scale the equation so that \( \vert \vert \boldsymbol{w}\vert\vert = 1/M \), we have to find the minimum of +\( \boldsymbol{w}^T\boldsymbol{w}=\vert \vert \boldsymbol{w}\vert\vert \) (the norm) subject to the condition $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

-We have thus defined our margin as the invers of the norm of \( \mathbf{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. +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.











@@ -452,40 +452,40 @@ $$

Setting up the problem

In order to solve the above problem, we define the following Lagrangian function to be minimized $$ -{\cal L}(\lambda,b,\mathbf{w})=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right], +{\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], $$ where \( \lambda_i \) is a so-called Lagrange multiplier subject to the condition \( \lambda_i \geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i. +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ subject to the constraints \( \lambda_i\geq 0 \) and \( \sum_i\lambda_iy_i=0 \). We must in addition satisfy the Karush-Kuhn-Tucker (KKT) condition $$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

    -
  1. If \( \lambda_i > 0 \), then \( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -
  3. If \( y_i(\mathbf{w}^T\mathbf{x}_i+b)> 1 \), we say \( x_i \) is not on the boundary and we set \( \lambda_i=0 \).
  4. +
  5. 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.
  6. +
  7. 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 \).
-When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin \( M \). +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 \).











@@ -495,21 +495,21 @@ When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vect

We can rewrite $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ and its constraints in terms of a matrix-vector problem where we minimize w.r.t. \( \lambda \) the following problem $$ -\frac{1}{2} \mathbf{\lambda}^T\begin{bmatrix} y_1y_1\mathbf{x}_1^T\mathbf{x}_1 & y_1y_2\mathbf{x}_1^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_1^T\mathbf{x}_n \\ -y_2y_1\mathbf{x}_2^T\mathbf{x}_1 & y_2y_2\mathbf{x}_2^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_2^T\mathbf{x}_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 \\ +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 \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\mathbf{x}_n^T\mathbf{x}_1 & y_ny_2\mathbf{x}_n^T\mathbf{x}_2 & \dots & \dots & y_ny_n\mathbf{x}_n^T\mathbf{x}_n \\ -\end{bmatrix}\mathbf{\lambda}-\mathbb{1}\mathbf{\lambda}, +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 \\ +\end{bmatrix}\boldsymbol{\lambda}-\mathbb{1}\boldsymbol{\lambda}, $$ -subject to \( \mathbf{y}^T\mathbf{\lambda}=0 \). Here we defined the vectors \( \mathbf{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and -\( \mathbf{y}=[y_1,y_2,\dots,y_n] \). +subject to \( \boldsymbol{y}^T\boldsymbol{\lambda}=0 \). Here we defined the vectors \( \boldsymbol{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and +\( \boldsymbol{y}=[y_1,y_2,\dots,y_n] \).











@@ -520,27 +520,27 @@ subject to \( \mathbf{y}^T\mathbf{\lambda}=0 \). Here we defined the vectors \( Solving the above problem, yields the values of \( \lambda_i \). To find the coefficients of your hyperplane we need simply to compute $$ -\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. +\boldsymbol{w}=\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$ -With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \boldsymbol{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$ resulting in $$ -b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{x}_i, +b = \frac{1}{y_i}-\boldsymbol{w}^T\boldsymbol{x}_i, $$ or if we write it out in terms of the support vectors only, with \( N_s \) being their number, we have $$ -b = \frac{1}{N_s}\sum_{j\in N_s}\left(y_j-\sum_{i=1}^n\lambda_iy_i\mathbf{x}_i^T\mathbf{x}_j\right). +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). $$ With our hyperplane coefficients we can use our classifier to assign any observation by simply using $$ -y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{x}_i+b). +y_i = \mathrm{sign}(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$ Below we discuss how to find the optimal values of \( \lambda_i \). Before we proceed however, we discuss now the so-called soft classifier. @@ -560,20 +560,20 @@ so-called kernel approach, is to allow a kind of slack in the sense that we allow some points to be on the wrong side of the margin.

-We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \boldsymbol{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$ to $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i, $$ with the requirement \( \xi_i\geq 0 \). The total violation is now \( \sum_i\xi \). The value \( \xi_i \) in the constraint the last constraint corresponds to the amount by which the prediction -\( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), we bound the total amount by which predictions fall on the wrong side of their margins.

@@ -588,25 +588,25 @@ misclassifications.

This has in turn the consequences that we change our optmization problem to finding the minimum of $$ -{\cal L}=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-(1-\xi_)\right]+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\gamma_i\xi_i, +{\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, $$ subject to $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, $$ with the requirement \( \xi_i\geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i, +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i, $$ and @@ -616,13 +616,13 @@ $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain the same equation as before $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ but now subject to the constraints \( \lambda_i\geq 0 \), \( \sum_i\lambda_iy_i=0 \) and \( 0\leq\lambda_i \leq C \). We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads $$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$ $$ @@ -631,7 +631,7 @@ $$ and $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. $$

diff --git a/doc/pub/svm/html/svm.html b/doc/pub/svm/html/svm.html index c2e61d1e2..4d0d9e0e2 100644 --- a/doc/pub/svm/html/svm.html +++ b/doc/pub/svm/html/svm.html @@ -169,10 +169,10 @@ $$ where \( b \) is the intercept and \( w_1 \) and \( w_2 \) define the elements of a vector orthogonal to the line \( b+w_1x_1+w_2x_2=0 \). -In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). +In two dimensions we define the vectors \( \boldsymbol{x} =[x1,x2] \) and \( \boldsymbol{w}=[w1,w2] \). We can then rewrite the above equation as $$ -\mathbf{w}^T\mathbf{x}+b=0. +\boldsymbol{w}^T\boldsymbol{x}+b=0. $$

@@ -188,25 +188,25 @@ b+wx_1+w_2x_2+\dots +w_px_p=0. $$ If we define a -matrix \( \mathbf{X}=\left[\mathbf{x}_1,\mathbf{x}_2,\dots, \mathbf{x}_p\right] \) -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 \( \mathbf{X} \), +matrix \( \boldsymbol{X}=\left[\boldsymbol{x}_1,\boldsymbol{x}_2,\dots, \boldsymbol{x}_p\right] \) +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} \), $$ -\mathbf{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\boldsymbol{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. $$ -If the above condition is not met for a given vector \( \mathbf{x}_i \) we have +If the above condition is not met for a given vector \( \boldsymbol{x}_i \) we have $$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} >0, $$ if our output \( y_i=1 \). -In this case we say that \( \mathbf{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \boldsymbol{x}_i \) lies on one of the sides of the hyperplane and if $$ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} < 0, $$ for the class of observations \( y_i=-1 \), -then \( \mathbf{x}_i \) lies on the other side. +then \( \boldsymbol{x}_i \) lies on the other side.

Equivalently, for the two classes of observations we have @@ -252,18 +252,18 @@ for our data sample.

Let us define the function $$ -f(x) = \mathbf{w}^T\mathbf{x}+b = 0, +f(x) = \boldsymbol{w}^T\boldsymbol{x}+b = 0, $$ as the function that determines the line \( L \) that separates two classes (our two features), see the figure here.

-Any point defined by \( \mathbf{x}_i \) and \( \mathbf{x}_2 \) on the line \( L \) will satisfy \( \mathbf{w}^T(\mathbf{x}_1-\mathbf{x}_2)=0 \). +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 \).

-The signed distance \( \delta \) from any point defined by a vector \( \mathbf{x} \) and a point \( \mathbf{x}_0 \) on the line \( L \) is then +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 $$ -\delta = \frac{1}{\vert\vert \mathbf{w}\vert\vert}(\mathbf{w}^T\mathbf{x}+b). +\delta = \frac{1}{\vert\vert \boldsymbol{w}\vert\vert}(\boldsymbol{w}^T\boldsymbol{x}+b). $$

@@ -272,23 +272,23 @@ $$

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \mathbf{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \boldsymbol{w} \)? What we could do is to define a cost function which now contains the set of all misclassified points \( M \) and attempt to minimize this function $$ -C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). +C(\boldsymbol{w},b) = -\sum_{i\in M} y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \mathbf{w}^T\mathbf{x}_i+b < 0 \) and the opposite if we have \( y_i=-1 \). Taking the derivatives gives us +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 $$ \frac{\partial C}{\partial b} = -\sum_{i\in M} y_i, $$ and $$ -\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \boldsymbol{w}} = -\sum_{i\in M} y_ix_i. $$

@@ -304,7 +304,7 @@ $$ and $$ -\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{w}}, +\boldsymbol{w} \leftarrow \boldsymbol{w} +\eta \frac{\partial C}{\partial \boldsymbol{w}}, $$ where \( \eta \) is our by now well-known learning rate. @@ -329,11 +329,11 @@ A better approach is rather to try to define a large margin between the two classes (if they are well separated from the beginning).

-Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to -\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \boldsymbol{w} \) normalized to +\( \vert\vert \boldsymbol{w}\vert\vert =1 \) subject to the condition $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. $$ 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. @@ -341,22 +341,22 @@ All points are thus at a signed distance from the decision boundary defined by t

We seek thus the largest value \( M \) defined by $$ -\frac{1}{\vert \vert \mathbf{w}\vert\vert}y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$ or just $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq M\vert \vert \boldsymbol{w}\vert\vert \hspace{0.1cm}\forall i. $$ -If we scale the equation so that \( \vert \vert \mathbf{w}\vert\vert = 1/M \), we have to find the minimum of -\( \mathbf{w}^T\mathbf{w}=\vert \vert \mathbf{w}\vert\vert \) (the norm) subject to the condition +If we scale the equation so that \( \vert \vert \boldsymbol{w}\vert\vert = 1/M \), we have to find the minimum of +\( \boldsymbol{w}^T\boldsymbol{w}=\vert \vert \boldsymbol{w}\vert\vert \) (the norm) subject to the condition $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

-We have thus defined our margin as the invers of the norm of \( \mathbf{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. +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.











@@ -457,40 +457,40 @@ $$

Setting up the problem

In order to solve the above problem, we define the following Lagrangian function to be minimized $$ -{\cal L}(\lambda,b,\mathbf{w})=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right], +{\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], $$ where \( \lambda_i \) is a so-called Lagrange multiplier subject to the condition \( \lambda_i \geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i. +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ subject to the constraints \( \lambda_i\geq 0 \) and \( \sum_i\lambda_iy_i=0 \). We must in addition satisfy the Karush-Kuhn-Tucker (KKT) condition $$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

    -
  1. If \( \lambda_i > 0 \), then \( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -
  3. If \( y_i(\mathbf{w}^T\mathbf{x}_i+b)> 1 \), we say \( x_i \) is not on the boundary and we set \( \lambda_i=0 \).
  4. +
  5. 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.
  6. +
  7. 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 \).
-When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin \( M \). +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 \).











@@ -500,21 +500,21 @@ When \( \lambda_i > 0 \), the vectors \( \mathbf{x}_i \) are called support vect

We can rewrite $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ and its constraints in terms of a matrix-vector problem where we minimize w.r.t. \( \lambda \) the following problem $$ -\frac{1}{2} \mathbf{\lambda}^T\begin{bmatrix} y_1y_1\mathbf{x}_1^T\mathbf{x}_1 & y_1y_2\mathbf{x}_1^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_1^T\mathbf{x}_n \\ -y_2y_1\mathbf{x}_2^T\mathbf{x}_1 & y_2y_2\mathbf{x}_2^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_2^T\mathbf{x}_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 \\ +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 \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\mathbf{x}_n^T\mathbf{x}_1 & y_ny_2\mathbf{x}_n^T\mathbf{x}_2 & \dots & \dots & y_ny_n\mathbf{x}_n^T\mathbf{x}_n \\ -\end{bmatrix}\mathbf{\lambda}-\mathbb{1}\mathbf{\lambda}, +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 \\ +\end{bmatrix}\boldsymbol{\lambda}-\mathbb{1}\boldsymbol{\lambda}, $$ -subject to \( \mathbf{y}^T\mathbf{\lambda}=0 \). Here we defined the vectors \( \mathbf{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and -\( \mathbf{y}=[y_1,y_2,\dots,y_n] \). +subject to \( \boldsymbol{y}^T\boldsymbol{\lambda}=0 \). Here we defined the vectors \( \boldsymbol{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and +\( \boldsymbol{y}=[y_1,y_2,\dots,y_n] \).











@@ -525,27 +525,27 @@ subject to \( \mathbf{y}^T\mathbf{\lambda}=0 \). Here we defined the vectors \( Solving the above problem, yields the values of \( \lambda_i \). To find the coefficients of your hyperplane we need simply to compute $$ -\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. +\boldsymbol{w}=\sum_{i} \lambda_iy_i\boldsymbol{x}_i. $$ -With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \boldsymbol{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$ resulting in $$ -b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{x}_i, +b = \frac{1}{y_i}-\boldsymbol{w}^T\boldsymbol{x}_i, $$ or if we write it out in terms of the support vectors only, with \( N_s \) being their number, we have $$ -b = \frac{1}{N_s}\sum_{j\in N_s}\left(y_j-\sum_{i=1}^n\lambda_iy_i\mathbf{x}_i^T\mathbf{x}_j\right). +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). $$ With our hyperplane coefficients we can use our classifier to assign any observation by simply using $$ -y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{x}_i+b). +y_i = \mathrm{sign}(\boldsymbol{w}^T\boldsymbol{x}_i+b). $$ Below we discuss how to find the optimal values of \( \lambda_i \). Before we proceed however, we discuss now the so-called soft classifier. @@ -565,20 +565,20 @@ so-called kernel approach, is to allow a kind of slack in the sense that we allow some points to be on the wrong side of the margin.

-We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \boldsymbol{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1, $$ to $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i, $$ with the requirement \( \xi_i\geq 0 \). The total violation is now \( \sum_i\xi \). The value \( \xi_i \) in the constraint the last constraint corresponds to the amount by which the prediction -\( y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), we bound the total amount by which predictions fall on the wrong side of their margins.

@@ -593,25 +593,25 @@ misclassifications.

This has in turn the consequences that we change our optmization problem to finding the minimum of $$ -{\cal L}=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-(1-\xi_)\right]+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\gamma_i\xi_i, +{\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, $$ subject to $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, $$ with the requirement \( \xi_i\geq 0 \).

-Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \boldsymbol{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i, +\frac{\partial {\cal L}}{\partial \boldsymbol{w}} = 0 = \boldsymbol{w}-\sum_{i} \lambda_iy_i\boldsymbol{x}_i, $$ and @@ -621,13 +621,13 @@ $$ Inserting these constraints into the equation for \( {\cal L} \) we obtain the same equation as before $$ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\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, $$ but now subject to the constraints \( \lambda_i\geq 0 \), \( \sum_i\lambda_iy_i=0 \) and \( 0\leq\lambda_i \leq C \). We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads $$ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$ $$ @@ -636,7 +636,7 @@ $$ and $$ -y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. $$

diff --git a/doc/pub/svm/ipynb/ipynb-svm-src.tar.gz b/doc/pub/svm/ipynb/ipynb-svm-src.tar.gz index 915b9ae6a7b95101179a27db035d2bc7f0756ac5..c0c08712c1cde829667ea589713cbb6031f14e8d 100644 GIT binary patch literal 207 zcmb2|=3v;g{6RDW^V{?1vzQD8ju)P{J8E-q(%;J!VqYFCRCvVgVpf)%oithF?)LYq zF3h_%yW_{-n7T6tJjSbkmVC3){}e8Fw2T~mMke~$FAZMW;c#l%mXUnB7PoNA=b?>nseb}73#AI4tF zjNjq>-ux2V>~po9-#))sB>K48F!%K)?t3*o{Dym6H~Sy`ac@2YGB{BDlda@tw;O{7 G0|NjwtzxbK literal 207 zcmb2|=3scX>_IdG^V{>jT}*}oZHd?CE%Ljtq(0|5^R5C#9wYINk~w|$os(T=?%TVz zY2BQ;9cO;$*sap&T6OeGveEpsm*%|l+%!YOr_L#k>DOD?m0dgWdFzu@%dpD8X`#BS z^jBSUxboR=m-Ue)&h=iq&Ge+c7p#+yUiwfU|(V}3KQ+m_cZ=DohxtoO>kYyQtyCBFILYI{ZoB+&5xDT_z(hB*ux G3=9AwP+m>| diff --git a/doc/pub/svm/ipynb/svm.ipynb b/doc/pub/svm/ipynb/svm.ipynb index 023ab175e..346e18da1 100644 --- a/doc/pub/svm/ipynb/svm.ipynb +++ b/doc/pub/svm/ipynb/svm.ipynb @@ -79,7 +79,7 @@ "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 $\\mathbf{x} =[x1,x2]$ and $\\mathbf{w}=[w1,w2]$. \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" ] }, @@ -88,7 +88,7 @@ "metadata": {}, "source": [ "$$\n", - "\\mathbf{w}^T\\mathbf{x}+b=0.\n", + "\\boldsymbol{w}^T\\boldsymbol{x}+b=0.\n", "$$" ] }, @@ -116,8 +116,8 @@ "metadata": {}, "source": [ "If we define a \n", - "matrix $\\mathbf{X}=\\left[\\mathbf{x}_1,\\mathbf{x}_2,\\dots, \\mathbf{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 $\\mathbf{X}$," + "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}$," ] }, { @@ -125,7 +125,7 @@ "metadata": {}, "source": [ "$$\n", - "\\mathbf{x}_i = \\begin{bmatrix} x_{i1} \\\\ x_{i2} \\\\ \\dots \\\\ \\dots \\\\ x_{ip} \\end{bmatrix}.\n", + "\\boldsymbol{x}_i = \\begin{bmatrix} x_{i1} \\\\ x_{i2} \\\\ \\dots \\\\ \\dots \\\\ x_{ip} \\end{bmatrix}.\n", "$$" ] }, @@ -133,7 +133,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If the above condition is not met for a given vector $\\mathbf{x}_i$ we have" + "If the above condition is not met for a given vector $\\boldsymbol{x}_i$ we have" ] }, { @@ -150,7 +150,7 @@ "metadata": {}, "source": [ "if our output $y_i=1$.\n", - "In this case we say that $\\mathbf{x}_i$ lies on one of the sides of the hyperplane and if" + "In this case we say that $\\boldsymbol{x}_i$ lies on one of the sides of the hyperplane and if" ] }, { @@ -167,7 +167,7 @@ "metadata": {}, "source": [ "for the class of observations $y_i=-1$, \n", - "then $\\mathbf{x}_i$ lies on the other side. \n", + "then $\\boldsymbol{x}_i$ lies on the other side. \n", "\n", "Equivalently, for the two classes of observations we have" ] @@ -219,7 +219,7 @@ "metadata": {}, "source": [ "$$\n", - "f(x) = \\mathbf{w}^T\\mathbf{x}+b = 0,\n", + "f(x) = \\boldsymbol{w}^T\\boldsymbol{x}+b = 0,\n", "$$" ] }, @@ -230,9 +230,9 @@ "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 $\\mathbf{x}_i$ and $\\mathbf{x}_2$ on the line $L$ will satisfy $\\mathbf{w}^T(\\mathbf{x}_1-\\mathbf{x}_2)=0$. \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 $\\mathbf{x}$ and a point $\\mathbf{x}_0$ on the line $L$ is then" + "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" ] }, { @@ -240,7 +240,7 @@ "metadata": {}, "source": [ "$$\n", - "\\delta = \\frac{1}{\\vert\\vert \\mathbf{w}\\vert\\vert}(\\mathbf{w}^T\\mathbf{x}+b).\n", + "\\delta = \\frac{1}{\\vert\\vert \\boldsymbol{w}\\vert\\vert}(\\boldsymbol{w}^T\\boldsymbol{x}+b).\n", "$$" ] }, @@ -250,7 +250,7 @@ "source": [ "## First attempt at a minimization approach\n", "\n", - "How do we find the parameter $b$ and the vector $\\mathbf{w}$? What we could\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" ] @@ -260,7 +260,7 @@ "metadata": {}, "source": [ "$$\n", - "C(\\mathbf{w},b) = -\\sum_{i\\in M} y_i(\\mathbf{w}^T\\mathbf{x}_i+b).\n", + "C(\\boldsymbol{w},b) = -\\sum_{i\\in M} y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b).\n", "$$" ] }, @@ -268,7 +268,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We could now for example define all values $y_i =1$ as misclassified in case we have $\\mathbf{w}^T\\mathbf{x}_i+b < 0$ and the opposite if we have $y_i=-1$. Taking the derivatives gives us" + "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" ] }, { @@ -292,7 +292,7 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{\\partial C}{\\partial \\mathbf{w}} = -\\sum_{i\\in M} y_ix_i.\n", + "\\frac{\\partial C}{\\partial \\boldsymbol{w}} = -\\sum_{i\\in M} y_ix_i.\n", "$$" ] }, @@ -326,7 +326,7 @@ "metadata": {}, "source": [ "$$\n", - "\\mathbf{w} \\leftarrow \\mathbf{w} +\\eta \\frac{\\partial C}{\\partial \\mathbf{w}},\n", + "\\boldsymbol{w} \\leftarrow \\boldsymbol{w} +\\eta \\frac{\\partial C}{\\partial \\boldsymbol{w}},\n", "$$" ] }, @@ -350,8 +350,8 @@ "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 $\\mathbf{w}$ normalized to\n", - "$\\vert\\vert \\mathbf{w}\\vert\\vert =1$ subject to the condition" + "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" ] }, { @@ -359,7 +359,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, p.\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, p.\n", "$$" ] }, @@ -377,7 +377,7 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{1}{\\vert \\vert \\mathbf{w}\\vert\\vert}y_i(\\mathbf{w}^T\\mathbf{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, n,\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", "$$" ] }, @@ -393,7 +393,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b) \\geq M\\vert \\vert \\mathbf{w}\\vert\\vert \\hspace{0.1cm}\\forall i.\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq M\\vert \\vert \\boldsymbol{w}\\vert\\vert \\hspace{0.1cm}\\forall i.\n", "$$" ] }, @@ -401,8 +401,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we scale the equation so that $\\vert \\vert \\mathbf{w}\\vert\\vert = 1/M$, we have to find the minimum of \n", - "$\\mathbf{w}^T\\mathbf{w}=\\vert \\vert \\mathbf{w}\\vert\\vert$ (the norm) subject to the condition" + "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" ] }, { @@ -410,7 +410,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b) \\geq 1 \\hspace{0.1cm}\\forall i.\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) \\geq 1 \\hspace{0.1cm}\\forall i.\n", "$$" ] }, @@ -418,7 +418,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We have thus defined our margin as the invers of the norm of $\\mathbf{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", + "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", @@ -644,7 +644,7 @@ "metadata": {}, "source": [ "$$\n", - "{\\cal L}(\\lambda,b,\\mathbf{w})=\\frac{1}{2}\\mathbf{w}^T\\mathbf{w}-\\sum_{i=1}^n\\lambda_i\\left[y_i(\\mathbf{w}^T\\mathbf{x}_i+b)-1\\right],\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", "$$" ] }, @@ -654,7 +654,7 @@ "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 $\\mathbf{w}$ we obtain" + "Taking the derivatives with respect to $b$ and $\\boldsymbol{w}$ we obtain" ] }, { @@ -678,7 +678,7 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{\\partial {\\cal L}}{\\partial \\mathbf{w}} = 0 = \\mathbf{w}-\\sum_{i} \\lambda_iy_i\\mathbf{x}_i.\n", + "\\frac{\\partial {\\cal L}}{\\partial \\boldsymbol{w}} = 0 = \\boldsymbol{w}-\\sum_{i} \\lambda_iy_i\\boldsymbol{x}_i.\n", "$$" ] }, @@ -694,7 +694,7 @@ "metadata": {}, "source": [ "$$\n", - "{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\mathbf{x}_i^T\\mathbf{x}_j,\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", "$$" ] }, @@ -711,7 +711,7 @@ "metadata": {}, "source": [ "$$\n", - "\\lambda_i\\left[y_i(\\mathbf{w}^T\\mathbf{x}_i+b) -1\\right] \\hspace{0.1cm}\\forall i.\n", + "\\lambda_i\\left[y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) -1\\right] \\hspace{0.1cm}\\forall i.\n", "$$" ] }, @@ -719,11 +719,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "1. If $\\lambda_i > 0$, then $y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1$ and we say that $x_i$ is on the boundary.\n", + "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(\\mathbf{w}^T\\mathbf{x}_i+b)> 1$, we say $x_i$ is not on the boundary and we set $\\lambda_i=0$. \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 $\\mathbf{x}_i$ are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin $M$. \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", @@ -735,7 +735,7 @@ "metadata": {}, "source": [ "$$\n", - "{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\mathbf{x}_i^T\\mathbf{x}_j,\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", "$$" ] }, @@ -751,12 +751,12 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{1}{2} \\mathbf{\\lambda}^T\\begin{bmatrix} y_1y_1\\mathbf{x}_1^T\\mathbf{x}_1 & y_1y_2\\mathbf{x}_1^T\\mathbf{x}_2 & \\dots & \\dots & y_1y_n\\mathbf{x}_1^T\\mathbf{x}_n \\\\\n", - "y_2y_1\\mathbf{x}_2^T\\mathbf{x}_1 & y_2y_2\\mathbf{x}_2^T\\mathbf{x}_2 & \\dots & \\dots & y_1y_n\\mathbf{x}_2^T\\mathbf{x}_n \\\\\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\\mathbf{x}_n^T\\mathbf{x}_1 & y_ny_2\\mathbf{x}_n^T\\mathbf{x}_2 & \\dots & \\dots & y_ny_n\\mathbf{x}_n^T\\mathbf{x}_n \\\\\n", - "\\end{bmatrix}\\mathbf{\\lambda}-\\mathbb{1}\\mathbf{\\lambda},\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", "$$" ] }, @@ -764,8 +764,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "subject to $\\mathbf{y}^T\\mathbf{\\lambda}=0$. Here we defined the vectors $\\mathbf{\\lambda} =[\\lambda_1,\\lambda_2,\\dots,\\lambda_n]$ and \n", - "$\\mathbf{y}=[y_1,y_2,\\dots,y_n]$. \n", + "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", @@ -779,7 +779,7 @@ "metadata": {}, "source": [ "$$\n", - "\\mathbf{w}=\\sum_{i} \\lambda_iy_i\\mathbf{x}_i.\n", + "\\boldsymbol{w}=\\sum_{i} \\lambda_iy_i\\boldsymbol{x}_i.\n", "$$" ] }, @@ -787,7 +787,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With our vector $\\mathbf{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via" + "With our vector $\\boldsymbol{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via" ] }, { @@ -795,7 +795,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1,\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1,\n", "$$" ] }, @@ -811,7 +811,7 @@ "metadata": {}, "source": [ "$$\n", - "b = \\frac{1}{y_i}-\\mathbf{w}^T\\mathbf{x}_i,\n", + "b = \\frac{1}{y_i}-\\boldsymbol{w}^T\\boldsymbol{x}_i,\n", "$$" ] }, @@ -827,7 +827,7 @@ "metadata": {}, "source": [ "$$\n", - "b = \\frac{1}{N_s}\\sum_{j\\in N_s}\\left(y_j-\\sum_{i=1}^n\\lambda_iy_i\\mathbf{x}_i^T\\mathbf{x}_j\\right).\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", "$$" ] }, @@ -843,7 +843,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i = \\mathrm{sign}(\\mathbf{w}^T\\mathbf{x}_i+b).\n", + "y_i = \\mathrm{sign}(\\boldsymbol{w}^T\\boldsymbol{x}_i+b).\n", "$$" ] }, @@ -862,7 +862,7 @@ "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 $\\mathbf{\\xi} =[\\xi_1,x_2,\\dots,x_n]$ and \n", + "We introduce thus the so-called **slack** variables $\\boldsymbol{\\xi} =[\\xi_1,x_2,\\dots,x_n]$ and \n", "modify our previous equation" ] }, @@ -871,7 +871,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1,\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1,\n", "$$" ] }, @@ -887,7 +887,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1-\\xi_i,\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1-\\xi_i,\n", "$$" ] }, @@ -897,7 +897,7 @@ "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(\\mathbf{w}^T\\mathbf{x}_i+b)=1$ is on the wrong side of its margin. Hence by bounding the sum $\\sum_i \\xi_i$,\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", @@ -914,7 +914,7 @@ "metadata": {}, "source": [ "$$\n", - "{\\cal L}=\\frac{1}{2}\\mathbf{w}^T\\mathbf{w}-\\sum_{i=1}^n\\lambda_i\\left[y_i(\\mathbf{w}^T\\mathbf{x}_i+b)-(1-\\xi_)\\right]+C\\sum_{i=1}^n\\xi_i-\\sum_{i=1}^n\\gamma_i\\xi_i,\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", "$$" ] }, @@ -930,7 +930,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1-\\xi_i \\hspace{0.1cm}\\forall i,\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b)=1-\\xi_i \\hspace{0.1cm}\\forall i,\n", "$$" ] }, @@ -940,7 +940,7 @@ "source": [ "with the requirement $\\xi_i\\geq 0$.\n", "\n", - "Taking the derivatives with respect to $b$ and $\\mathbf{w}$ we obtain" + "Taking the derivatives with respect to $b$ and $\\boldsymbol{w}$ we obtain" ] }, { @@ -964,7 +964,7 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{\\partial {\\cal L}}{\\partial \\mathbf{w}} = 0 = \\mathbf{w}-\\sum_{i} \\lambda_iy_i\\mathbf{x}_i,\n", + "\\frac{\\partial {\\cal L}}{\\partial \\boldsymbol{w}} = 0 = \\boldsymbol{w}-\\sum_{i} \\lambda_iy_i\\boldsymbol{x}_i,\n", "$$" ] }, @@ -996,7 +996,7 @@ "metadata": {}, "source": [ "$$\n", - "{\\cal L}=\\sum_i\\lambda_i-\\frac{1}{2}\\sum_{ij}^n\\lambda_i\\lambda_jy_iy_j\\mathbf{x}_i^T\\mathbf{x}_j,\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", "$$" ] }, @@ -1053,7 +1053,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\mathbf{w}^T\\mathbf{x}_i+b) -(1-\\xi_) \\geq 0 \\hspace{0.1cm}\\forall i.\n", + "y_i(\\boldsymbol{w}^T\\boldsymbol{x}_i+b) -(1-\\xi_) \\geq 0 \\hspace{0.1cm}\\forall i.\n", "$$" ] }, diff --git a/doc/pub/svm/pdf/svm-minted.pdf b/doc/pub/svm/pdf/svm-minted.pdf index 31f7e11b319f57052fe4868013497021f1ce1c6b..2785509193b406d66694d07a2d40bf1c01ea152a 100644 GIT binary patch delta 59511 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, \] !et if our output $y_i=1$. -In this case we say that $\mathbf{x}_i$ lies on one of the sides of the hyperplane and if +In this case we say that $\bm{x}_i$ lies on one of the sides of the hyperplane and if !bt \[ b+w_1x_{i1}+w_2x_{i}2+\dots +w_px_{ip} < 0, \] !et for the class of observations $y_i=-1$, -then $\mathbf{x}_i$ lies on the other side. +then $\bm{x}_i$ lies on the other side. Equivalently, for the two classes of observations we have !bt @@ -137,35 +137,35 @@ for our data sample. Let us define the function !bt \[ -f(x) = \mathbf{w}^T\mathbf{x}+b = 0, +f(x) = \bm{w}^T\bm{x}+b = 0, \] !et as the function that determines the line $L$ that separates two classes (our two features), see the figure here. -Any point defined by $\mathbf{x}_i$ and $\mathbf{x}_2$ on the line $L$ will satisfy $\mathbf{w}^T(\mathbf{x}_1-\mathbf{x}_2)=0$. +Any point defined by $\bm{x}_i$ and $\bm{x}_2$ on the line $L$ will satisfy $\bm{w}^T(\bm{x}_1-\bm{x}_2)=0$. -The signed distance $\delta$ from any point defined by a vector $\mathbf{x}$ and a point $\mathbf{x}_0$ on the line $L$ is then +The signed distance $\delta$ from any point defined by a vector $\bm{x}$ and a point $\bm{x}_0$ on the line $L$ is then !bt \[ -\delta = \frac{1}{\vert\vert \mathbf{w}\vert\vert}(\mathbf{w}^T\mathbf{x}+b). +\delta = \frac{1}{\vert\vert \bm{w}\vert\vert}(\bm{w}^T\bm{x}+b). \] !et !split ===== First attempt at a minimization approach ===== -How do we find the parameter $b$ and the vector $\mathbf{w}$? What we could +How do we find the parameter $b$ and the vector $\bm{w}$? What we could do is to define a cost function which now contains the set of all misclassified points $M$ and attempt to minimize this function !bt \[ -C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). +C(\bm{w},b) = -\sum_{i\in M} y_i(\bm{w}^T\bm{x}_i+b). \] !et -We could now for example define all values $y_i =1$ as misclassified in case we have $\mathbf{w}^T\mathbf{x}_i+b < 0$ and the opposite if we have $y_i=-1$. Taking the derivatives gives us +We could now for example define all values $y_i =1$ as misclassified in case we have $\bm{w}^T\bm{x}_i+b < 0$ and the opposite if we have $y_i=-1$. Taking the derivatives gives us !bt \[ \frac{\partial C}{\partial b} = -\sum_{i\in M} y_i, @@ -174,7 +174,7 @@ We could now for example define all values $y_i =1$ as misclassified in case we and !bt \[ -\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \bm{w}} = -\sum_{i\in M} y_ix_i. \] !et @@ -190,7 +190,7 @@ b \leftarrow b +\eta \frac{\partial C}{\partial b}, and !bt \[ -\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{w}}, +\bm{w} \leftarrow \bm{w} +\eta \frac{\partial C}{\partial \bm{w}}, \] !et where $\eta$ is our by now well-known learning rate. @@ -210,12 +210,12 @@ at all. A better approach is rather to try to define a large margin between the two classes (if they are well separated from the beginning). -Thus, we wish to find a margin $M$ with $\mathbf{w}$ normalized to -$\vert\vert \mathbf{w}\vert\vert =1$ subject to the condition +Thus, we wish to find a margin $M$ with $\bm{w}$ normalized to +$\vert\vert \bm{w}\vert\vert =1$ subject to the condition !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\bm{w}^T\bm{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. \] !et 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. @@ -223,24 +223,24 @@ All points are thus at a signed distance from the decision boundary defined by t We seek thus the largest value $M$ defined by !bt \[ -\frac{1}{\vert \vert \mathbf{w}\vert\vert}y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, n, +\frac{1}{\vert \vert \bm{w}\vert\vert}y_i(\bm{w}^T\bm{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, n, \] !et or just !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\bm{w}^T\bm{x}_i+b) \geq M\vert \vert \bm{w}\vert\vert \hspace{0.1cm}\forall i. \] !et -If we scale the equation so that $\vert \vert \mathbf{w}\vert\vert = 1/M$, we have to find the minimum of -$\mathbf{w}^T\mathbf{w}=\vert \vert \mathbf{w}\vert\vert$ (the norm) subject to the condition +If we scale the equation so that $\vert \vert \bm{w}\vert\vert = 1/M$, we have to find the minimum of +$\bm{w}^T\bm{w}=\vert \vert \bm{w}\vert\vert$ (the norm) subject to the condition !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\bm{w}^T\bm{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. \] !et -We have thus defined our margin as the invers of the norm of $\mathbf{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. +We have thus defined our margin as the invers of the norm of $\bm{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. !split ===== A quick reminder on Lagrangian multipliers ===== @@ -346,12 +346,12 @@ If we have a set of constraints $\phi_k$ we have the equations In order to solve the above problem, we define the following Lagrangian function to be minimized !bt \[ -{\cal L}(\lambda,b,\mathbf{w})=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right], +{\cal L}(\lambda,b,\bm{w})=\frac{1}{2}\bm{w}^T\bm{w}-\sum_{i=1}^n\lambda_i\left[y_i(\bm{w}^T\bm{x}_i+b)-1\right], \] !et where $\lambda_i$ is a so-called Lagrange multiplier subject to the condition $\lambda_i \geq 0$. -Taking the derivatives with respect to $b$ and $\mathbf{w}$ we obtain +Taking the derivatives with respect to $b$ and $\bm{w}$ we obtain !bt \[ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, @@ -360,25 +360,25 @@ Taking the derivatives with respect to $b$ and $\mathbf{w}$ we obtain and !bt \[ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i. +\frac{\partial {\cal L}}{\partial \bm{w}} = 0 = \bm{w}-\sum_{i} \lambda_iy_i\bm{x}_i. \] !et Inserting these constraints into the equation for ${\cal L}$ we obtain !bt \[ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\bm{x}_i^T\bm{x}_j, \] !et subject to the constraints $\lambda_i\geq 0$ and $\sum_i\lambda_iy_i=0$. We must in addition satisfy the "Karush-Kuhn-Tucker":"https://en.wikipedia.org/wiki/Karush%E2%80%93Kuhn%E2%80%93Tucker_conditions" (KKT) condition !bt \[ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\bm{w}^T\bm{x}_i+b) -1\right] \hspace{0.1cm}\forall i. \] !et -o If $\lambda_i > 0$, then $y_i(\mathbf{w}^T\mathbf{x}_i+b)=1$ and we say that $x_i$ is on the boundary. -o If $y_i(\mathbf{w}^T\mathbf{x}_i+b)> 1$, we say $x_i$ is not on the boundary and we set $\lambda_i=0$. -When $\lambda_i > 0$, the vectors $\mathbf{x}_i$ are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin $M$. +o If $\lambda_i > 0$, then $y_i(\bm{w}^T\bm{x}_i+b)=1$ and we say that $x_i$ is on the boundary. +o If $y_i(\bm{w}^T\bm{x}_i+b)> 1$, we say $x_i$ is not on the boundary and we set $\lambda_i=0$. +When $\lambda_i > 0$, the vectors $\bm{x}_i$ are called support vectors. They are the vectors closest to the line (or hyperplane) and define the margin $M$. !split ===== The problem to solve ===== @@ -386,22 +386,22 @@ When $\lambda_i > 0$, the vectors $\mathbf{x}_i$ are called support vectors. The We can rewrite !bt \[ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\bm{x}_i^T\bm{x}_j, \] !et and its constraints in terms of a matrix-vector problem where we minimize w.r.t. $\lambda$ the following problem !bt \[ -\frac{1}{2} \mathbf{\lambda}^T\begin{bmatrix} y_1y_1\mathbf{x}_1^T\mathbf{x}_1 & y_1y_2\mathbf{x}_1^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_1^T\mathbf{x}_n \\ -y_2y_1\mathbf{x}_2^T\mathbf{x}_1 & y_2y_2\mathbf{x}_2^T\mathbf{x}_2 & \dots & \dots & y_1y_n\mathbf{x}_2^T\mathbf{x}_n \\ +\frac{1}{2} \bm{\lambda}^T\begin{bmatrix} y_1y_1\bm{x}_1^T\bm{x}_1 & y_1y_2\bm{x}_1^T\bm{x}_2 & \dots & \dots & y_1y_n\bm{x}_1^T\bm{x}_n \\ +y_2y_1\bm{x}_2^T\bm{x}_1 & y_2y_2\bm{x}_2^T\bm{x}_2 & \dots & \dots & y_1y_n\bm{x}_2^T\bm{x}_n \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\mathbf{x}_n^T\mathbf{x}_1 & y_ny_2\mathbf{x}_n^T\mathbf{x}_2 & \dots & \dots & y_ny_n\mathbf{x}_n^T\mathbf{x}_n \\ -\end{bmatrix}\mathbf{\lambda}-\mathbb{1}\mathbf{\lambda}, +y_ny_1\bm{x}_n^T\bm{x}_1 & y_ny_2\bm{x}_n^T\bm{x}_2 & \dots & \dots & y_ny_n\bm{x}_n^T\bm{x}_n \\ +\end{bmatrix}\bm{\lambda}-\mathbb{1}\bm{\lambda}, \] !et -subject to $\mathbf{y}^T\mathbf{\lambda}=0$. Here we defined the vectors $\mathbf{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n]$ and -$\mathbf{y}=[y_1,y_2,\dots,y_n]$. +subject to $\bm{y}^T\bm{\lambda}=0$. Here we defined the vectors $\bm{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n]$ and +$\bm{y}=[y_1,y_2,\dots,y_n]$. !split @@ -411,31 +411,31 @@ Solving the above problem, yields the values of $\lambda_i$. To find the coefficients of your hyperplane we need simply to compute !bt \[ -\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. +\bm{w}=\sum_{i} \lambda_iy_i\bm{x}_i. \] !et -With our vector $\mathbf{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via +With our vector $\bm{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\bm{w}^T\bm{x}_i+b)=1, \] !et resulting in !bt \[ -b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{x}_i, +b = \frac{1}{y_i}-\bm{w}^T\bm{x}_i, \] !et or if we write it out in terms of the support vectors only, with $N_s$ being their number, we have !bt \[ -b = \frac{1}{N_s}\sum_{j\in N_s}\left(y_j-\sum_{i=1}^n\lambda_iy_i\mathbf{x}_i^T\mathbf{x}_j\right). +b = \frac{1}{N_s}\sum_{j\in N_s}\left(y_j-\sum_{i=1}^n\lambda_iy_i\bm{x}_i^T\bm{x}_j\right). \] !et With our hyperplane coefficients we can use our classifier to assign any observation by simply using !bt \[ -y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{x}_i+b). +y_i = \mathrm{sign}(\bm{w}^T\bm{x}_i+b). \] !et Below we discuss how to find the optimal values of $\lambda_i$. Before we proceed however, we discuss now the so-called soft classifier. @@ -450,22 +450,22 @@ figure here. One way to deal with this problem before we define the so-called _kernel approach_, is to allow a kind of slack in the sense that we allow some points to be on the wrong side of the margin. -We introduce thus the so-called _slack_ variables $\mathbf{\xi} =[\xi_1,x_2,\dots,x_n]$ and +We introduce thus the so-called _slack_ variables $\bm{\xi} =[\xi_1,x_2,\dots,x_n]$ and modify our previous equation !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, +y_i(\bm{w}^T\bm{x}_i+b)=1, \] !et to !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i, +y_i(\bm{w}^T\bm{x}_i+b)=1-\xi_i, \] !et with the requirement $\xi_i\geq 0$. The total violation is now $\sum_i\xi$. The value $\xi_i$ in the constraint the last constraint corresponds to the amount by which the prediction -$y_i(\mathbf{w}^T\mathbf{x}_i+b)=1$ is on the wrong side of its margin. Hence by bounding the sum $\sum_i \xi_i$, +$y_i(\bm{w}^T\bm{x}_i+b)=1$ is on the wrong side of its margin. Hence by bounding the sum $\sum_i \xi_i$, we bound the total amount by which predictions fall on the wrong side of their margins. Misclassifications occur when $\xi_i > 1$. Thus bounding the total sum by some value $C$ bounds in turn the total number of @@ -478,18 +478,18 @@ misclassifications. This has in turn the consequences that we change our optmization problem to finding the minimum of !bt \[ -{\cal L}=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i=1}^n\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-(1-\xi_)\right]+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\gamma_i\xi_i, +{\cal L}=\frac{1}{2}\bm{w}^T\bm{w}-\sum_{i=1}^n\lambda_i\left[y_i(\bm{w}^T\bm{x}_i+b)-(1-\xi_)\right]+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\gamma_i\xi_i, \] !et subject to !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\bm{w}^T\bm{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, \] !et with the requirement $\xi_i\geq 0$. -Taking the derivatives with respect to $b$ and $\mathbf{w}$ we obtain +Taking the derivatives with respect to $b$ and $\bm{w}$ we obtain !bt \[ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, @@ -498,7 +498,7 @@ Taking the derivatives with respect to $b$ and $\mathbf{w}$ we obtain and !bt \[ -\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{x}_i, +\frac{\partial {\cal L}}{\partial \bm{w}} = 0 = \bm{w}-\sum_{i} \lambda_iy_i\bm{x}_i, \] !et and @@ -510,14 +510,14 @@ and Inserting these constraints into the equation for ${\cal L}$ we obtain the same equation as before !bt \[ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\mathbf{x}_i^T\mathbf{x}_j, +{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\bm{x}_i^T\bm{x}_j, \] !et but now subject to the constraints $\lambda_i\geq 0$, $\sum_i\lambda_iy_i=0$ and $0\leq\lambda_i \leq C$. We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads !bt \[ -\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\bm{w}^T\bm{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, \] !et !bt @@ -528,7 +528,7 @@ We must in addition satisfy the Karush-Kuhn-Tucker condition which now reads and !bt \[ -y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\bm{w}^T\bm{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. \] !et