`
lovejuan1314
  • 浏览: 341901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SVM学习<一>

阅读更多
摘录自:http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html

<一> SVM简介

支持向量机是Cortes和Vapnik于1995年首先提出来的,它再解决小样本,非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。

支持向量急方法是简历再统计学习理论的VC维理论合结构风险最小原理的基础尚的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)合学习能力(即五错误地识别任意样本地能力)之间寻求最佳这种,以期获得最好的泛化能力。

统计机器学习之所以区别于传统机器学习,就在于统计机器学习能够精确的给出学习效果,能够解答需要的样本数等一系列问题。与统计机器学习的精密思维相比,传统的机器学习基本上属于摸着石头过河,传统的机器学习方法构造分类系统完全成了一种技巧,一个人做的结果可能很好,另一个人差不多的方法却很差,缺乏指导原则。

所谓VC维是对函数类的一种度量,可以简单的理解维问题的复杂成都,VC维越高,一个问题就越复杂。SVM解决问题的时候和样本的维数是无关的。

机器学习本质就是一种对问题模型的逼近,真实模型一定是不知道的,所以我们选择的假设与问题真实解之间究竟有多大差距,这个与问题真实解之间的误差就叫做风险。更严格的说,误差的累积叫做风险。我们选择一个假设或者更直观点,我们得到了一个分类器以后,真实误差无从得知,但我们可以用某些可以掌握的量来逼近它。最直观的想法就是适用分类器在样本数据上的分类的结果与真实结果之间的差值来表示。

这个差值叫做经验风险Remp(w)。以前的机器学习方法都把经验风险最小化作为努力的目标,但后来发现很多分类函数能够在样本集上轻易达到100%的正确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或泛化能力差)。此时的情况便是选择了一个足够复杂的分类函数(它的VC维很高),能够精确的记住每一个样本,但对样本之外的数据一律分类错误。回头看看经验风险最小化原则我们就会发现,此原则适用的大前提是经验风险要确实能够逼近真实风险才行(行话叫一致),但实际上能逼近么?答案是不能,因为样本数相对于现实世界要分类的文本数来说简直九牛一毛,经验风险最小化原则只在这占很小比例的样本上做到没有误差,当然不能保证在更大比例的真实文本上也没有误差。

统计学习因此而引入了泛化误差界的概念,就是指真实风险应该由两部分内容刻画,一是经验风险,代表了分类器在给定样本上的误差;二是置信风险,代表了我们在多大程度上可以信任分类器在未知文本上分类的结果。很显然,第二部分是没有办法精确计算的,因此只能给出一个估计的区间,也使得整个误差只能计算上界,而无法计算准确的值(所以叫做泛化误差界,而不叫泛化误差)。

置信风险与两个量有关,一是样本数量,显然给定的样本数量越大,我们的学习结果越有可能正确,此时置信风险越小;二是分类函数的VC维,显然VC维越大,推广能力越差,置信风险会变大。

泛化误差界的公式为:

R(w)≤Remp(w)+Ф(n/h)

公式中R(w)就是真实风险,Remp(w)就是经验风险,Ф(n/h)就是置信风险。统计学习的目标从经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。

SVM正是这样一种努力最小化结构风险的算法。

SVM其他的特点就比较容易理解了。

小样本,并不是说样本的绝对数量少(实际上,对任何算法来说,更多的样本几乎总是能带来更好的效果),而是说与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。

非线性,是指SVM擅长应付样本数据线性不可分的情况,主要通过松弛变量(也有人叫惩罚变量)和核函数技术来实现,这一部分是SVM的精髓,以后会详细讨论。多说一句,关于文本分类这个问题究竟是不是线性可分的,尚没有定论,因此不能简单的认为它是线性可分的而作简化处理,在水落石出之前,只好先当它是线性不可分的(反正线性可分也不过是线性不可分的一种特例而已,我们向来不怕方法过于通用)。

高维模式识别是指样本维数很高,例如文本的向量表示,如果没有经过另一系列文章(《文本分类入门》)中提到过的降维处理,出现几万维的情况很正常,其他算法基本就没有能力应付了,SVM却可以,主要是因为SVM 产生的分类器很简洁,用到的样本信息很少(仅仅用到那些称之为“支持向量”的样本,此为后话),使得即使样本维数很高,也不会给存储和计算带来大麻烦。(相对照而言,kNN算法在分类时就要用到所有样本,样本数巨大,每个样本维数再一高,这日子就没法过了……)。

下一节开始正式讨论SVM。别嫌我说得太详细哦。
分享到:
评论

相关推荐

    一种基于L2-SVM 的多视角核心向量机

    &lt;p&gt;核化一类硬划分SVDD、一/二类L2-SVM、L2 支持向量回归和Ranking SVM均已被证明是中心约束最小包含球. 这里将多视角学习引入核化L2-SVM, 提出核化两类多视角L2-SVM (Multi-view L2-SVM), 并证明该核化两类Multi-...

    支持向量机SVM理论基础和应用

    LIBSVM的使用涉及到数据格式的转换,训练数据和测试数据需要按照特定的格式,如&lt;label&gt; &lt;index1&gt;:&lt;value1&gt; &lt;index2&gt;:&lt;value2&gt; ...,其中&lt;label&gt;是目标值,&lt;index&gt;和&lt;value&gt;是特征及其对应的值。软件提供了训练工具...

    C++机器学习笔记.md

    #include&lt;svm.h&gt; int main() { svm_problem prob; svm_parameter param; // 初始化 prob 和 param // svm_model* model = svm_train(&prob, &param); // 使用 model 进行预测 // svm_free_and_destroy_model...

    机器学习SVM学习线路及资料

    在机器学习领域,支持向量机(Support Vector Machine,简称SVM)是一种广泛应用的监督学习模型,它具有强大的分类和回归能力。SVM的核心思想是找到一个最优超平面,使得不同类别的样本被最大程度地分开。下面我们将...

    java LivSVM使用的说明文档

    LibSVM,全称Library for Support Vector Machines,是由台湾大学的Chih-Chung Chang和Chih-Jen Lin开发的一款强大的机器学习库,主要用于支持向量机(SVM)的训练和预测。在Java环境下,我们可以使用Java LibSVM来...

    libsvm中文版本的描述(readme)

    4. 配对的&lt;index&gt;:&lt;value&gt;表示一个特征(属性)值:&lt;index&gt;是从1开始的整数,&lt;value&gt;是一个实数。 5. svm-train使用方法:输入svm-train训练文件,可以读取训练数据并输出模型文件。 6. svm-predict使用方法:输入...

    opencv3.0 svm使用方法

    支持向量机(Support Vector Machine, SVM)是一种监督学习模型,主要用于分类和回归分析。它通过寻找一个超平面(在高维空间中被称为超平面,在二维空间中为直线),使得两个不同类别的数据点能够被最大程度地分离...

    SVM模型 java代码

    支持向量机(Support Vector Machine,简称SVM)是一种广泛应用的监督学习算法,尤其在分类和回归问题上表现出色。SVM模型通过构建一个最大边距超平面来将不同类别的数据分离开来,以此达到预测的目的。在Java中实现...

    Lib-SVM使用说明.doc

    其中`&lt;label&gt;`是数据点的标签,对于分类任务,它是一个整数;对于回归任务,它可以是任何实数。`&lt;index&gt;`是从1开始的整数,代表特征的索引,`&lt;value&gt;`是特征值。当特征值为零时,相应的`&lt;index&gt;`和`&lt;value&gt;`可以省略...

    从零开始学习SVM

    支持向量机(SVM)是一种重要的分类算法,它在解决实际问题,如文本分类、生物信息学和图像识别...整体上,这份文档为读者提供了一个完整且易于理解的SVM学习路径,有助于初学者从零开始,逐步建立起对SVM的全面认识。

    机器学习期末复习题.pdf

    支持向量机是机器学习中的一种常用的算法,它的原理是找到一个投影方向,使得类内距离最小,类间距离最大。SVM的算法性能取决于核函数的选择和软间隔参数C的值。 集成学习 集成学习是一种机器学习技术,它通过组合...

    一种新的分裂层次聚类SVM 多值分类器

    &lt;p&gt;提出一种分裂层次聚类SVM 分类树分类方法. 该方法通过融合模糊聚类技术和支持向量机算法, 利用分裂&lt;br&gt; 的层次聚类策略, 有选择地重新构造学习样本集和SVM 子分类器, 得到了一种树形多值分类器. 研究结果表明, ...

    incremental-learning-for-SVM.rar_Svm 增量学习_online svm_svm代码matlab

    一种基于matlab自带SVMtrain模型训练函数的在线SVM增量学习方法代码。

    SVM学习资料-一个简单的实例

    总结起来,这个SVM学习资料提供了非线性分类和回归的实例,涵盖了SVM工具箱中的`svc`和`svr`函数,以及参数调整和交叉验证的方法。对于初学者来说,这是一个很好的起点,可以帮助理解SVM的基本概念和操作流程。在...

    bayes-classifier

    所有脚本都按照规范文档采用命令行参数。 其他实用程序脚本会在错误使用时打印它们的用法。 朴素贝叶斯分类器 指示... *1.... *需要一个trainig文件进行监督学习,...'./svm_learn &lt;training&gt; &lt;model&gt;' 从 model_file

    SVM机器学习方法

    支持向量机(Support Vector Machine,SVM)是一种在机器学习领域广泛应用的监督学习模型,尤其在分类和回归任务中表现出色。SVM的核心思想是找到一个最优的超平面,这个超平面能够最大化数据集中的样本到超平面的...

Global site tag (gtag.js) - Google Analytics