Stanford机器学习课程笔记——SVM

Stanford机器学习课程笔记——SVM

前面已经学习过SVM,写了几片博文,如下:

入门SVM:http://blog.csdn.net/puqutogether/article/details/39894835

SVM中的线性不可分情况:http://blog.csdn.net/puqutogether/article/details/41309745

SVM中的多类分类问题:http://blog.csdn.net/puqutogether/article/details/41679605

如何使用sklearn中的SVM:http://blog.csdn.net/puqutogether/article/details/43194159

这一篇就来把上面学习的过程融合成一个整体。

1. 由LR引出SVM

SVM分类器不是凭空而出的,它是和我们前面讲到的LR回归模型有关系的。或者说就是从LR回归模型中的代价函数改进而来的。我们知道LR回归模型的代价函数J定义为:

这个代价函数中是依据log函数建立的,而log函数曲线发现,如果thetaT*x>=1或者thetaT*x<=-1,log函数值是不为0的,而我们需要的理想情况是当thetaT*x>>1或者thetaT*x<<-1的时候,函数值要等于0,代价函数值要等于0,误差也要等于0.所以有了上图中玫红色的理想cost函数,它是一个分段函数的形式。如下:

那么我们就需要在LR的代价函数中修改形式,如下:

第一个公式是LR的代价函数,第二个是SVM的代价函数。除了log函数被cost函数替代之外,后面的正则项也稍微变化,1/m被约去了,lambda被提到前面成为了C,这个C一般要设置地很大,这样子的SVM才能够找到最大间隔的超平面。

既然C要设置地很大,那么SVM的代价函数中的第一项的惩罚就很高,在转换过程中,当thetaT*x>=1或者thetaT*x<=-1的时候,我们可以将其忽略。这样,转换之后的SVM的目标函数就是:

具体转换的过程,在我之前的入门SVM一篇博文中已经涉及,这里主要将讲思路。

2. 解SVM模型的目标函数

解上面的目标函数,我们就需要使用拉格朗日函数。如下:

对于这个函数,我们使用对偶问题和KKT条件来求解,进一步转换为:

(这个转换过程是通过拉格朗日函数对w和b求偏导,令偏导等于0,之后代入到上面拉格朗日函数中得到的。。。)

发现这个里面只有一个参数a,那么我们就直接求解这个参数就可以了,而SVM模型中的w和b都是可以通过a来表示得到的,如下:

而求解参数a,我们使用的是SMO算法,这个算法很巧妙,可以快速求得SVM模型中的参数a,其基本思想如下:

SMO的工作原理是:每次循环中选择两个alpha进行优化处理,一旦找到一对合适的alpha,那么就增大其中一个,同时减小另一个。选择的alpha要满足在间隔边界之外的条件,而且还没有进行过区间化处理或者不再边界上。

额,确实比较难懂。。。我也就没有太深究这块儿,有时间还是可以深入进去理解的。

这样我们就可以学习到一个SVM分类模型了。

3. 线性不可分情况

线性不可分的情况,我在前面的博文中也讲到过,这里我们只说一下其中最核心的思想?

如何解决SVM的线性不可分问题:引入核函数;

核函数的基本做法是什么?核函数就是把样本原始的线性不可分的特征隐式映射到一个高维空间中,使得样本的相关特征被分开,这样在新空间中样本的特征是可分的。

核函数中最关键的一步是什么?就是核函数是隐式映射到高维空间的,在SVM中要做样本的内积运算,一般做法就是先把样本显式映射到高维空间,然后再做内积运算,但是这样子会造成维数灾难。而核函数是隐式映射,是先在核函数中求内积的,这个时候内积就是在输入空间中求的,不需要写出显示映射之后的结果,也就不怕维数灾难了。

4.  SVM扩展到多类分类问题

这部分也参考我们之前的博文,里面给出了几个扩展改进的思路。其中one-one 和 one-other也常用到的两种。

参考:

http://blog.csdn.net/puqutogether/article/details/39894835

http://blog.csdn.net/puqutogether/article/details/41309745

http://blog.csdn.net/puqutogether/article/details/41679605

http://blog.csdn.net/puqutogether/article/details/43194159

http://blog.csdn.net/abcjennifer/article/details/7849812

http://blog.csdn.net/v_july_v/article/details/7624837

http://www.cnblogs.com/vivounicorn/archive/2010/12/13/1904720.html

时间: 2024-10-28 08:52:02

Stanford机器学习课程笔记——SVM的相关文章

