2013-06-30 23 views
2

我要求您提供有關分類問題的輸入和/或幫助。如果任何人有任何我可以閱讀的參考資料,以幫助我更好地解決我的問題。分類:處理棄權/拒絕類

我有一個分類問題的四個離散和很好分離的類。然而我的輸入是連續的並且具有很高的頻率(50Hz),因爲它是一個實時問題。

Equal Weight Decision Boundary

圓圈代表的類的集羣,藍線的決定邊界和第5類等於(中性/靜止什麼也不做類)。這個班是被拒絕的班。然而,問題在於,當我從一個班級轉到另一個班級時,我在轉換動作中激活了很多誤報,因爲這個動作顯然是非線性的。例如,每次我從5班(中立班)轉到1班時,我都會在進入1班之前先看到很多3。

理想情況下,我希望我的決策邊界看起來像下圖中被拒絕的類是Class = 5的那個。具有比其他類更高的決策邊界以避免在轉換期間出現錯誤分類。我目前正在Matlab中實現我的算法,使用樸素貝葉斯,kNN和使用Matlab的SVMs優化算法。

問題:處理棄權/拒絕類的最佳/常用方法是什麼?我應該使用(模糊邏輯,損失函數,我應該在訓練中包含休息集羣)嗎?

Ideal Decision Boundary

+1

你的意思是運動不明確和含糊不清。例如,如何在上圖所示的圖表中從5級移到1級時得到錯誤的「3」? 3從來沒有阻礙過。你輸入的頻率很高也是一個令人困惑的陳述。快樂進一步定義你是什麼意思,並想要完成 –

+0

你是正確的,他們不妨礙。但是,上面顯示的例子是假設的,數據是非線性的,所以即使我身體上沒有通過3達到1,但由於非線性,我仍然可以看到它。 –

回答

2

如果您熟悉推進,你可以嘗試AdaBoost.MH棄權。在AdaBoost的常規版本中(對於二元分類任務),每個弱分類器輸出一個+1或-1的標籤。在棄權版本中,每個弱分類器都可以通過預測0來「棄權」,從而允許弱分類器說出「我不知道」。通過將每個實例分解成多個二元分類問題,同樣的想法可以擴展到多類問題。

對於您的情況,您可以將類5映射到「棄權」預測。

之前分解,假設你的訓練情況是這樣的:

x1 -> 1 
x2 -> 5 

那麼分解後,你的訓練情況是這樣的:

x1 -> 1   (predicting +1) 
x1 -> not 2  (predicting -1) 
x1 -> not 3  (predicting -1) 
x1 -> not 4  (predicting -1) 
x2 -> abstain (predicting 0) 
x2 -> not 1  (predicting +1) 
x2 -> not 2  (predicting +1) 
x2 -> not 3  (predicting +1) 
x2 -> not 4  (predicting +1) 

在每提高一次迭代中,你會選擇從一個功能訓練實例並構建一個最小化預測損失並更新與每個訓練實例相關的權重的弱學習者(決策殘塊)。 「x2 - > abstain」不會通過預測0來影響預測損失,但是所有其他分解的訓練實例,如「x2->不是1」,「x2->不是2」等仍然有助於系統識別負值當通過4.

Here分類實例爲1×2的效果是經典的紙,其包括AdaBoost算法與自制的想法:

羅伯特E. Schapire,約拉姆歌手改進的增強算法使用置信級預測。

This是另一篇文章,有更多關於AdaBoost.MH的詳細信息,包括棄權和文本分類中的應用程序。

+0

感謝您的回覆,並指出論文,我會看看它,看看它是否可以幫助。你是否知道任何在Matlab,C或Java中實現這個庫的程序庫(比如Weka),以便我可以在實際實現它之前使用它。 –