2016-03-09 63 views
0

我正在使用Weka GUI進行分類。我是新來的Weka並與選項Weka上的分類精確度

  • 使用訓練集
  • 提供的測試設置
  • 交叉驗證

訓練我的分類算法(如J48)感到困惑,我訓練交叉驗證10倍,準確度很高(97%)。當我測試我的分類 - 準確度下降到大約72%。我感到很困惑。請提供任何提示?這是我做的:

  • 我訓練我的模型訓練數據(例如:train.arff
  • 我在你要保存的模型項目的結果列表中右鍵單擊 選擇保存模型和例如保存爲j48tree.model

然後

  • 我加載測試數據(例如:經由增刊test.arff謊稱測試設置按鈕
  • 右鍵單擊在結果列表中,我挑選負載模型並選擇j48tree.model
  • 我選擇Re-evaluate model on current test set

是我做的方式錯了嗎?爲什麼精度從97%下降到72%?或者只做10倍的交叉驗證足以訓練和測試分類器?

注意:我的訓練和測試數據集具有相同的屬性和標籤。唯一的區別是,我有更多關於測試集的數據,我認爲這不會成爲問題。

回答

2

我不認爲你如何使用WEKA有任何問題。

你提到你的測試集比訓練大嗎?什麼是分裂?通常的經驗法則是測試集應該是整個數據集的1/4,即比訓練小3倍,而且絕對不會更大。僅此一項就可以解釋從97%下降到72%,這對於現實生活中的情況並不那麼糟糕。

此外,如果您建立學習曲線https://weka.wikispaces.com/Learning+curves將會很有幫助,因爲它可以解釋您是否存在偏差或變異問題。根據你的數值判斷你聽起來像差異很大(即你的數據集的參數太多),所以增加更多的例子或改變你在訓練和測試集之間的分割可能會有所幫助。

更新 我通過隨機森林跑在有關數據集的快速分析和我的表現是一個類似於發佈的作者。詳細信息和代碼在gitpage上可用http://omdv.github.io/2016/03/10/WEKA-stackoverflow

+0

我正在使用此數據集(完整訓練數據集和完整測試數據集):https://web.archive。org/web/20150205070216/http://nsl.cs.unb.ca/NSL-KDD/。是的,你是對的,我在我的數據集中有42個特徵 – Brown

+1

我實際上下載了這個數據集,並用python的scikit-learn模塊中的隨機森林對它進行了分類,性能非常好。有一件事仍然不清楚,爲什麼你的測試集比訓練要大?下載的集合大約有17:83分割。下載後我做了兩套合併,隨機選擇20%作爲測試集。正如我所說的,表現很好。所以我的建議是 - 你需要調整訓練和測試集之間的差距。 – omdv

+1

我利用這個機會,終於在我的gitpage上發佈了一些東西(http://torrinos.github.io/datascience/2016/03/10/WEKA-stackoverflow.html)。代碼在那裏以及細節。祝你好運。 – omdv

0

在72%準確度的情況下如何分割數據集?但你的解釋並不明確。