我正在使用svm-rank .
在小型数据集上运行 svm_rank_learn
时:
训练集属性:3个功能,12个排名,596个示例
运行在几秒钟内完成,我得到一个有效的模型 . 但是当我使用larger dataset时:
训练集属性:3个功能,30个排名,1580个示例
运行在迭代29上停留数小时 . 这非常奇怪,因为文档声明svm-rank“在排名数量(即查询)中线性扩展” .
我的数据集或格式有什么问题?
我正在使用svm-rank .
在小型数据集上运行 svm_rank_learn
时:
训练集属性:3个功能,12个排名,596个示例
运行在几秒钟内完成,我得到一个有效的模型 . 但是当我使用larger dataset时:
训练集属性:3个功能,30个排名,1580个示例
运行在迭代29上停留数小时 . 这非常奇怪,因为文档声明svm-rank“在排名数量(即查询)中线性扩展” .
我的数据集或格式有什么问题?
2 回答
您的要素值属于不同的范围 . 尝试跨样本缩放功能,使每个功能的均值和单位方差均为零 . 它还有助于规范每个样本中的特征 . 这两个步骤极大地加快了计算速度 .
Scikit-learn有一个关于数据预处理的很好的介绍,它还提供了允许这样做的方法,在http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing上找到更多信息 .
你或多或少地将例子的数量增加了3.所以,你期望时间增加9倍 .
你将排名的数量也增加了2倍 . 因此,结合这两者,你希望训练时间延长20倍左右 .
这并不能解释为什么它会从几秒钟到几个小时 .