我正在尝试使用反向传播神经网络为特定问题建模执行留一法交叉验证。我的训练数据中有 8 个特征和 20 个实例。我试图让 NN 在构建预测模型时学习一个函数。现在,问题是预测中的错误率非常高。我的猜测是,与所考虑的特征数量相比,训练中的实例数量更少。这个结论是否正确。是否有任何最佳特征与实例比率?
1 回答
(这个话题在 ML 文献中经常被表述为数据集的可接受大小或形状,因为数据集通常被描述为mxn矩阵,其中 m 是行数(数据点),n 是列(特征);明显的 m >> n 是首选。)
在一个事件中,我不知道可接受的特征到观察范围的一般规则;这可能有几个原因:
这种比率很大程度上取决于数据的质量(信噪比);和
特征的数量只是模型复杂性的一个因素(例如,特征之间的交互);而模型复杂度是数据实例(数据点)数量的最强决定因素。
所以有两种方法可以解决这个问题——因为它们是对立的,所以它们都可以应用于同一个模型:
减少特征的数量;或者
使用统计技术来利用您拥有的数据
一些建议,针对上述两条路径中的每一条:
消除“不重要”的特征——即那些对响应变量的可变性没有贡献的特征。主成分分析 (PCA) 是一种快速且可靠的方法,尽管还有许多其他技术通常包含在“降维”标题下。
使用Bootstrap 方法而不是交叉验证。方法上的差异似乎很小,但多层感知器(神经网络)在减少预测误差方面的(通常是实质性的)改进有据可查(参见例如,Efron, B. 和 Tibshirani, RJ, The bootstrap method: Improvements on cross-验证, J. of the American Statistical Association , 92, 548-560., 1997)。如果您不熟悉用于拆分训练和测试数据的 Bootstrap 方法,则一般技术类似于交叉验证,只是您不采用整个数据集的子集,而是采用子样本。Elements的第 7.11 节很好地介绍了 Bootstrap 方法。
我发现关于这个一般主题的最佳单一来源是Hastie、Tibshirani 和 Friedman的优秀论文Elements of Statistical Learning中的第 7 章模型评估和选择。本书可从本书主页免费下载。