2013-06-05 94 views
1

我正在使用樸素貝葉斯分類器。在此之後tutorial。 對於訓練有素的數據,我使用308個問題並將它們分類爲26個手動標記的類別。 發送數據之前,我正在執行NLP。在NLP中,我正在執行(標點符號刪除,標記化,停用詞刪除和詞幹) 此過濾的數據用作mahout的輸入。 使用mahout NBC的我訓練這些數據並獲取模型文件。現在當我運行如何提高樸素貝葉斯分類器的準確性?

mahout testnb 

命令我得到正確的分類實例爲96%。

現在對於我的測試數據,我使用了100個我已經手動標記的問題。當我用測試數據使用訓練好的模型時,我得到正確的分類實例爲1%。 這讓我很失望。

任何人都可以建議我做錯了什麼,或者建議我一些方法來提高NBC的性能。

此外,理想情況下,我應該使用多少個問題數據來訓練和測試?

+0

你有300個標記的輸入「向量」的培訓?你是認真的嗎? –

+0

@ThomasJungblut是300以下?我們應該爲每個班級/類別理想地培訓多少個問題? – SLearner

回答

5

這似乎是"overfitting"的經典問題...您可以在訓練集中獲得非常高的準確率,但在實際情況下得到的準確率很低。

您可能需要更多的培訓實例。此外,這26個類別可能與您擁有的功能無關。機器學習不是神奇的,需要變量和結果之間的某種統計關係。實際上,NBC可能在這裏做的是有效地「記憶」訓練集,對於記憶之外的問題完全沒有用處。

+0

我已將訓練數據集增加到600個,將測試數據集增加到100個,減少了類別,現在減少了8個類別。沒有NLP的測試數據獲得了17%的準確性。 與NLP,我得到10%的準確性。 在NLP執行(標點符號刪除,停用詞刪除,標記化和詞幹) 請給我建議一些建議。無法弄清楚我做錯了什麼。我應該使用NLP嗎?還有我應該增加多少訓練和測試數據? – joashp

+1

@ user2331441我相信你沒有犯錯,它是一個統計問題,可以說在你已經訓練過的80個類別中(每個類別10個),那麼測試集中的未來句子必須有一些相關/相似的單詞。例如,如果問題是'太陽是什麼顏色?'你已經訓練了'太陽是黃色'的答案。那麼如果未來的問題不包含「顏色」和「太陽」這個詞,那麼你的答案就不會受到影響,所以如果有人輸入這個問題:「地球軌道上的星星是什麼陰影?你的訓練數據與剛剛被問到的問題之間沒有任何關聯...... –

+1

你訓練的數據越多,你就會有更多的準確性......(文本體越大,你就越有可能得到命中,但也就越有可能得到誤報)......但這只是我迄今的經驗! –