2014-11-09 41 views
1

我已經使用weka進行文本分類。首先,我使用了StringToWordVector過濾器,並將過濾後的數據與SVM分類器(LibSVM)一起用於交叉驗證。後來我看了一篇博客文章here在weka中使用過濾分類器比普通分類器有什麼效果

它說不適合首先使用過濾器然後執行交叉驗證。相反,它建議使用FilteredClassifer。他的理由是:

兩週前,我寫了一篇關於如何在WEKA中鏈接過濾器和分類器的文章,以避免在對文本集合進行實驗時產生誤導性結果。問題是,在您的數據中使用N Fold Cross Validation(CV)時,您不應該對整個數據集合應用StringToWordVector(STWV)過濾器,然後對您的數據執行CV評估,因爲您會使用單詞存在於您的測試子集中(但不包含在您的訓練子集中)。

我無法理解背後的原因。任何人都知道嗎?

回答

1

當您在N之前使用過濾器進行交叉驗證時,即使是測試實例或火車實例,也會過濾每個實例中出現的每個單詞。此時,Filter無法知道實例是測試實例還是列車實例。因此,如果您使用帶有TFTransform或任何類似操作的StringtoWordVector,則測試實例中的任何單詞都可能會影響變換值。 (簡單地說,如果你正在實現一攬子文字,那麼你也會考慮測試實例)。這是不可接受的,因爲訓練參數不應該受測試數據的影響。因此,您可以在運行時進行過濾。那是FilteredClassifer。

想了解N Fold交叉驗證如何工作,請參閱Rushdi Shams在以下問題中的回答。如果你瞭解它,請告訴我。乾杯..!!

Cross Validation in Weka