3.机器学习技法--Kernel Support Vector Machine

Lecture 3:Kernel Support Vector Machine

3.1 Kernel Trick

现在接着上一节提到的问题进行讨论,即 Dual SVM 还是有很大的计算量。将 x-space 变量映射到 z-space, 如 z-space 的基如图 3-1 所示。这样为了计算 Dual SVM 我们先要求出 z-space 基向量后和 w 矩阵相乘。如果 $\tilde{d}$ 很大的话,z-space 的基向量计算就需要耗费大量的资源。

                           图 3-1

上面提到的问题可以通过将转换和内积合到一起一步解决,如图 3-2 所示

                              图 3-2 

这样将 $z^T_{n}Z_{m}$ 用 $\mathcal{k}(x_{n}, x_{m})$ 来代替,可以得出如 3-3 所示的结论

                          图 3-3

这样就可以完全不考虑$\tilde{d}$ 的具体值,现在将 kernel tricks 用于 SVM 得到 kernel  SVMQ1 ,如图 3-4 所示

                              图 3-4 

3.2 Polynomial Kernel

现在来看几个二次项 kernel 和不同 kernel 的对分类边界的影响。如图 3-5 和 3-6 所示

                           图 3-5 A Tale of Three Kernels

 图 3-6 不同的 kernel 、不同的 SVs 、不同的 Margin、不同的 $g_{svm}$ 

我们可以将 linear svm 也看做是一种特殊的 kernel svm,linear svm 的 kernel 为 $\mathcal{K}(x, x') = (0+ 1*x^Tx')$

3.3 Gaussian Kernel

上一小节的讨论的  kernel trick 都是有限维(2 维),那我们有没有可能将 kernel 映射到无限维Q2呢。

                            图 3-7

图 3-8 展示了高斯核的效果,可以看出使用 svm 还是有可能过拟合(曾用 svm 做 mnist 实验。在验证集中准确率只有 10% !)

                             图 3-8

3.4 Comparison of Kernels

kernel 的威力很大,使用 kernel SVM 时。我们如何选择一个最好的 kernel 呢?在《基石》的讨论中,我们得知 Ein 不靠谱,Eaug 也不见得靠谱, Ecv 有点靠谱。

我们来看下图 3-9 ,可以看出使用 kernel svm 未必是好的

               图 3-9

题外话: 

Q1:   有的教材通过讨论线性不可分数据引出  kernel 函数这个概念!另《西瓜书》和《统计学习方法》切入 svm 的方式完全不同!另,后续章节会讨论  KLR。另,使用 kernel 技巧未必能减少计算量,比如 $\tilde{d}$ 很小,使用 kernel trick 可能适得其反

Q2: 一直不知道为什么会有 高斯核,潜意识中认为敢用高斯这个名字的都必定 niubility !!!高斯核本身适合用于有高斯噪声的数据。 高斯核的高次变量的系数很小,应该是不影响计算的(在《基石》有关于高次变量系数的讨论,并引入了  勒让德多项式这个概念)

T1: 以前一直把 large-marine 这个词和 SVM 这个词绑定在一起,这是不应该的。其它的算法也有和 large-margin 相关的,如下图所示

                    图  T1 -1  Random Forest 的分类边界

                   图 T1-2   第 16 节第 3 小节课程 (林老师 v587)

 

 图 T1-3 aggregation 算法

 T2: 机器学习中的相似性

                图  T2-1   RBF 核函数

         如图 T2-1 所示, rbf 核函数的物理意义就是度量 两个点之间的距离。也可以看成是度量 2 个点的相似性。有很多 sv 的 SVM 的物理意义就是度量某个点和所有 sv 的相似性。

                 图  T2-2  RBF 核下的 SVM 

     先插一句无关紧要的话,不同样本点在训练模型时所起的作用是不同的(SVM 的 free point, LR 的不同的 probablity 等等)。

     机器学习就是根据训练集分布去求出目标的真实分布,比如贝叶斯方法、以交叉熵函数作为 loss function 的 LR 、聚类算法中的 k-means 以及 SVM。

在这些算法中,贝叶斯是种很直接求相似的算法, svm 和 lr 算是比较隐晦的求相似的算法。

 

T3: 为什么 xgboost is always better than  SVM ? 

 reason : SVM 的 kernel 参数不好选择、SVM 不适合用于大数据集训练,在 《基石》课程中已经讨论过 大样本集对抑制过拟合的效果! 总而言之:理论虽好,难以落地

 xgboost:高冷的 svm  不会出现在工业应用场合, xgboost 只要打败 LR 这些算法就好了!

 

posted @ 2018-01-06 17:17  tmortred  阅读(197)  评论(0)    收藏  举报