SVM排名仅适用于微小数据集

时间:2014-10-08 14:06:16

标签: machine-learning classification svm ranking svmlight

我正在使用svm-rank

在小型数据集上运行svm_rank_learn时:

  

训练集属性:3个功能,12个排名,596个示例

运行在几秒钟内结束,我得到一个有效的模型。但是当我使用larger dataset时:

  

训练集属性:3个功能,30个排名,1580个示例

在迭代29上,运行停留数小时。 这很奇怪,因为文档声明svm-rank“在排名数量(即查询)中线性扩展”。

我的数据集或格式出了什么问题?

2 个答案:

答案 0 :(得分:1)

  

然而,由于我不想花费一个多的下午来编写SVMrank,我只实现了一个简单的分离oracle,它在每个排名中的项目数 二次方(不是O [ [Joachims,2006]中描述的k * log k]分离oracle。   http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html

您或多或少会将示例数量增加3个。因此,您预计时间会增加9倍。

  

[S]文件说明svm-rank"在排名数量(即查询)中线性扩展"

您也可以将排名数量增加2倍以上。因此,结合这两者,您希望培训时间延长20倍。

这并不能解释为什么它会从几秒钟到几个小时。

答案 1 :(得分:0)

您的功能值属于不同的范围。尝试跨样本缩放要素,使每个要素的均值和单位方差均为零。它还有助于规范每个样本中的特征。这两个步骤极大地加快了计算速度。

Scikit-learn对数据预处理有一个很好的介绍,它还提供了允许轻松完成此操作的方法,在http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing上找到更多信息。