如何通过 Matlab 中的 PartitionedEnsemble 模型预测新数据(测试集)的标签?
Posted
技术标签:
【中文标题】如何通过 Matlab 中的 PartitionedEnsemble 模型预测新数据(测试集)的标签?【英文标题】:How to predict labels for new data (test set) by the PartitionedEnsemble model in Matlab? 【发布时间】:2015-08-31 19:03:52 【问题描述】:我在 Matlab 2014a 中通过函数 fitensemble() 为二进制分类问题训练了一个集成模型 (RUSBoost)。该函数的训练是通过函数fitensemble()的输入参数“kfold”进行10倍交叉验证。
但是,如果我使用 predict(model, Xtest),则无法使用此函数训练的输出模型来预测新数据的标签。我查看了 Matlab 文档,上面说我们可以使用 kfoldPredict() 函数来评估训练好的模型。但是我没有通过这个函数找到任何新数据的输入。此外,我发现经过交叉验证的训练模型的结构与没有交叉验证的模型不同。那么,谁能告诉我如何使用经过交叉验证训练的模型来预测新数据的标签?谢谢!
【问题讨论】:
【参考方案1】:kfoldPredict()
需要 RegressionPartitionedModel
或 ClassificationPartitionedEnsemble
对象作为输入。这已经包含了用于 kfold 交叉验证的模型和数据。RegressionPartitionedModel
对象有一个字段Trained
,其中存储了用于交叉验证的训练有素的学习者。
您可以使用这些学习者中的任何一个,并像 predict(learner, Xdata)
一样使用它。
编辑:
如果 k 太大,可能是一次或多次迭代中有意义的数据太少,因此该次迭代的模型不太准确。
k 没有一般规则,但 k=10
就像 MATLAB 默认值一样是一个很好的起点来玩它。
也许这对你来说也很有趣:https://stats.stackexchange.com/questions/27730/choice-of-k-in-k-fold-cross-validation
【讨论】:
谢谢!还有一个问题。 Trained 领域中的这些模型是否具有与该领域中其他模型相同的分类性能(能力)?也就是说,我可以从 Trained 字段中选择任何模型吗? 不,性能不一定相同。这取决于您的数据和您在 kfold 交叉验证中选择的 k。 您能否详细解释一下 k 和数据如何影响结果? k 越大,数据越多越好?谢谢! 你看到我更新的答案了吗?你还有什么问题吗?如果您认为我的回答有帮助,如果您用绿色复选标记接受我的回答,我会很高兴:)以上是关于如何通过 Matlab 中的 PartitionedEnsemble 模型预测新数据(测试集)的标签?的主要内容,如果未能解决你的问题,请参考以下文章