遵循统一的机器学习框架理解SVM

一、前言

  1. 我的博客仅记录我的观点和思考过程。欢迎大家指出我思考的盲点,更希望大家能有自己的理解。
  2. 本文参考了李宏毅教授讲解SVM的课程和李航大大的统计学习方法。

二、理解

统一的机器学习框架(MLA):

1.模型(Model)
2.策略(Loss)
3.算法(Algorithm)

按照如上所说框架,SVM最核心的就是使用了 Hinge Loss核方法

SVM: Hinge Loss + Kernel Method

Model

给定数据集 \((x^1,\hat{y}^1),(x^2,\hat{y}^2)...(x^n,\hat{y}^n)\),其中\(\hat{y}^i\in\{1,-1\}\),且线性函数:
\[f(x)=w^Tx+b\]

\[y=\begin{cases}
1,\quad &f(x)>0\\
-1, &f(x)<0
\end{cases}\]
同时:
当 \(\hat{y}=1\) 时,\(f(x)\)越大越好; \(\hat{y}=-1\) 时,\(f(x)\)越小越好。
综合来说即:\(\hat{y}f(x)\) 越大越好。

Loss

结构风险最小化:经验风险+正则项

经验风险

上面说到我们希望 \(\hat{y}f(x)\) 越大越好,也就是当 \(\hat{y}f(x)\) 越大时,损失应该越小(Large Value, Small Loss)。
1.考虑使用 \(sigmoid + cross\ entropy\) 的损失函数:
\[\hat{y}=\begin{cases}
+1,\; &f(x)>0\; &\sigma(f(x))\longrightarrow 1, &Loss=-ln(\sigma(f(x)))\\
-1,\; &f(x)<0\; &\sigma(f(x))\longrightarrow 0, &Loss=-ln(1-\sigma(f(x)))
\end{cases}\]
考虑到 \(1-\sigma(f(x))=1-\frac{1}{1+exp(-f(x))}=\frac{1}{1+exp(f(x))}=\sigma(-f(x))\)
\[Loss = -ln(\sigma(\hat{y}f(x)))=ln(1+exp(-\hat{y}f(x))) \]

这个就是西瓜书中的对率损失。
2.使用Hinge Loss损失函数:
使用对率损失时,希望\(\hat{y}f(x)\)越大越好,好上加好,永无止境的那种。
换一种角度看,假如我们希望 \(\hat{y}f(x)\) 做的足够好就可以了,也就是说当 \(\hat{y}f(x)>1\) 时,我们认为它已经做的足够好了,此时损失就为0了。

题外话:Hinge Loss就好像横向学习,很多时候我们需要学习很多领域的知识,此时大概知道、了解就行;对率损失就像纵向学习,在自己的领域需要钻研,好上加好。

\[Loss = max(0,1-\hat{y}f(x))\]

正则项

\[\frac{1}{2}||w||^2\]
综上所述,最终的损失函数
\[Loss = \frac{1}{2}\lambda||w||^2 + \sum_{i=1}^n max(0,1-\hat{y}^i f(x^i))\]

注意到Loss中正则项是凸函数,经验损失项也是凸函数,直接用梯度下降法就可以求解。

Algorithm

梯度下降法

\[\frac{\partial L}{\partial w} = \lambda w+ \sum_{i=1}^n -\delta(\hat{y}^i f(x^i) < 1)\hat{y}^i x^i\]

\[\frac{\partial L}{\partial b} = \sum_{i=1}^n -\delta(\hat{y}^i f(x^i) < 1)\hat{y}^i\]

其中\(\delta(\hat{y}^i f(x^i) < 1)\)是指示函数。

\[w^{k+1}=w^k-\eta(\lambda w^k+ \sum_{i=1}^n -\delta(\hat{y}^i f(x^i) < 1)\hat{y}^i x^i)\]

\[b^{k+1}=b^k-\eta(\sum_{i=1}^n -\delta(\hat{y}^i f(x^i) < 1)\hat{y}^i)\]

总结

