【发布时间】:2018-07-14 20:25:03
【问题描述】:
Matlab 的crossval 方法在(二进制)分类的上下文中是否尊重类频率?
Matlab 中的大多数分类模型都提供了计算 cross-validated model 的可能性。例如,当通过svm=fitcsvm(X,y); 训练线性 SVM 时,可以通过调用cv=crossval(svm); 计算交叉验证模型。 (这里是方法crossval for objects of type ClassificationSVM 的文档。)然后可以使用此交叉验证模型来估计训练过程的泛化误差。
现在我的问题是:在划分训练数据时,crossval 是否考虑了类频率?例如,对于第 0 类的观测值 $X_0$ 可能是对第 1 类的观测值 $X_1$ 的 5 倍。因此,数据的分区版本对每个类的观测值的比率大致相同(在我的示例中为 5:1 )?还是完全忽略了这一点,因为如果数据集足够大,分区很可能具有大致相同的相对类大小。
在处理 Matlab 的 crossval 功能之前,我使用了自己的分区算法,该算法在拆分数据时尊重相对类大小。本质上,该算法将随机抽取 5 类 0 项,然后如果类频率为 5/6 和 1/6,则抽取 1 类 1 项,直到分区已满。
如果忽略了相对班级规模,我想说这对于非常不平衡和/或小数据集来说可能是个问题。还是我在这里弄错了?很高兴读到您对此的看法。
【问题讨论】:
标签: classification cross-validation svm matlab