2013-01-20 130 views
2

我已經和Weka一起工作了一段時間,在我的研究中,我發現很多代碼示例都使用測試和訓練集。例如,使用離散化和貝葉斯網絡,他們的例子幾乎總是用測試和訓練集顯示。我可能在這裏錯過了對數據處理的一些基本理解,但我不明白爲什麼這似乎總是如此。我在一個項目中使用離散化和貝葉斯網絡,對於他們兩個,我沒有使用測試或訓練集,也沒有看到爲什麼我需要。我在BayesNet上進行交叉驗證,所以我正在測試它的準確性。我誤解了什麼測試和訓練集用於?哦,請使用最簡單的術語;我對數據處理世界還不是很有經驗。何時使用Weka的測試和訓練集?

回答

5

培訓和測試集背後的想法是測試概括性錯誤。也就是說,如果只使用一個數據集,只需簡單地學習這個集合就可以達到完美的精確度(這是最近鄰分類器所做的,Weka中的IBk)。一般而言,這不是您想要的 - 機器學習算法應該學習您給出的示例數據背後的一般概念。測試這種情況的一種方式是使用單獨的數據進行培訓和測試。

如果您使用的是交叉驗證,那麼您正在使用單獨的培訓和測試集。這只是將整個數據集劃分爲訓練和測試的一種方式。例如,如果您進行10次交叉驗證,則您的整個數據將被劃分爲10組大小相等的數據。其中9個被組合並用於訓練,剩下的一個用於測試。然後重複這個過程,並結合九個不同的訓練集合等等,直到所有十個單獨的分區都將被用於測試。

因此,訓練/測試集和交叉驗證在概念上是做同樣的事情,交叉驗證通過對整個數據集進行平均來簡單地採取更嚴格的方法。

+0

相當古老的問題,但有關於此問題。因此,如果我有培訓,開發和測試集,WEKA的發展角色是什麼?我如何在WEKA中使用我的開發集? – KillBill

+0

不確定你的意思是「開發集」。你通常會有訓練,測試和驗證集。 –

1

培訓數據是指用於「構建模型」的數據。例如,它使用算法J48(樹分類器)對實例進行分類,訓練數據將用於生成代表「學習概念」的樹,該概念應該是概念的概括。這意味着學習規則,生成樹,調整後的神經網絡,或其他任何;將能夠獲得新的(看不見的)實例並將其正確分類(「學習概念」不依賴於培訓數據)。

測試集是將用於測試模型是否正確學習概念(它獨立於訓練數據)的數據的百分比。

在WEKA中,您可以執行將數據集分解爲trainig數據(在J48的情況下構建樹)和測試數據(測試模型以確定概念已被學習)的執行。例如,您可以將60%的數據用於培訓,40%用於測試(確定需要多少數據進行培訓和測試是數據挖掘的關鍵問題之一)。

但我建議您快速查看交叉驗證,這是一種在WEKA中實施的穩健測試方法。這裏已經很好地解釋了: https://stackoverflow.com/a/10539247/1565171

如果您還有其他問題,請發表評論。

相關問題