2011-07-05 37 views
5

我想仔細檢查一下關於分類器學習訓練集的一些概念。當我們爲我們的訓練數據選擇記錄時,我們是否每班選擇相同數量的記錄,總計爲N或應該隨機選擇N個記錄(不管班級)?如何選擇樸素貝葉斯分類器的訓練數據

直覺上我想到的是前者,但是認爲先前的概率會是平等的,而不是真的有用嗎?

回答

1

首選的方法是使用K-fold交叉驗證來獲取學習和測試數據。維基百科

引用:

K-倍交叉驗證

在K-倍交叉驗證,在 原始樣品是隨機分配 成K個子樣本。在 K子樣本中,一個子樣本 保留作爲 測試模型的驗證數據,而其餘的子樣本用作訓練 數據。交叉驗證過程爲 ,然後重複K次(摺疊), ,每個K子樣本使用 恰好一次作爲驗證數據。 從摺疊的K結果然後可以將 平均(或以其他方式組合)至 產生單個估計。這種方法優於 隨機子採樣的優點是,所有 觀測值均用於 訓練和驗證,並且每個 觀測值僅用於驗證 一次。通常使用10倍交叉驗證 。

在分層K-倍交叉驗證, 褶皺被選擇爲使得所述 平均響應值約爲 在所有折縫相等。在 二分類的情況下,這個 意味着每個摺疊大致包含類標籤的兩種類型 的相同比例。

爲了與其他科學數據具有可比較的結果,您應該始終採取共同的方法。

7

這取決於你的課程的分佈和決心只能用問題的領域知識在手。 你可以問以下問題:

  • 是否有任何兩個類非常相似,學習者是否有足夠的信息來區分它們?
  • 每個班級的先驗概率是否有很大差異?

如果是這樣,你應該重新分配類。

根據我的經驗,重新分配課程並沒有什麼壞處,但並不總是必要的。

這真的取決於你的類的分佈。在欺詐或入侵檢測的情況下,預測分類的分佈可能小於1%。 在這種情況下,如果您希望分類器學習每個類之間的差異,您必須在訓練集中平均分配類。否則,它將生成一個分類器,該分類器可以正確分類99%以上的案例,而無需正確識別欺詐案例,這就是創建分類器的關鍵。

一旦您擁有了一組均勻分佈的類,您可以使用任何技術(如k-fold)來執行實際的訓練。

另一個需要調整類分佈但不一定每個記錄的記錄數相同的例子是從它們的形狀中確定字母表的大寫字母的情況。

如果您採用英語中常用的字母分佈來訓練分類器,則幾乎不會有任何Q字母的情況(如果有)。另一方面,字母O非常常見。如果您不重新分配類別以允許相同數量的QO,則分類器沒有足夠的信息來區分Q。您需要爲其提供足夠的信息(即更多Q s),以便確定QO確實是不同的字母。

+0

我讀了@fyr提供的k-fold。我很困惑。在我有均勻分佈的訓練集之後,我提供了哪些訓練集以供實際分類使用?我以前是我甚至相信:像C1:90%和C2:10%。 – goh

+1

您可以使用均勻分佈的類創建一個全新的數據集。然後,您可以使用這些新數據,並根據需要將其劃分爲訓練,交叉測試和測試。 k-fold是將數據劃分爲訓練和跨界數據的一種常見方式。 –

1

我構建了貝葉斯分類器的實現,通過檢查示例中單詞的出現來確定樣本是否爲NSFW(不安全)。當爲NSFW檢測訓練分類器時,我已經試過讓訓練集中的每個類具有相同數量的示例。這並沒有像我計劃的那樣好,因爲其中一個班的每個例子都比另一個班有更多的單詞。

因爲我計算基於這些詞的NSFW的可能性,我發現基於它們的實際大小(以MB爲單位)平衡了類。我對這兩種方法進行了10次交叉驗證(通過實例的數量和類的大小進行平衡),並發現通過數據大小進行平衡運行良好。