Hos*_*ein 70 classification machine-learning svm libsvm
我正在使用LibSVM对一些文档进行分类.最终结果显示,这些文件似乎有点难以分类.但是,我在训练模型时注意到了一些事情.那就是:如果我的训练集是例如1000,则选择其中约800个作为支持向量.我到处寻找,发现这是好事还是坏事.我的意思是支持向量的数量和分类器性能之间是否存在关系?我在上一篇文章中看过这篇文章.但是,我正在执行参数选择,并且我确信特征向量中的属性都是有序的.我只需要知道这种关系.谢谢.ps:我使用线性内核.
kar*_*enu 148
支持向量机是一个优化问题.他们试图找到一个超平面,将两个类划分为最大边距.支持向量是落在该边界内的点.如果你从简单到复杂构建它,最容易理解.
硬边线性SVM
在数据可线性分离的训练集中,并且您正在使用硬边距(不允许松弛),支持向量是位于支撑超平面上的点(与平面边缘处的分割超平面平行的超平面)余量)

所有支持向量都恰好位于边缘.无论数据集的维数或大小如何,支持向量的数量都可以少至2.
软边缘线性SVM
但是,如果我们的数据集不是线性可分的呢?我们介绍软边际SVM.我们不再要求我们的数据点位于保证金之外,我们允许它们中的一些数据流入保证金.我们使用松弛参数C来控制它.(nu-SVM中的nu)这为训练数据集提供了更大的余量和更大的误差,但改进了泛化和/或允许我们找到不可线性分离的数据的线性分离.

现在,支持向量的数量取决于我们允许的松弛程度和数据的分布.如果我们允许大量的松弛,我们将拥有大量的支持向量.如果我们允许很少的松弛,我们将只有很少的支持向量.准确性取决于为所分析的数据找到合适的松弛程度.有些数据不可能获得高水平的准确性,我们必须找到最合适的数据.
非线性SVM
这将我们带到非线性SVM.我们仍在尝试线性划分数据,但我们现在正试图在更高维度的空间中进行.这是通过内核函数完成的,该函数当然有自己的一组参数.当我们将其转换回原始特征空间时,结果是非线性的:

现在,支持向量的数量仍然取决于我们允许的松弛程度,但它也取决于我们模型的复杂性.在输入空间的最终模型中的每个扭曲和转弯都需要一个或多个支持向量来定义.最终,SVM的输出是支持向量和alpha,它实质上定义了特定支持向量对最终决策的影响程度.
这里,准确性取决于可能过度拟合数据的高复杂性模型与大边际之间的权衡,该大边际将错误地分类一些训练数据以便更好地概括.如果完全过度拟合数据,支持向量的数量可以从极少数到每个数据点.这种权衡是通过C和内核和内核参数的选择来控制的.
我假设当你说表现时你指的是准确性,但我想我也会谈到计算复杂性方面的表现.为了使用SVM模型测试数据点,您需要使用测试点计算每个支持向量的点积.因此,模型的计算复杂度在支持向量的数量上是线性的.较少的支持向量意味着更快的测试点分类.
一个很好的资源: 用于模式识别的支持向量机教程
Chr*_* A. 22
1000个中的800个基本上告诉您SVM需要使用几乎每个训练样本来编码训练集.这基本上告诉您数据没有太多规律性.
听起来你没有足够的训练数据存在重大问题.此外,也许可以考虑一些能够更好地分离这些数据的特定功能.
ffr*_*end 12
两个样本数和属性的数目 可影响支持向量的数量,使模型更加复杂.我相信你使用单词甚至ngram作为属性,所以它们中有很多,自然语言模型本身就非常复杂.因此,1000个样本的800个支持向量似乎没问题.(另外要注意@karenu关于C/nu参数的评论,这些评论对SVs数量也有很大影响).
为了获得关于这种召回SVM主流思想的直觉.SVM在多维特征空间中工作,并尝试查找分隔所有给定样本的超平面.如果您有大量样本且只有2个要素(2维),则数据和超平面可能如下所示:

这里只有3个支持向量,其他所有支持向量都在其后面,因此不起任何作用.注意,这些支持向量仅由2个坐标定义.
现在假设您有3维空间,因此支持向量由3个坐标定义.

这意味着还需要调整一个参数(坐标),并且此调整可能需要更多样本才能找到最佳超平面.换句话说,在最坏的情况下,SVM每个样本只找到1个超平面坐标.
当数据结构良好(即保持模式很好)时,可能只需要几个支持向量 - 所有其他支持向量都将保持不变.但是文本结构化数据非常非常糟糕.SVM尽力而为,尽可能地拟合样本,因此作为支持向量的样本甚至比滴数更多.随着样本数量的增加,这种"异常"减少(出现更多不重要的样本),但支持向量的绝对数量仍然很高.
| 归档时间: |
|
| 查看次数: |
54617 次 |
| 最近记录: |