数据挖掘十大算法翻译——3SVM

来源:互联网 发布:甲子网络域名 编辑:程序博客网 时间:2024/05/18 07:29

介绍

  在今天的机器学习应用之中,支持向量机(svm)是一定值得尝试的。在所有著名的算法中,它提供了最健壮和准确的方法。它有出名的理论基础,只需要为数不多的训练样本并且对于维数不敏感。除此之外,训练SVM的有效方法在正在飞速发展。
  在一个二类分类问题中,SVM的目标是找到能够区分训练数据中的两个类的最好的分类函数。“最好”这个标准可以通过集合来进行认知。对于一个线性可分的数据集合,一个线性的分类器函数符合穿过两个类中间,把点分为两个类的超平面f(x)。一旦这个函数被确定了新的数据实例x_n能够通过函数f(x_n)的符号来进行判别,x_n通过f(x_n)>0来判别它的类别。
  因为有很多这样的线性超平面,SVM额外保证了这个超平面是通过最大化两个类之间的距离来得到的。直观的,这个边被定义为空间的量,或者被超平面所分开的两个类支架的间隔。几何上,这个变与距离超平面最近的点有关。有这样的几何学的定义允许我们探寻如何最大化边距,使得即使这里有无限多的超平面,但是只有SVM的解只有几个。
  SVM之所以要知道最大的边距的超平面是因为这样的超平面提供了良好的泛化能力。这使得这个超平面不仅对于训练数据有效,而却预留了足够的空间给将来需要测试的数据。为了确保最大边距的超平面能够被实际的找到,一个SVM分类器事实上为了最大化有w和b代表的函数:
        这里写图片描述
  这里的t是训练样本的数量,α_i,i=1…t,是非负的数,这样可以保证L_p的倒数代表了α_i是0。α_i是拉格朗日乘子,L_p被称为拉格朗日算符(Lagrangian)。这个问题中向量w和常数b定义了超平面。
  关于这个支持向量机的基本公式,这有一些重要的问题和相关的扩展。我们列举了这些问题和扩展:
  1. 我们可以通过坚实的理论基础了解SVM的含义吗?
  2. 我们可以扩展SVM的公式来处理一些情况让我们能够运行错误存在,以应对即使最好的超平面都必须接受训练数据中的错误吗?
  3. 我们能扩展SVM的公式,使他在非线性的情况下也能适用吗?
  4. 我们能够扩展SVM使得它不仅能够处理分类问题,也可以解决数值的预测或者给一个实例是正的类的成员的可能性排名吗?
  5. 我们能放大算法的规模使得他可以找到数以千计的实例的超平面吗?

问题1我们可以通过坚实的理论基础了解SVM的含义吗?

  在这个问题中存在着几个重要的理论结果。
  诸如SVM的学习机,可以被定义为基于参数α的函数集。不同的函数集合有不同的学习能力,这个学习能力可以用参数h表示,它代表VC维。VC维衡量了函数能以0的错误率完美的区分所有的数据点所需要的最大的训练实例。可以证明在未来数据的实际错误是被两个术语所限制的。第一个术语是训练错误,第二术语是与VC维h的开方成比例。这样我们要尽可能的减小h,这样我们就可以减少未来的错误。事实上,通过SVM得到的最大化边缘的函数就是一个这样的函数。这样,理论上,SVM有坚实的理论基础。

问题2 我们可以扩展SVM的公式来处理一些情况让我们能够运行错误存在,以应对即使最好的超平面都必须接受训练数据中的错误吗?

  为了回答这个问题,首先想象有几个不同类的点跨越了中间。这些点代表了即使在最大间隔超平面还是存在的训练错误。“软平面”的思想扩展了SVM的算法使得它能够容许在分类的时候有一些噪声。特别的,引入了松弛变量ξ_i来负责评估违反分类函数函数f(x_i)的点的数量。ξ_i有几何学上的解释:从分类错误的数据到超平面的距离。这样,最后的引入了松弛变了的损失函数能够用于修正原始的客观最小化函数。

问题3我们能扩展SVM的公式,使他在非线性的情况下也能适用吗?

  通过观察目标函数,我们可以得到这个问题的答案。在目标函数中,唯一使用到向量x_i的情况是点乘。也就说,如果我们把点乘x_i•x_j扩展,使用函数映射Φ(x_i)代表在另一个空间H(甚至是一个无线维的空间)中的x_i,这个方程还是不变。在一样的方程中国,我们的点乘x_i•x_j转化为了Φ(x_i)•Φ(x_j),这被称为核函数。
核函数能够用于定义一个输入之间的多样的非线性关系。举例而言,除了线性核函数之外,你可以定义二次或者指数的核函数。近年来的很多研究就是关于SVM分类中不同的核函数和很多其他的统计测试。我们也可以把上面描述的二分类的SVM扩展为多分类的分类器。通过使用一个类作为正类,其他类作为负类,重复的使用分类器就可以达到这个目的(这个方法就是著名的 one-against-all 方法)。

问题4 我们能够扩展SVM使得它不仅能够处理分类问题,也可以解决数值的预测或者给一个实例是正的类的成员的可能性排名吗?

  SVM可以很容易的扩展到数值计算。这里我们讨论两个不同的扩展。第一个是扩展SVM从而进行回归分析,回归分析的目的是城市一个符合目标函数的线性函数。关于错误模型的选择需要仔细的考虑。在支持向量回归机(SVR)中,错误的定义是0,如果预测的值和实际的值在ξ的范围内。否则,ξ不敏感的错误就会线性增长。支持向量可以通过拉格朗日算符的最小化来求取。支持向量回归机的一个优点就是对于外界点不明感。
另外的一个扩展就是给元素排名而不是产生一个独立的元素的分类。排名可以简化为比较一对实例。如果这个对是正确的排序,那么就得到a+1的评价,否则就得到-1的评价。这样把这个任务简化为SVM学习就是为每个排名的对构造新的实例,然后对于新的训练数据使用超平面进行学习。
这个方法可以应用到很多排名是重要的领域,比如文档的信息检索区域的排名。

问题5我们能放大算法的规模使得他可以找到数以千计的实例的超平面吗?

  SVM的最开始的缺点之一就是计算性能比较差。然而这个问题的解决已经取得了巨大的成功。其中的一个方法就是把大的最优问题转化为一系列小的问题,这些小的问题里面只包含了少数谨慎提取出来的变量,以保证最优问题能够有效的解决。这个过程一直迭代知道所有的分解的最优问题都能够成功的解决。一个更新的方法就是把SVM学习的问题看出寻找到一些实例的近似最小包围球。
这些实例在映射到N维空间的时候,代表了一个能够用于构建近似最小包围球的核心集合。通过这些核心集合来解决SVM的学习问题能够快速的得到一个合适的结果。举例而言,这样构造的核心向量机(core-vector machine)能够在一秒内学习一个有一百万数据的SVM。

0 0