稀疏的训练集是否会对SVM产生不利影响?


12

我正在尝试使用SVM将消息分类为不同的类别。我已经从训练集中汇编了一些理想的单词/符号列表。

对于表示消息的每个矢量,我将相应行设置为1是否存在该单词:

“语料库”是:[玛丽,小羊羔,星星,闪烁]

第一条消息:“玛丽有只小羊羔”-> [1 1 1 0 0]

第二条消息:“闪烁的小星星”-> [0 1 0 1 1]

我认为这在SVM中是相当常见的设置,但是我的问题是,如果集合中包含成千上万个单词,那么实际上每条消息仅显示1-2个单词会怎样?我的训练向量集的线性相关性是否会对算法的收敛能力产生不利影响?


1
您是否有大量数据,但标签数据很少?如果是这样,您可能想研究半监督学习。使用一些未标记的数据既可以提高准确性,又可以降低过度拟合的风险。
神经元2012年

@neuron我曾考虑过要这样做。什么是半监督体系结构示例?
jonsca 2012年

1
我只使用了半监督的“骇客”方法(即训练集上的训练模型,使用模型对数据进行预测,以> 0.5的预测概率提取所有数据,并与训练集合并,并在新的训练集上创建模型)。但我见过flexmix提到的几个地方(见cran.r-project.org/web/packages/flexmix
神经元

@neuron好的,因为我看到的文章(尽管进行了类似维基百科的快速搜索)对体系结构不是很具体。我将结帐flexmix-不过,我已经在日历上有“ Learn R”已有几年了!
jonsca 2012年

做到这一点,R令人赞叹,可供您使用的库简直令人难以置信。像插入符号,sqldf / rmysql,foreach(与之并行),ggplot2和googlevis之类的工具都非常有用。我一开始并不喜欢这种语言,但是这种语言在我身上成长了,我现在绝对喜欢使用它。
神经元

Answers:


9

稀疏性和线性相关性是两个不同的事物。线性相关性意味着某些特征向量是其他特征向量的简单倍数(或应用于示例的相同)。在您描述的设置中,我认为线性相关性不太可能(这意味着两个术语在所有文档中具有相同的频率(或其倍数))。仅具有稀疏特征不会为SVM带来任何问题。看到这种情况的一种方法是,您可以对坐标轴进行随机旋转,这将使问题不变并给出相同的解决方案,但是会使数据完全不稀疏(部分原因是随机投影的工作原理)。

同样,您似乎在谈论原始版本中的SVM 。请注意,如果您使用内核SVM,仅仅是因为您有一个稀疏的数据集,并不意味着内核矩阵将是稀疏的。但是,它可能等级较低。在那种情况下,您实际上可以利用这一事实进行更有效的训练(例如,参见使用低秩内核表示形式的有效svm训练)。


1
没错,我的术语有些呆板。说得通。
jonsca 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.