到目前位置所做的事就是:对于一组给定的数据,找到一个超平面划分它们,进行分类,且要求尽可能做的好(策略是HingeLoss)。考虑到在当前维度或者空间可能做的不是很好(可分性不是很好),可以把这些数据点变换空间或者升维,在另一个空间具有更好的可分性,这样可以把当前任务做的更好。

\[z = \phi(x) \]

z表示对x进行变换后的形式(可以是高维空间,也可以是低维空间),此时再使用上面所说的方法

\[Loss = \frac{1}{2}\lambda||w||^2 + \sum_{i=1}^n max(0,1-\hat{y}^i f(z^i))\]

\[Loss = \frac{1}{2}\lambda||w||^2 + \sum_{i=1}^n max(0,1-\hat{y}^i f(\phi(x^i)))\]

不足之处:对x进行变换后得到z,首先我们需要计算得到z,再进行后续的计算,当升维后z的维度很大,此时虽然可分性增加了,但是计算量会大大增加,而且对于特殊情况,比如z是无限维时,z根本就无法计算出来,由此引出核方法。

扩展

  1. 对于一个深度神经网络做二分类任务,一般我们使用交叉熵作为损失函数,假如把损失函数替换为hingeloss,则就是深度学习版的SVM。
  2. 把深度神经网络的前n-1层看作一个特征变换层,最后一层看作分类层,与我们总结中说的就非常相似了,把 \(x\) 进行转换,再进行分类。不同点在于:我们所说的SVM这个变换的函数是我们定义的是确定的,而Deep Learning里的转换函数是不定的,是通过数据学出来的。
    总的来说,SVM和深度学习分类任务遵循统一的思想,从本质上来说没必要区分它们。

三、对偶形式

写出对偶形式的目的是:将 \(w,b\) 表示为数据点的线性组合,这样可以把 \(\phi(x^i)\phi(x^j)\) 这种在高维空间的计算转换成成 \(\kappa(x^i,x^j)\) 在低维空间计算,再通过核函数直接得到最终的值的方式。
隐含的思想是:我并不需要了解中间的过程(升维后的值),只需要得到他们之间的关系就行(核函数),核函数 \(\kappa\) 就表示了这种关系。

根据 \(w,b\) 的求解公式的特性,当 \(w^0=0,b^0=0\) 时,容易看出 \(w,b\) 是给定数据点的线性组合(Linear Combination)
\[w = \sum_{i=1}^n \alpha_i \hat{y}^i x^i\]

\[b = \sum_{i=1}^n \beta_i \hat{y}^i\]

\[\alpha_i= \eta\{(1-\eta \lambda)^k \delta(\hat{y}^i (w^Tx^i+b<1))_{w,b->0}+(1-\eta \lambda)^{k-1} \delta(\hat{y}^i (w^Tx^i+b<1))_{w,b->1}+...\\+(1-\eta \lambda)^0 \delta(\hat{y}^i (w^Tx^i+b<1))_{w,b->k}\}\]

\[\beta_i= \eta\{\delta(\hat{y}^i (w^Tx^i+b<1))_{w,b->0}+ \delta(\hat{y}^i (w^Tx^i+b<1))_{w,b->1}+...\\+ \delta(\hat{y}^i (w^Tx^i+b<1))_{w,b->k}\}\]

这里要区别于感知机,因为在此处有正则项,\(\lambda > 0\),假如 \(\lambda=0\) 时,则 \(\alpha_i=\beta_i\)

此时:

\[f(x) = w^Tx+b= (\sum_{i=1}^n \alpha_i \hat{y}^i x^i)^{T}x+\sum_{i=1}^n \beta_i \hat{y}^i\]

\[f(x) = w^Tx+b= (\sum_{i=1}^n \alpha_i \hat{y}^i z^i)^{T}z+\sum_{i=1}^n \beta_i \hat{y}^i\]

\[f(x) = w^Tx+b= \sum_{i=1}^n \alpha_i \hat{y}^i \kappa (z^i,z)+\sum_{i=1}^n \beta_i \hat{y}^i\]