Stanford机器学习课程笔记——神经网络的表示

Stanford机器学习课程笔记--神经网络的表示 1. 为什么要引入神经网络 其实这个问题等价与神经网络和之前的回归模型有什么区别,如果你没有学过其他机器学习算法的话.这个问题可以通过一个例子来说明:如果样本都是60*60的图像,那么每个样本的特征维数都是3600个,使用前面讲的线性回归模型,那么需要建立的参数个数就有3600的:如果是非线性回归模型,还要考虑高次项的情况,需要求解的参数就更加多了.此时的回归模型将会变得异常复杂,故我们需要其余比较高效的模型来解决这些实际的问题.这个时候我们就

Stanford机器学习课程笔记——单变量线性回归和梯度下降法

Stanford机器学习课程笔记--单变量线性回归和梯度下降法 1. 问题引入 单变量线性回归就是我们通常说的线性模型,而且其中只有一个自变量x,一个因变量y的那种最简单直接的模型.模型的数学表达式为y=ax+b那种,形式上比较简单.Stanford的机器学习课程引入这个问题也想让我们亲近一下machine learning这个领域吧~吴恩达大神通过一个房屋交易的问题背景,带领我们理解Linear regression with one variable.如下: 不要看这个问题简答,大神就是大神

Stanford机器学习课程笔记4-Kmeans与高斯混合模型

这一部分属于无监督学习的内容,无监督学习内容主要包括:Kmeans聚类算法.高斯混合模型及EM算法.Factor Analysis.PCA.ICA等.本文是Kmeans聚类算法.高斯混合模型的笔记,EM算法是适用于存在latent/hidden变量的通用算法,高斯混合模型仅仅是EM算法的一种特殊情况,关于EM算法的推到参见Andrew Ng讲义.由于公式太多,最近时间又忙实习的事就简单写一些,回头看时还得参考Ng的笔记和自己的打印Notes上的笔记,这里的程序对理解可能能提供另外的一些帮助. K

Stanford机器学习课程笔记(1) Supervised Learning and Unsupervised Learning

最近跟完了Andrew Ng的Machine Learning前三周的课,主要讲解了机器学习中的线性回归(Linear Regression)和逻辑回归(Logistic Regression)模型.在这里做一下记录. 另外推荐一本统计学习的书,<统计学习方法>李航,书短小精悍,才200多页,但是内容基本上覆盖了机器学习中的理论基础. 笔记<1> 主要了解一下监督学习和无监督学习 机器学习:是关于计算机基于数据 构建概率统计模型 并运用模型对数据进行预测与分析的一门学科. 机器学习

Stanford机器学习课程笔记2-高斯判别分析与朴素贝叶斯

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 判别学习算法和生成学习算法 高斯判别分析(Gaussian Discriminant Analysis) 朴素贝叶斯算法(Naive Bayesian) 拉普拉斯平滑(Laplace smoothing) 判别学习算法和生成学习算法 判别学习算法:直接学习p(y|x),即直接通过输入特征空间x去确定目标类型{0,1},比如Logistic Regression和Linear Regression以及感知学

Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录了Andrew Ng课程第五章应用机器学习的建议,主要介绍了在测试新数据出现较大误差该怎么处理,这期间讲到了数据集的分类,偏差,方差,学习曲线等概念,帮

Andrew Ng机器学习课程笔记(二)之逻辑回归

Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录了Andrew Ng课程第二章逻辑回归的笔记,主要介绍了梯度下降法,逻辑回归的损失函数,多类别分类等等 简要介绍:逻辑回归算法是分类算法,我们将它作为分类算法使用.

Andrew Ng机器学习课程笔记(四)之神经网络

Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录Andrew Ng课程第四章和第五章的神经网络,主要介绍前向传播算法,反向传播算法,神经网络的多类分类,梯度校验,参数随机初始化,参数的更新等等 1.神经网络概述

斯坦福CS229机器学习课程笔记六:学习理论、模型选择与正则化

稍微了解有监督机器学习的人都会知道,我们先通过训练集训练出模型,然后在测试集上测试模型效果,最后在未知的数据集上部署算法.然而,我们的目标是希望算法在未知的数据集上有很好的分类效果(即最低的泛化误差),为什么训练误差最小的模型对控制泛化误差也会有效呢?这一节关于学习理论的知识就是让大家知其然也知其所以然. 学习理论 1.empirical risk minimization(经验风险最小化) 假设有m个样本的训练集,并且每个样本都是相互独立地从概率分布D中生成的.对于假设h,定义training