• R语言
  • SVM相关疑问,请大大们进来指教下

最近在做文本分类,用到的模型是SVM,大致流程如下:

1.从新浪、腾讯、网易这些门户网站全网抓爬新闻,数据量在3W篇左右。

2.将新闻正文分词,去停用词。

3.1 直接转换成dtm,权重为tf,维度在3W X 30W的样子。训练SVM模型,参数kernel为radial,type为C-classification,其他默认,交叉验证为10阶。
3.2 转化为dtm,权重为tf,同时计算词的tfidf,并将tfidf值过小的词去掉,得到新的dtm维度大概在2W7 X 2W5,进行SVM训练,参数和3.1种一致。

不论是3.1还是3.2交叉验证的准确率基本都在95-99之间,最低的也有89。可以实际从以上三个网站中拿一篇文章就会发现一个问题,基本上都无法分出这些文章的类别。这个让我非常的苦恼,到底是哪一步出了问题?还是我对整个分类流程认识不够深刻,一些细节工作没做到位?

希望有实际经验的大大们能给一些意见,欢迎各种打脸,越响越好。
再补充一些信息,
1.3W篇文本的数据量总共有17个类别标签。
2.SVM分类是做的二项分类。对每一个类别进行一次判别。
没见过具体数据,以下是我的理解。

思考这样的栗子,x是你要求的方程系数,b是判别方法,b不全为0
ax=b
其中,
a行数m,列数n。
当n大于m时。
当R(a)<n,时。方程解无穷个。
即:
对于R(a)<n,的数据你使用的方法(二项),会产生过拟合现象。

对于大多数方法,建议为了保持该方法学习特性至少保证(m<n时,R(a)=m),即,应使维数<<样本数。





最后一句打错了。修改如下。
对于大多数方法,建议为了保持该方法学习特性至少保证(m>n时,R(a)=n),即,应使维数<<样本数。
[未知用户]


感谢您的回复。

我在一些论文上看到说SVM在高纬稀疏数据上,尤其是样本数量远小于维数的情况下有较好的性能。因为我没啥数学背景,没法在数学上理解这个意思,只是知道下。

另外关于我的这个分类流程你有什么建议或意见吗?是否符合现在工业界做文本自动化分类的标准?
虽然不知道你是不是这个问题,个人理解是这样。

你可以这样理解:
计算时,通过扩维,维数要大于样本数。
样本数据,维数<<样本数


(1)当R(a)<n时。训练数据,不需要扩展空间(性能较高的原因)至少存在一个“面”将样本点完全分类。
此时,SVM分类“结果”等价于,比较“待预测数据”到所有训练数据的距离,其中“距离最近的点的类别”就是分类结果。

(2)当R(a)=n时。训练数据,若是不使用核函数扩展空间,一般是线性平面是无法完全分类的。所以通过一些方法将低维的数据向高纬上扩展。为达到的目的是,使扩展后的数据集R(a)<n。从使新数据集可使用(1)的进行完全划分。

于是:
第一种情况:
当,各n个维度之间不存在共线性或多重共线性关系,或者是某类可转化为线性关系的非线性关系。
当你的训练样本量,足够解释所有分类信息,一般的预测效果是比较好的。
此时,针对(1)
产生了一个问题,当维数n大于样本数m时,我们的用于分类的训练样本m,能完全解释的信息量却达不到n,因为此时需要解释 的是一个完整的n维空间信息。
此时,针对(2)
当维数n小于样本数m时,我们使用方法将维数扩充到n1维,是n1>m。实际上,这个高维的样本,是由较低维数据生成的,仅仅 是一个n1空间的子集。该子集的实质信息量,依然是n。故训练样本大于n时对,样本的解释较完整。

第二种情况
当,维度之间,存在较强的共线关系,或者是某类可转化为线性关系的非线性关系。
导致,维数n大于样本数m时,方程的秩可通过一定方法到R(a1)<m。此时原矩阵a->a1的过程,可以理解为(2)的逆过程。
求解a1需要的就是(2)方法,将a1再转化为a,后用(1)求解。
由于a就是源数据,故直接(1)不扩充维即可达到较好分类。

文本数据大多数属于第一种情况,需要降维提取主要信息。

上面是两种简单的抽象,均是个人理解仅供参考。

补充下,若是文本特征提取方法很多,按照信息量或者直接筛掉稀疏词都是不错的方法。
几十万的维数,是没必要的,这时候一些生僻词,反而在模型中产生消极的影响,使真正具有意义的词被忽略。
若是,特征提取方法正确,少数维(一般文本维度都是上百)的数据就可以达到最佳分类。

刚百度了下:
http://course.baidu.com/view/136f7729bd64783e09122bc8.html

文中提到两个特征提取方法:
一种较好的特征算法,
其中IG算法:
你可以看到在IG方法提取特征时。100维时,准确率是最高的,随着维数增加准确率反而在降低。
即,分类的训练信息主要集中在少数维度中。
当然,这个维度是有下限的,少于一定的数量,模型将丧失意义。
文中,计算了不同的样本量,需要的最佳维度数:
200样本,20维度
1000样本,30维度
2000样本,90维度
3000样被,60维度
。。。。。
具体参考原文。
他发现的规律:满足:维度<<样本。这个条件的
寻找这样的最佳降维方法,是有趣的,研究课题。
我已经不行了,学不动了。同学加油吧
[未知用户]


非常感谢你详细的回答,嗯,我会思考下这方面的东西,我这边也有在用卡方检验做特征的抽取。