遵循统一的机器学习框架理解SVM的更多相关文章

  1. 遵循统一的机器学习框架理解高斯混合模型(GMM)

    遵循统一的机器学习框架理解高斯混合模型(GMM) 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了网络上诸多资料,特别是B站UPshuhua ...

  2. 机器学习之深入理解SVM

    在浏览本篇博客之前,最好先查看一下我写的还有一篇文章机器学习之初识SVM(点击可查阅哦).这样能够更好地为了结以下内容做铺垫! 支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机.线性支持向 ...

  3. 支持向量机通俗导论(理解SVM的三层境界)

    原文链接:http://blog.csdn.net/v_july_v/article/details/7624837 作者:July.pluskid :致谢:白石.JerryLead 出处:结构之法算 ...

  4. 支持向量机通俗导论(理解SVM的三层境界) by v_JULY_v

    支持向量机通俗导论(理解SVM的三层境界) 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去 ...

  5. [转] - Weiflow——微博机器学习框架

    Weiflow--微博机器学习框架 本文从开发效率(易用性).可扩展性.执行效率三个方面,介绍了微博机器学习框架Weiflow在微博的应用和最佳实践. 在上期<基于Spark的大规模机器学习在微 ...

  6. 支持向量机通俗导论(理解SVM的三层境界)(ZT)

    支持向量机通俗导论(理解SVM的三层境界) 原文:http://blog.csdn.net/v_JULY_v/article/details/7624837 作者:July .致谢:pluskid.白 ...

  7. 支持向量机通俗导论(理解SVM的三层境界)【非原创】

    支持向量机通俗导论(理解SVM的三层境界) 作者:July :致谢:pluskid.白石.JerryLead. 出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vecto ...

  8. Python开源机器学习框架:Scikit-learn六大功能,安装和运行Scikit-learn

    Python开源机器学习框架:Scikit-learn入门指南. Scikit-learn的六大功能 Scikit-learn的基本功能主要被分为六大部分:分类,回归,聚类,数据降维,模型选择和数据预 ...

  9. 支持向量机通俗导论(理解SVM的三层境界)[转]

    作者:July .致谢:pluskid.白石.JerryLead.说明:本文最初写于2012年6月,而后不断反反复复修改&优化,修改次数达上百次,最后修改于2016年11月.声明:本文于201 ...

随机推荐

  1. markdown 显示图片的三种方式

    插入网络图片 插入本地图片 base64 图片(data:image/png;base64,iVBORw0KG........) ps:base64编码的图片可以通过站长工具编码 https://to ...

  2. 49、[源码]-Spring容器创建-创建Bean准备

    49.[源码]-Spring容器创建-创建Bean准备

  3. 开发第一个maven示例

    mavenDemo目录如下: 在webapp下新建index.jsp文件 浏览器访问:http://localhost:8080/mavenDemo/index.jsp

  4. sql server update inner join on 的使用

    假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中 ...

  5. Xmind8安装

    现在新版安装极其简单.是deb安装包Xmind8安装小书匠 kindle 参照官网安装方法,在此记录下来,方便自己查找. 流程: 55ccaad0655d256ac5fb9fea8aa8569d.pn ...

  6. 洛谷P3119草鉴定

    题目 草鉴定,tarjan可以用来缩点,优化spfa的时间, 缩点之后就是一个\(DAG\)了,因此完全可以用来跑spfa上的最长路,然后枚举每条边,查看是否这条边的两个节点分别可以到达起点所在的强连 ...

  7. (7)打鸡儿教你Vue.js

    计算属性 computed <div id="app"> {{ message.split('').reverse().join('') }} </div> ...

  8. yii中异步验证和自定义方法验证

    一.异步验证,一般使用ajax验证唯一性较多 1.model开启验证[['mobile_id','ip'], 'unique','message'=>Yii::t('app','E10010') ...

  9. 阿里云服务器linux系统上 安装node环境

    今天将阿里云服务器重windows系统重置成了linux系统, 点击上面的实例名称,进入到 点击  更换系统盘   选择linux 的centos版本(操作前需要  停止实例) 弄好后,启动实例 下面 ...

  10. hive on tez

    hive运行模式 hive on mapreduce 离线计算(默认) hive on tez  YARN之上支持DAG作业的计算框架 hive on spark 内存计算 hive on tez T ...