SVM文本分类训练集正负样本比例是多少才算svm 不平衡数据集

优秀研究生学位论文题录展示面向内容安全的文本分类研究专 业: 计算机科学与技术关键词: 信息安全 内容安全 文本分类 支持向量机 多层次分类 多标签学习分类号: TP391.1 
TP182形 态: 共 131 页 约 85,805 个字 约 4.104 M内容阅 读: 内容摘要随着互联网应用技术的发展,滥用信息所造成的政治、经济、军事、社会和文化等诸多方面的问题引起人们的关注,内容安全逐渐成为信息安全的一项基本内容。文本分类是根据内容对相关信息进行组织、管理、识别及过滤的有力手段和核心技术之一,面向互联网内容安全的需求对文本分类技术提出新的挑战。
信息内容的安全必须对异常的内容实施高效监控和及时响应,因此需要分类系统对通过的文本进行高速实时的检测。互联网上的内容多样且更新频繁,某些情况下必须以较大代价,甚至无法为分类器的训练提供感兴趣内容的更多标注样本,成为分类系统构建的主要瓶颈,因此通过少量标注样本和大量未标注样本进行分类器训练的半监督学习方法成为研究的热点。内容的多样性和各种主题的相互交叉,还使得内容安全不同领域的关注者可能希望对类似或完全相同的内容作出响应,多标签学习主要解决这种实例可能同时属于多个类别的问题,成为一个新的研究方向。
本文围绕互联网内容安全需求背景下的文本分类这一主题,主要针对高效率的文本分类训练和预测方法、缓解标注瓶颈的半监督学习,以及多标签的文本分类三个问题展开深入研究,取得的主要成果与创新工作概括如下:
1.高效率的SVM多类学习方法研究。提出了与Rocchio级联的SVM多类方法Roc-SVM,通过Rocchio分类器高速准确的过滤大部分不相关类别,大幅减少所需的二值SVM判别次数,将“一对一和“一对剩余”两种SVM多类方法实验中的分类时间降低约一个数量级,分类的准确性却基本不受损害。为了优化一对剩余SVM多类训练的过程,提出一种简洁的类增量式SVM多类方法CI-SVM。实验表明,其训练时间相对一对剩余多类方法大幅减少,分类过程的效率也显著提高。
2.通过类别层次对naive Bayes分类器准确性的改进。Naive Baye方法的训练效果受主观选择的训练数据关于类别全局分布的影响。利用层次式分类的特点,通过在类别的后验概率计算中引入新的概率条件,并在每个内部类别所属的子类局部数据中进行决策的方法,对naive Bayes分类器进行改进。改进方法EHNB降低了全局数据分布对分类器的影响,部分缓解了样本关于类别分布不均衡的问题,使得naiveBayes方法在层次式分类中的效果有较明显的提高。
3.基于自训练与EM方法集成训练的半监督学习方法。提出将激进的对未标注样本进行标注的自训练,与保守调整未标注样本标签状态的EM两种方法训练过程进行集成的思想,并提供ESTM和SEMT两种半监督学习方法。ESTM在EM的迭代中利用中间结果进行确定性标注,而SEMT在自训练过程中,以半监督的EM方法代替naive Bayes监督学习方法。实验表明,ESTM和SEMT有效结合了自训练和EM的优点,具有更好的利用未标注样本提高分类器准确性的能力。
4.面向协同训练的特征集分割。给出了特征子集间条件独立性度量的定义,并证明了特征子集分组合并时独立性的保持性质。以此为根据,提出对每个类别的局部特征子集分别进行分割,再分组进行合并的局部化分割策略,同时给出基于样本局部自适应聚类和特征关联图分块的分割方法,两种方法均以尽量保持子集间的条件独立性为前提。在两个数据集上的测试中,所获得的特征集分割使得协同训练利用未标注样本,更好的提高了naive Bayes方法的分类效果,拓展了基于特征集分割的协同训练方法的适用性。
5.基于标签状态向量的多标签学习方法。通过在排位(ranking)方法的标签状态向量空间LSVS中,二次挖掘标签状态值关联中所蕴含的多标签信息,提出基于标签状态向量的两阶段多标签学习框架。在此框架下,给出kNN LSVS上的BOL(bag oflabels)模型和Bayes多标签学习方法,并在LSVS上改进ML-kNN方法。在naive:Bayes LSVS上,我们采用线性最小方差拟合(LLSF)进行多标签的训练和预测,并证明了LLSF的方差可以给出分类器Hamming训练损失的一个上界。在11个多标签分类问题上的应用表明,两阶段框架下,各种多标签方法训练所得的分类器具有较好的多标签分类效果..……全文目录文摘英文文摘论文说明:图表目录第一章 绪论1.1研究背景1.1.1互联网条件下的内容安全1.1.2内容安全的意义和需求1.1.3面向信息内容安全的文本分类1.2文本分类研究现状及挑战1.2.1文本表示1.2.2表示空间降维1.2.3机器学习分类方法1.2.4主要技术挑战1.3本文的主要研究内容和贡献1.4论文结构第二章 高效率文本分类方法研究2.1问题的提出2.2高效率SVM多类方法研究2.2.1 SVM与多类问题2.2.2基于Rocchio级联的快速SVM多类分类2.2.3类增量式SVM多类方法2.3 SVM多类方法实验与比较2.3.1数据准备2.3.2实验设置2.3.3准确性评估指标2.3.4分类准确性比较2.3.5训练和分类时间比较2.3.6实验结论2.4层次式文本分类的Naive Bayes改进方法2.4.1层次式文本分类2.4.2利用层次特点的Naive Bayes改进2.4.3实验分析与结论2.5本章小结第三章 自训练与EM集成的半监督学习3.1半监督学习3.1.1标注瓶颈与半监督学习3.1.2半监督学习的主要方法3.1.3半监督学习策略分类3.2混合参数模型下的EM算法和自训练过程3.2.1文本的混合参数模型3.2.2参数模型的Naive Bayes学习3.2.3 EM算法3.2.4自训练过程3.3标注过程对分类器精度的影响3.3.1考虑训练噪声的可学习性3.3.2标注过程提高分类器精度的充分条件3.4基于自训练与EM集成的半监督学习3.4.1自训练与EM算法的分析3.4.2自训练与EM集成的基本思想与过程3.4.3 ESTM训练算法3.4.4 SEMT训练算法3.4.5 ESTM与SETM的预测过程3.4.6 ESTM与SETM的简单比较3.5实验与分析3.5.1数据准备3.5.2实验设置3.5.3评估指标3.5.4不同标注比例下的训练效果3.5.5标注和EM步骤的数量分析3.5.6实验结论3.6本章小结第四章 面向协同训练的特征集分割4.1基于特征集分割的协同训练4.1.1协同训练过程4.1.2协同训练的理论依据4.1.3协同训练的进展和问题4.2特征与特征集间的独立性度量4.2.1特征之间的独立性4.2.2特征集之间的独立性4.2.3独立性合并保持性质4.3局部化策略下的特征集分割4.3.1特征集的局部化假设4.3.2局部化分割策略4.3.3基于文本聚类的特征集分割4.3.4基于特征关联图分块的特征集分割4.4实验与比较4.4.1 WebKB特征集的分割效果4.4.2 TanCorp12特征集的分割效果4.4.3实验结论4.5本章小结第五章 基于标签状态向量的多标签分类5.1多标签学习概述5.1.1多标签学习问题5.1.2多标签学习效果的评价5.1.3多标签学习相关工作5.2标签状态向量空间上的多标签学习5.2.1基本思想5.2.2标签状态向量空间5.2.3 LSVS上的两阶段学习方法5.3基于kNN标签状态向量的Bayes多标签学习5.3.1 kNN标签状态向量空间5.3.2 kNN-LSVS上的BOL模型及Bayes学习5.3.3 kNN-Bayes的多标签预测5.4 kNN-LSVS上的改进ML-kNN算法5.4.1 ML-kNN方法5.4.2 ML-kNN方法的分析5.4.3 ML-kNN的一种直接改进5.5 Naive Bayes LSVS上的线性最小方差拟合5.5.1 Naive Bayes标签状态向量空间5.5.2 NB-LSVS上的LLSF学习5.6实验与分析5.6.1实验数据与设置5.6.2实验结果与分析5.6.3实验结论5.7本章小结结束语参考文献相似论文,78
页,TP391.1,70
页,TP391.1
TN929.5,53页,TP391.12,60页,TP391.1,109页,TP391.1,75页,TP391.1
TN929.5,59页,TP391.1,71页,TP391.14,53页,TP391.14,68
页,TP393.07
TN915.04,58
页,TP393.07,58
页,TP393.07,53
页,TP393.07
TP311.131,62
页,TP393.06,80
页,TP393.08,88
页,TP393.07
TP393.1,79
页,TP391.41
TP393.4,66
页,TP393.08
TP312,75
页,TP392
TP311.13,52页,TP393.08
TP309.2中图分类:
> TP391.1 > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机的应用 > 信息处理(信息加工)其他分类:
> TP182 > 工业技术 > 自动化技术、计算机技术 > 自动化基础理论 > 人工智能理论 > 专家系统、知识工程
& 2012 book.不均匀正负样本分布下的机器学习
不均匀正负样本分布下的机器学习
发起的讨论,
39 条精选讨论(选自165条原始评论和转发)
机器学习那些事儿
工业界机器学习典型问题: 正负样本分布极不均匀(通常&1:10000),有什么较好的方案构造训练集的正负样本分布?构造后如何解决训练数据与预测的分布不一致?请大牛帮忙解释下@老师木 @李沐M @星空下的巫师 @徐盈辉_仁基
北冥乘海生
这个跟模型的形式和估计方法都有关,有些情况下正负例不均衡时估计有偏,可以校正一下。
小兔子大坏坏
上采样、下采样、代价敏感,没什么好办法
特级飞行员舒克
&回复 @phunter_lau
回复@phunter_lau:mark,sampling
范涛_中科大
这个之前调研过,主要分重采样和欠采样!这种不平衡是因为比率的不平衡给一些学习方法带来问题。但是在某些领域,比如反欺诈和安全,不仅是比率极不平衡,而且是正样本样本绝对数很小。需要扩散正样本方法!
特级飞行员舒克
聚类然后从负样本中找和正样本比较紧邻的作为正样本怎么样?@phunter_lau @范涛_中科大 @winsty
范涛_中科大
回复@特级飞行员舒克: Synthetic Minority Over-sampling Technique 我试过这个方法,解决部分问题,主要还是需要增加样本在特征空间的覆盖! 工程上光靠算法也解决不了问题,有的还是需要加入下经验知识来做。
睡眼惺忪的小叶先森
我也说说。抛砖引玉:1,比例是一个关键的参数,据我们的经验,1:14是一个常见的“好”比例。[哈哈] 2,stratified sampling,也就是根据特征来采样,尽量使样本都覆盖特征空间。3,训练的时候,这个正负样本的“出场”顺序也很关键,不然可能还没遇到正(负)样本模型就已经收敛了。
这就是一种伪标注方法,是可行的。当然最后还是需要验证一下效果,来证明这个方法对这类数据是solid的
孙明明_SmarterChina
这问题太笼统了。正负样本不平衡只是个表象,处理方法要根据本质原因来定。
用排序思想构造所谓的序对,
如果1:10算是均匀的话,可以将多数类分割成为1000份。然后将每一份跟少数类的样本组合进行训练得到分类器。而后将这1000个分类器用assemble的方法组合位一个分类器。记得读到的论文可行,但没有验证过
采样的话要么损失信息要么影响数据分布,基本的序对的话也会引起信息的损失~
特级飞行员舒克
回复@Juggernaut_One:我认为有些场景下正负样本之间并没有严格明显的界线,是可以互相转换的。
特级飞行员舒克
回复@Juggernaut_One:在百度实习做广告点击率预估时,曾经想过在模型训练时不用0/1作为label,而是根据特征情况给一个float值(在[0,1]区间周围),或者更简单一些分别对目标值0/1做一些扰动,后来由于某些原因没做成。
@刘尚堃 你说过有不少技巧[哈哈]
离家出走的托尔斯泰
这在机器学习里面被称类别不平衡问题,可以参考Haibo, H. and E. A. Garcia (2009). "Learning from Imbalanced Data." Knowledge and Data Engineering, IEEE Transactions on" 的survey.已有很多方法提出
phunter_lau
或者试试看Transductive SVM (TSVM) 用当前训练的模型标注新的sample,差不多类似的想法但是我也是听同事说的
聚类本身不是已经默认了相似度测定了么。。。。[汗]
Transductive 是指要求 label 的数据在training 一个model的时候已经确定了,相对于inductive 而言。训练数据和测试数据分布不同是domain adaptation、sample bias、data shift。但是他原先的问题其实是imblance problem,google下能找到方法,比如
标准解决方法:设计objective function的时候给不同misclassification的情况不同的relative weights。也就是说给从小数量的样本被分成大数量的样本更大的penalty
@phunter_lau:或者试试看Transductive SVM (TSVM) 用当前训练的模型标注新的sample,差不多类似的想法
孙明明_SmarterChina
&回复 @好东西传送门
训练数据与预测数据分布不一致,有专门研究的课题,sample selection bias,主要方法是各种reweighting
机器学习那些事儿
这应该和半监督的间谍算法类似吧,不过这只能解决抽样问题,没法较好的确定正负样本之间的比例吧?
我以前搞过一个support cluster machine,类似的想法,很久以前的工作了,仅可以参考一下。
按理是跟你的目标有关。如果你的目标是 预测的分布 跟训练的分布一致,那就加大对分布不一致的惩罚系数就是。
&回复 @特级飞行员舒克
我理解那么多的负样本的情况下,其实负样本已经并不是真正的`负样本`了,顺带扔个之前被推荐的paper
王小科科科
我的处理方式挺简单的,将负样本取样数量减少,然后在计算预测概率的时候,调整常数因子。
晴阴雨雪天各种读书
&回复 @岩间花树GT
早几年kdd有篇paper解决这个的,其实原理都差不多
微笑刺客4067
关注。。伪标注有时间试一试!
Sample selection bias 可以解决一部分预测与训练数据分布不一致(还包括迁移学习、领域适应问题),不过好像没见过直接用它解决类别不平衡
抛砖引玉,这个倒是可以参考positive only learning等半监督学习中如早期的spy算法等来构造合适的负例来解决正负例不平衡的问题。在只有正例的学习问题中,负例千差万别,且数量也远超正例,符合楼主的问题描述
这个建议看起来比上采样下采样或者调权重更靠谱
这个看起来像 one-class recommendation 问题,不知是否可以考虑转化成 learning to rank 问题,如果不是为了拟合一个分布的话 (PS: 字数不够了...) @AixinSG @昊奋
NeoLScarlet
&回复 @算文解字
貌似生成不平衡那边的样本效果最好。
于是大家搜出来的都是我的那篇。。。[衰][衰]
离家出走的托尔斯泰
个人觉得在类别不平衡条件下,Transductive SVM (TSVM)应该对于的active learning 来标注,可能结果更好。
learning to rank对于训练数据量的要求较高,同时要确定用于learning to rank的pair,还是需要找到负例,从而将正例和负例形成偏序配对。所以learning to rank是一种方法,但个人认为这会将简单问题复杂化,且本质还是需要去找负例。
开机就好ing
用单类分类算法如svdd也可以
感觉都没扯到点子上啊,最经典的imbalanced的方法,cascade learning,详见viola的face detection paper.工具类服务
编辑部专用服务
作者专用服务
基于SVM主动学习的文本分类
信息技术的不断发展使得世界变成了信息的海洋,很多有用的信息被大量的垃圾信息所淹没,如何从这些信息自动分类出有用的信息将是一个重要的课题。文本作为信息的主要载体,具有明显的现实意义,而中文作为使用最多的语言之一,其重要性不言而喻。目前大多数中文文本分类都使用传统的模式,先对训练样本学习得到分类器,再对未知样本进行分类,二个过程相互独立。但按照上述方法得到一个满意的分类器需要大量的训练数据,成本耗费比较高,为了进一步减少人工标记成本,提高分类的效果及加快训练的速度,采用主动学习的方法是一种比较好的途径。但目前存在的几种基于支持向量机(SVM)的主动学习方法都是简单的把分类方法与主动学习过程相融合,没有从选择策略上进行改进,为此本文提出了两种改进的方法:  
1、基于加权值的主动学习算法:  
基于SVM主动学习算法对训练数据都没有提出明确的要求,但是事实上SVM对训练数据的要求比较严格,需要保证正类与负类样本的均衡性,只有这样才能得到比较满意的分类性能。不平衡的数据将会导致超平面向样本较少的方向偏移,降低分类器的性能。提出了一种折中考虑最小决策值和样本平衡性之间关系的加权主动学习算法。  
2、基于期望间隔的主动学习算法:  
SVM分类器间隔的确定是依据已标记的样本集。而在主动学习的初期分类间隔被扩大了,因而主动学习的目的就是依据当前样本集,选择那些能最快的缩小当前分类器间隔的样本。提出了一种基于期望间隔的主动学习算法,较快的缩小分类器的间隔。  
对上述两种方法分别进行实验,结果表明,基于加权值的主动学习和基于期望间隔的方法都能选择信息量较多的样本,增加学习的效率,降低了成本,论证了可行性与优越性。  
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社后使用快捷导航没有帐号?
查看: 744|回复: 3
[机器学习作业]用SVM做文本分类
中级会员, 积分 318, 距离下一级还需 182 积分
论坛徽章:7
本帖最后由 hellen.han 于
16:09 编辑
内容:使用在课程中学过的各种算法为某实际场景建模,并且诠释你的结果的意义。
1 要解决的问题有意义(比如贵公司的实际问题)
2 数学建模和数学工具运用正确及有效,建议尽量使用在基础课程里没讲过的算法,例如支持向量机,组合分类器,LASSO,模糊聚类等等。
3 使用R,SAS,Matlab或其它各种工具进行实际计算验证,程序和结果正确
4 合理解释结果
1 解决的问题:为一个社区APP的内容,用户发帖内容为文字帖,想要根据用户所发的文字内容自动判断用户内容所属圈子 cid(首先有几万条运营人员手工判断的帖子分类作为训练集)
2 使用工具及模型:python+SVM模型 处理逻辑:样本》分词》TF-IDF矩阵》卡方过滤降维》SVM模型》模型评估及错误值输出;新来一条样本》按前面的词典分词》使用SVM模型进行预测》返回预测结果
3 结果展示:
precision& & recall&&f1-score& &support
& && && & 0& && & 0.45& && &0.89& && &0.60& && &3209
& && && & 1& && & 0.70& && &0.43& && &0.54& && &1766
& && && & 3& && & 0.88& && &0.85& && &0.87& && & 905
& && && & 4& && & 0.84& && &0.71& && &0.77& && &3159
& && && & 8& && & 0.94& && &0.77& && &0.84& && & 457
& && && & 9& && & 0.80& && &0.44& && &0.57& && &1973
& && && &11& && & 0.90& && &0.52& && &0.66& && & 229
& && && &16& && & 0.92& && &0.76& && &0.83& && &1178
& && && &17& && & 1.00& && &0.80& && &0.89& && &&&25
& && && &18& && & 0.95& && &0.93& && &0.94& && &1203
& && && &19& && & 0.91& && &0.82& && &0.86& && &1222
& && && &20& && & 0.93& && &0.91& && &0.92& && &1192
& && && &21& && & 0.89& && &0.65& && &0.75& && &1079
& && && &22& && & 0.93& && &0.85& && &0.89& && & 932
& && && &23& && & 0.89& && &0.92& && &0.90& && & 437
& && && &24& && & 0.89& && &0.85& && &0.87& && & 485
& && && &25& && & 1.00& && &0.33& && &0.50& && && &6
& && && &27& && & 0.97& && &0.87& && &0.92& && & 452
& && && &28& && & 0.75& && &0.50& && &0.60& && && &6
& && && &29& && & 1.00& && &1.00& && &1.00& && && &1
& && && &30& && & 0.95& && &0.90& && &0.92& && & 287
& && && &31& && & 0.98& && &0.70& && &0.81& && &&&82
& && && &32& && & 1.00& && &0.86& && &0.92& && &&&56
& && && &33& && & 1.00& && &1.00& && &1.00& && && &1
& && && &34& && & 0.97& && &0.92& && &0.94& && & 248
& && && &35& && & 0.96& && &0.97& && &0.97& && & 559
& && && &36& && & 0.95& && &0.93& && &0.94& && & 242
& && && &37& && & 0.89& && &0.93& && &0.91& && & 146
& && && &38& && & 0.93& && &0.96& && &0.94& && & 171
& && && &40& && & 0.90& && &0.82& && &0.86& && & 114
& && && &41& && & 1.00& && &0.94& && &0.97& && &&&17
avg / total& && & 0.81& && &0.76& && &0.77& &&&21839
总准确率为0.81,召回率为0.76;因为第0类为“随便聊聊”,区分度不明显,拉低了整体的准确率。但是从其他类别的效果来看,准确率和召回率在可以接受的范围内
注册会员, 积分 75, 距离下一级还需 125 积分
论坛徽章:4
不错不错,正在学习机器学习呢,谢谢楼主的分享
中级会员, 积分 216, 距离下一级还需 284 积分
论坛徽章:5
只有这么短吗?我以为需要很长一段答案的
注册会员, 积分 170, 距离下一级还需 30 积分
论坛徽章:4
有点意思,这是第几节的课程
扫一扫加入本版微信群6452人阅读
数据挖掘(5)
在Recsys中看到一个关于,遂想到以前也考虑过这个问题,所以就总结了一些以前看的资料。
先来说说样本的偏斜问题,也叫数据集偏斜(unbalanced),它指的是参与分类的两个类别(也可以指多个类别)样本数量差异很大。比如说正类有10,000个样本,而负类只给了100个,这会引起的问题显而易见,可以看看下面的图:
方形的点是负类。H,H1,H2是根据给的样本算出来的分类面,由于负类的样本很少很少,所以有一些本来是负类的样本点没有提供,比如图中两个灰色的方形点,如果这两个点有提供的话,那算出来的分类面应该是H’,H2’和H1,他们显然和之前的结果有出入,实际上负类给的样本点越多,就越容易出现在灰色点附近的点,我们算出的结果也就越接近于真实的分类面。但现在由于偏斜的现象存在,使得数量多的正类可以把分类面向负类的方向“推”,因而影响了结果的准确性。
这个问题可以有多种方法去解决:
1.&对训练数据undersampling,即对多数类数据进行抽样,或者将少数类翻倍,使得两类数量相同,这种方法在效果上也还说得过去。但是这种方法会有一些问题:1) 重采样改变了样本的分布,对于某些依赖于样本概率分布的算法来说这个方法行不通。2) 对多数类采样会使信息减少,而对少数类翻倍并不会使得信息增多。
2. 使用Cost-sensitive learning方法,该方法是想试试看能否通过训练时候这种惩罚把预测“推”向另外一面,下面要讲的就是这种方法。
经典的SVM是一个硬间隔分类,其对应的优化问题:
其就是为了能够找到最优超平面,如下图
现在想象我们有另一个训练集,只比原先这个训练集多了一篇文章,映射到高维空间以后,也就多了一个样本点,但是这个样本的位置是这样的:
就是图中黄色那个点,它是方形的,因而它是负类的一个样本,这单独的一个样本,使得原本线性可分的问题变成了线性不可分的。这样类似的问题(仅有少数点线性不可分)叫做“近似线性可分”的问题。
以我们人类的常识来判断,说有一万个点都符合某种规律(因而线性可分),有一个点不符合,那这一个点是否就代表了分类规则中我们没有考虑到的方面呢(因而规则应该为它而做出修改)?
其实我们会觉得,更有可能的是,这个样本点压根就是错误,是噪声,是提供训练集的同学人工分类时打瞌睡错放进去的。所以我们会简单的忽略这个样本点,仍然使用原来的分类器,其效果丝毫不受影响。
但这种对噪声的容错性是人的思维带来的,我们的程序可没有。由于我们原本的优化问题的表达式中,确实要考虑所有的样本点(不能忽略某一个,因为程序它怎么知道该忽略哪一个呢?),在此基础上寻找正负类之间的最大几何间隔,而几何间隔本身代表的是距离,是非负的,像上面这种有噪声的情况会使得整个问题无解。这种解法其实也叫做“硬间隔”分类法,因为他硬性的要求所有样本点都满足和分类平面间的距离必须大于某个值。
因此由上面的例子中也可以看出,硬间隔的分类法其结果容易受少数点的控制,这是很危险的(尽管有句话说真理总是掌握在少数人手中,但那不过是那一小撮人聊以自慰的词句罢了,咱还是得民主)。
上面那个问题的解决方法也很明显,就是仿照人的思路,允许一些点到分类平面的距离不满足原先的要求。由于不同的训练集各点的间距尺度不太一样,因此用间隔(而不是几何间隔)来衡量有利于我们表达形式的简洁。我们原先对样本点的要求是:
意思是说离分类面最近的样本点函数间隔也要比1大。如果要引入容错性,就给1这个硬性的阈值加一个松弛变量,即允许
因为松弛变量是非负的,因此最终的结果是要求间隔可以比1小。但是当某些点出现这种间隔比1小的情况时(这些点也叫离群点),意味着我们放弃了对这些点的精确分类,而这对我们的分类器来说是种损失。但是放弃这些点也带来了好处,那就是使分类面不必向这些点的方向移动,因而可以得到更大的几何间隔(在低维空间看来,分类边界也更平滑)。显然我们必须权衡这种损失和好处。好处很明显,我们得到的分类间隔越大,好处就越多。
把损失加入到目标函数里的时候,就需要一个惩罚因子(cost,也就是libSVM的诸多参数中的C),原来的优化问题就变成了下面这样:
这个式子有这么几点要注意:
  一是并非所有的样本点都有一个松弛变量与其对应。实际上只有“离群点”才有,或者也可以这么看,所有没离群的点松弛变量都等于0(对负类来说,离群点就是在前面图中,跑到H2右侧的那些负样本点,对正类来说,就是跑到H1左侧的那些正样本点)。
  二是松弛变量的值实际上标示出了对应的点到底离群有多远,值越大,点就越远。
  三是惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。
