我正在使用 R 中的 e1071::svm() 函数使用支持向量机 (SVM),我遇到了一个场景,我要求它对 2 类响应进行留一交叉验证分类,并且获得了 38% (35/90) 的总准确度,在给定 90 个样本的情况下,最终得到的 95% 置信区间低于偶然性。我应该认为这是侥幸吗?如果不是,SVM 怎么可能成为反预测的?
如果它很重要,我使用默认值作为成本和伽玛参数,预测响应的数据是一个 8192 项向量,代表在 64 个电极上收集的 500 毫秒的脑电图数据。
我正在使用 R 中的 e1071::svm() 函数使用支持向量机 (SVM),我遇到了一个场景,我要求它对 2 类响应进行留一交叉验证分类,并且获得了 38% (35/90) 的总准确度,在给定 90 个样本的情况下,最终得到的 95% 置信区间低于偶然性。我应该认为这是侥幸吗?如果不是,SVM 怎么可能成为反预测的?
如果它很重要,我使用默认值作为成本和伽玛参数,预测响应的数据是一个 8192 项向量,代表在 64 个电极上收集的 500 毫秒的脑电图数据。
问题很可能是超参数的设置,导致数据严重过度拟合。如果没有对超参数进行适当的调整,SVM 可能会表现得很糟糕,尤其是对于高维数据(正则化参数的调整可以在高维空间中提供鲁棒性以防止过度拟合)。我建议嵌套交叉验证,使用外部(留空)交叉验证形成性能估计,并通过最小化基于交叉验证的模型选择标准(我使用 Nelder-米德单纯形法而不是网格搜索)。
简短的回答是,永远不要使用默认的超参数值,总是为每个新的(分区的)数据集重新调整它们。