我正在使用svm-rank。SVM排名仅适用于小型数据集
当上一个小数据集运行svm_rank_learn
:
培训组属性:3层的功能,12个排名中,596例
运行结束在几秒钟内,我得到一个有效的模式。但是,当我使用了一下larger dataset:
培训组属性:3层的功能,30个排名1580例
运行被卡住小时迭代29 这是自文档很奇怪指出svm-rank“在排名数量(即查询)中线性缩放”。
我的数据集或格式有什么问题?
我正在使用svm-rank。SVM排名仅适用于小型数据集
当上一个小数据集运行svm_rank_learn
:
培训组属性:3层的功能,12个排名中,596例
运行结束在几秒钟内,我得到一个有效的模式。但是,当我使用了一下larger dataset:
培训组属性:3层的功能,30个排名1580例
运行被卡住小时迭代29 这是自文档很奇怪指出svm-rank“在排名数量(即查询)中线性缩放”。
我的数据集或格式有什么问题?
然而,因为我不想花了一个下午的更多的编码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倍左右的时间。
这并不能解释为什么它会从几秒钟到几个小时。
您的功能值属于不同的范围。尝试跨样本缩放您的要素以使每个要素具有零均值和单位差异。这也有助于标准化每个样本中的特征。这两个步骤极大地加速了计算。
Scikit-learn对数据预处理有一个很好的介绍,它也提供了方法,可以很容易地做到这一点,查找更多关于http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing。
我可以重现这个问题。但是在我的机器上,它会在第24次迭代时停止。您可以尝试运行svm-light代码,其中应该提供相同的输出参数。看看它是否卡在那里。 – Unapiedra 2014-10-08 14:24:39
这将是很好的包括你运行的确切命令,包括任何配置参数。 – dmh 2015-08-14 09:47:35