四是惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不够好,换一个C的值,再解一次优化问题,得到另一个分类器,再看看效果,如此就是一个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是定值,要记住。
  五是尽管加了松弛变量这么一说,但这个优化问题仍然是一个优化问题(汗,这不废话么),解它的过程比起原始的硬间隔问题来说,没有任何更加特殊的地方。
注意其中C的位置,也可以回想一下C所起的作用(表征你有多么重视离群点,C越大越重视,越不想丢掉它们)。这个式子是以前做SVM的人写的,大家也就这么用,但没有任何规定说必须对所有的松弛变量都使用同一个惩罚因子,我们完全可以给每一个离群点都使用不同的C,这时就意味着你对每个样本的重视程度都不一样,有些样本丢了也就丢了,错了也就错了,这些就给一个比较小的C;而有些样本很重要,决不能分类错误,就给一个很大的C。
对付数据集偏斜问题的方法之一就是在惩罚因子上作文章,想必大家也猜到了,那就是给样本数量少的负类更大的惩罚因子,表示我们重视这部分样本(本来数量就少,再抛弃一些,那人家负类还活不活了),因此我们的目标函数中因松弛变量而损失的部分就变成了:
其中i=1…p都是正样本,j=p+1…p+q都是负样本。libSVM这个算法包在解决偏斜问题的时候用的就是这种方法。
  那C+和C-怎么确定呢?它们的大小是试出来的(参数调优),但是他们的比例可以有些方法来确定。咱们先假定说C+是5这么大,那确定C-的一个很直观的方法就是使用两类样本数的比来算,对应到刚才举的例子,C-就可以定为500这么大(因为10,000:100=100:1嘛)。
  但是这样并不够好,回看刚才的图,你会发现正类之所以可以“欺负”负类,其实并不是因为负类样本少,真实的原因是负类的样本分布的不够广(没扩充到负类本应该有的区域)。说一个具体点的例子,现在想给政治类和体育类的文章做分类,政治类文章很多,而体育类只提供了几篇关于篮球的文章,这时分类会明显偏向于政治类,如果要给体育类文章增加样本,但增加的样本仍然全都是关于篮球的(也就是说,没有足球,排球,赛车,游泳等等),那结果会怎样呢?虽然体育类文章在数量上可以达到与政治类一样多,但过于集中了,结果仍会偏向于政治类!所以给C+和C-确定比例更好的方法应该是衡量他们分布的程度。比如可以算算他们在空间中占据了多大的体积,例如给负类找一个超球——就是高维空间里的球啦——它可以包含所有负类的样本,再给正类找一个,比比两个球的半径,就可以大致确定分布的情况。显然半径大的分布就比较广,就给小一点的惩罚因子。
