??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久99这里只有免费费精品,亚洲中文字幕久久精品无码喷水,久久99精品久久久久久http://www.shnenglu.com/sunrise/category/18837.html每天不断学习(fn)Q才能不断提升自己? Ƣ迎交流 QQQ?03979707 我的铺子Qhttp://www.u148.net/u/lwxzh-cnMon, 06 Aug 2012 21:42:29 GMTMon, 06 Aug 2012 21:42:29 GMT60SVM法入门http://www.shnenglu.com/sunrise/archive/2012/08/06/186474.htmlSunRise_atSunRise_atMon, 06 Aug 2012 08:58:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/08/06/186474.htmlhttp://www.shnenglu.com/sunrise/comments/186474.htmlhttp://www.shnenglu.com/sunrise/archive/2012/08/06/186474.html#Feedback2http://www.shnenglu.com/sunrise/comments/commentRss/186474.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/186474.html转自Q?font color="#000000" face="Verdana">http://blog.csdn.net/yangliuy/article/details/7316496
SVM入门Q一Q至Q三QRefresh

?之前的文章重新汇~一?修改了一些错误和不当的说法,一起复?然后l箋SVM之旅.

Q一QSVM的简?/strong>

支持向量?Support Vector Machine)是Cortes和Vapnik?995q首先提出的Q它在解军_h、非U性及(qing)高维模式识别中表现出许多Ҏ(gu)的优势,q能够推q应用到函数拟合{其他机器学?fn)问题中[10]?nbsp;
支持向量机方法是建立在统计学?fn)理论的VC l理论和l构风险最原理基上的Q根据有限的h信息在模型的复杂性(卛_特定训练h的学?fn)精度,AccuracyQ和学习(fn)能力Q即无错误地识别Lh的能力)之间L最xP以期获得最好的推广能力[14]Q或U泛化能力)?/p>

以上是经常被有关SVM 的学术文献引用的介绍Q我来逐一分解q解释一下?/p>

Vapnik是统计机器学?fn)的大牛Q这惛_都不用说Q他出版的《Statistical Learning Theory》是一本完整阐q统计机器学?fn)思想的名著。在该书中详l的了统计机器学?fn)之所以区别于传统机器学习(fn)的本质,在于统计机器学?fn)能够精的l出学习(fn)效果Q能够解{需要的h数等{一pd问题。与l计机器学习(fn)的精密思维相比Q传l的机器学习(fn)基本上属于摸着矛_q河Q用传统的机器学?fn)方法构造分cȝl完全成了一U技巧,一个h做的l果可能很好Q另一个h差不多的Ҏ(gu)做出来却很差Q缺乏指导和原则?/p>

所谓VCl是对函数类的一U度量,可以单的理解为问题的复杂E度QVCl越高,一个问题就复杂。正是因为SVMx的是VCl_(d)后面我们可以看到QSVM解决问题的时候,和样本的l数是无关的Q甚x本是上万l的都可以,q得SVM很适合用来解决文本分类的问题,当然Q有q样的能力也因ؓ(f)引入了核函数Q?/p>

l构风险最听上去文绉l,其实说的也无非是下面q回事?/p>

机器学习(fn)本质上就是一U对问题真实模型的DQ我们选择一个我们认为比较好的近似模型,q个q似模型叫做一个假设)Q但毫无疑问Q真实模型一定是不知道的Q如果知道了Q我们干吗还要机器学?fn)?直接用真实模型解决问题不可以了Q对吧,哈哈Q既然真实模型不知道Q那么我们选择的假设与问题真实解之间究竟有多大差距Q我们就没法得知。比如说我们认ؓ(f)宇宙诞生?50亿年前的一场大爆炸Q这个假设能够描q很多我们观察到的现象,但它与真实的宇宙模型之间q相差多?谁也说不清,因ؓ(f)我们压根׃知道真实的宇宙模型到底是什么?/p>

q个与问题真实解之间的误差,叫做风险(更严格的_(d)误差的篏U叫做风险)。我们选择了一个假设之后(更直观点_(d)我们得到了一个分cd以后Q,真实误差无从得知Q但我们可以用某些可以掌握的量来D它。最直观的想法就是用分cd在样本数据上的分cȝl果与真实结果(因ؓ(f)h是已l标注过的数据,是准的数据Q之间的差值来表示。这个差值叫做经验风险Remp(w)。以前的机器学习(fn)Ҏ(gu)都把l验风险最化作ؓ(f)努力的目标,但后来发现很多分cd数能够在h集上L辑ֈ100%的正率Q在真实分类时却一塌糊涂(x谓的推广能力差,或泛化能力差Q。此时的情况便是选择了一个够复杂的分类函数Q它的VCl很高)Q能够精的C每一个样本,但对h之外的数据一律分c错误。回头看看经验风险最化原则我们׃(x)发现Q此原则适用的大前提是经验风险要实能够D真实风险才行Q行话叫一_(d)Q但实际上能D么?{案是不能,因ؓ(f)h数相对于现实世界要分cȝ文本数来说简直九(ji)牛一毛,l验风险最化原则只在q占很小比例的样本上做到没有误差Q当然不能保证在更大比例的真实文本上也没有误差?/p>

l计学习(fn)因此而引入了泛化误差界的概念Q就是指真实风险应该׃部分内容ȝQ一是经验风险,代表了分cd在给定样本上的误差;二是|信风险Q代表了我们在多大程度上可以信Q分类器在未知文本上分cȝl果。很昄Q第二部分是没有办法_计算的,因此只能l出一个估计的区间Q也使得整个误差只能计算上界Q而无法计准的|所以叫做泛化误差界Q而不叫泛化误差)?/p>

|信风险与两个量有关Q一是样本数量,昄l定的样本数量越大,我们的学?fn)结果越有可能正,此时|信风险小Q二是分cd数的VCl_(d)昄VCl越大,推广能力差Q置信风险会(x)变大?/p>

泛化误差界的公式为:(x)

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

公式中R(w)是真实风险QRemp(w)是l验风险Q?n/h)是|信风险。统计学?fn)的目标从经验风险最化变ؓ(f)了寻求经验风险与|信风险的和最,即结构风险最?/p>

SVM正是q样一U努力最化l构风险的算法?/p>

SVM其他的特点就比较Ҏ(gu)理解了?/p>

样本,q不是说h的绝Ҏ(gu)量少Q实际上Q对M法来说Q更多的h几乎L能带来更好的效果Q,而是说与问题的复杂度比v来,SVM法要求的样本数是相Ҏ(gu)较少的?/p>

