WEKA 交叉验证离散化

WEKA cross validation discretization

我正在尝试通过应用无监督离散化过滤器来提高我的 WEKA 模型的准确性。我需要决定 bin 的数量以及是否应该使用等频分箱。通常,我会使用训练集对其进行优化。

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

我还尝试了监督离散化过滤器来确定 bin 大小,但这只会产生单个 bin。这是否意味着我的数据过于随机,因此无法聚类到多个 bin 中?

是的,你的想法和对第一个问题的担忧都是正确的。

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

在这种情况下您需要做的是嵌套交叉验证。 (你应该检查 https://stats.stackexchange.com/ for more information, for example here or here)。重要的是,最终的分类器,包括所有预处理步骤,如分箱等,从未见过测试集,只有训练集。这是外部交叉验证

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

我会尝试 "visualize" 通过简单的 2 折交叉验证

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 个参数组合。

这本身就是机器学习的主题,因为您可以在这里进行从简单的网格搜索到进化搜索的所有操作。有时您可以使用启发式方法。但是你每次都需要做一些参数优化。

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