但是这样还不够好,因为有的类别样本确实很集中,这不是提供的样本数量多少的问题,这是类别本身的特征(就是某些话题涉及的面很窄,例如计算机类的文章就明显不如文化类的文章那么“天马行空”),这个时候即便超球的半径差异很大,也不应该赋予两个类别不同的惩罚因子。
核函数与松弛因子
松弛变量也就是个解决线性不可分问题的方法罢了,但是回想一下,核函数的引入不也是为了解决线性不可分的问题么?为什么要为了一个问题使用两种方法呢?
  其实两者还有微妙的不同。一般的过程应该是这样,还以文本分类为例。在原始的低维空间中,样本相当的不可分,无论你怎么找分类平面,总会有大量的离群点,此时用核函数向高维空间映射一下,虽然结果仍然是不可分的,但比原始空间里的要更加接近线性可分的状态(就是达到了近似线性可分的状态),此时再用松弛变量处理那些少数“冥顽不化”的离群点,就简单有效得多啦。
注: 本文并非自己原创,而是根据的文章加以修改整理得到的
参考文献以及进一步阅读:
1.&&讲解了SVM引入松弛变量的原因及好处
2.&&SVM中核函数的特性以及在SVM中的作用
3.&&Kid的关于SVM经典文章
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:133215次
积分:1412
积分:1412
排名:千里之外
原创:14篇
评论:118条
(1)(1)(2)(7)(1)(1)(1)(2)

我要回帖

更多关于 svm训练样本 的文章

 

随机推荐