A. svm算法是什么
支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。
SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。
SVM可以通过核方法(kernel method)进行非线性分类,是常见的核学习(kernel learning)方法之一 。
SVM被提出于1964年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别、文本分类等模式识别(pattern recognition)问题中有得到应用。
动机
H1不能把类别分开。H2可以,但只有很小的间隔。H3以最大间隔将它们分开。
将数据进行分类是机器学习中的一项常见任务。 假设某些给定的数据点各自属于两个类之一,而目标是确定新数据点将在哪个类中。对于支持向量机来说,数据点被视为p维向量,而我们想知道是否可以用 (p-1)维超平面来分开这些点。
这就是所谓的线性分类器。可能有许多超平面可以把数据分类。最佳超平面的一个合理选择是以最大间隔把两个类分开的超平面。
因此,我们要选择能够让到每边最近的数据点的距离最大化的超平面。如果存在这样的超平面,则称为最大间隔超平面,而其定义的线性分类器被称为最大间隔分类器,或者叫做最佳稳定性感知器。
应用
1、用于文本和超文本的分类,在归纳和直推方法中都可以显着减少所需要的有类标的样本数。
2、用于图像分类。实验结果显示:在经过三到四轮相关反馈之后,比起传统的查询优化方案,支持向量机能够获取明显更高的搜索准确度。这同样也适用于图像分割系统,比如使用Vapnik所建议的使用特权方法的修改版本SVM的那些图像分割系统。
3、用于手写字体识别。
4、用于医学中分类蛋白质,超过90%的化合物能够被正确分类。基于支持向量机权重的置换测试已被建议作为一种机制,用于解释的支持向量机模型。
支持向量机权重也被用来解释过去的SVM模型。为识别模型用于进行预测的特征而对支持向量机模型做出事后解释是在生物科学中具有特殊意义的相对较新的研究领域。
以上内容参考网络-支持向量机
B. 请问有谁知道文本分类SVM或libsvm的原始数据是怎么来的吗是特征权重后得来的吗,
数据都是通过特定算法提取的,有很多特征提取算法的,网上找找文献自己实现吧
C. SVM文本分类中的数据问题
是同一个属性
对你这个图的数据,简单的理解是:对n行大小这么多个文本,提取13维特征(列的维数为13,同时同一列表示每个文本提取的相同属性的特征),构成特征集进行二分类(这里标号只有+1、-1所以说这么多文章分成两类)。
D. 汽车svm是什么意思
支持向量机(Support Vector Machine, SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。
SVM使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器 。SVM可以通过核方法进行非线性分类,是常见的核学习方法之一。
SVM被提出于1964年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别、汽车、文本分类等模式识别问题中有得到应用。
SVM是由模式识别中广义肖像算法发展而来的分类器,其早期工作来自前苏联学者Vladimir N. Vapnik和Alexander Y. Lerner在1963年发表的研究。1964年,Vapnik和Alexey对广义肖像算法进行了进一步讨论并建立了硬边距的线性SVM。
此后在二十世纪70-80年代,随着模式识别中最大边距决策边界的理论研究 、基于松弛变量的规划问题求解技术的出现,和VC维的提出 ,SVM被逐步理论化并成为统计学习理论的一部分。
1992年,Bernhard E. Boser、Isabelle M. Guyon和Vapnik通过核方法得到了非线性SVM。
1995年,Corinna Cortes和Vapnik提出了软边距的非线性SVM并将其应用于手写字符识别问题 ,这份研究在发表后得到了关注和引用,为SVM在各领域的应用提供了参考。
以上内容参考 网络-支持向量机E. svm对文本分类选择什么核函数好
SVM关键是选取核函数的类型,主要有线性内核,多项式内核,径向基内核(RBF),sigmoid
F. 下了个SVM文本分类程序,调通了,但没有训练数据和测试数据,请各位大神帮帮忙!拜谢!!!!!!
你也不说你下载的是什么样的程序!基于libsvm 或者别人自己写的SVM工具箱?
不过什么都无所谓了,你看看程序里是不是有诸如svmtrain (TrainLabel, TrainData, Option) 这样的字眼?
这就是对SVM进行训练啦...你要的训练数据就是这个TrainLabel, TrainData,一般来说TrainLabel, TrainData 行数相同(也就是样本点个数)TrainLabel一般是n行1列(n是你样本个数)它代表训练样本已知的类标,而TrainData是n行m列,m是特征的维数了...
是不是有诸如svmpredict (Testlabel, TestData, model)这样的字眼?这里Testlabel, TestData
就是你要测试数据了,和前面一样 他们也是同行数的,但是测试是未知样本,所以Testlabel可以随便填我们不知道才要测试嘛!!!
如果你这些都知道,而是没有训练测试数据的话....那我就无语了,网上很多这样的数据集下载吧!!!或者自己提取
G. 什么是svm分类数据挖掘
数据仓库,数据库或者其它信息库中隐藏着许多可以为商业、科研等活动的决策提供所需要的知识。分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型。分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值。
分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强调客户细分。客户类别分析的功能也在于此,采用数据挖掘中的分类技术,可以将客户分成不同的类别,比如呼叫中心设计时可以分为:呼叫频繁的客户、偶然大量呼叫的客户、稳定呼叫的客户、其他,帮助呼叫中心寻找出这些不同种类客户之间的特征,这样的分类模型可以让用户了解不同行为类别客户的分布特征;其他分类应用如文献检索和搜索引擎中的自动文本分类技术;安全领域有基于分类技术的入侵检测等等。机器学习、专家系统、统计学和神经网络等领域的研究人员已经提出了许多具体的分类预测方法。下面对分类流程作个简要描述:
训练:训练集——>特征选取——>训练——>分类器
分类:新样本——>特征选取——>分类——>判决
最初的数据挖掘分类应用大多都是在这些方法及基于内存基础上所构造的算法。目前数据挖掘方法都要求具有基于外存以处理大规模数据集合能力且具有可扩展能力。下面对几种主要的分类方法做个简要介绍:
(1)决策树
决策树归纳是经典的分类算法。它采用自顶向下递归的各个击破方式构造决策树。树的每一个结点上使用信息增益度量选择测试属性。可以从生成的决策树中提取规则。
(2) KNN法(K-Nearest Neighbor)
KNN法即K最近邻法,最初由Cover和Hart于1968年提出的,是一个理论上比较成熟的方法。该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。因此,采用这种方法可以较好地避免样本的不平衡问题。另外,由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
该方法的不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。另外还有一种Reverse KNN法,能降低KNN算法的计算复杂度,提高分类的效率。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
(3) SVM法SVM法即支持向量机(Support Vector Machine)法,由Vapnik等人于1995年提出,具有相对优良的性能指标。该方法是建立在统计学习理论基础上的机器学习方法。通过学习算法,SVM可以自动寻找出那些对分类有较好区分能力的支持向量,由此构造出的分类器可以最大化类与类的间隔,因而有较好的适应能力和较高的分准率。该方法只需要由各类域的边界样本的类别来决定最后的分类结果。
支持向量机算法的目的在于寻找一个超平面H(d),该超平面可以将训练集中的数据分开,且与类域边界的沿垂直于该超平面方向的距离最大,故SVM法亦被称为最大边缘(maximum margin)算法。待分样本集中的大部分样本不是支持向量,移去或者减少这些样本对分类结果没有影响,SVM法对小样本情况下的自动分类有着较好的分类结果。
(4) VSM法VSM法即向量空间模型(Vector Space Model)法,由Salton等人于60年代末提出。这是最早也是最出名的信息检索方面的数学模型。其基本思想是将文档表示为加权的特征向量:D=D(T1,W1;T2,W2;…;Tn,Wn),然后通过计算文本相似度的方法来确定待分样本的类别。当文本被表示为空间向量模型的时候,文本的相似度就可以借助特征向量之间的内积来表示。
在实际应用中,VSM法一般事先依据语料库中的训练样本和分类体系建立类别向量空间。当需要对一篇待分样本进行分类的时候,只需要计算待分样本和每一个类别向量的相似度即内积,然后选取相似度最大的类别作为该待分样本所对应的类别。
由于VSM法中需要事先计算类别的空间向量,而该空间向量的建立又很大程度的依赖于该类别向量中所包含的特征项。根据研究发现,类别中所包含的非零特征项越多,其包含的每个特征项对于类别的表达能力越弱。因此,VSM法相对其他分类方法而言,更适合于专业文献的分类。
(5) Bayes法
Bayes法是一种在已知先验概率与类条件概率的情况下的模式分类方法,待分样本的分类结果取决于各类域中样本的全体。
设训练样本集分为M类,记为C={c1,…,ci,…cM},每类的先验概率为P(ci),i=1,2,…,M。当样本集非常大时,可以认为P(ci)=ci类样本数/总样本数。对于一个待分样本X,其归于cj类的类条件概率是P(X/ci),则根据Bayes定理,可得到cj类的后验概率P(ci/X):
P(ci/x)=P(x/ci)·P(ci)/P(x)(1)
若P(ci/X)=MaxjP(cj/X),i=1,2,…,M,j=1,2,…,M,则有x∈ci(2)
式(2)是最大后验概率判决准则,将式(1)代入式(2),则有:
若P(x/ci)P(ci)=Maxj〔P(x/cj)P(cj)〕,i=1,2,…,M,j=1,2,…,M,则x∈ci
这就是常用到的Bayes分类判决准则。经过长期的研究,Bayes分类方法在理论上论证得比较充分,在应用上也是非常广泛的。
Bayes方法的薄弱环节在于实际情况下,类别总体的概率分布和各类样本的概率分布函数(或密度函数)常常是不知道的。为了获得它们,就要求样本足够大。另外,Bayes法要求表达文本的主题词相互独立,这样的条件在实际文本中一般很难满足,因此该方法往往在效果上难以达到理论上的最大值。
神经网络分类算法的重点是构造阈值逻辑单元,一个值逻辑单元是一个对象,它可以输入一组加权系数的量,对它们进行求和,如果这个和达到或者超过了某个阈值,输出一个量。如有输入值X1, X2, ..., Xn 和它们的权系数:W1, W2, ..., Wn,求和计算出的 Xi*Wi ,产生了激发层 a = (X1 * W1)+(X2 * W2)+...+(Xi * Wi)+...+ (Xn * Wn),其中Xi 是各条记录出现频率或其他参数,Wi是实时特征评估模型中得到的权系数。神经网络是基于经验风险最小化原则的学习算法,有一些固有的缺陷,比如层数和神经元个数难以确定,容易陷入局部极小,还有过学习现象,这些本身的缺陷在SVM算法中可以得到很好的解决。
H. SVM的类型和核函数选择
线性分类:线性可分性、损失函数(loss function)、经验风险(empirical risk)与结构风险(structural risk)。
核函数的选择要求满足Mercer定理(Mercer's theorem),即核函数在样本空间内的任意格拉姆矩阵(Gram matrix)为半正定矩阵(semi-positive definite)。
常用的核函数有:线性核函数,多项式核函数,径向基核函数,Sigmoid核函数和复合核函数,傅立叶级数核,B样条核函数和张量积核函数等。
(8)svm算法文本分类扩展阅读
SVM被提出于1964年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别、文本分类等模式识别(pattern recognition)问题中有得到应用。
核函数具有以下性质:
1、核函数的引入避免了“维数灾难”,大大减小了计算量。而输入空间的维数n对核函数矩阵无影响,因此,核函数方法可以有效处理高维输入。
2、无需知道非线性变换函数Φ的形式和参数。
3、核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。
4、核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。
I. 谁有改进的svm文本分类的源代码
支持向量机SVM ( Support Vector Machines)是由Vanpik领导的AT&TBell实验室研究小组
在1963年提出的一种新的非常有潜力的分类技术, SVM是一种基于统计学习理论的模式识别方法,主要应用于模式识别领域.由于当时这些研究尚不十分完善,在解决模式识别问题中往往趋于保守,且数学上比较艰涩,因此这些研究一直没有得到充的重视.直到90年代,一个较完善的理论体系—统计学习理论 ( StatisticalLearningTheory,简称SLT) 的实现和由于神经网络等较新兴的机器学习方法的研究遇到一些重要的困难,比如如何确定网络结构的问题、过学习与欠学习问题、局部极小点问题等,使得SVM迅速发展和完善,在解决小样本 、非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中.从此迅速的发展起来,现在已经在许多领域(生物信息学,文本和手写识别等)都取得了成功的应用。
SVM的关键在于核函数,这也是最喜人的地方。低维空间向量集通常难于划分,解决的方法是将它们映射到高维空间。但这个办法带来的困难就是计算复杂度的增加,而核函数正好巧妙地解决了这个问题。也就是说,只要选用适当的核函数,我们就可以得到高维空间的分类函数。在SVM理论中,采用不同的核函数将导致不同的SVM算法
它是一种以统计学理论为基础的,以结构风险最小化的学习机学习方法,要优于神经网络学习,以上是摘自本人的毕业设计,如需转载,请通知本人
J. 文本分类的方法
文本分类问题与其它分类问题没有本质上的区别,其方法可以归结为根据待分类数据的某些特征来进行匹配,当然完全的匹配是不太可能的,因此必须(根据某种评价标准)选择最优的匹配结果,从而完成分类。 后来人们意识到,究竟依据什么特征来判断文本应当隶属的类别这个问题,就连人类自己都不太回答得清楚,有太多所谓“只可意会,不能言传”的东西在里面。人类的判断大多依据经验以及直觉,因此自然而然的会有人想到何让机器像人类一样自己来通过对大量同类文档的观察来自己总结经验,作为今后分类的依据。这便是统计学习方法的基本思想。
统计学习方法需要一批由人工进行了准确分类的文档作为学习的材料(称为训练集,注意由人分类一批文档比从这些文档中总结出准确的规则成本要低得多),计算机从这些文档中挖掘出一些能够有效分类的规则,这个过程被形象的称为训练,而总结出的规则集合常常被称为分类器。训练完成之后,需要对计算机从来没有见过的文档进行分类时,便使用这些分类器来进行。这些训练集包括sogou文本分类分类测试数据、中文文本分类分类语料库,包含Arts、Literature等类别的语料文本、可用于聚类的英文文本数据集、网易分类文本分类文本数据、tc-corpus-train(语料库训练集,适用于文本分类分类中的训练)、2002年中文网页分类训练集CCT2002-v1.1等。
现如今,统计学习方法已经成为了文本分类领域绝对的主流。主要的原因在于其中的很多技术拥有坚实的理论基础(相比之下,知识工程方法中专家的主观因素居多),存在明确的评价标准,以及实际表现良好。统计分类算法
将样本数据成功转化为向量表示之后,计算机才算开始真正意义上的“学习”过程。常用的分类算法为:
决策树,Rocchio,朴素贝叶斯,神经网络,支持向量机,线性最小平方拟合,kNN,遗传算法,最大熵,Generalized Instance Set等。在这里只挑几个最具代表性的算法侃一侃。
Rocchio算法
Rocchio算法应该算是人们思考文本分类问题时最先能想到,也最符合直觉的解决方法。基本的思路是把一个类别里的样本文档各项取个平均值(例如把所有 “体育”类文档中词汇“篮球”出现的次数取个平均值,再把“裁判”取个平均值,依次做下去),可以得到一个新的向量,形象的称之为“质心”,质心就成了这 个类别最具代表性的向量表示。再有新文档需要判断的时候,比较新文档和质心有多么相像(八股点说,判断他们之间的距离)就可以确定新文档属不属于这个类。 稍微改进一点的Rocchio算法不仅考虑属于这个类别的文档(称为正样本),也考虑不属于这个类别的文档数据(称为负样本),计算出来的质心尽量靠近正样本同时尽量远离负样本。Rocchio算法做了两个很致命的假设,使得它的性能出奇的差。一是它认为一个类别的文档仅仅聚集在一个质心的周围,实际情况往往不是如此(这样的数据称为线性不可分的);二是它假设训练数据是绝对正确的,因为它没有任何定量衡量样本是否含有噪声的机制,因而也就对错误数据毫无抵抗力。
不过Rocchio产生的分类器很直观,很容易被人类理解,算法也简单,还是有一定的利用价值的,常常被用来做科研中比较不同算法优劣的基线系统(Base Line)。
朴素贝叶斯算法
贝叶斯算法关注的是文档属于某类别概率。文档属于某个类别的概率等于文档中每个词属于该类别的概率的综合表达式。而每个词属于该类别的概率又在一定程度上 可以用这个词在该类别训练文档中出现的次数(词频信息)来粗略估计,因而使得整个计算过程成为可行的。使用朴素贝叶斯算法时,在训练阶段的主要任务就是估计这些值。
朴素贝叶斯算法的公式并不是只有一个。
首先对于每一个样本中的元素要计算先验概率。其次要计算一个样本对于每个分类的概率,概率最大的分类将被采纳。所以
其中P(d| Ci)=P(w1|Ci) P(w2|Ci) …P(wi|Ci) P(w1|Ci) …P(wm|Ci) (式1)
P(w|C)=元素w在分类为C的样本中出现次数/数据整理后的样本中元素的总数(式2)
这其中就蕴含着朴素贝叶斯算法最大的两个缺陷。
首先,P(d| Ci)之所以能展开成(式1)的连乘积形式,就是假设一篇文章中的各个词之间是彼此独立的,其中一个词的出现丝毫不受另一个词的影响(回忆一下概率论中变 量彼此独立的概念就可以知道),但这显然不对,即使不是语言学专家的我们也知道,词语之间有明显的所谓“共现”关系,在不同主题的文章中,可能共现的次数 或频率有变化,但彼此间绝对谈不上独立。
其二,使用某个词在某个类别训练文档中出现的次数来估计P(wi|Ci)时,只在训练样本数量非常多的情况下才比较准确(考虑扔硬币的问题,得通过大量观 察才能基本得出正反面出现的概率都是二分之一的结论,观察次数太少时很可能得到错误的答案),而需要大量样本的要求不仅给前期人工分类的工作带来更高要求 (从而成本上升),在后期由计算机处理的时候也对存储和计算资源提出了更高的要求。
但是稍有常识的技术人员都会了解,数据挖掘中占用大量时间的部分是数据整理。在数据整理阶段,可以根据词汇的情况生成字典,删除冗余没有意义的词汇,对于单字和重要的词组分开计算等等。
这样可以避免朴素贝叶斯算法的一些问题。其实真正的问题还是存在于算法对于信息熵的计算方式。
朴素贝叶斯算法在很多情况下,通过专业人员的优化,可以取得极为良好的识别效果。最为人熟悉的两家跨国软件公司在目前仍采用朴素贝叶斯算法作为有些软件自然语言处理的工具算法。
kNN算法
最近邻算法(kNN):在给定新文档后,计算新文档特征向量和训练文档集中各个文档的向量的相似度,得到K篇与该新文 档距离最近最相似的文档,根据这K篇文档所属的类别判定新文档所属的类别(注意这也意味着kNN算法根本没有真正意义上的“训练”阶段)。这种判断方法很 好的克服了Rocchio算法中无法处理线性不可分问题的缺陷,也很适用于分类标准随时会产生变化的需求(只要删除旧训练文档,添加新训练文档,就改变了 分类的准则)。
kNN唯一的也可以说最致命的缺点就是判断一篇新文档的类别时,需要把它与现存的所有训练文档全都比较一遍,这个计算代价并不是每个系统都能够承受的(比 如我将要构建的一个文本分类系统,上万个类,每个类即便只有20个训练样本,为了判断一个新文档的类别,也要做20万次的向量比较!)。一些基于kNN的 改良方法比如Generalized Instance Set就在试图解决这个问题。
kNN也有另一个缺点,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 SVM(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。
支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或称泛化能力)。
SVM 方法有很坚实的理论基础,SVM 训练的本质是解决一个二次规划问题(Quadruple Programming,指目标函数为二次函数,约束条件为线性约束的最优化问题),得到的是全局最优解,这使它有着其他统计学习技术难以比拟的优越性。 SVM分类器的文本分类效果很好,是最好的分类器之一。同时使用核函数将 原始的样本空间向高维空间进行变换,能够解决原始样本线性不可分的问题。其缺点是核函数的选择缺乏指导,难以针对具体问题选择最佳的核函数;另外SVM 训练速度极大地受到训练集规模的影响,计算开销比较大,针对SVM 的训练速度问题,研究者提出了很多改进方法,包括Chunking 方法、Osuna算法、SMO 算法和交互SVM 等。SVM分类器的优点在于通用性较好,且分类精度高、分类速度快、分类速度与训练样本个数无关,在查准和查全率方面都略优于kNN及朴素贝叶斯方法。