解决维度爆炸问题

一、出自

https://www.jianshu.com/p/867193608bbd

二、如何避免维度灾难

image.png

图1展示了随着维度变得很大,分类器的性能是下降的。那么问题是“很大”意味着什么?过拟合如何避免?很遗憾,在分类问题中,没有固定的规则来指定应该使用多少特征。事实上,这依赖于训练样本的数量、决策边界的复杂性和使用的是哪个分类器。

如果理论上训练样本时无限多的,那么维度灾难不会发生,我们可以使用无限多的特征来获得一个完美的分类器。训练数据越少,使用的特征就要越少。如果N个训练样本覆盖了1D特征空间的范围,那么在2D中,覆盖同样密度就需要NN个数据,同样在3D中,就需要NN*N个数据。也就是说,随着维度增加,训练样本的数量要求随指数增加。

此外,那些非线性决策边界的分类器(例如神经网络、KNN分类器、决策树等)分类效果好但是泛化能力差且容易发生过拟合。因此,当使用这些分类器的时候,维度不能太高。如果使用泛化能力好的分类器(例如贝叶斯分类器、线性分类器),可以使用更多的特征,因为分类器模型并不复杂。图6展示了高维中的简单分类器对应于地位空间的复杂分类器。

因此,过拟合只在高维空间中预测相对少的参数和低维空间中预测多参数这两种情况下发生。举个例子,高斯密度函数有两类参数:均值和协方差矩阵。在3D空间中,协方差矩阵是3x3的对称阵,总共有6个值(3个主对角线值和3个非对角线值),还有3个均值,加在一起,一共要求9个参数;而在1D,高斯密度函数只要求2个参数(1个均值,1个方差);在2D中,高斯密度函数要求5个参数(2个均值,3个协方差参数)。我们可以发现,随着维度增加,参数数量呈平方式增长。

在之前的文章里我们发现,如果参数数量增加,那么参数的方差就会增大(前提是估计偏差和训练样本数量保持不变)。这就意味着,如果围度增加,估计的参数方差增大,导致参数估计的质量下降。分类器的方差增大意味着出现过拟合。

另一个有趣的问题是:应该选择哪些特征。如果有N个特征,我们应该如何选取M个特征?一种方法是在图1曲线中找到性能最佳的位置。但是,由于很难对所有的特征组合进行训练和测试,所以有一些其他办法来找到最佳选择。这些方法称之为特征选择算法,经常用启发式方法(例如贪心算法、best-first方法等)来定位最佳的特征组合和数量。

还有一种方法是用M个特征替换N个特征,M个特征由原始特征组合而成。这种通过对原始特征进行优化的线性或非线性组合来减少问题维度的算法称为特征提取。一个著名的维度降低技术是主成分分析法(PCA),它去除不相关维度,对N个原始特征进行线性组合。PCA算法试着找到低维的线性子空间,保持原始数据的最大方差。然而,数据方差最大不一定代表数据最显著的分类信息。

最后,一项非常有用的被用来测试和避免过拟合的技术是交叉验证。交叉验证将原始训练数据分成多个训练样本子集。在分类器进行训练过程中,一个样本子集被用来测试分类器的准确性,其他样本用来进行参数估计。如果交叉验证的结果与训练样本子集得到的结果不一致,那么就表示发生了过拟合。如果训练样本有限,那么可以使用k折法或者留一发进行交叉验证。

四、结论
这篇文章我们讨论了特征选择、特征提取、交叉验证的重要性,以及避免由维度灾难导致的过拟合。通过一个过拟合的简单例子,我们复习了维度灾难的重要影响。

你可能感兴趣的:(解决维度爆炸问题)