我正在使用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