From d649c3c050bb4a1592487480f31180e8ae5ffc19 Mon Sep 17 00:00:00 2001 From: Smirk Date: Tue, 11 Jun 2019 15:47:28 +0800 Subject: [PATCH 1/3] svm geometric margin --- CH07/README.md | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/CH07/README.md b/CH07/README.md index 8632b50..c64b0f1 100755 --- a/CH07/README.md +++ b/CH07/README.md @@ -28,16 +28,16 @@ ### 导读 -本章概要部分比较精简, 多刷几遍。 +本章概要部分比较精简,多刷几遍。 支持向量机是一种二类分类模型。 -- **基本模型**是定义在特征空间上的间隔最大的**线性分类器** +- **基本模型**是定义在特征空间上的间隔最大的**线性分类器**,间隔**最大**使它有别于感知机。感知机,只用了符号,而支持向量机,用到了大小。 - 支持向量机还包括**核技巧**, 这使它称为实质上的**非线性分类器**。 - 支持向量机学习策略是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。 - 支持向量机:线性可分支持向量机,线性支持向量机假设输入空间和特征空间的**元素一一对应**,并将输入空间中的输入映射为特征空间的特征向量;非线性支持向量机利用一个从输入空间到特征空间的**非线性映射**将输入映射为特征向量。 - 判别模型 -- 符号函数, Sign, 0 对应了超平面(hyper plane), >0与<0对应了半空间(half space) +- 符号函数,Sign: 0 对应了超平面(hyper plane),>0与<0对应了半空间(half space) - 仿射变换是保凸变换 - `分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。法向量指向的一侧是正类, 另一侧为负类` - 关于SVM的历史可以参考附录2[^2],Vapnik的1995年的那个文章名字叫Support-vector networks,主要是提出了soft margin,在这篇文章的附录中给出了线性可分支持向量机与线性支持向量机的推导。同年Vapnik将支持向量机推广到支持向量回归,发表了文章统计学习理论的本质, 这个有中译版本,见书中本章参考文献[4] @@ -58,7 +58,7 @@ 注意前四个算法里面,都没有写该怎么去求解$\alpha$,最后一节**序列最小最优化**讨论了具体实现。也就是算法7.5给出了求解$\hat\alpha$的方法。 -另外,注意对比算法7.3和算法7.4,关注输出,关注$b^*​$. +另外,注意对比算法7.3和算法7.4,关注输出,关注$b^*$。 @@ -75,7 +75,7 @@ $$ -这是个凸二次规划问题. +这是个凸二次规划问题。 如果求出了上述方程的解$w^*, b^*$,就可得到 @@ -108,7 +108,23 @@ $$ #### 几何间隔 +对于给定的训练数据集$T$和超平面$(w, b)$,定义超平面$(w, b)$和样本点$(w_i, b_i)$之间的几何间隔为 +$$ +\gamma_i=y_i\left(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|}\right) +$$ + +定义**超平面$(w, b)$到训练数据集$T$**的几何间隔为超平面$(w, b)$关于样本点$(x_i, y_i)$的几何间隔之最小值,即 +$$ +\gamma = \min_{i=1,\cdots,N}\gamma_i +$$ + +函数间隔和几何间隔之间的关系为 +$$ +\gamma_i=\frac{\hat \gamma_i}{\|w\|}\\ +\gamma=\frac{\hat \gamma}{\|w\|}\\ +$$ +和感知机相比,支持向量机引入间隔,将距离 #### 间隔最大化 @@ -159,7 +175,7 @@ res 1. 对偶问题往往更容易求解 1. 自然引入核函数,进而推广到非线性分类问题 -针对每个不等式约束,定义拉格朗日乘子$\alpha_i\ge0​$,定义拉格朗日函数 +针对每个不等式约束,定义拉格朗日乘子$\alpha_i\ge0$,定义拉格朗日函数 $$ \begin{align} L(w,b,\alpha)&=\frac{1}{2}w\cdot w-\left[\sum_{i=1}^N\alpha_i[y_i(w\cdot x_i+b)-1]\right]\\ @@ -168,7 +184,7 @@ L(w,b,\alpha)&=\frac{1}{2}w\cdot w-\left[\sum_{i=1}^N\alpha_i[y_i(w\cdot x_i+b)- \end{align}\\ \alpha_i \geqslant0, i=1,2,\dots,N $$ -其中$\alpha=(\alpha_1,\alpha_2,\dots,\alpha_N)^T​$为拉格朗日乘子向量 +其中$\alpha=(\alpha_1,\alpha_2,\dots,\alpha_N)^T$为拉格朗日乘子向量 **原始问题是极小极大问题** @@ -304,7 +320,7 @@ $$ 令合页损失$\left[1-y_i(w\cdot x+b)\right]_+=\xi_i$,合页损失非负,所以有$\xi_i\ge0$,这个对应了原始最优化问题中的**一个约束【1】**。 -还是根据合页损失非负,当$1-y_i(w\cdot x+b)\leq\color{red}0​$的时候,有$\left[1-y_i(w\cdot x+b)\right]_+=\color{red}\xi_i=0​$,所以有 +还是根据合页损失非负,当$1-y_i(w\cdot x+b)\leq\color{red}0$的时候,有$\left[1-y_i(w\cdot x+b)\right]_+=\color{red}\xi_i=0$,所以有 $1-y_i(w\cdot x+b)\leq\color{red}0=\xi_i$,这对应了原始最优化问题中的**另一个约束【2】**。 @@ -479,11 +495,11 @@ $$ 两变量二次规划求解 -选择两个变量$\alpha_1,\alpha_2​$ +选择两个变量$\alpha_1,\alpha_2$ 由等式约束可以得到 -$\alpha_1=-y_1\sum\limits_{i=2}^N\alpha_iy_i​$ +$\alpha_1=-y_1\sum\limits_{i=2}^N\alpha_iy_i$ 所以这个问题实质上是单变量优化问题。 $$ @@ -544,7 +560,7 @@ $y_i\in \mathcal Y=\{+1,-1\}$所以又等式约束导出的关系式中两个变 > \end{cases}\\ > g(x_i)=\sum_{j=1}^{N}\alpha_jy_jK(x_j,x_i)+b > $$ -> 则转4,否则,$k=k+1$转2 +> 则转4,否则,$k=k+1$转2 > > 1. 取$\hat\alpha=\alpha^{(k+1)}$ From c4b97ab5f241a84cef6a3381762842c80009fcec Mon Sep 17 00:00:00 2001 From: Smirk Date: Tue, 11 Jun 2019 15:47:28 +0800 Subject: [PATCH 2/3] svm geometric margin --- CH07/README.md | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/CH07/README.md b/CH07/README.md index 8632b50..c64b0f1 100755 --- a/CH07/README.md +++ b/CH07/README.md @@ -28,16 +28,16 @@ ### 导读 -本章概要部分比较精简, 多刷几遍。 +本章概要部分比较精简,多刷几遍。 支持向量机是一种二类分类模型。 -- **基本模型**是定义在特征空间上的间隔最大的**线性分类器** +- **基本模型**是定义在特征空间上的间隔最大的**线性分类器**,间隔**最大**使它有别于感知机。感知机,只用了符号,而支持向量机,用到了大小。 - 支持向量机还包括**核技巧**, 这使它称为实质上的**非线性分类器**。 - 支持向量机学习策略是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。 - 支持向量机:线性可分支持向量机,线性支持向量机假设输入空间和特征空间的**元素一一对应**,并将输入空间中的输入映射为特征空间的特征向量;非线性支持向量机利用一个从输入空间到特征空间的**非线性映射**将输入映射为特征向量。 - 判别模型 -- 符号函数, Sign, 0 对应了超平面(hyper plane), >0与<0对应了半空间(half space) +- 符号函数,Sign: 0 对应了超平面(hyper plane),>0与<0对应了半空间(half space) - 仿射变换是保凸变换 - `分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。法向量指向的一侧是正类, 另一侧为负类` - 关于SVM的历史可以参考附录2[^2],Vapnik的1995年的那个文章名字叫Support-vector networks,主要是提出了soft margin,在这篇文章的附录中给出了线性可分支持向量机与线性支持向量机的推导。同年Vapnik将支持向量机推广到支持向量回归,发表了文章统计学习理论的本质, 这个有中译版本,见书中本章参考文献[4] @@ -58,7 +58,7 @@ 注意前四个算法里面,都没有写该怎么去求解$\alpha$,最后一节**序列最小最优化**讨论了具体实现。也就是算法7.5给出了求解$\hat\alpha$的方法。 -另外,注意对比算法7.3和算法7.4,关注输出,关注$b^*​$. +另外,注意对比算法7.3和算法7.4,关注输出,关注$b^*$。 @@ -75,7 +75,7 @@ $$ -这是个凸二次规划问题. +这是个凸二次规划问题。 如果求出了上述方程的解$w^*, b^*$,就可得到 @@ -108,7 +108,23 @@ $$ #### 几何间隔 +对于给定的训练数据集$T$和超平面$(w, b)$,定义超平面$(w, b)$和样本点$(w_i, b_i)$之间的几何间隔为 +$$ +\gamma_i=y_i\left(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|}\right) +$$ + +定义**超平面$(w, b)$到训练数据集$T$**的几何间隔为超平面$(w, b)$关于样本点$(x_i, y_i)$的几何间隔之最小值,即 +$$ +\gamma = \min_{i=1,\cdots,N}\gamma_i +$$ + +函数间隔和几何间隔之间的关系为 +$$ +\gamma_i=\frac{\hat \gamma_i}{\|w\|}\\ +\gamma=\frac{\hat \gamma}{\|w\|}\\ +$$ +和感知机相比,支持向量机引入间隔,将距离 #### 间隔最大化 @@ -159,7 +175,7 @@ res 1. 对偶问题往往更容易求解 1. 自然引入核函数,进而推广到非线性分类问题 -针对每个不等式约束,定义拉格朗日乘子$\alpha_i\ge0​$,定义拉格朗日函数 +针对每个不等式约束,定义拉格朗日乘子$\alpha_i\ge0$,定义拉格朗日函数 $$ \begin{align} L(w,b,\alpha)&=\frac{1}{2}w\cdot w-\left[\sum_{i=1}^N\alpha_i[y_i(w\cdot x_i+b)-1]\right]\\ @@ -168,7 +184,7 @@ L(w,b,\alpha)&=\frac{1}{2}w\cdot w-\left[\sum_{i=1}^N\alpha_i[y_i(w\cdot x_i+b)- \end{align}\\ \alpha_i \geqslant0, i=1,2,\dots,N $$ -其中$\alpha=(\alpha_1,\alpha_2,\dots,\alpha_N)^T​$为拉格朗日乘子向量 +其中$\alpha=(\alpha_1,\alpha_2,\dots,\alpha_N)^T$为拉格朗日乘子向量 **原始问题是极小极大问题** @@ -304,7 +320,7 @@ $$ 令合页损失$\left[1-y_i(w\cdot x+b)\right]_+=\xi_i$,合页损失非负,所以有$\xi_i\ge0$,这个对应了原始最优化问题中的**一个约束【1】**。 -还是根据合页损失非负,当$1-y_i(w\cdot x+b)\leq\color{red}0​$的时候,有$\left[1-y_i(w\cdot x+b)\right]_+=\color{red}\xi_i=0​$,所以有 +还是根据合页损失非负,当$1-y_i(w\cdot x+b)\leq\color{red}0$的时候,有$\left[1-y_i(w\cdot x+b)\right]_+=\color{red}\xi_i=0$,所以有 $1-y_i(w\cdot x+b)\leq\color{red}0=\xi_i$,这对应了原始最优化问题中的**另一个约束【2】**。 @@ -479,11 +495,11 @@ $$ 两变量二次规划求解 -选择两个变量$\alpha_1,\alpha_2​$ +选择两个变量$\alpha_1,\alpha_2$ 由等式约束可以得到 -$\alpha_1=-y_1\sum\limits_{i=2}^N\alpha_iy_i​$ +$\alpha_1=-y_1\sum\limits_{i=2}^N\alpha_iy_i$ 所以这个问题实质上是单变量优化问题。 $$ @@ -544,7 +560,7 @@ $y_i\in \mathcal Y=\{+1,-1\}$所以又等式约束导出的关系式中两个变 > \end{cases}\\ > g(x_i)=\sum_{j=1}^{N}\alpha_jy_jK(x_j,x_i)+b > $$ -> 则转4,否则,$k=k+1$转2 +> 则转4,否则,$k=k+1$转2 > > 1. 取$\hat\alpha=\alpha^{(k+1)}$ From d83a545590e8b80e379669e6f94cfe5a26251200 Mon Sep 17 00:00:00 2001 From: Smirk Date: Mon, 17 Jun 2019 16:15:25 +0800 Subject: [PATCH 3/3] how to draw w; close issue #87 --- CH07/README.md | 12 ++++++------ CH07/assets/fig_w.png | Bin 0 -> 39695 bytes CH07/svm.py | 3 ++- CH07/unit_test.py | 31 +++++++++++++++++++++++++++++-- 4 files changed, 37 insertions(+), 9 deletions(-) create mode 100755 CH07/assets/fig_w.png diff --git a/CH07/README.md b/CH07/README.md index c64b0f1..21d5a79 100755 --- a/CH07/README.md +++ b/CH07/README.md @@ -124,12 +124,10 @@ $$ \gamma=\frac{\hat \gamma}{\|w\|}\\ $$ -和感知机相比,支持向量机引入间隔,将距离 +和感知机相比,支持向量机引入间隔,将距离的大小考虑进来,而不只是符号。 #### 间隔最大化 - - #### 支持向量和间隔边界 由于支持向量在确定分离超平面中起着决定作用,所以将这种分类模型称为支持向量机。 @@ -199,8 +197,6 @@ $$ > > In [mathematical optimization](https://en.wikipedia.org/wiki/Mathematical_optimization) theory, **duality** or the **duality principle** is the principle that [optimization problems](https://en.wikipedia.org/wiki/Optimization_problem) may be viewed from either of two perspectives, the **primal problem** or the **dual problem**. The solution to the dual problem provides a lower bound to the solution of the primal (minimization) problem.[[1\]](https://en.wikipedia.org/wiki/Duality_(optimization)#cite_note-Boyd-1) However in general the optimal values of the primal and dual problems need not be equal. Their difference is called the [duality gap](https://en.wikipedia.org/wiki/Duality_gap). For [convex optimization](https://en.wikipedia.org/wiki/Convex_optimization) problems, the duality gap is zero under a [constraint qualification](https://en.wikipedia.org/wiki/Constraint_qualification) condition. - - 转换后的对偶问题 $$ \min\limits_\alpha \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_i\\ @@ -208,7 +204,6 @@ s.t. \ \ \ \sum_{i=1}^N\alpha_iy_i=0\\ \alpha_i\geqslant0, i=1,2,\dots,N $$ - 对于任意线性可分的两组点,他们在分类超平面上的投影都是线性不可分的。 $\alpha$不为零的点对应的实例为支持向量,通过支持向量可以求得$b$值 @@ -278,6 +273,11 @@ $$ 线性支持向量机是线性可分支持向量机的超集。 +这章单元测试中包含了几个图,可以直接看代码。 +关于$w$是如何绘制的,这个添加了个测试案例,体会一下。 + +![fig_w](assets/fig_w.png) + ### 算法 #### 软间隔最大化 diff --git a/CH07/assets/fig_w.png b/CH07/assets/fig_w.png new file mode 100755 index 0000000000000000000000000000000000000000..ced3929e4a07c540f3c3f0259e0c832518957d2a GIT binary patch literal 39695 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 Tsf9VtV*mnAS3j3^P6