2014-10-08 95 views
0

我正在使用svm-rankSVM排名仅适用于小型数据集

当上一个小数据集运行svm_rank_learn

培训组属性:3层的功能,12个排名中,596例

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

培训组属性:3层的功能,30个排名1580例

运行被卡住小时迭代29 这是自文档很奇怪指出svm-rank“在排名数量(即查询)中线性缩放”。

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

+0

我可以重现这个问题。但是在我的机器上,它会在第24次迭代时停止。您可以尝试运行svm-light代码,其中应该提供相同的输出参数。看看它是否卡在那里。 – Unapiedra 2014-10-08 14:24:39

+0

这将是很好的包括你运行的确切命令,包括任何配置参数。 – dmh 2015-08-14 09:47:35

回答

1

然而,因为我不想花了一个下午的更多的编码SVMrank,我只实现了一个简单的分离甲骨文是二次在项目在每个排行榜(数量不将O [K * log k]分离oracle [Joachims,2006]中描述的)。 http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html

你或多或少3.因此增加了实例的个数,你会期望通过的9

[S]因斯的文档状态的因素的时间增加“svm-rank”在排名数(即查询数)中线性缩放“

您将排名数也按比例缩放大于2倍。因此,结合这两项, d预计培训需要花费20倍左右的时间。

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

0

您的功能值属于不同的范围。尝试跨样本缩放您的要素以使每个要素具有零均值和单位差异。这也有助于标准化每个样本中的特征。这两个步骤极大地加速了计算。

Scikit-learn对数据预处理有一个很好的介绍,它也提供了方法,可以很容易地做到这一点,查找更多关于http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing