From eaba63cadf4b8995c91e3d49bda1ea51285a14b6 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Mon, 5 Nov 2018 21:24:31 +0100 Subject: [PATCH] kernel in --- 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 265104 -> 235739 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 c7aaa035e..24e0f0043 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 \( \boldmath{x} =[x1,x2] \) and \( \boldmath{w}=[w1,w2] \). +In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). We can then rewrite the above equation as $$ -\boldmath{w}^T\boldmath{x}+b=0. +\mathbf{w}^T\mathbf{x}+b=0. $$

diff --git a/doc/pub/svm/html/._svm-bs004.html b/doc/pub/svm/html/._svm-bs004.html index 5e5720ac8..e75fee4e0 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 \( \boldmath{X}=\left[\boldmath{x}_1,\boldmath{x}_2,\dots, \boldmath{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 \( \boldmath{X} \), +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} \), $$ -\boldmath{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\mathbf{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 \( \boldmath{x}_i \) we have +If the above condition is not met for a given vector \( \mathbf{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 \( \boldmath{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \mathbf{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 \( \boldmath{x}_i \) lies on the other side. +then \( \mathbf{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 032060832..62479f519 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) = \boldmath{w}^T\boldmath{x}+b = 0, +f(x) = \mathbf{w}^T\mathbf{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 \( \boldmath{x}_i \) and \( \boldmath{x}_2 \) on the line \( L \) will satisfy \( \boldmath{w}^T(\boldmath{x}_1-\boldmath{x}_2)=0 \). +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 \).

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

diff --git a/doc/pub/svm/html/._svm-bs007.html b/doc/pub/svm/html/._svm-bs007.html index 4b594b59f..6186224d0 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 \( \boldmath{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \mathbf{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(\boldmath{w},b) = -\sum_{i\in M} y_i(\boldmath{w}^T\boldmath{x}_i+b). +C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). $$

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \boldmath{w}^T\boldmath{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 \( \mathbf{w}^T\mathbf{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 \boldmath{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \mathbf{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 9890b9a82..e06135a53 100644 --- a/doc/pub/svm/html/._svm-bs008.html +++ b/doc/pub/svm/html/._svm-bs008.html @@ -139,7 +139,7 @@ $$ and $$ -\boldmath{w} \leftarrow \boldmath{w} +\eta \frac{\partial C}{\partial \boldmath{w}}, +\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{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 0e3ba1f0d..a2fb4b4c1 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 \( \boldmath{w} \) normalized to -\( \vert\vert \boldmath{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to +\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\mathbf{w}^T\mathbf{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 \boldmath{w}\vert\vert}y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$ or just $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M\vert \vert \boldmath{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. $$ -If we scale the equation so that \( \vert \vert \boldmath{w}\vert\vert = 1/M \), we have to find the minimum of -\( \boldmath{w}^T\boldmath{w}=\vert \vert \boldmath{w}\vert\vert \) (the norm) subject to the condition +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 $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

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

diff --git a/doc/pub/svm/html/._svm-bs012.html b/doc/pub/svm/html/._svm-bs012.html index 458c54650..be48612ae 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,\boldmath{w})=\frac{1}{2}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{x}_i+b)-1\right], +{\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], $$ 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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i. +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ 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(\boldmath{w}^T\boldmath{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

    -
  1. If \( \lambda_i > 0 \), then \( y_i(\boldmath{w}^T\boldmath{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -
  3. If \( y_i(\boldmath{w}^T\boldmath{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(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  6. +
  7. 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 \( \boldmath{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 \( \mathbf{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 28d770194..3a0c677f3 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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ and its constraints in terms of a matrix-vector problem where we minimize w.r.t. \( \lambda \) the following problem $$ -\frac{1}{2} \boldmath{\lambda}^T\begin{bmatrix} y_1y_1\boldmath{x}_1^T\boldmath{x}_1 & y_1y_2\boldmath{x}_1^T\boldmath{x}_2 & \dots & \dots & y_1y_n\boldmath{x}_1^T\boldmath{x}_n \\ -y_2y_1\boldmath{x}_2^T\boldmath{x}_1 & y_2y_2\boldmath{x}_2^T\boldmath{x}_2 & \dots & \dots & y_1y_n\boldmath{x}_2^T\boldmath{x}_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 \\ +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 \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\boldmath{x}_n^T\boldmath{x}_1 & y_ny_2\boldmath{x}_n^T\boldmath{x}_2 & \dots & \dots & y_ny_n\boldmath{x}_n^T\boldmath{x}_n \\ -\end{bmatrix}\boldmath{\lambda}-\mathbb{1}\boldmath{\lambda}, +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}, $$ -subject to \( \boldmath{y}^T\boldmath{\lambda}=0 \). Here we defined the vectors \( \boldmath{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and -\( \boldmath{y}=[y_1,y_2,\dots,y_n] \). +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] \).

diff --git a/doc/pub/svm/html/._svm-bs014.html b/doc/pub/svm/html/._svm-bs014.html index 904f103f0..5a6d01064 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 $$ -\boldmath{w}=\sum_{i} \lambda_iy_i\boldmath{x}_i. +\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. $$ -With our vector \( \boldmath{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, $$ resulting in $$ -b = \frac{1}{y_i}-\boldmath{w}^T\boldmath{x}_i, +b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{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\boldmath{x}_i^T\boldmath{x}_j\right). +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). $$ With our hyperplane coefficients we can use our classifier to assign any observation by simply using $$ -y_i = \mathrm{sign}(\boldmath{w}^T\boldmath{x}_i+b). +y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{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 bba5a8f03..af6bc9a7a 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 \( \boldmath{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, $$ to $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i, +y_i(\mathbf{w}^T\mathbf{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(\boldmath{w}^T\boldmath{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), 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 98ec07175..35c382c58 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}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{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}\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, $$ subject to $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\mathbf{w}^T\mathbf{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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i, +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ 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(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$ $$ @@ -177,7 +177,7 @@ $$ and $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{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 534d3378d..1a58fcbc6 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 \( \boldmath{x} =[x1,x2] \) and \( \boldmath{w}=[w1,w2] \). +In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). We can then rewrite the above equation as

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

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

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

 
$$ -\boldmath{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\mathbf{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 \( \boldmath{x}_i \) we have +If the above condition is not met for a given vector \( \mathbf{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 \( \boldmath{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \mathbf{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 \( \boldmath{x}_i \) lies on the other side. +then \( \mathbf{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) = \boldmath{w}^T\boldmath{x}+b = 0, +f(x) = \mathbf{w}^T\mathbf{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 \( \boldmath{x}_i \) and \( \boldmath{x}_2 \) on the line \( L \) will satisfy \( \boldmath{w}^T(\boldmath{x}_1-\boldmath{x}_2)=0 \). +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 \).

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

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

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

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \boldmath{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \mathbf{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(\boldmath{w},b) = -\sum_{i\in M} y_i(\boldmath{w}^T\boldmath{x}_i+b). +C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). $$

 

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \boldmath{w}^T\boldmath{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 \( \mathbf{w}^T\mathbf{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 \boldmath{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. $$

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

 
$$ -\boldmath{w} \leftarrow \boldmath{w} +\eta \frac{\partial C}{\partial \boldmath{w}}, +\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{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 \( \boldmath{w} \) normalized to -\( \vert\vert \boldmath{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to +\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition

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

 
or just

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

 
-If we scale the equation so that \( \vert \vert \boldmath{w}\vert\vert = 1/M \), we have to find the minimum of -\( \boldmath{w}^T\boldmath{w}=\vert \vert \boldmath{w}\vert\vert \) (the norm) subject to the condition +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

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

 

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

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

 
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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{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 \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i. +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$

 
@@ -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(\boldmath{w}^T\boldmath{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

 

    -

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

  3. If \( y_i(\boldmath{w}^T\boldmath{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(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  6. +

  7. 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 \( \boldmath{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 \( \mathbf{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 \( \boldmath{x}_i \) are called support ve We can rewrite

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

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

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

 
-subject to \( \boldmath{y}^T\boldmath{\lambda}=0 \). Here we defined the vectors \( \boldmath{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n] \) and -\( \boldmath{y}=[y_1,y_2,\dots,y_n] \). +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] \). @@ -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

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

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

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

 
resulting in

 
$$ -b = \frac{1}{y_i}-\boldmath{w}^T\boldmath{x}_i, +b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{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\boldmath{x}_i^T\boldmath{x}_j\right). +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). $$

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

 
$$ -y_i = \mathrm{sign}(\boldmath{w}^T\boldmath{x}_i+b). +y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{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 \( \boldmath{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation

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

 
to

 
$$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i, +y_i(\mathbf{w}^T\mathbf{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(\boldmath{w}^T\boldmath{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), 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}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{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}\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, $$

 
subject to

 
$$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\mathbf{w}^T\mathbf{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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{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 \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i, +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$

 
@@ -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(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$

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

 
$$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{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 6a5149047..b3cc9ba1f 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 \( \boldmath{x} =[x1,x2] \) and \( \boldmath{w}=[w1,w2] \). +In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). We can then rewrite the above equation as $$ -\boldmath{w}^T\boldmath{x}+b=0. +\mathbf{w}^T\mathbf{x}+b=0. $$

@@ -183,25 +183,25 @@ b+wx_1+w_2x_2+\dots +w_px_p=0. $$ If we define a -matrix \( \boldmath{X}=\left[\boldmath{x}_1,\boldmath{x}_2,\dots, \boldmath{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 \( \boldmath{X} \), +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} \), $$ -\boldmath{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\mathbf{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 \( \boldmath{x}_i \) we have +If the above condition is not met for a given vector \( \mathbf{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 \( \boldmath{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \mathbf{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 \( \boldmath{x}_i \) lies on the other side. +then \( \mathbf{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) = \boldmath{w}^T\boldmath{x}+b = 0, +f(x) = \mathbf{w}^T\mathbf{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 \( \boldmath{x}_i \) and \( \boldmath{x}_2 \) on the line \( L \) will satisfy \( \boldmath{w}^T(\boldmath{x}_1-\boldmath{x}_2)=0 \). +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 \).

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

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

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \boldmath{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \mathbf{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(\boldmath{w},b) = -\sum_{i\in M} y_i(\boldmath{w}^T\boldmath{x}_i+b). +C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). $$

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \boldmath{w}^T\boldmath{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 \( \mathbf{w}^T\mathbf{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 \boldmath{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. $$

@@ -299,7 +299,7 @@ $$ and $$ -\boldmath{w} \leftarrow \boldmath{w} +\eta \frac{\partial C}{\partial \boldmath{w}}, +\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{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 \( \boldmath{w} \) normalized to -\( \vert\vert \boldmath{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to +\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\mathbf{w}^T\mathbf{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 \boldmath{w}\vert\vert}y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$ or just $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M\vert \vert \boldmath{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. $$ -If we scale the equation so that \( \vert \vert \boldmath{w}\vert\vert = 1/M \), we have to find the minimum of -\( \boldmath{w}^T\boldmath{w}=\vert \vert \boldmath{w}\vert\vert \) (the norm) subject to the condition +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 $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

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











@@ -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,\boldmath{w})=\frac{1}{2}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{x}_i+b)-1\right], +{\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], $$ 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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i. +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ 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(\boldmath{w}^T\boldmath{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

    -
  1. If \( \lambda_i > 0 \), then \( y_i(\boldmath{w}^T\boldmath{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -
  3. If \( y_i(\boldmath{w}^T\boldmath{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(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  6. +
  7. 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 \( \boldmath{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 \( \mathbf{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 \( \boldmath{x}_i \) are called support ve

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











@@ -520,27 +520,27 @@ subject to \( \boldmath{y}^T\boldmath{\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 $$ -\boldmath{w}=\sum_{i} \lambda_iy_i\boldmath{x}_i. +\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. $$ -With our vector \( \boldmath{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, $$ resulting in $$ -b = \frac{1}{y_i}-\boldmath{w}^T\boldmath{x}_i, +b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{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\boldmath{x}_i^T\boldmath{x}_j\right). +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). $$ With our hyperplane coefficients we can use our classifier to assign any observation by simply using $$ -y_i = \mathrm{sign}(\boldmath{w}^T\boldmath{x}_i+b). +y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{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 \( \boldmath{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, $$ to $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i, +y_i(\mathbf{w}^T\mathbf{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(\boldmath{w}^T\boldmath{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), 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}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{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}\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, $$ subject to $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\mathbf{w}^T\mathbf{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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i, +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ 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(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$ $$ @@ -631,7 +631,7 @@ $$ and $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{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 00fdbf97b..c2e61d1e2 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 \( \boldmath{x} =[x1,x2] \) and \( \boldmath{w}=[w1,w2] \). +In two dimensions we define the vectors \( \mathbf{x} =[x1,x2] \) and \( \mathbf{w}=[w1,w2] \). We can then rewrite the above equation as $$ -\boldmath{w}^T\boldmath{x}+b=0. +\mathbf{w}^T\mathbf{x}+b=0. $$

@@ -188,25 +188,25 @@ b+wx_1+w_2x_2+\dots +w_px_p=0. $$ If we define a -matrix \( \boldmath{X}=\left[\boldmath{x}_1,\boldmath{x}_2,\dots, \boldmath{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 \( \boldmath{X} \), +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} \), $$ -\boldmath{x}_i = \begin{bmatrix} x_{i1} \\ x_{i2} \\ \dots \\ \dots \\ x_{ip} \end{bmatrix}. +\mathbf{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 \( \boldmath{x}_i \) we have +If the above condition is not met for a given vector \( \mathbf{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 \( \boldmath{x}_i \) lies on one of the sides of the hyperplane and if +In this case we say that \( \mathbf{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 \( \boldmath{x}_i \) lies on the other side. +then \( \mathbf{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) = \boldmath{w}^T\boldmath{x}+b = 0, +f(x) = \mathbf{w}^T\mathbf{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 \( \boldmath{x}_i \) and \( \boldmath{x}_2 \) on the line \( L \) will satisfy \( \boldmath{w}^T(\boldmath{x}_1-\boldmath{x}_2)=0 \). +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 \).

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

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

First attempt at a minimization approach

-How do we find the parameter \( b \) and the vector \( \boldmath{w} \)? What we could +How do we find the parameter \( b \) and the vector \( \mathbf{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(\boldmath{w},b) = -\sum_{i\in M} y_i(\boldmath{w}^T\boldmath{x}_i+b). +C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). $$

-We could now for example define all values \( y_i =1 \) as misclassified in case we have \( \boldmath{w}^T\boldmath{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 \( \mathbf{w}^T\mathbf{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 \boldmath{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. $$

@@ -304,7 +304,7 @@ $$ and $$ -\boldmath{w} \leftarrow \boldmath{w} +\eta \frac{\partial C}{\partial \boldmath{w}}, +\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{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 \( \boldmath{w} \) normalized to -\( \vert\vert \boldmath{w}\vert\vert =1 \) subject to the condition +Thus, we wish to find a margin \( M \) with \( \mathbf{w} \) normalized to +\( \vert\vert \mathbf{w}\vert\vert =1 \) subject to the condition $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\mathbf{w}^T\mathbf{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 \boldmath{w}\vert\vert}y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, $$ or just $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M\vert \vert \boldmath{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. $$ -If we scale the equation so that \( \vert \vert \boldmath{w}\vert\vert = 1/M \), we have to find the minimum of -\( \boldmath{w}^T\boldmath{w}=\vert \vert \boldmath{w}\vert\vert \) (the norm) subject to the condition +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 $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. $$

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











@@ -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,\boldmath{w})=\frac{1}{2}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{x}_i+b)-1\right], +{\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], $$ 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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i. +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ 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(\boldmath{w}^T\boldmath{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. $$

    -
  1. If \( \lambda_i > 0 \), then \( y_i(\boldmath{w}^T\boldmath{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  2. -
  3. If \( y_i(\boldmath{w}^T\boldmath{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(\mathbf{w}^T\mathbf{x}_i+b)=1 \) and we say that \( x_i \) is on the boundary.
  6. +
  7. 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 \( \boldmath{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 \( \mathbf{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 \( \boldmath{x}_i \) are called support ve

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











@@ -525,27 +525,27 @@ subject to \( \boldmath{y}^T\boldmath{\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 $$ -\boldmath{w}=\sum_{i} \lambda_iy_i\boldmath{x}_i. +\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. $$ -With our vector \( \boldmath{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via +With our vector \( \mathbf{w} \) we can in turn find the value of the intercept \( b \) (here in two dimensions) via $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, $$ resulting in $$ -b = \frac{1}{y_i}-\boldmath{w}^T\boldmath{x}_i, +b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{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\boldmath{x}_i^T\boldmath{x}_j\right). +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). $$ With our hyperplane coefficients we can use our classifier to assign any observation by simply using $$ -y_i = \mathrm{sign}(\boldmath{w}^T\boldmath{x}_i+b). +y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{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 \( \boldmath{\xi} =[\xi_1,x_2,\dots,x_n] \) and +We introduce thus the so-called slack variables \( \mathbf{\xi} =[\xi_1,x_2,\dots,x_n] \) and modify our previous equation $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, $$ to $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i, +y_i(\mathbf{w}^T\mathbf{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(\boldmath{w}^T\boldmath{x}_i+b)=1 \) is on the wrong side of its margin. Hence by bounding the sum \( \sum_i \xi_i \), +\( 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 \), 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}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{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}\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, $$ subject to $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\mathbf{w}^T\mathbf{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 \( \boldmath{w} \) we obtain +Taking the derivatives with respect to \( b \) and \( \mathbf{w} \) we obtain $$ \frac{\partial {\cal L}}{\partial b} = -\sum_{i} \lambda_iy_i=0, $$ and $$ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i, +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, $$ 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(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, $$ $$ @@ -636,7 +636,7 @@ $$ and $$ -y_i(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{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 43de2c58f92fce278c4668c93ca414446725dbb8..915b9ae6a7b95101179a27db035d2bc7f0756ac5 100644 GIT binary patch delta 172 zcmX@lc%D&OzMF&L*|G=G49suO`*txI3bZ9&pSQ^G!jk%&iPF0Dq2W{K6vy=It?bIK zo%p=-BtRlE;?NK?6=GM$P(vzuia*PQr`>K$w#mKccZx0HSed|z9{L` zZ#S1-vo5rox%9hq=keII?{lNQ9{bvSSDi7xnb&R0YZvog-)q);W#2Xb=c^Lm{BX5B VBLfm>`2UoJ!=re^90m;r1_0Y}OLPDL delta 172 zcmX@lc%D&OzMF$Vf7yd*2IjZteY=RKF{mbZMde(pYKn-fD~M{cFSO-|XC{w7o_+er>PO z?>9lO=UU7^bLn^Qk;i(Qf1lG``cZA(Z=o~i53(uWDqS@DnA+>P_xQdatY_cbee=WB V`3%V5!2cp9j(?RxyBIVW7yx>zP2B(h diff --git a/doc/pub/svm/ipynb/svm.ipynb b/doc/pub/svm/ipynb/svm.ipynb index 1c9318033..023ab175e 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 $\\boldmath{x} =[x1,x2]$ and $\\boldmath{w}=[w1,w2]$. \n", + "In two dimensions we define the vectors $\\mathbf{x} =[x1,x2]$ and $\\mathbf{w}=[w1,w2]$. \n", "We can then rewrite the above equation as" ] }, @@ -88,7 +88,7 @@ "metadata": {}, "source": [ "$$\n", - "\\boldmath{w}^T\\boldmath{x}+b=0.\n", + "\\mathbf{w}^T\\mathbf{x}+b=0.\n", "$$" ] }, @@ -116,8 +116,8 @@ "metadata": {}, "source": [ "If we define a \n", - "matrix $\\boldmath{X}=\\left[\\boldmath{x}_1,\\boldmath{x}_2,\\dots, \\boldmath{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 $\\boldmath{X}$," + "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}$," ] }, { @@ -125,7 +125,7 @@ "metadata": {}, "source": [ "$$\n", - "\\boldmath{x}_i = \\begin{bmatrix} x_{i1} \\\\ x_{i2} \\\\ \\dots \\\\ \\dots \\\\ x_{ip} \\end{bmatrix}.\n", + "\\mathbf{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 $\\boldmath{x}_i$ we have" + "If the above condition is not met for a given vector $\\mathbf{x}_i$ we have" ] }, { @@ -150,7 +150,7 @@ "metadata": {}, "source": [ "if our output $y_i=1$.\n", - "In this case we say that $\\boldmath{x}_i$ lies on one of the sides of the hyperplane and if" + "In this case we say that $\\mathbf{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 $\\boldmath{x}_i$ lies on the other side. \n", + "then $\\mathbf{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) = \\boldmath{w}^T\\boldmath{x}+b = 0,\n", + "f(x) = \\mathbf{w}^T\\mathbf{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 $\\boldmath{x}_i$ and $\\boldmath{x}_2$ on the line $L$ will satisfy $\\boldmath{w}^T(\\boldmath{x}_1-\\boldmath{x}_2)=0$. \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", "\n", - "The signed distance $\\delta$ from any point defined by a vector $\\boldmath{x}$ and a point $\\boldmath{x}_0$ on the line $L$ is then" + "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" ] }, { @@ -240,7 +240,7 @@ "metadata": {}, "source": [ "$$\n", - "\\delta = \\frac{1}{\\vert\\vert \\boldmath{w}\\vert\\vert}(\\boldmath{w}^T\\boldmath{x}+b).\n", + "\\delta = \\frac{1}{\\vert\\vert \\mathbf{w}\\vert\\vert}(\\mathbf{w}^T\\mathbf{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 $\\boldmath{w}$? What we could\n", + "How do we find the parameter $b$ and the vector $\\mathbf{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(\\boldmath{w},b) = -\\sum_{i\\in M} y_i(\\boldmath{w}^T\\boldmath{x}_i+b).\n", + "C(\\mathbf{w},b) = -\\sum_{i\\in M} y_i(\\mathbf{w}^T\\mathbf{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 $\\boldmath{w}^T\\boldmath{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 $\\mathbf{w}^T\\mathbf{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 \\boldmath{w}} = -\\sum_{i\\in M} y_ix_i.\n", + "\\frac{\\partial C}{\\partial \\mathbf{w}} = -\\sum_{i\\in M} y_ix_i.\n", "$$" ] }, @@ -326,7 +326,7 @@ "metadata": {}, "source": [ "$$\n", - "\\boldmath{w} \\leftarrow \\boldmath{w} +\\eta \\frac{\\partial C}{\\partial \\boldmath{w}},\n", + "\\mathbf{w} \\leftarrow \\mathbf{w} +\\eta \\frac{\\partial C}{\\partial \\mathbf{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 $\\boldmath{w}$ normalized to\n", - "$\\vert\\vert \\boldmath{w}\\vert\\vert =1$ subject to the condition" + "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" ] }, { @@ -359,7 +359,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, p.\n", + "y_i(\\mathbf{w}^T\\mathbf{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 \\boldmath{w}\\vert\\vert}y_i(\\boldmath{w}^T\\boldmath{x}_i+b) \\geq M \\hspace{0.1cm}\\forall i=1,2,\\dots, n,\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", "$$" ] }, @@ -393,7 +393,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b) \\geq M\\vert \\vert \\boldmath{w}\\vert\\vert \\hspace{0.1cm}\\forall i.\n", + "y_i(\\mathbf{w}^T\\mathbf{x}_i+b) \\geq M\\vert \\vert \\mathbf{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 \\boldmath{w}\\vert\\vert = 1/M$, we have to find the minimum of \n", - "$\\boldmath{w}^T\\boldmath{w}=\\vert \\vert \\boldmath{w}\\vert\\vert$ (the norm) subject to the condition" + "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" ] }, { @@ -410,7 +410,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b) \\geq 1 \\hspace{0.1cm}\\forall i.\n", + "y_i(\\mathbf{w}^T\\mathbf{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 $\\boldmath{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 $\\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", "\n", "## A quick reminder on Lagrangian multipliers\n", "\n", @@ -644,7 +644,7 @@ "metadata": {}, "source": [ "$$\n", - "{\\cal L}(\\lambda,b,\\boldmath{w})=\\frac{1}{2}\\boldmath{w}^T\\boldmath{w}-\\sum_{i=1}^n\\lambda_i\\left[y_i(\\boldmath{w}^T\\boldmath{x}_i+b)-1\\right],\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", "$$" ] }, @@ -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 $\\boldmath{w}$ we obtain" + "Taking the derivatives with respect to $b$ and $\\mathbf{w}$ we obtain" ] }, { @@ -678,7 +678,7 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{\\partial {\\cal L}}{\\partial \\boldmath{w}} = 0 = \\boldmath{w}-\\sum_{i} \\lambda_iy_i\\boldmath{x}_i.\n", + "\\frac{\\partial {\\cal L}}{\\partial \\mathbf{w}} = 0 = \\mathbf{w}-\\sum_{i} \\lambda_iy_i\\mathbf{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\\boldmath{x}_i^T\\boldmath{x}_j,\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", "$$" ] }, @@ -711,7 +711,7 @@ "metadata": {}, "source": [ "$$\n", - "\\lambda_i\\left[y_i(\\boldmath{w}^T\\boldmath{x}_i+b) -1\\right] \\hspace{0.1cm}\\forall i.\n", + "\\lambda_i\\left[y_i(\\mathbf{w}^T\\mathbf{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(\\boldmath{w}^T\\boldmath{x}_i+b)=1$ and we say that $x_i$ is on the boundary.\n", + "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", "\n", - "2. If $y_i(\\boldmath{w}^T\\boldmath{x}_i+b)> 1$, we say $x_i$ is not on the boundary and we set $\\lambda_i=0$. \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", "\n", - "When $\\lambda_i > 0$, the vectors $\\boldmath{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 $\\mathbf{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\\boldmath{x}_i^T\\boldmath{x}_j,\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", "$$" ] }, @@ -751,12 +751,12 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{1}{2} \\boldmath{\\lambda}^T\\begin{bmatrix} y_1y_1\\boldmath{x}_1^T\\boldmath{x}_1 & y_1y_2\\boldmath{x}_1^T\\boldmath{x}_2 & \\dots & \\dots & y_1y_n\\boldmath{x}_1^T\\boldmath{x}_n \\\\\n", - "y_2y_1\\boldmath{x}_2^T\\boldmath{x}_1 & y_2y_2\\boldmath{x}_2^T\\boldmath{x}_2 & \\dots & \\dots & y_1y_n\\boldmath{x}_2^T\\boldmath{x}_n \\\\\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", "\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n", "\\dots & \\dots & \\dots & \\dots & \\dots \\\\\n", - "y_ny_1\\boldmath{x}_n^T\\boldmath{x}_1 & y_ny_2\\boldmath{x}_n^T\\boldmath{x}_2 & \\dots & \\dots & y_ny_n\\boldmath{x}_n^T\\boldmath{x}_n \\\\\n", - "\\end{bmatrix}\\boldmath{\\lambda}-\\mathbb{1}\\boldmath{\\lambda},\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", "$$" ] }, @@ -764,8 +764,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "subject to $\\boldmath{y}^T\\boldmath{\\lambda}=0$. Here we defined the vectors $\\boldmath{\\lambda} =[\\lambda_1,\\lambda_2,\\dots,\\lambda_n]$ and \n", - "$\\boldmath{y}=[y_1,y_2,\\dots,y_n]$. \n", + "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", "\n", "\n", "## The last steps\n", @@ -779,7 +779,7 @@ "metadata": {}, "source": [ "$$\n", - "\\boldmath{w}=\\sum_{i} \\lambda_iy_i\\boldmath{x}_i.\n", + "\\mathbf{w}=\\sum_{i} \\lambda_iy_i\\mathbf{x}_i.\n", "$$" ] }, @@ -787,7 +787,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With our vector $\\boldmath{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via" + "With our vector $\\mathbf{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(\\boldmath{w}^T\\boldmath{x}_i+b)=1,\n", + "y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1,\n", "$$" ] }, @@ -811,7 +811,7 @@ "metadata": {}, "source": [ "$$\n", - "b = \\frac{1}{y_i}-\\boldmath{w}^T\\boldmath{x}_i,\n", + "b = \\frac{1}{y_i}-\\mathbf{w}^T\\mathbf{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\\boldmath{x}_i^T\\boldmath{x}_j\\right).\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", "$$" ] }, @@ -843,7 +843,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i = \\mathrm{sign}(\\boldmath{w}^T\\boldmath{x}_i+b).\n", + "y_i = \\mathrm{sign}(\\mathbf{w}^T\\mathbf{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 $\\boldmath{\\xi} =[\\xi_1,x_2,\\dots,x_n]$ and \n", + "We introduce thus the so-called **slack** variables $\\mathbf{\\xi} =[\\xi_1,x_2,\\dots,x_n]$ and \n", "modify our previous equation" ] }, @@ -871,7 +871,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b)=1,\n", + "y_i(\\mathbf{w}^T\\mathbf{x}_i+b)=1,\n", "$$" ] }, @@ -887,7 +887,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b)=1-\\xi_i,\n", + "y_i(\\mathbf{w}^T\\mathbf{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(\\boldmath{w}^T\\boldmath{x}_i+b)=1$ is on the wrong side of its margin. Hence by bounding the sum $\\sum_i \\xi_i$,\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", "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}\\boldmath{w}^T\\boldmath{w}-\\sum_{i=1}^n\\lambda_i\\left[y_i(\\boldmath{w}^T\\boldmath{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}\\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", "$$" ] }, @@ -930,7 +930,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b)=1-\\xi_i \\hspace{0.1cm}\\forall i,\n", + "y_i(\\mathbf{w}^T\\mathbf{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 $\\boldmath{w}$ we obtain" + "Taking the derivatives with respect to $b$ and $\\mathbf{w}$ we obtain" ] }, { @@ -964,7 +964,7 @@ "metadata": {}, "source": [ "$$\n", - "\\frac{\\partial {\\cal L}}{\\partial \\boldmath{w}} = 0 = \\boldmath{w}-\\sum_{i} \\lambda_iy_i\\boldmath{x}_i,\n", + "\\frac{\\partial {\\cal L}}{\\partial \\mathbf{w}} = 0 = \\mathbf{w}-\\sum_{i} \\lambda_iy_i\\mathbf{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\\boldmath{x}_i^T\\boldmath{x}_j,\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", "$$" ] }, @@ -1053,7 +1053,7 @@ "metadata": {}, "source": [ "$$\n", - "y_i(\\boldmath{w}^T\\boldmath{x}_i+b) -(1-\\xi_) \\geq 0 \\hspace{0.1cm}\\forall i.\n", + "y_i(\\mathbf{w}^T\\mathbf{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 00da3c3e4307ef0f740f7d043c245a43a088bffb..31f7e11b319f57052fe4868013497021f1ce1c6b 100644 GIT binary patch delta 60381 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�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�jbxMw?;h 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, \] !et if our output $y_i=1$. -In this case we say that $\boldmath{x}_i$ lies on one of the sides of the hyperplane and if +In this case we say that $\mathbf{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 $\boldmath{x}_i$ lies on the other side. +then $\mathbf{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) = \boldmath{w}^T\boldmath{x}+b = 0, +f(x) = \mathbf{w}^T\mathbf{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 $\boldmath{x}_i$ and $\boldmath{x}_2$ on the line $L$ will satisfy $\boldmath{w}^T(\boldmath{x}_1-\boldmath{x}_2)=0$. +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$. -The signed distance $\delta$ from any point defined by a vector $\boldmath{x}$ and a point $\boldmath{x}_0$ on the line $L$ is then +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 !bt \[ -\delta = \frac{1}{\vert\vert \boldmath{w}\vert\vert}(\boldmath{w}^T\boldmath{x}+b). +\delta = \frac{1}{\vert\vert \mathbf{w}\vert\vert}(\mathbf{w}^T\mathbf{x}+b). \] !et !split ===== First attempt at a minimization approach ===== -How do we find the parameter $b$ and the vector $\boldmath{w}$? What we could +How do we find the parameter $b$ and the vector $\mathbf{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(\boldmath{w},b) = -\sum_{i\in M} y_i(\boldmath{w}^T\boldmath{x}_i+b). +C(\mathbf{w},b) = -\sum_{i\in M} y_i(\mathbf{w}^T\mathbf{x}_i+b). \] !et -We could now for example define all values $y_i =1$ as misclassified in case we have $\boldmath{w}^T\boldmath{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 $\mathbf{w}^T\mathbf{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 \boldmath{w}} = -\sum_{i\in M} y_ix_i. +\frac{\partial C}{\partial \mathbf{w}} = -\sum_{i\in M} y_ix_i. \] !et @@ -190,7 +190,7 @@ b \leftarrow b +\eta \frac{\partial C}{\partial b}, and !bt \[ -\boldmath{w} \leftarrow \boldmath{w} +\eta \frac{\partial C}{\partial \boldmath{w}}, +\mathbf{w} \leftarrow \mathbf{w} +\eta \frac{\partial C}{\partial \mathbf{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 $\boldmath{w}$ normalized to -$\vert\vert \boldmath{w}\vert\vert =1$ subject to the condition +Thus, we wish to find a margin $M$ with $\mathbf{w}$ normalized to +$\vert\vert \mathbf{w}\vert\vert =1$ subject to the condition !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, p. +y_i(\mathbf{w}^T\mathbf{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 \boldmath{w}\vert\vert}y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M \hspace{0.1cm}\forall i=1,2,\dots, 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, \] !et or just !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq M\vert \vert \boldmath{w}\vert\vert \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq M\vert \vert \mathbf{w}\vert\vert \hspace{0.1cm}\forall i. \] !et -If we scale the equation so that $\vert \vert \boldmath{w}\vert\vert = 1/M$, we have to find the minimum of -$\boldmath{w}^T\boldmath{w}=\vert \vert \boldmath{w}\vert\vert$ (the norm) subject to the condition +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 !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) \geq 1 \hspace{0.1cm}\forall i. \] !et -We have thus defined our margin as the invers of the norm of $\boldmath{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 $\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. !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,\boldmath{w})=\frac{1}{2}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{x}_i+b)-1\right], +{\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], \] !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 $\boldmath{w}$ we obtain +Taking the derivatives with respect to $b$ and $\mathbf{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 $\boldmath{w}$ we obtain and !bt \[ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i. +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, \] !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(\boldmath{w}^T\boldmath{x}_i+b) -1\right] \hspace{0.1cm}\forall i. +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b) -1\right] \hspace{0.1cm}\forall i. \] !et -o If $\lambda_i > 0$, then $y_i(\boldmath{w}^T\boldmath{x}_i+b)=1$ and we say that $x_i$ is on the boundary. -o If $y_i(\boldmath{w}^T\boldmath{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 $\boldmath{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(\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$. !split ===== The problem to solve ===== @@ -386,22 +386,22 @@ When $\lambda_i > 0$, the vectors $\boldmath{x}_i$ are called support vectors. T We can rewrite !bt \[ -{\cal L}=\sum_i\lambda_i-\frac{1}{2}\sum_{ij}^n\lambda_i\lambda_jy_iy_j\boldmath{x}_i^T\boldmath{x}_j, +{\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, \] !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} \boldmath{\lambda}^T\begin{bmatrix} y_1y_1\boldmath{x}_1^T\boldmath{x}_1 & y_1y_2\boldmath{x}_1^T\boldmath{x}_2 & \dots & \dots & y_1y_n\boldmath{x}_1^T\boldmath{x}_n \\ -y_2y_1\boldmath{x}_2^T\boldmath{x}_1 & y_2y_2\boldmath{x}_2^T\boldmath{x}_2 & \dots & \dots & y_1y_n\boldmath{x}_2^T\boldmath{x}_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 \\ +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 \\ \dots & \dots & \dots & \dots & \dots \\ \dots & \dots & \dots & \dots & \dots \\ -y_ny_1\boldmath{x}_n^T\boldmath{x}_1 & y_ny_2\boldmath{x}_n^T\boldmath{x}_2 & \dots & \dots & y_ny_n\boldmath{x}_n^T\boldmath{x}_n \\ -\end{bmatrix}\boldmath{\lambda}-\mathbb{1}\boldmath{\lambda}, +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}, \] !et -subject to $\boldmath{y}^T\boldmath{\lambda}=0$. Here we defined the vectors $\boldmath{\lambda} =[\lambda_1,\lambda_2,\dots,\lambda_n]$ and -$\boldmath{y}=[y_1,y_2,\dots,y_n]$. +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]$. !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 \[ -\boldmath{w}=\sum_{i} \lambda_iy_i\boldmath{x}_i. +\mathbf{w}=\sum_{i} \lambda_iy_i\mathbf{x}_i. \] !et -With our vector $\boldmath{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via +With our vector $\mathbf{w}$ we can in turn find the value of the intercept $b$ (here in two dimensions) via !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, \] !et resulting in !bt \[ -b = \frac{1}{y_i}-\boldmath{w}^T\boldmath{x}_i, +b = \frac{1}{y_i}-\mathbf{w}^T\mathbf{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\boldmath{x}_i^T\boldmath{x}_j\right). +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). \] !et With our hyperplane coefficients we can use our classifier to assign any observation by simply using !bt \[ -y_i = \mathrm{sign}(\boldmath{w}^T\boldmath{x}_i+b). +y_i = \mathrm{sign}(\mathbf{w}^T\mathbf{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 $\boldmath{\xi} =[\xi_1,x_2,\dots,x_n]$ and +We introduce thus the so-called _slack_ variables $\mathbf{\xi} =[\xi_1,x_2,\dots,x_n]$ and modify our previous equation !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1, +y_i(\mathbf{w}^T\mathbf{x}_i+b)=1, \] !et to !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i, +y_i(\mathbf{w}^T\mathbf{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(\boldmath{w}^T\boldmath{x}_i+b)=1$ is on the wrong side of its margin. Hence by bounding the sum $\sum_i \xi_i$, +$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$, 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}\boldmath{w}^T\boldmath{w}-\sum_{i=1}^n\lambda_i\left[y_i(\boldmath{w}^T\boldmath{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}\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, \] !et subject to !bt \[ -y_i(\boldmath{w}^T\boldmath{x}_i+b)=1-\xi_i \hspace{0.1cm}\forall i, +y_i(\mathbf{w}^T\mathbf{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 $\boldmath{w}$ we obtain +Taking the derivatives with respect to $b$ and $\mathbf{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 $\boldmath{w}$ we obtain and !bt \[ -\frac{\partial {\cal L}}{\partial \boldmath{w}} = 0 = \boldmath{w}-\sum_{i} \lambda_iy_i\boldmath{x}_i, +\frac{\partial {\cal L}}{\partial \mathbf{w}} = 0 = \mathbf{w}-\sum_{i} \lambda_iy_i\mathbf{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\boldmath{x}_i^T\boldmath{x}_j, +{\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, \] !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(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_)\right]=0 \hspace{0.1cm}\forall i, +\lambda_i\left[y_i(\mathbf{w}^T\mathbf{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(\boldmath{w}^T\boldmath{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. +y_i(\mathbf{w}^T\mathbf{x}_i+b) -(1-\xi_) \geq 0 \hspace{0.1cm}\forall i. \] !et