2015-12-19 47 views
0

考慮SVM中不同類型錯誤的不同成本讓Y爲二元變量。如何使用R

如果我們使用邏輯迴歸進行建模,那麼我們可以使用cv.glm進行交叉驗證,我們可以在cost參數中指定成本函數。通過指定成本函數,我們可以爲不同類型的錯誤分配不同的單位成本:預測是|參考是否或預測否|參考是是。

我想知道是否可以在SVM中實現同樣的功能。換句話說,我有沒有辦法指定一個成本(損失)函數而不是使用內置損失函數?

回答

0

除了Yueguoguo的回答,還有三個解決方案,標準Wrapper方法,超平面調整和e1017中的一個。

Wrapper方法(例如weka中可用的開箱即用方法)幾乎適用於所有分類器。這個想法是根據誤分類成本對數據進行超量或欠採樣。經過訓練以優化準確度的學習模型在成本下是最佳的。

第二個想法經常用在textminining中。分類是svm從距超平面的距離導出。對於線性可分問題,支持向量的距離爲{1,-1}。那麼新例子的分類基本上就是這個距離是正值還是負值。然而,人們也可以改變這個距離而不是作出決定,而是將其移動到例如0.8。這樣,分類向一個方向或另一個方向移動,而數據的一般形狀不會改變。

最後,一些機器學習工具包內置參數,用於類別特定成本,如class.weightse1017實現。這個名字是由於cost這個詞已被預先佔用。

0

由於算法的美麗理論基礎,SVM超平面參數的損失函數會自動調整。 SVM應用交叉驗證來調整超參數。比方說,使用RBF內核,交叉驗證是選擇最佳性能的C(成本)和gamma(內核參數)的最佳組合,以某些度量標準衡量(例如均方誤差)。在e1071中,可以使用tune方法獲得性能,其中可以指定超參數的範圍以及交叉驗證的屬性(即5,10或更多倍交叉驗證)。

要使用Area-Under-Curve類型的誤差測量獲得比較交叉驗證結果,可以使用不同的超參數配置訓練不同的模型,然後根據預先標記的數據集合驗證模型。

希望答案有幫助。

+0

您的回答與接受的答案相比是正確的。我接受另一個,因爲它提供了更多的選項和編程細節的更多細節。謝謝。 – Rwitch

+0

謝謝。我試圖從理論的角度來解釋。 CAFEBABE的答案在實際細節方面更好。 – Yueguoguo