机器学习09支持向量机

支持向量机(Support Vector Machines)

在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法 A 还是学习算法 B,而更重要的是,

应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平。

如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,诸如此类的事。

还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine)。

与逻辑回归和神经网络相比,支持向量机,或者简称 SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。


与Logistics回归成本函数的不同:

1、删去常量 1/m ;

2、Logistic:A+λ×B,SVM: C×A+B。如果给定λ一个非常大的值,意味着给予 B 更大的权重。而这里,就对应于将 C 设定为非常小的值,那么,相应的将会给 B 比给 A 更大的权重。因此,这只是一种不同的方式来控制这种权衡或者一种不同的方法, 即用参数来决定是更关心第一项的优化, 还是更关心第二项的优化。当然你也可以把这里的参数 C 考虑成 1/λ,同 1/λ 所扮演的角色相同。

3、Logistic输出概率,SVM直接预测y的值为0还是1。



 成本函数:




接下来会考虑一个特例:将常数 C 设置成一个非常大的值。

比如假设 C 的值为100000 或者其它非常大的数,然后来观察支持向量机会给出什么结果?

如果 C 非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。即不希望出现分错的点,相当于过拟合。

此时,两类点完全分类正确。黑线有更大的距离,这个距离叫做间距 (margin)。 

当画出这两条额外的蓝线,看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距, 而这是支持向量机具有鲁棒性的原因, 因为它努力用一个最大间距来分离样本。 因此支持向量机有时被称为大间距分类器,。



将这个大间距分类器中的正则化因子常数 C 设置的非常大,我记得我将其设置为了 100000,因此对这样的一个数据集,也许我们将选择这样的决策界,从而最大间距地分离开正样本和负样本。 那么在让代价函数最小化的过程中,我们希望找出在 y=1 和 y=0 两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这 样的参数,则我们的最小化问题便转变成: 



事实上, 支持向量机现在要比这个大间距分类器所体现得更成熟。

 尤其是当你使用大间距分类器的时候,你的学习算法会受异常点 (outlier) 的影响。


在这里,如果你加了这个样本,为了将样本用最大间距分开,也许我最终会得到这条粉色的线,仅仅基于一个异常值就将决策界从这条黑线变到这条粉线,这实在是不明智的。而如果正则化参数 C,设置的非常大,这事实上正是支持向量机将会做的。

但是如果 C 设置的小一点,则你最终会得到这条黑线。

因此,大间距分类器的描述,仅仅是从直观上给出了正则化参数 C 非常大的情形,同时,要提醒你 C 的作用类似于 1/λ,λ是我们之前使用过的正则化参数。这只是C 非常大的情形,或者等价地λ非常小的情形。你最终会得到类似粉线这样的决策界,但是实际上应用支持向量机的时候,当 C 不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当你的数据不是线性可分的时候,支持向量机也可以给出好的结果。 


回顾 C=1/λ,因此: 
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差。 
C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差。 


这节课给出了一些关于为什么支持向量机被看做大间距分类器的直观理解。它用最大间距将样本区分开,尽管从技术上讲,这只有当参数 C 是非常大的时候是真的,但是它对于理解支持向量机是有益的。 


—————————————————————————————————————————————————————————


 Mathematics Behind Large Margin Classification






—————————————————————————————————————————————————————————————————————————————


核函数

回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题:


为了获得上图所示的判定边界,我们的模型可能是:

可以用一系列的新的特征 f 来替换模型中的每一项。例如令:

得到 hθ(x)=f1+f2+...+fn。


然而,除了对原有的特征进行组合以外,有没有更好的方法来构造 f1,f2,f3?

可以利用核函数来计算出新的特征。




这里是一个高斯核函数(Gaussian Kernel)。 

注:这个函数与正态分布没什么实际上的关系,只是看上去像而已。






如果使用高斯核函数,那么在使用之前进行特征缩放是非常必要的。 

另外, 支持向量机也可以不使用核函数, 不使用核函数又称为线性核函数 (linear kernel)。 

