是的,您的想法和对第一个问题的担忧都是正确的。
您要做的是Parameter Optimization。当您尝试优化分类器的参数时,通常会使用该术语,例如,随机森林的树数或支持向量机的 C 参数。但您也可以将其应用于预处理步骤和过滤器。
在这种情况下,您要做的是嵌套交叉验证。(您应该查看https://stats.stackexchange.com/以获取更多信息,例如此处或此处)。重要的是最终分类器,包括所有预处理步骤,如分箱等,从未见过测试集,只见过训练集。这是外部交叉验证。
对于外部交叉验证的每一折,您需要对训练集进行内部交叉验证以确定模型的最佳参数。
我将尝试通过简单的 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 个参数组合。
这本身就是一个机器学习的话题,因为你可以在这里做从简单的网格搜索到进化搜索的所有事情。有时您可以使用启发式方法。但是您每次都需要进行某种参数优化。
至于你的第二个问题:如果没有看到你的数据,这真的很难说。但是无论如何,您都应该将其作为一个单独的问题发布。