• 特征工程之降维


    真理之言
    特征工程决定了机器学习的上限,而算法和模型只是逼近这个上限。
     
    特征工程是什么
    模型设计、算法训练之前的所有针对数据的准备工作,都称之为特征工程。
     
    特征工程包含哪些工作
    分析任务、获取数据、特征数据处理-异常值、空值、重复值、标准化等、特征处理-衍化、二值化、哑编码、降维等。这个过程中很多环节都要依赖高度的业务理解程度。
    降维前面的都不再细说了,该如何已了然于心。至于降维,工作过程中用的最多的还是根据经验人工识别后手动删除或者赋不同权重。其实这是非常有效的方法:二八法则保留黄金特征,往往是最小的成本最大的回报。不过这个对业务能力有很高要求,而且特征数量委实不算多。所以下面主要介绍下如何用技术手段进行特征降维。
     
     
     
    特征降维-特征选择、特征提取
    特征降维主要分为两个方面:特征选择、特征提取。值得注意的是,很多文章对这两个称谓是不统一的:有的将特征选择称之为特征提取,将特征提取称之为降维或维归约。
    降维对象:train数据,不含test数据。
    降维作用:消除噪声,优化训练过程,有效消除过拟合。
     
    定义

    特征选择:FeatureSelection,是指从已有的M个特征中选择N个特征,即返回特征子集。

    特征提取:FeatureExtraction,是指利用已有特征集计算出一个抽象程度更高的特征集,创建低维新特征。
     
    呆在原始世界中,只是想对现有的“取其精华,去其糟粕”,这个是所谓特征选择。只是对现有进行筛选。
    去到更高层的世界俯瞰原始世界,你会发现很多杂乱无章的物理现象背后暗含的道理是相通的,这时候你想用一个更加普世的理论去解释原先的理论,这个是特征提取要做的事情。

    方法
    1特征选择:
      1.1 Filter
        1.1.1 方差选择法
        1.1.2 相关系数法
        1.1.3 卡方检验
        1.1.4 互信息法
      1.2 Wrapper
        1.2.1 递归特征消除法
      1.3 Embedded
        1.3.1 基于惩罚项的特征选择法
        1.3.2 基于树模型的特征选择法
    1特征提取:
      1.1 主成分分析法(PCA)
      1.2 线性判别分析法(LDA)
      1.3 其他
     
    sklearn对应的技术降维方法
    不管是数据处理,还是特征降维,都可以通过sklearn某个类的方法fit_transform完成,fit_transform要不带一个参数:特征矩阵,要不带两个参数:特征矩阵加目标向量。针对技术降维,对应方法如下:
     
        特征选择
    所属方式 说明
    VarianceThreshold Filter 方差选择法
    SelectKBest Filter 可选关联系数、卡方校验、最大信息系数作为得分计算的方法
    RFE Wrapper 递归地训练基模型,将权值系数较小的特征从特征集合中消除
    SelectFromModel Embedded 训练基模型,选择权值系数较高的特征
     
        特征提取
    说明
    decomposition PCA 主成分分析法
    lda LDA 线性判别分析法
     
     
    应用顺序
    多数情况下先特征选择,后特征提取;不过也可以先特征提取,后特征选择。
     
    注意
    降维不是必须的:原特征对结果和时间成本的影响并不大,或者可以接受,就不需要降维了。降维也很耗时的。
     
    我们依仗对业务的理解、工作经验提出了一些特征,但是在模型训练完成后,某些特征可能“身微言轻”——我们认为相关性高的特征并不重要,这时我们便要反思这样的特征提出是否合理;某些特征甚至“南辕北辙”——我们认为正相关的特征结果变成了负相关,造成这种情况很有可能是抽样与整体不相符,导致了过拟合。然而,我们怎么判断先前的假设和最后的结果之间的差异呢?
    线性模型通常有含有属性coef_,当系数值大于0时为正相关,当系数值小于0时为负相关;另外一些模型含有属性feature_importances_,表示特征的重要性。根据以上两个属性,便可以与先前假设中的特征的相关性或重要性进行对比了。但是,理想是丰满的,现实是骨感的。经过复杂的特征转换之后,特征矩阵X已不再是原来的样子:哑变量使特征变多了,特征选择使特征变少了,降维使特征映射到另一个维度中。
    累觉不爱了吗?如果我们能够将最后的特征与原特征对应起来,那么分析特征的系数和重要性又有了意义。所以,记录下所有特征转换行为是一个有意义的工作。可惜,sklearn暂时没有提供这样的功能。
     
     
     
    参考学习:
     
     
  • 相关阅读:
    地图初步
    多线程技术 初步
    核心动画 CAAnimation 进阶
    CALayer 进阶
    Quartz 2D 初步
    UIView 面面观
    CABasicAnimation 基础
    CGAffineTransform 放射变换解析 即矩阵变换
    RunTime 入门
    对Viewcontroller在UINavigationController中入栈出栈的一点点理解
  • 原文地址:https://www.cnblogs.com/myshuzhimei/p/12112530.html
Copyright © 2020-2023  润新知