当不采用非常复杂的函数, 或者训练集特征非常多而实例非常少的时候, 可以采用这种不带核函数的支持向量机。


 
支持向量机的两个参数 C 和 σ 的影响: 
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差; 
C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差; 
σ 较大时,导致高方差; 
σ 较小时,导致高偏差。


—————————————————————————————————————————————————————————


使用支持向量机

强烈建议使用高优化软件库中的一个, 而不是尝试自己落实一些数据。

有许多好的软件库,我正好用得最多的两个是 liblinear 和 libsvm。


高斯核函数之外我们还有其他一些选择,如: 

多项式核函数(Polynomial Kernel) 
字符串核函数(String kernel) 
卡方核函数( chi-square kernel) 
直方图交集核函数(histogram intersection kernel) 
等等...  

这些核函数的目标也都是根据训练集和地标之间的距离来构建新特征。

这些核函数需要满足 Mercer's 定理,才能被支持向量机的优化软件正确处理。


多类分类问题 

假设我们利用之前介绍的一对多方法来解决一个多类分类问题。 如果一共有 k 个类, 则我们需要 k 个模型,以及 k 个参数向量 θ。我们同样也可以训练 k 个支持向量机来解决多类分类问题。 但是大多数支持向量机软件包都有内置的多类分类功能, 我们只要直接使用即可。  


尽管你不去写你自己的 SVM(支持向量机)的优化软件,但是你也需要做几件事: 
1、是提出参数 C 的选择。即误差/方差在这方面的性质。 
2、你也需要选择内核参数或你想要使用的相似函数,其中一个选择是:选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。因此,如果有人说他使用了线性核的 SVM(支持向量机),这就意味这他使用了不带有核函数的 SVM(支持向量机)。 


Logistics和SVM该如何选择:

下面是一些普遍使用的准则: 

m 为训练样本数,n 为特征数。 

(1)如果相较于 m 而言,n 要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。 

(2)如果 n 较小,而且 m 大小中等,例如 n 在 1-1000 之间,而 m 在 10-10000 之间,使用高斯核函数的支持向量机。 

(3)如果 n 较小,而 m 较大,例如 n 在 1-1000 之间,而 m 大于 50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。 


逻辑回归和不带核函数的支持向量机它们都是非常相似的算法, 不管是逻辑回归还是不带核函数的 SVM,通常都会做相似的事情,并给出相似的结果。


值得一提的是, 神经网络在以上三种情况下都可能会有较好的表现, 但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。  


通常更加重要的是:你有多少数据,你有多熟练是否擅长做误差分析和排除学习算法, 指出如何设定新的特征变量和找出其他能决定你学习算法的变量等方面,通常这些方面会比你使用逻辑回归还是 SVM 这方面更加重要。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学笔记2

数学笔记2——导数2(求导法则和高阶导数)和、差、积、商求导法则设uu(x),vv(x)都可导,则:(Cu)’ Cu’, C是常数(u v)’ u’ v’(uv)’ u’ v’(u/v)’ (u’v – uv’) / v21、2不解释,下面给出3、4的推导过程乘法法则的推导过乘法法则…

机器学习10聚类

无监督学习 在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中, 然后让它找这个数据的内在结构。 我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成两个分开的点集(称为簇)&am…

关联分析(Association analysis)

关联分析(Association analysis) 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules:{Diapers}–>{Beer}说明两者之间有很强的关系,购买Diapers的消费者通常会购买Beer。 除…

机器学习11主成分分析

降维(Dimensionality Reduction) : 一、 降维目的: 目的一:数据压缩(Data Compression) 目的二:数据可视化(Visualization) 二、 主成分分析(PCA) 主成分…

使用Apriori进行关联分析(一)

使用Apriori进行关联分析(一)大型超市有海量交易数据,我们可以通过聚类算法寻找购买相似物品的人群,从而为特定人群提供更具个性化的服务。但是对于超市来讲,更有价值的是如何找出商品的隐藏关联,从而打包促…

主成分分析法 (PCA) 用于数据可视化实验 -- Matlab版

