2015-08-29 79 views
-1

我有1960年樣本的數據集,有12個特徵,並嘗試使用980樣本訓練和980樣本測試來解決二元分類問題。對於我正在使用「svmtrain」進行培訓並對我使用「svmclassify」進行分類。是否可以繪製訓練錯誤VS訓練樣本號? 有什麼建議嗎? 我是matlab和SVM的新手。如何在Matlab中使用svmtrain繪製誤差與訓練樣本數

+0

什麼是「培訓錯誤」在這種情況下?你的意思是錯誤分類錯誤的基礎事實? – rayryeng

+0

嗯...請嘗試澄清您的問題,並且有人可能會提供幫助。 – ConfusinglyCuriousTheThird

+0

是的「訓練錯誤」我的意思是錯誤分類錯誤的基礎真相 –

回答

1

重要的是要考慮諸如SVM和神經網絡之類的方法之間的差異。當訓練一個神經網絡時,你用初始權重開始訓練,然後通過你的訓練樣本一步一步。你基本上會有一個for循環遍歷每個訓練樣本並應用任何訓練算法。因此容易評估訓練中的錯誤分類錯誤,例如,每100個樣本之後。

然而SVM的工作方式不同:訓練SVM時,您構造了一個一個方程,它描述了整個問題。這通常是

形式最小化的||w||規範,受y_i (w * x_i - b) >= 1所有i訓練樣本。

w是在分離超平面的法線矢量,b是一個超平面到原點的偏移,x_i是訓練樣本和y_i是訓練樣本的標籤。這是一個優化問題,因此您需要尋找一種最小化||w||的解決方案,一旦找到這樣一個w,算法就完成了。 但是:您所有的訓練樣本都用於訓練,因此您沒有像神經網絡那樣的逐個樣本的過程,只能在整個訓練結束後才能評估錯誤分類錯誤,所有樣本已完成。

爲了能夠繪製誤分VS在支持向量機訓練樣本的數量,你將不得不運行SVM功能svmtrain(或者,如果你有一個新的MATLAB版本fitcsvm)多次使用不同數量的訓練樣本並評估錯誤。

最後一個注意事項:如果您只驗證訓練錯誤,請將門打開以防過度配合。這意味着您的算法正確地學習了您的訓練數據的特徵,但不能將這些知識推廣到新數據。因此,您在訓練中的錯誤率會非常低,但在新數據上會失敗。爲了防止過度配合,您可以使用一個很小的驗證數據集(可能是您的培訓數據的5-10%),您不用它進行培訓。訓練SVM後,可以評估驗證數據集上的錯誤分類錯誤,並檢查訓練數據集和驗證數據集中的錯誤率非常相似,因此您可以確定新數據也可以正確分類。

相關問題