0

我正在使用svm-rank

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

训练集属性:3 个特征,12 个排名,596 个示例

运行在几秒钟内完成,我得到了一个有效的模型。但是当我使用更大的数据集时:

训练集属性:3个特征,30个排名,1580个例子

运行在第 29 次迭代中卡住了几个小时。这很奇怪,因为文档指出 svm-rank “在排名数量(即查询)中线性扩展”。

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

4

2 回答 2

1

但是,由于我不想在 SVMrank 编码上花费超过一个下午,所以我只实现了一个简单的分离 oracle,它在每个排名中的项目数是二次的(不是 [[中描述的 O[k*log k]约阿希姆斯,2006])。 http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html

您或多或少地将示例数量增加了 3。因此,您希望时间增加 9 倍。

[S] 因为文档指出 svm-rank “在排名数量(即查询)中线性扩展”

您将排名的数量也扩大了 2 倍多一点。因此,将这两者结合起来,您会期望训练花费大约 20 倍的时间。

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

于 2014-10-08T14:13:27.640 回答
0

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

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

于 2016-05-15T13:31:49.860 回答