非线性,是指SVM擅长应付h数据U性不可分的情况,主要通过村ּ变量Q也有h叫惩|变量)和核函数技术来实现Q这一部分是SVM的精髓,以后?x)详l讨论。多说一句,关于文本分类q个问题I竟是不是线性可分的Q尚没有定论Q因此不能简单的认ؓ(f)它是U性可分的而作化处理,在水落石Z前,只好先当它是U性不可分的(反正U性可分也不过是线性不可分的一U特例而已Q我们向来不怕方法过于通用Q?/p>

高维模式识别是指hl数很高Q例如文本的向量表示Q如果没有经q另一pd文章Q《文本分cd门》)中提到过的降l处理,出现几万l的情况很正常,其他法基本没有能力应付了QSVM却可以,主要是因为SVM 产生的分cd很简z,用到的样本信息很(仅仅用到那些UC?#8220;支持向量”的样本,此ؓ(f)后话Q,使得即hl数很高Q也不会(x)l存储和计算带来大麻烦(相对照而言QkNN法在分cLp用到所有样本,h数巨大,每个hl数再一高,q日子就没法q了……Q?/p>

下一节开始正式讨论SVM。别嫌我说得太详l哦?/p>

SVM入门Q二Q线性分cdPart 1

U性分cd(一定意义上,也可以叫做感知机) 是最单也很有效的分类器Ş?在一个线性分cd?可以看到SVM形成的思\,q接触很多SVM的核心概?

用一个二l空间里仅有两类h的分c问题来举个例子。如图所C?/p>

C1和C2是要区分的两个类别,在二l^面中它们的样本如上图所C。中间的直线是一个分cd敎ͼ它可以将两类h完全分开。一般的Q如果一个线性函数能够将h完全正确的分开Q就U这些数据是U性可分的Q否则称为非U性可分的?/p>

什么叫U性函数呢Q在一l空间里是一个点Q在二维I间里就是一条直U,三维I间里就是一个^面,可以如此惌下去Q如果不xI间的维敎ͼq种U性函数还有一个统一的名U?#8212;—^面(Hyper PlaneQ!

实际上,一个线性函数是一个实值函敎ͼ卛_数的值是q箋的实敎ͼQ而我们的分类问题Q例如这里的二元分类问题——回答一个样本属于还是不属于一个类别的问题Q需要离散的输出|例如?表示某个h属于cdC1Q而用0表示不属于(不属于C1也就意味着属于C2Q,q时候只需要简单的在实值函数的基础上附加一个阈值即可,通过分类函数执行时得到的值大于还是小于这个阈值来定cd归属?例如我们有一个线性函?/p>

g(x)=wx+b

【看到好多h都在问g(x)=0 ?g(x)的问题,我在q里帮楼主补充一下:(x)g(x)实际是以w为法向量的一超q面Q在二维I间表示Z直U(是一^行线Q他们的法向量都是wQ,而g(x)=0只是q么多^行线中的一条。?/p>

我们可以取阈gؓ(f)0Q这样当有一个样本xi需要判别的时候,我们qg(xi)的倹{若g(xi)>0Q就判别为类别C1Q若g(xi)<0Q则判别为类别C2Q等于的时候我们就拒绝判断Q呵呵)。此时也{h(hun)于给函数g(x)附加一个符号函数sgn()Q即f(x)=sgn [g(x)]是我们真正的判别函数?/p>

关于g(x)=wx+bq个表达式要注意三点Q一Q式中的x不是二维坐标pM的横_(d)而是h的向量表C,例如一个样本点的坐标是(3,8)Q则xT=(3,8) Q而不是x=3Q一般说向量都是说列向量Q因此以行向量Ş式来表示Ӟ加上{|)。二Q这个Ş式ƈ不局限于二维的情况,在nl空间中仍然可以使用q个表达式,只是式中的w成ؓ(f)了nl向量(在二l的q个例子中,w是二l向量,Z表示h方便z,以下均不区别列向量和它的转置Q聪明的读者一看便知)Q三Qg(x)不是中间那条直线的表辑ּQ中间那条直U的表达式是g(x)=0Q即wx+b=0Q我们也把这个函数叫做分c面?/p>

实际上很Ҏ(gu)看出来,中间那条分界Uƈ不是唯一的,我们把它E微旋{一下,只要不把两类数据分错Q仍然可以达C面说的效果,E微q移一下,也可以。此时就牉|C个问题,对同一个问题存在多个分cd数的时候,哪一个函数更好呢Q显然必要先找一个指标来量化“?#8221;的程度,通常使用的都是叫?#8220;分类间隔”的指标。下一节我们就仔细说说分类间隔Q也补一补相关的数学知识?/p>

SVM入门Q三Q线性分cdPart 2

上回说到对于文本分类q样的不适定问题Q有一个以上解的问题称Z适定问题Q,需要有一个指标来衡量解决Ҏ(gu)Q即我们通过训练建立的分cL型)的好坏,而分c间隔是一个比较好的指标?/p>

在进行文本分cȝ时候,我们可以让计机q样来看待我们提供给它的训练hQ每一个样本由一个向量(是那些文本特征所l成的向量)和一个标讎ͼ标示个样本属于哪个类别)l成。如下:(x)

Di=(xi,yi)

xi是文本向量Q维数很高)Qyi是分类标记?/p>

在二元的U性分cMQ这个表C分cȝ标记只有两个|1?1Q用来表C属于还是不属于q个c)。有了这U表C法Q我们就可以定义一个样本点到某个超q面的间隔:(x)

δi=yi(wxi+b)

q个公式乍一看没什么神U的Q也说不Z么道理,只是个定义而已Q但我们做做变换Q就能看Z些有意思的东西?/p>

首先注意到如果某个样本属于该cd的话Q那么wxi+b>0Q记得么Q这是因为我们所选的g(x)=wx+b通过大于0q是于0来判断分c)Q而yi也大?Q若不属于该cd的话Q那么wxi+b<0Q而yi也小?Q这意味着yi(wxi+b)L大于0的,而且它的值就{于|wxi+b|Q(也就是|g(xi)|Q?/p>

现在把w和bq行一下归一化,即用w/||w||和b/||w||分别代替原来的w和bQ那么间隔就可以写成

【点到直U的距离Q做解析几何中ؓ(f)Q?nbsp; 
D = (Ax + By + c) /sqrt(A^2+B^2)  
sqrt(A^2+B^2)q当于||W||, 其中向量W=[A, B];  
(Ax + By + c)q当于g(X), 其中向量X=[x,y]。?/p>

q个公式是不是看上去有点眼熟Q没错,q不是解析几何中点xi到直Ug(x)=0的距d式嘛Q(推广一下,是到^面g(x)=0的距, g(x)=0是上节中提到的分类^面)

TipsQ||w||是什么符P||w||叫做向量w的范敎ͼ范数是对向量长度的一U度量。我们常说的向量长度其实指的是它?-范数Q范数最一般的表示形式为p-范数Q可以写成如下表辑ּ

    向量w=(w1, w2, w3,…… wn)

它的p-范数?/p>

看看把p换成2的时候,不就是传l的向量长度么?当我们不指明p的时候,像||w||q样使用Ӟ意味着我们不关心p的|用几范数都可以;或者上文已l提Cp的|Z叙述方便不再重复指明?/p>

当用归一化的w和b代替原g后的间隔有一个专门的名称Q叫做几何间隔,几何间隔所表示的正是点到超q面的欧氏距,我们下面qU几何间隔ؓ(f)“距离”。以上是单个点到某个^面的距离Q就是间隔,后面不再区别q两个词Q定义,同样可以定义一个点的集合(是一l样本)到某个超q面的距Mؓ(f)此集合中超q面最q的点的距离。下面这张图更加直观的展C出了几何间隔的现实含义Q?/p>

H是分c面Q而H1和H2是^行于HQ且q离H最q的两类h的直U,H1与HQH2与H之间的距d是几何间隔?/p>

之所以如此关心几何间隔这个东西,是因为几何间隔与h的误分次数间存在关系Q?/p>

其中?#948;是样本集合到分类面的间隔QR=max ||xi||  i=1,...,nQ即R是所有样本中Qxi是以向量表示的第i个样本)向量长度最长的|也就是说代表h的分布有多么q)。先不必q究误分ơ数的具体定义和推导q程Q只要记得这个误分次C定程度上代表分类器的误差。而从上式可以看出Q误分次数的上界由几何间隔决定!Q当Ӟ是样本已知的时候)

x我们明白ؓ(f)何要选择几何间隔来作价一个解优劣的指标了Q原来几何间隔越大的解,它的误差上界小。因此最大化几何间隔成了我们训练阶段的目标,而且Q与二把刀作者所写的不同Q最大化分类间隔q不是SVM的专利,而是早在U性分cL期就已有的思想?/p>

SVM入门Q四Q线性分cd的求?#8212;—问题的描qPart1

上节说到我们有了一个线性分cd敎ͼ也有了判断解优劣的标?#8212;—x了优化的目标Q这个目标就是最大化几何间隔Q但是看q一些关于SVM的论文的Z定记得什么优化的目标是要最化||w||q样的说法,q是怎么回事呢?回头再看看我们对间隔和几何间隔的定义Q?/p>

间隔Q?#948;=y(wx+b)=|g(x)|

几何间隔Q?img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" alt="" src="http://www.blogjava.net/images/blogjava_net/zhenandaci/WindowsLiveWriter/SVMPart1_EEC8/clip_image002_2.gif" width="128" height="44" />

可以看出δ=||w||δ几何。注意到几何间隔与||w||是成反比的,因此最大化几何间隔与最化||w||完全是一回事。而我们常用的Ҏ(gu)q不是固定||w||的大而寻求最大几何间隔,而是固定间隔Q例如固定ؓ(f)1Q,L最的||w||?/p>

而凡是求一个函数的最|或最大|的问题都可以UCؓ(f)M问题Q也叫作一个规划问题)Q又׃找最大值的问题d以通过加一个负号变为找最值的问题Q因此我们下面讨论的时候都针对找最值的q程来进行。一个寻优问题最重要的部分是目标函数Q顾名思义Q就是指M的目标。例如我们想L最的||w||qg事,可以用下面的式子表C:(x)

但实际上对于q个目标Q我们常怋用另一个完全等L(fng)目标函数来代替,那就是:(x)

(?)

不难看出当||w||2辑ֈ最时Q||w||也达到最,反之亦然Q前提当然是||w||描述的是向量的长度,因而是非负的)。之所以采用这UŞ式,是因为后面的求解q程?x)对目标函数作一pd变换Q而式Q?Q的形式?x)变换后的形式更?f)z(正如聪明的读者所料,d的系C分之一和^方,皆是为求导数所需Q?/p>

接下来我们自然会(x)问的是Q这个式子是否就描述了我们的问题呢?Q回想一下,我们的问题是有一堆点Q可以被分成两类Q我们要扑և最好的分类面)

