WEKA交叉验证离散化

时间:2015-08-03 07:39:38

标签: weka cross-validation discretization

我试图通过应用无监督的离散滤波器来提高WEKA模型的准确性。我需要决定箱的数量以及是否应该使用相等的频率分级。通常,我会使用训练集来优化它。

但是,如何确定bin大小以及使用交叉验证时是否应使用相等的频率分级?我最初的想法是在多个交叉验证测试中使用分类器的准确性结果来找到最佳的bin大小。但是,尽管使用交叉验证,使用同样的设置来测试模型的准确性是不是错误,因为我有一个过度拟合的模型?那么什么是确定箱尺寸的正确方法呢?

我还尝试使用supervized离散滤波器来确定容器大小,但这只会导致单个容器。这是否意味着我的数据太随机,因此无法聚集到多个箱中?

1 个答案:

答案 0 :(得分:2)

是的,您对第一期的想法和关注点都是正确的。

您要做的是Parameter Optimization。当您尝试优化分类器的参数时,通常会使用此术语,例如,随机森林的树数或SVM的C参数。但您也可以将其应用于预处理步骤和过滤器。

在这种情况下,您需要做的是嵌套交叉验证。 (您应该查看https://stats.stackexchange.com/以获取更多信息,例如herehere)。重要的是,最终的分类器,包括所有预处理步骤,如分箱等,从未见过测试集,只有训练集。这是外部交叉验证

对于外部交叉验证的每个折叠,您需要在训练集上执行内部交叉验证,以确定模型的最佳参数。

我会尝试'#34;可视化"它采用简单的双重交叉验证

Data set
########################################

Split for outer cross-validation (2-fold)
#################### ####################
training set                     test set

Split for inner cross-validation
########## ##########
training         test

Evaluate parameters
########## ##########
build with  evaluated

bin size  5   acc 70%
bin size 10   acc 80%
bin size 20   acc 75%
...
=> optimal bin size: 10

Outer cross-validation (2-fold)
#################### ####################
training set                     test set
apply bin size 10
train model                evaluate model

参数优化可能非常耗费精力。如果您有3个参数,每个参数值包含10个可能的参数值,则需要为每个外部折叠评估10x10x10 = 1000个参数组合。

这是机器学习本身的一个主题,因为你可以做任何事情,从天真的网格搜索到这里的进化搜索。有时您可以使用启发式方法。但是你每次都需要做一些参数优化。

关于你的第二个问题:如果没有看到你的数据,这真的很难说。但是你应该把它作为一个单独的问题发布。