第一步:下载数据集。 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits 第二步:改变数据格式。 注:此数据集的各特征值均为像素,即属于同一量纲,故无需归一化步骤。 原格式为&a…

机器学习12推荐系统

推荐系统(Recommender Systems) 推荐系统根据浏览用户过去买过什么书,或过去评价过什么电影来判断并推荐新产品给用户。 这些系统会为像亚马逊和网飞这样的公司带来很大一部分收入。 因此,对推荐系统性能的改善,将对这些企业的有实质性和…

使用Apriori进行关联分析(二)

使用Apriori进行关联分析(二)书接上文(使用Apriori进行关联分析(一)),介绍如何挖掘关联规则。发现关联规则我们的目标是通过频繁项集挖掘到隐藏的关联规则。所谓关联规则,指通过某个…

数学笔记3——导数3(隐函数的导数)

数学笔记3——导数3(隐函数的导数)幂函数的扩展形式f(x) xn的导数:f’(x) nxn-1,n是整数,该公式对f(x) xm/n, m,n 是整数同样适用。推导过程:什么是隐函数引自知乎:“如果方程F(x,y)0能确定y…

机器学习13大规模数据集

大型数据集的学习(Learning With Large Datasets) 如果我们有一个低方差的模型, 增加数据集的规模可以帮助你获得更好的结果。 我们应该怎样应对一个有 100 万条记录的训练集? 以线性回归模型为例,每一次梯度下降…

Java07多线程

14 多线程 操作系统的多任务(multitasking):在同一时刻运行多个程序的能力。 多线程在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务。 通常,每一个任务称为一个线程(tread)&…

MySQL字段拼接Concat

有时候,从数据库中拿出的数据并不是我们想要的格式,比如,有以下的vendors表 如果,想以 name (location)的格式展现出来,那么就要用到MySQL的Concat了。 Concat()拼接串,即把多个串连接起来形成一个较长的串…

使用pycharm调用模块后字体变灰 是什么原因呢?

使用pycharm调用模块后字体变灰 是什么原因呢?点击小灯泡提示出现以下内容:This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-l…

操作系统01概述

第一章 概论 《Operating System Internals and Design Principles》 《Applied Operating System Concepts》 操作系统——裸机上的第一层软件,它是对硬件系统功能的首次扩充,填补人与机器之间的鸿沟。 1.1 操作系统与计算机同在 1.2 对操作系统的…

Linux re

正则表达式并不是一个工具程序,而是一个字符串处理的标准依据,如果想要以正则表达式的方式处理字符串,就得使用支持正则表达式的工具,例如grep、vi、sed、asw等。 注意:ls不支持正则表达式。 grep 正则表达式: 注意gr…

操作系统02进程管理Process_Description_and_Control

作业的基本概念:用户再一次计算过程中或一次事务处理过程中,要求计算机系统所做的工作的集合。 包含多个程序、多个数据、作业控制说明书 系统调用时操作系统提供给编程人员的唯一接口。 1、文件操作类; 2、进程控制类; 3、资…

蓝桥杯 方格填数(全排列+图形补齐)

方格填数 如下的10个格子 填入0~9的数字,同一数字不能重复填。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数。注意:你提交的应该是一个…

操作系统03进程管理Process_Scheduling

2 Process Scheduling >Type of scheduling >Scheduling Criteria (准则) >Scheduling Algorithm >Real-Time Scheduling (嵌入式系统) 2.1 Learning Objectives By the end of this lecture you should be able to Explain what is Response Time 响应时间-…

skimage库需要依赖 numpy+mkl 和scipy

skimage库需要依赖 numpymkl 和scipy1、打开运行,输入cmd回车,输入python回车,查看python版本2、在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 中,根据自己python版本下载需要的包 (因为我的是python 2.7.13 …

操作系统04进程同步与通信

4.1 进程间的相互作用 4.1.1 进程间的联系资源共享关系相互合作关系临界资源应互斥访问。临界区:不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它们进行访问。把在每个进程中访问临界资源的那段代码称为临界资源区。显然&#x…