一、说在前面
今天的学习内容是机器学习中的维度灾难,它就像编程中的空指针异常一样非常的让人头疼但又经常如影随形。学习的过程中让我感受颇深的一句话是,如无必要,勿增实体。如果简单的东西可以达到复杂东西的效果,那还用复杂的干嘛呢,也提醒我们在编码的时候要尽可能的精简,不要那么多无用的冗余。
二、笔记
维度灾难
1、什么是维度灾难
随着维度(例如特征或自由度)的增多,问题的复杂性(或计算算代价)呈指数级增长的现象
![](https://img2020.cnblogs.com/blog/1718812/202102/1718812-20210202202447977-1215569265.png)
![](https://img2020.cnblogs.com/blog/1718812/202102/1718812-20210202202511132-296276061.png)
2、维度灾难给机器学习带来的影响
距离的失效、样本稀疏性和过度拟合、计算复杂度
高维空间中的欧式距离
d维空间样本x1和x2的欧式距离为:d(x1,x2)=[(i=1...d)(x1i-x2i)²]开方
随着维度的增加,单个维度对距离的影响越来越小,任意样本之间的距离趋于相同,在高维空间,(欧式)距离不是那么有效
基于距离的机器学习模型
K近邻:样本距离
支持向量机:样本到决策面距离
K-Means:样本到聚类中心的距离
层次聚类:不同簇之间的距离
推荐系统:商品或用户相似度
信息检索:查询和文档之前的相似度
过度拟合:模型对已知数据拟合较好,新的数据拟合较差
高位空间中样本变得极度稀疏,容易造成过度拟合问题
Hughes现象
在训练集固定时,锁着维度的增大,分类器性能不断提升直到达到最佳维度,继续增加维度分类器性能会下降
计算复杂度:决策树
随着维度的增加,计算复杂度指数增长
只能近似求解,得到局部最优解而非全局最优解(贪心算法)
例子:决策树
选择切分点对空间进行划分,每个特征m个取值,一共有d个特征,候选划分数量m的d次方(维度灾难)
3、如何应对维度灾难
特征选择与降维、正则化、核技巧
· 剃刀原理:如无必要,勿增实体
在能够获得较好的拟合效果前提下,尽量使用较为简单的模型
特征选择:选取特征子集
降维:使用一定变换,将高维数据转换为低维数据,PCA,流行学习,t-SNE等
· 正则化:对学习算法的修改--旨在减少泛化误差而不是训练误差
![](https://img2020.cnblogs.com/blog/1718812/202102/1718812-20210202202543088-1366624421.png)
4、如何判断机器学习模型是否存在维度灾难
·将目标函数通过某个大数定律表示成期望形式
·通过证明对应的中心极限理论建立逼近误差的收敛率
·估计Rademacher复杂度
5、实践案例:维度灾难的Python实践