机器学习——支持向量机

统计学习理论基础

经验风险最小化原则

1. 损失函数和风险函数
损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

常用的损失函数有以下几种:

(1)0-1损失函数(0-1 loss function)

                                                                 

(2)平方损失函数(quadratic loss function)

                                                               

(3)绝对损失函数(absolute loss function)

                                                              

(4)对数损失函数(logarithmic loss function)或对数似然损失函数(log-likelihood loss function)

                                                                 

损失函数值越小,模型就越好。由于模型的输入输出是随机变量,遵循联合分布,所以损失函数的期望是:

                                                     

这是理论上模型关于联合分布的期望损失,称为期望风险。

然而,联合分布是未知的,期望风险不能直接计算,可以近似为关于训练数据集的平均损失,也就是经验风险(empirical risk),即:

                                                              

根据大数定律,当样本容量趋于无穷时,经验风险趋于期望风险。但是现实中训练样本数目有限,用经验风险来估计期望风险往往并不理想,要对经验风险进行一定的矫正,也就是形成结构风险。

2. 经验风险最小化与结构风险最小化
2.1 经验风险最小化(empirical risk minimization,ERM)
经验风险最小化的策略认为,经验风险最小的模型是最优的模型:

                                                     机器学习——支持向量机_第1张图片

当样本容量足够大时,经验风险最小化能保证有很好的学习效果。比如,极大似然估计(就是经验风险最小化的一个例子,当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。

但当样本容量很小时,经验风险最小化容易导致“过拟合”。

2.2 结构风险最小化
结构风险最小化(structural minimization, SRM)是为了防止过拟合提出的策略。结构风险最小化等价于正则化(regularization)。结构风险在经验风险上加上表示模型复杂度的正则化项(regularizer)或罚项(penalty term)。结构风险的定义是:

                                                              机器学习——支持向量机_第2张图片

其中是模型复杂度的函数,是系数,用来权衡经验风险和模型复杂度。

结构风险最小化的策略认为结构风险最小的模型是最优模型:

                                                            机器学习——支持向量机_第3张图片

结构风险小需要经验风险和模型复杂度同时都小,结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。
 

函数集的学习性能与VC维

VC维度定义:

对于一个指示函数集,如果存在h个数据样本能够被函数集中的函数按所有可能的2^h 种形式分开 

则称函数集能够把h个数据样本打散(shatter)

函数集的VC维就是能打散的最大数据样本数目h。

若对任意数目的数据样本都有函数能将它们shatter,则函数集的VC维为无穷大。

VC维在机器学习中的意义还是很大的,它是统计学习理论用来衡量函数集性能的一种指标——VC维越大,则学习过程越复杂。

目前还没有通用的关于任意函数集VC维的计算理论,只知道一些特殊函数集的VC维。

可简单理解为模型的复杂度和灵活度,VC维越高的模型,能够表征的函数就越广泛,但由于数据的不足容易造成过拟合。
 

模型的复杂度与泛化能力

相关定义
训练误差: 模型在训练数据集上表现出的误差。
泛化误差: 模型在任意⼀个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似,这里可以理解成测试集。
欠拟合: 模型⽆法得到较低的训练误差。
过拟合: 模型的训练误差远小于它在测试数据集上的误差。

机器学习——支持向量机_第4张图片

通过上面的图,可以简单推出:
loss不下降,分多种情况:训练集不下降,验证集不下降,本文结合其它博客,做个小的总结:

训练损失与测试损失结果分析

  • 训练损失不断下降↓ \downarrow↓,测试损失不断下降↓ \downarrow↓,说明网络仍在学习;
  • 训练损失不断下降↓ \downarrow↓,测试损失趋于不变→ \rightarrow→,说明网络过拟合;
  • 训练损失趋于不变→ \rightarrow→,测试损失不断下降↓ \downarrow↓,说明数据集有问题;
  • 训练损失趋于不变→ \rightarrow→,测试损失趋于不变→ \rightarrow→,说明学习遇到瓶颈,需要减小学习率或批量数目;
  • 训练损失不断上升↑ \uparrow↑,测试损失不断上升↑ \uparrow↑,说明网络结构设计不当,训练超参数设置不当。

欠拟合和过拟合
“欠拟合”常常在模型学习能力较弱,而数据复杂度较高的情况出现,此时模型由于学习能力不足,无法学习到数据集中的“一般规律”,因而导致泛化能力弱。与之相反,“过拟合”常常在模型学习能力过强的情况中出现,此时的模型学习能力太强,以至于将训练集单个样本自身的特点都能捕捉到,并将其认为是“一般规律”,同样这种情况也会导致模型泛化能力下降。过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,而过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。在神经网络训练的过程中,欠拟合主要表现为输出结果的高偏差,而过拟合主要表现为输出结果的高方差。注意,过拟合并不总是一件坏事,因为过拟合很容易调整。 在深度学习领域, 最好的预测模型在训练数据上的表现往往比在保留(验证)数据上好得多。 最终,我们通常更关心验证误差,而不是训练误差和验证误差之间的差距。

欠拟合原因
根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。因此欠拟合问题可以通过增加特征维度来解决。

模型复杂度过低
特征量过少
欠拟合解决方案
欠拟合的解决方案有不少,下面几个仅供参考:

模型复杂化
对于同一个算法,通过添加其它层或者深度等来增加该算法的复杂度。例如回归模型添加更多的高次项,增加决策树的深度,增加神经网络的隐藏层数和隐藏单元数等,这个在机器学习算法里面用的很普遍,使模型泛化能力更强。
另外还可以弃用原来的算法,使用一个更加复杂的算法或模型。使用非线性模型,比如核SVM 、决策树、深度学习等模型(即使用非线性激活函数),例如用神经网络来替代线性回归,用随机森林来代替决策树。
增加更多的特征,使输入数据具有更强的表达能力
特征挖掘十分重要,尤其是具有强表达能力的特征,往往可以抵过大量的弱表达能力的特征。
特征的数量往往并非重点,质量才是,总之强表达能力的特征最重要。能否挖掘出强表达能力的特征,还在于对数据本身以及具体应用场景的深刻理解,往往依赖于经验。增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间。
调整参数和超参数
神经网络中:学习率、学习衰减率、隐藏层数、隐藏层的单元数、Adam优化算法中的β1和β2参数、batch_size数值等。其他算法中:随机森林的树数量,k-means中的cluster数,正则化参数λ等。
降低正则化约束
正则化约束是为了防止模型过拟合,如果模型压根不存在过拟合而是欠拟合了,那么就考虑是否降低正则化参数λ或者直接去除正则化项。减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数(正则化有很多种,可以适当减少正则化)
增加训练数据往往没有用
欠拟合往往是因为模型的学习能力不足,一味地增加数据,训练效果并不明显。这里需要注意一下。
过拟合原因
根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。

过拟合解决方案
降低模型复杂度
其实过拟合正好与欠拟合相反,既然特征维度过多,就应该降低特征维度,即降低模型复杂度。
为了降低复杂度,我们可以简单地移除层或者减少神经元的数量使得网络规模变小。与此同时,计算神经网络中不同层的输入和输出维度也十分重要。虽然移除层的数量或神经网络的规模并无通用的规定,但如果你的神经网络发生了过拟合,就尝试缩小它的规模。
数据扩增,即增加训练数据样本,使用更大的数据集训练模型。
数据增强
使用数据增强可以生成多幅相似图像。这可以帮助我们增加数据集规模从而减少过拟合。因为随着数据量的增加,模型无法过拟合所有样本,因此不得不进行泛化。计算机视觉领域通常的做法有:翻转、平移、旋转、缩放、改变亮度、添加噪声等等,音频数据增强方法有:增加噪音、增加混响、时移、改变音调和时间拉伸。
Dropout
该操作在深度学习里经常遇到,就是在学习过程中,丢掉一些神经元,即丢掉了一些特征维度,达到降低特征维度的效果。
Early stopping
过拟合很多时候与学习次数过多有关,早期停止模型的训练也可以组织过拟合,我们最终的目标是在测试集达到更高的准确度。

推广性的界

统计学习理论中关于经验风险与实际风险之间的重要结论,称之为推广性的界。显然,在观测数据的先验概率和类条件概率都无法准确获得的情况下,推广性的界对于学习机器的性能有着至关重要的影响。

    研究人员通过对大量的数据分析发现在经验风险最小化原则下的学习机器的期望风险实际上由两部分组成的,可以简单的表示为如下的形式:

                                                                    

上式中的第一部分是经验风险,第二部分我们称之为置信范围(或VC置信度)。置信界限是期望风险与经验风险差值的上界,它反映了模型复杂性与样本复杂性对泛化能力的影响。

进一步分析我们发现,当n/h较小时,置信范围就较大,用经验风险近似真实风险就有较大的误差,用经验风险最小化取得的最优解可能具有较差的推广性;如果样本数目较多,n/h较大,则置信范围就会很小,经验风险最凶啊花的最优解就接近真实的最优解。

另一方面,对于一个特定的问题,其样本数n是固定的,此时学习机器的VC维(即复杂性越高)越高,置信范围越大,导致真实风险与期望风险之间可能的差就越大,因此,在设计分类器时,我们不但要使经验风险最小化,还要使得VC维尽量小,从而缩小置信范围,使得期望风险最小。这也是为什么一般情况下选用过于复杂的分类器或神经网络往往得不到好的效果的原因。神经网络等方法之所以会出现过学习的情况,就是因为在有限样本情况下,如果网络或算法的设计不合理,就会导致虽然经验风险较小,但置信范围会很大,导致推广能力下降。
 

结构风险最小化归纳原则

结构风险最小化(structural risk minimization, SRM)是为了防止过拟合提出的策略。结构风险最小化等价于正则化(regularization)。

结构风险在经验风险上加上表示模型复杂度的正则化项(regularizer)或罚项(penalty term)。

结构风险的定义是:

                                                            机器学习——支持向量机_第5张图片

其中是模型复杂度的函数,是系数,用来权衡经验风险和模型复杂度。

结构风险最小化的策略认为结构风险最小的模型是最优模型:

                                                      机器学习——支持向量机_第6张图片

结构风险小需要经验风险和模型复杂度同时都小,结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。

比如,贝叶斯估计中的最大后验概率估计(maximum posterior probability estimation,MAP)就是结构风险最小化的一个例子

当模型是条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化就等价于最大后验概率估计。
 

支持向量机的基本原理和特点

支持向量机的基本原理

支持向量机的原理简单概括来说,就是在样本空间寻找最佳分类面即超平面,将训练样本分开。对于样本空间,可能存在多个划分超平面将两类训练样本分开,如下图所示的情况:

机器学习——支持向量机_第7张图片

那么从上图来看显然正中间的红色的超平面是我们所要找的超平面,因为受到训练样本数量上的限制以及噪声、误差等因素的干扰,该超平面受到的影响最小,即对分类结果最鲁棒。
在样本空间中,我们通过下述方程来描述超平面:

其中w=(w1,w2,……wd)为超平面的法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。
根据点到平面的距离公式:

可知,对于样本空间中的任意一点x到超平面的距离可以写为:

我们假设超平面能将训练样本正确分类,令以下关系成立:

机器学习——支持向量机_第8张图片
如上图所示,我们定义“支持向量”为能使上述不等关系中等号成立的点,即这些点分别位于平面wTx+b-1=0上和平面wTx+b+1=0上。至于两个平面为什么分别位于超平面wTx+b=0的上侧和下侧,通过matlab程序跑一下便知。
我们分别令三个平面x+y+z=0,x+y+z=1和x+y+z=-1,通过matlab有如下三维平面图象:

 机器学习——支持向量机_第9张图片

除此之外,我们定义在平面wTx+b=1上及其上侧的点的类别标签为“+1”类,在平面wTx+b=-1上及其下侧的点的类别标签为“-1”类。根据两平行平面之间的距离公式,如果存在两个平行平面Ax+By+Cz+D1=0,Ax+By+Cz+D2=0,则这两个平面之间的距离为

由此我们可以得到平面wTx+b=1和wTx+b=-1之间的距离为

此距离被称为“间隔”(两个异类支持向量到超平面的距离之和)。欲找到具有“最大间隔”的划分超平面,即寻找满足约束条件

的参数w和b,使得γ最大化。上述问题即可转化成如下数学模型:

机器学习——支持向量机_第10张图片

该数学模型的第二个式子是超平面能进行正确划分的约束条件。如果样本数据集能正确划分,不论原来样本数据的标签是+1还是-1,yi(wTxi+b)的值均会是大于等于1的正数。为了最大化间隔,我们通常将上述问题转为其对立面,即要想最大化2/||w||就等价于最小化||w||2。于是上述数学模型可以重写为

机器学习——支持向量机_第11张图片

以上就是支持向量机的基本模型。
我们发现上述模型是一个凸二次规划问题

支持向量机的特点

特点:
1.支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
2.SVM的目标是对特征空间划分得到最优超平面,SVM方法核心是最大化分类边界。
3.SVM方法的理论基础是非线性映射,SVM利用内积核函数代替向高维空间的非线性映射。
4.SVM是一种有坚实理论基础的新颖的适用小样本学习方法。它基本上不涉及概率测度及大数定律等,也简化了通常的分类和回归等问题。
5.SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上
避免了“维数灾难”。
6.少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除"大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的"鲁棒性"。这种鲁棒性主要体现在:①增、删非支持向量样本对模型没有影响;②支持向量样本集具有一定的鲁棒性;③有些成功的应用中,SVM方法对核的选取不敏感
7.SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解
8.SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此,用户必须提供其他参数,如使用核函数类型和引入松弛变量等。9.SVM在小样本训练集上能够得到比其它算法好很多的结果。SVM优化目标是结构化风险最小,而不是经验风险最小,避免了过拟合问题,通过margin的概念,得到对数据分布的结构化描述,减低了对数据规模和数据分布的要求,有优秀的泛化能力。
10.它是一个凸优化问题,因此局部最优解一定是全局最优解的优点。

线性SVM

线性二分类器的最优超平面

机器学习——支持向量机_第12张图片

广义最优超平面

机器学习——支持向量机_第13张图片

机器学习——支持向量机_第14张图片

线性SVM小结

机器学习——支持向量机_第15张图片

 

你可能感兴趣的:(机器学习,机器学习,支持向量机,人工智能)