机器学习--维度灾难

一、说在前面

今天的学习内容是机器学习中的维度灾难,它就像编程中的空指针异常一样非常的让人头疼但又经常如影随形。学习的过程中让我感受颇深的一句话是,如无必要,勿增实体。如果简单的东西可以达到复杂东西的效果,那还用复杂的干嘛呢,也提醒我们在编码的时候要尽可能的精简,不要那么多无用的冗余。

二、笔记

维度灾难
1、什么是维度灾难
    随着维度(例如特征或自由度)的增多,问题的复杂性(或计算算代价)呈指数级增长的现象
    

  
2、维度灾难给机器学习带来的影响
    距离的失效、样本稀疏性和过度拟合、计算复杂度

    高维空间中的欧式距离
        d维空间样本x1和x2的欧式距离为:d(x1,x2)=[(i=1...d)(x1i-x2i)²]开方
        随着维度的增加,单个维度对距离的影响越来越小,任意样本之间的距离趋于相同,在高维空间,(欧式)距离不是那么有效

        基于距离的机器学习模型
            K近邻:样本距离
            支持向量机:样本到决策面距离
            K-Means:样本到聚类中心的距离
            层次聚类:不同簇之间的距离
            推荐系统:商品或用户相似度
            信息检索:查询和文档之前的相似度

    过度拟合:模型对已知数据拟合较好,新的数据拟合较差
    高位空间中样本变得极度稀疏,容易造成过度拟合问题

    Hughes现象
        在训练集固定时,锁着维度的增大,分类器性能不断提升直到达到最佳维度,继续增加维度分类器性能会下降

    计算复杂度:决策树
        随着维度的增加,计算复杂度指数增长
        只能近似求解,得到局部最优解而非全局最优解(贪心算法)
        例子:决策树
        选择切分点对空间进行划分,每个特征m个取值,一共有d个特征,候选划分数量m的d次方(维度灾难)
3、如何应对维度灾难
    特征选择与降维、正则化、核技巧
    · 剃刀原理:如无必要,勿增实体
        在能够获得较好的拟合效果前提下,尽量使用较为简单的模型
        特征选择:选取特征子集
        降维:使用一定变换,将高维数据转换为低维数据,PCA,流行学习,t-SNE等

    · 正则化:对学习算法的修改--旨在减少泛化误差而不是训练误差    

  
4、如何判断机器学习模型是否存在维度灾难
    ·将目标函数通过某个大数定律表示成期望形式
    ·通过证明对应的中心极限理论建立逼近误差的收敛率
    ·估计Rademacher复杂度
5、实践案例:维度灾难的Python实践
原文地址:https://www.cnblogs.com/suanai/p/14364026.html