我在尝试使用反向传播神经网络对一个特定问题进行留一法交叉验证。我的训练数据中有8个特征和20个实例。我试图让神经网络学习一个函数来构建预测模型。现在的问题是预测中的错误率相当高。我猜测与所考虑的特征数量相比,训练中的实例数量较少。这个结论是否正确?是否有最佳的特征与实例比?
回答:
(在机器学习文献中,这个话题通常被表述为给定数据集的可接受大小或形状,因为数据集通常被描述为一个m x n矩阵,其中m是行数(数据点),n是列数(特征);显然m >> n是首选。)
无论如何,我不知道特征与观测值的可接受范围的一般规则;这可能有几个原因:
-
这样的比率将强烈依赖于数据的质量(信噪比);
-
特征的数量只是模型复杂度的一个元素(例如,特征之间的相互作用);而模型复杂度是数据实例(数据点)数量的最强决定因素。
因此,解决这个问题有两种方法——因为它们是相反的,所以可以同时应用于同一个模型:
-
减少特征数量;或者
-
使用统计技术来利用你所拥有的数据
针对上述两种路径,我提供了一些建议:
-
消除“非重要”特征——即那些对你的响应变量的变异性没有贡献的特征。主成分分析(PCA)是一种快速且可靠的方法来做到这一点,尽管还有许多其他技术通常被归类为“降维”。
-
使用自助法代替交叉验证。方法上的差异看似微小,但减少预测错误的(通常是显著的)改进在多层感知器(神经网络)中已被充分记录(例如,Efron, B. 和 Tibshirani, R.J., 自助法:对交叉验证的改进, 美国统计协会杂志, 92, 548-560., 1997)。如果你不熟悉用于分割训练和测试数据的自助法,通常的技术与交叉验证类似,只是你不是取整个数据集的子集,而是取子样本。Elements的第7.11节是对自助法的一个很好的介绍。
我发现的关于这个一般话题的最佳单一来源是Hastie, Tibshirani和Friedman的优秀著作统计学习的元素中的第7章模型评估和选择。这本书可以从书的主页免费下载。