如果直接来解q个求最值问题,很容易看出当||w||=0的时候就得到了目标函数的最倹{但是你也会(x)发现Q无Zl什么样的数据,都是q个解!反映在图中,是H1与H2两条直线间的距离无限大,q个时候,所有的h点(无论正样本还是负hQ都跑到了H1和H2中间Q而我们原本的意图是,H1右侧的被分ؓ(f)正类QH2 左侧的被分ؓ(f)负类Q位于两cM间的h则拒l分c(拒绝分类的另一U理解是分给哪一c都有道理,因而分l哪一cM都没有道理)。这下可好,所有样本点都进入了无法分类的灰色地带?/p>

造成q种l果的原因是在描q问题的时候只考虑了目标,而没有加入约束条ӞU束条g是在求解过E中必须满的条Ӟ体现在我们的问题中就是样本点必须在H1或H2的某一侧(或者至在H1和H2上)Q而不能跑C者中间。我们前文提到过把间隔固定ؓ(f)1Q这是指把所有样本点中间隔最的那一点的间隔定ؓ(f)1Q这也是集合的间隔的定义Q有点绕_(d)Q也意味着集合中的其他炚w隔都不会(x)于1Q按照间隔的定义Q满些条件就相当于让下面的式子L成立Q?/p>

    yi[(w·xi)+b]≥1 (i=1,2,…,l) Ql是ȝh敎ͼ

但我们常怹(fn)惯让式子的值和0比较Q因而经常用变换q的形式Q?/p>

    yi[(w·xi)+b]-1≥0 (i=1,2,…,l) Ql是ȝh敎ͼ

因此我们的两cdc问题也被我们{化成了它的数学Ş式,一个带U束的最值的问题Q?/p>

下一节我们从最一般的意义上看看一个求最值的问题有何特征Q以?qing)如何来解?/p>

SVM入门Q五Q线性分cd的求?#8212;—问题的描qPart2

从最一般的定义上说Q一个求最值的问题是一个优化问题(也叫M问题Q更文绉l的叫法是规?#8212;—ProgrammingQ,它同L(fng)两部分组成,目标函数和约束条Ӟ可以用下面的式子表示Q?/p>

Q式1Q?/p>

U束条g用函数c来表C,是constrain的意思啦。你可以看出一共有p+q个约束条Ӟ其中p个是不等式约束,q个等式约束?/p>

关于q个式子可以q样来理解:(x)式中的x是自变量Q但不限定它的维数必Mؓ(f)1Q视乎你解决的问题空间维敎ͼҎ(gu)们的文本分类来说Q那可是成千上万啊)。要求f(x)在哪一点上取得最|反倒不太关心这个最值到底是多少Q关键是哪一点)Q但不是在整个空间里找,而是在约束条件所划定的一个有限的I间里找Q这个有限的I间是优化理论里所说的可行域。注意可行域中的每一个点都要求满x有p+q个条Ӟ而不是满_中一条或几条可以(切记Q要满每个U束Q,同时可行域边界上的点有一个额外好的特性,它们可以使不{式U束取得{号Q而边界内的点不行?/p>

关于可行域还有个概念不得不提Q那是凔RQ凸集是指有q么一个点的集合,其中d两个点连一条直U,q条U上的点仍然在这个集合内部,因此?#8220;?#8221;是很形象的(一个反例是Q二l^面上Q一个月牙Ş的区域就不是凔RQ你随便可以找C个点q反了刚才的规定Q?/p>

回头再来看我们线性分cd问题的描qͼ可以看出更多的东ѝ?/p>

Q式2Q?/p>

在这个问题中Q自变量是wQ而目标函数是w的二ơ函敎ͼ所有的U束条g都是w的线性函敎ͼ哎,千万不要把xi当成变量Q它代表hQ是已知的)Q这U规划问题有个很有名气的U呼——二次规划QQuadratic ProgrammingQQPQ,而且可以更进一步的_(d)׃它的可行域是一个凸集,因此它是一个凸二次规划?/p>

一下子提了q么多术语,实在不是Z让大家以后能向别人炫耀学识的渊博,q其实是我们l箋下去的一个重要前提,因ؓ(f)在动手求一个问题的解之前(好吧Q我承认Q是动计机?#8230;…Q,我们必须先问自己Q这个问题是不是有解Q如果有解,是否能找刎ͼ

对于一般意义上的规划问题,两个问题的答案都是不一定,但凸二次规划让h喜欢的地方就在于Q它有解Q教U书里面Z严}Q常常加限定成分Q说它有全局最优解Q由于我们想扄本来是全局最优的解,所以不加也|)Q而且可以扑ֈQ(当然Q依据你使用的算法不同,扑ֈq个解的速度Q行话叫收敛速度Q会(x)有所不同Q?/p>

Ҏ(gu)Q式2Q和Q式1Q还可以发现Q我们的U性分cd问题只有不等式约束,因此形式上看g比一般意义上的规划问题要单,但解h却ƈ非如此?/p>

因ؓ(f)我们实际上ƈ不知道该怎么解一个带U束的优化问题。如果你仔细回忆一下高{数学的知识Q会(x)记得我们可以L的解一个不带Q何约束的优化问题Q实际上是当年背得烂熟的函数求极值嘛Q求导再?点呗Q谁不会(x)啊?W)Q我们甚臌?x)解一个只带等式约束的优化问题Q也是背得烂熟的Q求条g极|记得么,通过d拉格朗日乘子Q构造拉格朗日函敎ͼ来把q个问题转化为无U束的优化问题云云(如果你一时没想通,我提醒一下,构造出的拉格朗日函数就是{化之后的问题形式Q它昄没有带Q何条Ӟ?/p>

读者问Q如果只带等式约束的问题可以转化为无U束的问题而得以求解,那么可不可以把带不等式约束的问题向只带等式约束的问题转化一下而得以求解呢Q?/p>

聪明Q可以,实际上我们也正是q么做的。下一节就来说说如何做q个转化Q一旦{化完成,求解对Q何学q高{数学的人来_(d)都是菜一啦?/p>

SVM入门Q六Q线性分cd的求?#8212;—问题的{化,直观角度

让我再一ơ比较完整的重复一下我们要解决的问题:(x)我们有属于两个类别的h点(q不限定q些点在二维I间中)若干Q如图,

圆Ş的样本点定ؓ(f)正样本(q带着Q我们可以把正样本所属的cd做正c)Q方形的点定例。我们想求得q样一个线性函敎ͼ在nl空间中的线性函敎ͼQ?/p>

g(x)=wx+b

使得所有属于正cȝ?img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" alt="" />+代入以后有g(x+)≥1Q而所有属于负cȝ点x-代入后有g(x-)≤-1Q之所以总跟1比较Q无论正一q是负一Q都是因为我们固定了间隔?Q注意间隔和几何间隔的区别)。代入g(x)后的值如果在1?1之间Q我们就拒绝判断?/p>

求这L(fng)g(x)的过E就是求wQ一个nl向量)和bQ一个实敎ͼ两个参数的过E(但实际上只需要求wQ求得以后找某些h点代入就可以求得bQ。因此在求g(x)的时候,w才是变量?/p>

你肯定能看出来,一旦求ZwQ也求ZbQ,那么中间的直UHq道了Q因为它?yu)是wx+b=0嘛,哈哈Q,那么H1和H2也就知道了(因ؓ(f)三者是q的,而且盔R的距还是||w||军_的)。那么w是谁军_的?昄是你l的h军_的,一旦你在空间中l出了那些个h点,三条直线的位|实际上唯一定了(因ؓ(f)我们求的是最优的那三条,当然是唯一的)Q我们解优化问题的过E也只不q是把这个确定了的东西算出来而已?/p>

h定了wQ用数学的语a描述Q就是w可以表示为样本的某种l合Q?/p>

w=α1x1+α2x2+…+αnxn

式子中的αi是一个一个的敎ͼ在严格的证明q程中,q些α被称为拉格朗日乘子)Q而xi是样本点Q因而是向量Qn是L本点的个数。ؓ(f)了方便描qͼ以下开始严格区别数字与向量的乘U和向量间的乘积Q我?x)?#945;1x1表示数字和向量的乘积Q而用<x1,x2>表示向量x1,x2的内U(也叫点积Q注意与向量叉积的区别)。因此g(x)的表辑ּ严格的Ş式应该是Q?/p>

g(x)=<w,x>+b

但是上面的式子还不够好,你回头看看图中正h和负h的位|,惛_一下,我不动所有点的位|,而只是把其中一个正h点定h点(也就是把一个点的Ş状从圆Ş变ؓ(f)方ŞQ,l果怎么P三条直线都必ȝ动(因ؓ(f)对这三条直线的要求是必须把方形和圆Ş的点正确分开Q!q说明w不仅跟样本点的位|有养Iq跟h的类别有养I也就是和h?#8220;标签”有关Q。因此用下面q个式子表示才算完整Q?/p>

w=α1y1x1+α2y2x2+…+αnynxn Q式1Q?/p>

其中的yi是Wi个样本的标签Q它{于1或?1。其实以上式子的那一堆拉格朗日乘子中Q只有很的一部分不等?Q不{于0才对w起决定作用)Q这部分不等?的拉格朗日乘子后面所乘的h点,其实都落在H1和H2上,也正是这部分hQ而不需要全部样本)唯一的确定了分类函数Q当Ӟ更严格的_(d)q些h的一部分可以确定,因ؓ(f)例如定一条直U,只需要两个点可以,即便有三五个都落在上面,我们也不是全都需要。这部分我们真正需要的h点,叫做支持(撑)向量Q(名字q挺形象吧,他们“?#8221;起了分界U)

式子也可以用求和W号写一下:(x)

因此原来的g(x)表达式可以写为:(x)

注意式子中x才是变量Q也是你要分类哪篇文档Q就把该文档的向量表CZ入到 x的位|,而所有的xil统都是已知的样本。还注意到式子中只有xi和x是向量,因此一部分可以从内U符号中拿出来,得到g(x)的式子ؓ(f)Q?/p>

发现了什么?w不见啦!从求w变成了求α?/p>

但肯定有Z(x)_(d)qƈ没有把原问题化呀。嘿嘿,其实化了Q只不过在你看不见的地方Q以q样的Ş式描q问题以后,我们的优化问题少了很大一部分不等式约束(记得q是我们解不了极值问题的万恶之源Q。但是接下来先蟩q线性分cd求解的部分,来看?SVM在线性分cd上所做的重大改进——核函数?/p>

SVM入门Q七Qؓ(f)何需要核函数

生存Q还是毁灭?——哈姆L(fng)

可分Q还是不可分Q?#8212;—支持向量?/p>

之前一直在讨论的线性分cd,器如其名Q汗Q这是什么说法啊Q,只能对线性可分的h做处理。如果提供的hU性不可分Q结果很单,U性分cd的求解程序会(x)无限循环Q永q也解不出来。这必然使得它的适用范围大大~小Q而它的很多优Ҏ(gu)们实在不原意攑ּQ怎么办呢Q是否有某种Ҏ(gu)Q让U性不可分的数据变得线性可分呢Q?/p>

有!其思想说来也简单,来用一个二l^面中的分c问题作例子Q你一看就?x)明白。事先声明,下面q个例子是网l早有的,我一时找不到原作者的正确信息Q在此借用Qƈ加进了我自己的解说而已?/p>

例子是下面这张图Q?/p>

/

我们把横轴上端点a和b之间U色部分里的所有点定ؓ(f)正类Q两边的黑色部分里的点定cR试问能扑ֈ一个线性函数把两类正确分开么?不能Q因Zl空间里的线性函数就是指直线Q显然找不到W合条g的直Uѝ?/p>

但我们可以找C条曲U,例如下面q一条:(x)

昄通过点在q条曲线的上方还是下方就可以判断Ҏ(gu)属的cdQ你在横轴上随便找一点,算q一点的函数|?x)发现负cȝ点函数g定比0大,而正cȝ一定比0)。这条曲U就是我们熟知的二次曲线Q它的函数表辑ּ可以写ؓ(f)Q?/p>

问题只是它不是一个线性函敎ͼ但是Q下面要注意看了Q新Z个向量y和aQ?/p>

q样g(x)可以{化ؓ(f)f(y)=<a,y>Q你可以把y和a分别回带一下,看看{不{于原来的g(x)。用内积的Ş式写你可能看不太清楚Q实际上f(y)的Ş式就是:(x)

g(x)=f(y)=ay

在Q意维度的I间中,q种形式的函数都是一个线性函敎ͼ只不q其中的a和y都是多维向量|了Q,因ؓ(f)自变量y的次C大于1?/p>

看出妙在哪了么?原来在二l空间中一个线性不可分的问题,映射到四l空间后Q变成了U性可分的Q因此这也Ş成了我们最初想解决U性不可分问题的基本思\——向高l空间{化,使其变得U性可分?/p>

而{化最关键的部分就在于扑ֈx到y的映方法。遗憄是,如何扑ֈq个映射Q没有系l性的Ҏ(gu)Q也是_(d)U靠猜和凑)。具体到我们的文本分c问题,文本被表CZؓ(f)上千l的向量Q即使维数已l如此之高,也常常是U性不可分的,q要向更高的I间转化。其中的隑ֺ可想而知?/p>

Tips:Z么说f(y)=ay是四l空间里的函?

大家可能一时没看明白。回想一下我们二l空间里的函数定?nbsp;
  g(x)=ax+b 
变量x是一l的Qؓ(f)什么说它是二维I间里的函数呢?因ؓ(f)q有一个变量我们没写出来,它的完整形式其实?nbsp;
  y=g(x)=ax+b 
?nbsp;
  y=ax+b 
看看Q有几个变量Q两个。那是几l空间的函数Q(作者五岁的弟弟{:(x)五维的。作者:(x)……Q?nbsp;
再看?nbsp;
f(y)=ay 
里面的y是三l的变量Q那f(y)是几l空间里的函敎ͼQ作者五岁的弟弟{:(x)q是五维的。作者:(x)……Q?/p>

用一个具体文本分cȝ例子来看看这U向高维I间映射从而分cȝҎ(gu)如何q作Q想象一下,我们文本分类问题的原始空间是1000l的Q即每个要被分类的文档被表示Z?000l的向量Q,在这个维度上问题是线性不可分的。现在我们有一?000l空间里的线性函?/p>

f(x’)=<w’,x’>+b

注意向量的右上角有个 ’哦。它能够原问题变得可分。式中的 w’和x’都是2000l的向量Q只不过w’是定|而x’是变量(好吧,严格说来q个函数?001l的,哈哈Q,现在我们的输入呢Q是一?000l的向量xQ分cȝq程是先把x变换?000l的向量x’Q然后求q个变换后的向量x’与向量w’的内U,再把q个内积的值和b相加Q就得到了结果,看结果大于阈D是小于阈值就得到了分cȝ果?/p>

你发C什么?我们其实只关心那个高l空间里内积的|那个值算出来了,分类l果q出来了。而从理论上说Q?x’是经由x变换来的Q因此广义上可以把它叫做x的函敎ͼ有一个xQ就定了一个x’Q对吧,定不出W二个)Q而w’是常量,它是一个低l空间里的常量wl过变换得到的,所以给了一个w 和x的|有一个确定的f(x’)g其对应。这让我们惻I是否能有q样一U函数K(w,x),他接受低l空间的输入|却能出高维I间的内U?lt;w’,x’>Q?/p>

如果有这L(fng)函数Q那么当l了一个低l空间的输入x以后Q?/p>

g(x)=K(w,x)+b

f(x’)=<w’,x’>+b

q两个函数的计算l果完全一P我们也就用不着费力N个映关p,直接拿低l的输入往g(x)里面代就可以了(再次提醒Q这回的g(x)׃是线性函数啦Q因Z不能保证K(w,x)q个表达式里的xơ数不高?哦)?/p>

万幸的是Q这L(fng)K(w,x)实存在Q发现凡是我们hc能解决的问题,大都是y得不能再巧,Ҏ(gu)得不能再Ҏ(gu)的问题,L恰好有些能投机取巧的地方才能解决Q由此感Chcȝ渺小Q,它被UC核函敎ͼ核,kernelQ,而且q不止一个,事实上,只要是满了Mercer条g的函敎ͼ都可以作为核函数。核函数的基本作用就是接受两个低l空间里的向量,能够计算出经q某个变换后在高l空间里的向量内U倹{几个比较常用的核函敎ͼ俄,教课书里都列q,我就不敲了(懒!Q?/p>

回想我们上节说的求一个线性分cdQ它的Ş式应该是Q?/p>

现在q个是高维I间里的U性函敎ͼZ区别低维和高l空间里的函数和向量Q我改了函数的名字,q且lw和x都加上了 ’Q,我们可以用一个低l空间里的函敎ͼ再一ơ的Q这个低l空间里的函数就不再是线性的啦)来代替,

又发C么了Qf(x’) 和g(x)里的αQyQb全都是一样一L(fng)Q这是_(d)管l的问题是线性不可分的,但是我们q当它是线性问题来求解Q只不过求解q程中,凡是要求内积的时候就用你选定的核函数来算。这h出来?#945;再和你选定的核函数一l合Q就得到分类器啦Q?/p>

明白了以上这些,?x)自然的问接下来两个问题Q?/p>

1Q?既然有很多的核函敎ͼ针对具体问题该怎么选择Q?/p>

2Q?如果使用核函数向高维I间映射后,问题仍然是线性不可分的,那怎么办?

W一个问题现在就可以回答你:(x)Ҏ(gu)函数的选择Q现在还~Z指导原则Q各U实验的观察l果Q不光是文本分类Q的表明,某些问题用某些核函数效果很好Q用另一些就很差Q但是一般来Ԍ径向基核函数是不?x)出太大偏差的一U,首选。(我做文本分类pȝ的时候,使用径向基核函数Q没有参数调优的情况下,l大部分cd的准和召回都在85%以上Q可见。虽然libSVM的作者林Z认ؓ(f)文本分类用线性核函数效果更佳Q待考证Q?/p>

对第二个问题的解军_引出了我们下一节的主题Q松弛变量?/p>

SVM入门Q八Q松弛变?/strong>

现在我们已经把一个本来线性不可分的文本分c问题,通过映射到高l空间而变成了U性可分的。就像下图这P(x)

圆Ş和方形的点各有成千上万个Q毕竟,q就是我们训l集中文档的数量嘛,当然很大了)。现在想象我们有另一个训l集Q只比原先这个训l集多了一文章,映射到高l空间以后(当然Q也使用了相同的核函敎ͼQ也多了一个样本点Q但是这个样本的位置是这L(fng)Q?/p>

是图中黄色那个点,它是方Ş的,因而它是负cȝ一个样本,q单独的一个样本,使得原本U性可分的问题变成了线性不可分的。这L(fng)似的问题Q仅有少数点U性不可分Q叫?#8220;q似U性可?#8221;的问题?/p>

以我们hcȝ常识来判断,说有一万个炚wW合某种规律Q因而线性可分)Q有一个点不符合,那这一个点是否׃表了分类规则中我们没有考虑到的斚w呢(因而规则应该ؓ(f)它而做Z改)Q?/p>

其实我们?x)觉得,更有可能的是Q这个样本点压根是错误Q是噪声Q是提供训练集的同学人工分类时一打瞌睡错放进ȝ。所以我们会(x)单的忽略q个h点,仍然使用原来的分cdQ其效果丝毫不受影响?/p>

但这U对噪声的容错性是人的思维带来的,我们的程序可没有。由于我们原本的优化问题的表辑ּ中,实要考虑所有的h点(不能忽略某一个,因ؓ(f)E序它怎么知道该忽略哪一个呢Q)Q在此基上寻找正负类之间的最大几何间隔,而几何间隔本w代表的是距,是非负的Q像上面q种有噪声的情况?x)得整个问题无解。这U解法其实也叫做“间?#8221;分类法,因ؓ(f)他硬性的要求所有样本点都满_分类q面间的距离必须大于某个倹{?/p>

因此׃面的例子中也可以看出Q硬间隔的分cL其结果容易受数点的控制Q这是很危险的(管有句话说真理L掌握在少Ch手中Q但那不q是那一撮以自慰的词句|了Q咱q是得民主)?/p>

但解x法也很明显,是仿照人的思\Q允怸些点到分cd^面的距离不满_先的要求。由于不同的训练集各点的间距度不太一P因此用间隔(而不是几何间隔)来衡量有利于我们表达形式的简z。我们原先对h点的要求是:(x)

意思是说离分类面最q的h点函数间隔也要比1大。如果要引入定w性,q1q个性的阈值加一个松弛变量,卛_?/p>

因ؓ(f)村ּ变量是非负的Q因此最l的l果是要求间隔可以比1。但是当某些点出现这U间隔比1的情况Ӟq些点也叫离点Q,意味着我们攑ּ了对q些点的_分类Q而这Ҏ(gu)们的分类器来说是U损失。但是放弃这些点也带来了好处Q那是使分c面不必向这些点的方向移动,因而可以得到更大的几何间隔Q在低维I间看来Q分c边界也更^滑)。显然我们必L衡这U损失和好处。好处很明显Q我们得到的分类间隔大Q好处就多。回我们原始的间隔分cd应的优化问题Q?/p>

||w||2是我们的目标函敎ͼ当然pL可有可无Q,希望它越越好,因而损失就必然是一个能使之变大的量Q能使它变小׃叫损׃Q我们本来就希望目标函数D越好)。那如何来衡量损失,有两U常用的方式Q有人喜Ƣ用

而有人喜Ƣ用

其中l都是h的数目。两U方法没有大的区别。如果选择了第一U,得到的方法的叫做二阶Y间隔分类器,W二U就叫做一阶Y间隔分类器。把损失加入到目标函数里的时候,需要一个惩|因子(costQ也是libSVM的诸多参C的CQ,原来的优化问题就变成了下面这P(x)

q个式子有这么几点要注意Q?/p>

一是ƈ非所有的h炚w有一个松弛变量与其对应。实际上只有“ȝ?#8221;才有Q或者也可以q么看,所有没ȝ的点村ּ变量都等?Q对负类来说Q离点是在前面图中,跑到H2右侧的那些负h点,Ҏ(gu)cL_(d)是跑到H1左侧的那些正h点)?/p>

【在q代求w的时候如何样本点非离点Q即分类正确Q那么就讑֮的松弛变量ؓ(f)0了。。。?/p>

二是村ּ变量的值实际上标示Z对应的点到底ȝ有多q,D大,点就远?/p>

三是惩罚因子C军_了你有多重视ȝ点带来的损失Q显然当所有离点的松弛变量的和一定时Q你定的C大Q对目标函数的损׃大Q此时就暗示着你非怸愿意攑ּq些ȝ点,最极端的情冉|你把C定ؓ(f)无限大,q样只要E有一个点ȝQ目标函数的值马上变成无限大Q马上让问题变成无解Q这退化成了硬间隔问题?/p>

四是惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的|指定q个g后,解一下,得到一个分cdQ然后用试数据看看l果怎么P如果不够好,换一个C的|再解一ơ优化问题,得到另一个分cdQ再看看效果Q如此就是一个参数寻优的q程Q但q和优化问题本n决不是一回事Q优化问题在解的q程中,C一直是定|要记住?/p>

五是管加了村ּ变量q么一_(d)但这个优化问题仍然是一个优化问题(汗,q不废话么)Q解它的q程比v原始的硬间隔问题来说Q没有Q何更加特D的地方?/p>

从大的方面说优化问题解的q程Q就是先试着定一下wQ也是定了前面图中的三条直线Q这时看看间隔有多大Q又有多点ȝQ把目标函数的值算一,再换一l三条直U(你可以看刎ͼ分类的直U位|如果移动了Q有些原来离的点会(x)变得不再ȝQ而有的本来不ȝ的点?x)变成离点Q,再把目标函数的值算一,如此往复(q代Q,直到最l找到目标函数最时的w?/p>

啰嗦了这么多Q读者一定可以马上自己ȝ出来Q松弛变量也是个解决线性不可分问题的方法Ş了,但是回想一下,核函数的引入不也是ؓ(f)了解决线性不可分的问题么Qؓ(f)什么要Z一个问题用两U方法呢Q?/p>

其实两者还有微妙的不同。一般的q程应该是这Pq以文本分类Z。在原始的低l空间中Q样本相当的不可分,无论你怎么扑ֈcd^面,M(x)有大量的ȝ点,此时用核函数向高l空间映一下,虽然l果仍然是不可分的,但比原始I间里的要更加接q线性可分的状态(是辑ֈ了近似线性可分的状态)Q此时再用松弛变量处理那些少?#8220;冥顽不化”的离点Q就单有效得多啦?/p>

本节中的Q式1Q也实是支持向量机最最常用的Ş式。至此一个比较完整的支持向量机框架就有了Q简单说来,支持向量机就是用了核函数的软间隔线性分cL?/p>

下一节会(x)说说村ּ变量剩下的一点点东西Q顺便搞个读者调查,看看大家q想侃侃SVM的哪些方面?/p>

SVM入门Q九(ji)Q松弛变量(l)

接下来要说的东西其实不是村ּ变量本nQ但׃是ؓ(f)了用松弛变量才引入的,因此攑֜q里也算合适,那就是惩|因子C。回头看一眼引入了村ּ变量以后的优化问题:(x)

注意其中C的位|,也可以回想一下C所L(fng)作用Q表征你有多么重视离点QC大重视,不想丢掉它们)。这个式子是以前做SVM的h写的Q大家也p么用Q但没有M规定说必d所有的村ּ变量都用同一个惩|因子,我们完全可以l每一个离点都用不同的CQ这时就意味着你对每个h的重视程度都不一P有些h丢了也就丢了Q错了也错了,q些q一个比较小的CQ而有些样本很重要Q决不能分类错误Q比如中央下辄文g啥的Q笑Q,q一个很大的C?/p>

当然实际使用的时候ƈ没有q么极端Q但一U很常用的变形可以用来解军_c问题中h?#8220;偏斜”问题?/p>

先来说说h的偏斜问题,也叫数据集偏斜(unbalancedQ,它指的是参与分类的两个类别(也可以指多个cdQ样本数量差异很大。比如说正类?0Q?00个样本,而负cdl了100个,q会(x)引v的问题显而易见,可以看看下面的图Q?/p>

方Ş的点是负cRHQH1QH2是根据给的样本算出来的分c面Q由于负cȝh很少很少Q所以有一些本来是负类的样本点没有提供Q比如图中两个灰色的方Ş点,如果q两个点有提供的话,那算出来的分c面应该是H’QH2’和H1Q他们显然和之前的结果有出入Q实际上负类l的h点越多,pҎ(gu)出现在灰色点附近的点Q我们算出的l果也就接q于真实的分c面。但现在׃偏斜的现象存在,使得数量多的正类可以把分c面向负cȝ方向“?#8221;Q因而媄响了l果的准性?/p>

对付数据集偏斜问题的Ҏ(gu)之一是在惩|因子上作文章,惛_大家也猜CQ那是l样本数量少的负cL大的惩罚因子Q表C我们重视这部分hQ本来数量就,再抛弃一些,那h家负c还?gu)zMzMQ,因此我们的目标函C因松弛变量而损q部分变成了Q?/p>

其中i=1…p都是正样本,j=p+1…p+q都是负样本。libSVMq个法包在解决偏斜问题的时候用的就是这U方法?/p>

那C+和C-怎么定呢?它们的大是试出来的Q参数调优)Q但是他们的比例可以有些Ҏ(gu)来确定。咱们先假定说C+?q么大,那确定C-的一个很直观的方法就是用两cL本数的比来算Q对应到刚才丄例子QC-可以定?00q么大(因ؓ(f)10Q?00Q?00=100Q?嘛)?/p>

但是q样q不够好Q回看刚才的图,你会(x)发现正类之所以可?#8220;”负类Q其实ƈ不是因ؓ(f)负类h,真实的原因是负类的样本分布的不够q(没扩充到负类本应该有的区域)。说一个具体点的例子,现在想给政治cd体育cȝ文章做分c,政治cL章很多,而体育类只提供了几篇关于球的文章,q时分类?x)明昑ց向于政治c,如果要给体育cL章增加样本,但增加的h仍然全都是关于篮球的Q也是_(d)没有球Q排球,赛RQ游泳等{)Q那l果?x)怎样呢?虽然体育cL章在数量上可以达C政治cM样多Q但q于集中了,l果仍会(x)偏向于政ȝQ所以给C(j)+和C-定比例更好的方法应该是衡量他们分布的程度。比如可以算他们在I间中占据了多大的体U,例如l负cL一个超?#8212;—是高维I间里的球啦——它可以包含所有负cȝhQ再l正cL一个,比比两个球的半径Q就可以大致定分布的情c显然半径大的分布就比较q,q一点的惩罚因子?/p>

但是q样q不够好Q因为有的类别样本确实很集中Q这不是提供的样本数量多的问题Q这是类别本w的特征Q就是某些话题涉?qing)的面很H,例如计算机类的文章就明显不如文化cȝ文章那么“天马行空”Q,q个时候即便超球的半径差异很大Q也不应该赋予两个类别不同的惩罚因子?/p>

看到q里读者一定疯了,因ؓ(f)说来说去Q这岂不成了一个解决不了的问题Q然而事实如此,完全的方法是没有的,Ҏ(gu)需要,选择实现单又合用的就好(例如libSVMq接用样本数量的比)?/p>

SVM入门Q十Q将SVM用于多类分类

?SVM的那几张囑֏以看出来QSVM是一U典型的两类分类器,卛_只回{属于正c还是负cȝ问题。而现实中要解决的问题Q往往是多cȝ问题Q少部分例外Q例如垃N件过滤,只需要确?#8220;?#8221;q是“不是”垃圾邮gQ,比如文本分类Q比如数字识别。如何由两类分类器得到多cdcdQ就是一个值得研究的问题?/p>

q以文本分类ZQ现成的Ҏ(gu)有很多,其中一U一x逸的Ҏ(gu)Q就是真的一ơ性考虑所有样本,q求解一个多目标函数的优化问题,一ơ性得到多个分c面Q就像下图这P(x)

多个^面把I间划分为多个区域,每个区域对应一个类别,l一文章,看它落在哪个区域q道了它的分类?/p>

看v来很对不对Q只可惜q种法q基本停留在UR上,因ؓ(f)一ơ性求解的Ҏ(gu)计算量实在太大,大到无法实用的地步?/p>

E稍退一步,我们׃(x)惛_所?#8220;一cd其余”的方法,是每次仍然解一个两cdcȝ问题。比如我们有5个类别,W一ơ就把类?的样本定为正hQ其?Q?Q?Q?的样本合h定ؓ(f)负样本,q样得到一个两cdcdQ它能够指出一文章是q是不是W?cȝQ第二次我们把类? 的样本定为正hQ把1Q?Q?Q?的样本合h定ؓ(f)负样本,得到一个分cdQ如此下去,我们可以得到5个这L(fng)两类分类器(L和类别的数目一_(d)。到了有文章需要分cȝ时候,我们拿着q篇文章挨个分类器的问:(x)是属于你的么Q是属于你的么?哪个分类器点头说是了Q文章的cdq定了。这U方法的好处是每个优化问题的规模比较?yu),而且分类的时候速度很快Q只需要调?个分cdq道了l果Q。但有时也会(x)出现两种很尴的情况Q例如拿一文章问了一圈,每一个分cd都说它是属于它那一cȝQ或者每一个分cd都说它不是它那一cȝQ前者叫分类重叠现象Q后者叫不可分类现象。分c重叠倒还好办Q随侉K一个结果都不至于太谱Q或者看看这文章到各个^面的距离Q哪个远判l哪个。不可分cȝ象就着实难办了Q只能把它分l第6个类别了……更要命的是,本来各个cd的样本数目是差不多的Q但“其余”的那一cL本数L要数倍于正类Q因为它是除正类以外其他cd的样本之和嘛Q,q就Zؓ(f)的造成了上一节所说的“数据集偏?#8221;问题?/p>

因此我们q得再退一步,q是解两cdc问题,q是每次选一个类的样本作正类hQ而负cL本则变成只选一个类Q称?#8220;一对一单挑”的方法,哦,不对Q没有单挑,是“一对一”的方法,呵呵Q,q就避免了偏斜。因此过E就是算样一些分cdQ第一个只回答“是第1c还是第2c?#8221;Q第二个只回{?#8220;是第1c还是第3c?#8221;Q第三个只回{?#8220;是第1c还是第4c?#8221;Q如此下去,你也可以马上得出Q这L(fng)分类器应该有5 X 4/2=10个(通式是,如果有k个类别,则ȝ两类分类器数目ؓ(f)k(k-1)/2Q。虽然分cd的数目多了,但是在训l阶D(也就是算些分cd的分cd^面时Q所用的L间却?#8220;一cd其余”Ҏ(gu)很多,在真正用来分cȝ时候,把一文章扔l所有分cdQ第一个分cd?x)投说它?#8220;1”或?#8220;2”Q第二个?x)说它?#8220;1”或?#8220;3”Q让每一个都投上自己的一,最后统计票敎ͼ如果cd“1”得票最多,判q篇文章属于W?cR这U方法显然也?x)有分类重叠的现象,但不会(x)有不可分类现象Q因为M可能所有类别的数都是0。看h够好么?其实不然Q想惛_cM文章,我们调用了多个分类器?10个,q还是类别数?的时候,cd数如果是1000Q要调用的分cd数目?x)上升至U?00,000个(cd数的qx量Q。这如何是好Q?/p>

看来我们必须再退一步,在分cȝ时候下功夫Q我们还是像一对一Ҏ(gu)那样来训l,只是在对一文章进行分cM前,我们先按照下面图的样子来l织分类器(如你所见,q是一个有向无环图Q因此这U方法也叫做DAG SVMQ?/p>

q样在分cL,我们可以先问分cd“1?”Q意思是它能够回{?#8220;是第1c还是第5c?#8221;Q,如果它回{?Q我们就往左走Q再?#8220;2?”q个分类器,如果它还说是“5”Q我们就l箋往左走Q这样一直问下去Q就可以得到分类l果。好处在哪?我们其实只调用了4个分cdQ如果类别数是kQ则只调用k-1个)Q分c速度飞快Q且没有分类重叠和不可分cȝ象!~点在哪Q假如最一开始的分类器回{错误(明明是类?的文章,它说成了5Q,那么后面的分cd是无论如何也无法U正它的错误的(因ؓ(f)后面的分cd压根没有出现“1”q个cd标签Q,其实对下面每一层的分类器都存在q种错误向下累积的现象。?/p>

不过不要被DAGҎ(gu)的错误篏U吓倒,错误累积在一对其余和一对一Ҏ(gu)中也都存在,DAGҎ(gu)好于它们的地方就在于Q篏U的上限Q不是大是,L有定论的Q有理论证明。而一对其余和一对一Ҏ(gu)中,管每一个两cdcd的泛化误差限是知道的Q但是合h做多cdcȝ时候,误差上界是多,没h知道Q这意味着准确率低?也是有可能的Q这多让人郁闗?/p>

而且现在DAGҎ(gu)根节点的选取Q也是如何选第一个参与分cȝ分类器)Q也有一些方法可以改善整体效果,我们d望根节点犯错误为好Q因此参与第一ơ分cȝ两个cdQ最好是差别特别特别大,大到以至于不太可能把他们分错Q或者我们就d在两cdcM正确率最高的那个分类器作根节点,或者我们让两类分类器在分类的时候,不光输出cd的标{,q输Z个类?#8220;|信?#8221;的东东,当它对自ql果不太自信的时候,我们׃光按照它的输Q把它旁边的那条路也C赎ͼ{等?/p>

大TipsQSVM的计复杂度

使用SVMq行分类的时候,实际上是训练和分cM个完全不同的q程Q因而讨论复杂度׃能一概而论Q我们这里所说的主要是训l阶D늚复杂度,卌那个二次规划问题的复杂度。对q个问题的解Q基本上要划分ؓ(f)两大块,解析解和数D?/p>

解析解就是理Z的解Q它的Ş式是表达式,因此它是_的,一个问题只要有解(无解的问题还跟着掺和什么呀Q哈哈)Q那它的解析解是一定存在的。当然存在是一回事Q能够解出来Q或者可以在可以承受的时间范围内解出来,是另一回事了。对SVM来说Q求得解析解的时间复杂度最坏可以达到O(Nsv3)Q其中Nsv是支持向量的个数Q而虽然没有固定的比例Q但支持向量的个数多也和训l集的大有兟?/p>

数D是可以使用的解Q是一个一个的敎ͼ往往都是q似解。求数D的过E非常像ID法,从一个数开始,试一试它当解效果怎样Q不满一定条Ӟ叫做停机条gQ就是满个以后就认ؓ(f)解够精了Q不需要l算下去了)p下一个,当然下一个数不是乱选的Q也有一定章法可循。有的算法,每次只尝试一个数Q有的就试多个Q而且找下一个数字(或下一l数Q的Ҏ(gu)也各不相同,停机条g也各不相同,最l得到的解精度也各不相同Q可见对求数D的复杂度的讨Z能脱开具体的算法?/p>

一个具体的法QBunch-Kaufman训练法Q典型的旉复杂度在O(Nsv3+LNsv2+dLNsv)和O(dL2)之间Q其中Nsv是支持向量的个数QL是训l集h的个敎ͼd是每个样本的l数Q原始的l数Q没有经q向高维I间映射之前的维敎ͼ。复杂度?x)有变化Q是因ؓ(f)它不光跟输入问题的规模有养I不光和样本的数量Q维数有养IQ也和问题最l的解有养Ix持向量有养IQ如果支持向量比较少Q过E会(x)快很多,如果支持向量很多Q接q于h的数量,׃(x)产生O(dL2)q个十分p糕的结果(l?0Q?00个样本,每个h1000l_(d)基本׃用算了,不出来Q呵呵,而这U输入规模对文本分类来说太正怺Q?/p>

q样再回头看׃(x)明白Z么一对一Ҏ(gu)管要训l的两类分类器数量多Q但L间实际上比一对其余方法要了Q因Z对其余方法每ơ训l都考虑了所有样本(只是每次把不同的部分划分为正cL者负c而已Q,自然慢上很多?/p>

SunRise_at 2012-08-06 16:58 发表评论
]]>
自然语言理解ȝhttp://www.shnenglu.com/sunrise/archive/2012/05/22/175759.htmlSunRise_atSunRise_atTue, 22 May 2012 06:55:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/05/22/175759.htmlhttp://www.shnenglu.com/sunrise/comments/175759.htmlhttp://www.shnenglu.com/sunrise/archive/2012/05/22/175759.html#Feedback1http://www.shnenglu.com/sunrise/comments/commentRss/175759.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/175759.html

  最q的工作都是Q务,很简单的Q务,水水的就写好了。因得自己在自然语言处理斚w了解甚少Q剩下的旉在看《h工智能》,最q再看第8章自然语a理解。很认真的看q了解过Q现在做一下ȝ?/font>

    自然语言理解现在大体分ؓ(f)5个层ơ:(x)语音分析Q词法分析,语义分析和语用分析?/font>

    一.语音分析跌Q直接进入词法分析。所谓词法分析就是从句子中切分出单词Q找汇的各个词素Q从中获得单词的语言学信息ƈ定单词的词义?/font>

    1.for English

    repeat 

        look for word in dictionary

        If  not found 

        Then modify the word 

Until word found or no further modification possible

所以在自然语言理解的词怸一般只放词根,支持词素分析可以大大的压~电(sh)子词典的规模。英语词法分析的隑ֺ在于词义判断Q以为单词有很多解释Q要判定词义只能依靠句子中其他相兛_词和词组的分析?/span>

2.对于汉语

汉语中的每一字都是一个词素,但是要切分出各个词就非常困难Q最主要的就是切分歧义。一句话可以有多U拆分方式,要是遇到那种“下雨天留客天留我不留”Q基本就ȝ了?/span>

二.句法分析 

q个和汇~原理里的那个好像是一L(fng)Q至于到底是不是一个,我也忘却了。主要分Zc:(x)Z规则的方法和Zl计的方法?/span>

1.短语l构语法

2.乔姆斯基形式语法

3.语法分析?/font>

4.转移|络

5.扩充转移|络

具体l节自己查去Q我主要写一下扩充{Uȝl(Augmented Transition Network,ANTQ,该语法属于一U增强型的上下文无关语法?/font>

ANT主要对{Uȝl中的弧附加了过E得到的Q过E的主要功能Q对文法特征q行赋倹{前后把书翻看几遍也没有发现Ҏ(gu)法特征进行赋值是什么,暂理解成把一个单词赋l?/font>ARTQ当随着弧走到这Ӟ查词性部分是否等?/font>ART。如果是则把ART赋值给NP,S\DET,否则Q失败引起回溯。第二个是查数或hU条件是否满Iq据此允许或不允许{U,整个ANT语法构成了一个句法树(wi)?/font>

   ?font face="Times New Roman">.语义分析Q百度去吧,hdQ?/font>

   大规模真实文本的处理

   最q做的处理工作好像就是这些,在各U语料中提取各种库,里面的很多发现自׃断断l箋的在接触?/span>

   q里的两个语料库一个是Zwordnet,另一U是hownet.hownet以前介绍q,直接wordnet.

  其实wordnet是把所有的词构建成一|(wi)Q整个名词组成一个承关pR?/font>

  

补充一下:(x)在利?font face="Times New Roman">worknetq行怼度计的时候,词与词之间的距离对于路径相同的,层次高的要比层次低的层次低的距离q,E疏的要比E密的距远。所以用worknet?/font>hownet考虑更多的问题。对于句子与句子之间的相似度计算很容易实玎ͼ但是旉复杂度太高,上次做优化的时候,?/font>89万次计算中,只有1000+的有效计,所以选择把词与词之间的距d好Q直接读取,要快很多?/font>

最后后面的词性标注和分词一直都是直接用公司的代码去调用的,自己q在学习(fn)中,期待在不久的来能够掌握q些?/span>

一天比一天多一点的q步好Q快乐码农中?/span>



SunRise_at 2012-05-22 14:55 发表评论
]]>
þþþþþۺձ| ¾þƵ| þ97þ97Ʒӿ| ŷþۺϾɫۺ| ԭۺϾþô| þþƷwwwˬ| ƷžžþþƷŮͬŷպۺ | þ99Ʒ鶹| ھƷ˾þþþø| ƷëƬþþþþþ| þþƷ޸| þ99Ʒþ99| þþƷAVDz18| 99þþþƷ| 99þùƷһ| ƷۺϾþ | þþƷһ| 99þֻоƷ| ҹþþþþþþþ| þþƷƷ | þܳ| ƷҹþøƬ| þþƷAV| þѴƬ| þþþþþþþþѾƷ| 99Ʒþ| 99þ99ֻѷѾƷ| þþþþùƷŮ| ˳þõӰվ| ˾þô߽ӰԺ95| ձѾþþþþþվ| ƷVAþþþþþñ | þþƷav鶹С˵ | һһþaþþƷۺ| þerƷѹۿ8| ƷۺϾþ| Ʒþþþþҹҹ| 99þþþ| ŷսպ91ۺһþþ| ɫۺϾþ| 㽶þҹɫƷС˵|