首页 文章

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

提问于
浏览
0

我正在使用svm-rank .

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

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

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

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

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

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

2 回答

  • 1

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

    Scikit-learn有一个关于数据预处理的很好的介绍,它还提供了允许这样做的方法,在http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing上找到更多信息 .

  • 0

    但是,由于我不想花费一个多的下午编写SVMrank,我只实现了一个简单的分离oracle,它在每个排名中的项目数量上是二次的(不是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倍 . 因此,结合这两者,你希望训练时间延长20倍左右 .

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

相关问题