2014-10-08 69 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