【发布时间】:2015-05-27 12:29:23
【问题描述】:
我在crossval 的文档中读到的是matlab 中的mcr = crossval('mcr',X,y,'Predfun',predfun) 函数计算错误分类率,但是如果它适用于10 倍交叉验证,那么我们将有10 个不同的错误分类值,因为我们做了10次测试,每次测试都会产生一个结果,但是mcr的值是单一的还是标量的,那么它是取平均误分类率还是取最小值..等等?
【问题讨论】:
我在crossval 的文档中读到的是matlab 中的mcr = crossval('mcr',X,y,'Predfun',predfun) 函数计算错误分类率,但是如果它适用于10 倍交叉验证,那么我们将有10 个不同的错误分类值,因为我们做了10次测试,每次测试都会产生一个结果,但是mcr的值是单一的还是标量的,那么它是取平均误分类率还是取最小值..等等?
【问题讨论】:
使用平均错误分类率(所有折叠和所有蒙特卡罗重新分区)。 crossval下面这行代码演示了平均损失的计算——
loss = sum(loss)/ (mcreps * sum(cvp.TestSize));
其中loss 最初是每个交叉验证折叠和每个重新分区的损失向量,mcreps 是重新分区的数量,sum(cvp.TestSize) 是交叉验证测试集的总大小。
这用于 MSE(均方误差)和 MCR 损失函数。
【讨论】:
crossval 的代码并将该行更改为loss = min(loss),但我不知道您为什么想要最小 错误分类率(因为交叉验证的目的通常是告诉你一些关于你的平均泛化错误)。