特征工程目的

降维/降低过拟合/泛化、解释性、加快训练速度、性能

特征工程框图

  • 数据预处理

无量纲化:转化不同规格的特征到同一规格

(1)标准化/z标准化

将符合正态分布的特征值转化为标准正态分布

使用sklearn.preproccessing库的StandardScaler类

(2)区间缩放法/线性归一化/0-1标准化

返回缩放到[0,1]区间的数据

使用sklearn.preproccessing库的MinMaxScaler类

(3)归一化

将每个样本缩放到单位范数,转化为单位向量

离散化:

对定量特征二值化:大于阈值设为1

使用sklearn.preproccessing库的Binarizer类

对字符特征编码:

对定性特征哑编码

使用sklearn.preproccessing库的OneHotEncoder类

缺失值处理

删除缺失行、删除特征、补中值、补均值、将NaN作为一个特征、随机森林等算法填充

使用sklearn.preproccessing库的Imputer类

数据变换

基于多项式、基于指数函数、基于对数函数

  • 特征选择

选择标准:方差大(发散性)、与目标的相关性

Filter过滤法

(1) 设定发散性的阈值

使用sklearn.feature_selection库的VarianceThreshold类

(2)设定皮尔森相关系数相关性的阈值(衡量服从正态分布的随机变量的线性相关性)

皮尔森相关系数计算速度快,取值区间[-1,1],衡量正负相关性

使用皮尔森相关系数库pearsonr结合sklearn.feature_selection库的SelectKBest类

(3)卡方检验,检验定性自变量对定性因变量的相关性(分类问题)

使用sklearn.feature_selection库的SelectKBest类 和chi2

(4)互信息,检验定性自变量对定性因变量的相关性(回归问题、衡量线性及非线性关系)

使用MINE和klearn.feature_selection库的SelectKBest类

Wrapper包装法/包装法:每次选择或排除若干特征,选择最佳特征子集

(1)前向搜索

在开始时,按照特征数来划分子集,每个子集只有一个特征,对每个子集进行评价。然后在最优的子集上逐步增加特征,使模型性能提升最大,直到增加特征并不能使模型性能提升为止。

(2)后向搜索

在开始时,将特征集合分别减去一个特征作为子集,每个子集有N—1个特征,对每个子集进行评价。然后在最优的子集上逐步减少特征,使得模型性能提升最大,直到减少特征并不能使模型性能提升为止。

(3)双向搜索

结合(1)(2)

(4) 递归特征消除法

反复的训练模型,并剔除每次的最优或者最差的特征,将剔除完毕的特征集进入下一轮训练,直到所有的特征被剔除,被剔除的顺序度量了特征的重要程度。

Embedded集成法/嵌入法:通过机器学习得到各个特征的权值系数

(1)基于L1、L2正则化的特征选择法

增加L2的做法:若一个特征在L1中的权值为1,选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合,将这一集合中的特征平分L1中的权值,故需要构建一个新的逻辑回归模型:

使用feature_selection库的SelectFromModel类结合sklearn.linear_model库的 LogisticRegression逻辑回归类

(2)基于树模型的特征选择法

基于信息增益、信息增益比(应对偏向问题)、基尼指数

基于gbdt

使用feature_selection库的SelectFromModel类结合sklearn.ensemble 库的GradientBoostingClassifier类

基于RF

(1)方法一

分类问题:基尼不纯度或者信息增益

回归问题:方差或者最小二乘拟合

两个主要问题:1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。

(2)方法二:平均精确率减小

打乱每个特征的特征值顺序,度量顺序变动对模型精确率的影响

基于xgboost

分离点时根据基尼指数,特征评分基于特征被选择的次数(稳定性选择?)

  • 降维

基于L1惩罚项的模型

PCA主成分分析

选择方差大的新坐标轴

使用decomposition 库的PCA类

LDA线性判别分析(有监督)

选择分类情况更好的投影方式,投影后不同类中心点距离远,同类点离散性小

使用lda库的LDA类

ICA独立成分分析

寻找分离矩阵W,逼近独立元矩阵s,找到相互独立的属性

在计算机有限空间上降维

1、关闭其他程序

2、随机采样数据集,行采样

3、PCA挑选大方差成分

4、在线学习

5、删去关联特征

6、随机梯度下降

7、基于对业务的理解主观判断

相关文章推荐:

sklearn库介绍

https://blog.csdn.net/kevinelstri/article/details/60960574

特征工程

https://www.zhihu.com/question/29316149

文章最

基于sklearn分析特征工程(特征预处理、特征选择、降维)相关推荐

  1. ML之FE之FS:特征工程/数据预处理—特征选择之利用过滤式filter、包装式wrapper、嵌入式Embedded方法(RF/SF)进行特征选择(mushroom蘑菇数据集二分类预测)最全案例应用

    ML之FE之FS:特征工程/数据预处理-特征选择之利用过滤式filter.包装式wrapper.嵌入式Embedded方法(RF/SF)进行特征选择(mushroom蘑菇数据集二分类预测)案例应用 利 ...

  2. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(五)

    作者:陈颖祥.杨子晗 编译:AI有道 数据预处理后,我们生成了大量的新变量(比如独热编码生成了大量仅包含0或1的变量).但实际上,部分新生成的变量可能是多余:一方面它们本身不一定包含有用的信息,故无法 ...

  3. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(四)

    作者:陈颖祥.杨子晗 编译:AI有道 数据预处理后,我们生成了大量的新变量(比如独热编码生成了大量仅包含0或1的变量).但实际上,部分新生成的变量可能是多余:一方面它们本身不一定包含有用的信息,故无法 ...

  4. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(三)

    作者:陈颖祥.杨子晗 编译:AI有道 数据预处理后,我们生成了大量的新变量(比如独热编码生成了大量仅包含0或1的变量).但实际上,部分新生成的变量可能是多余:一方面它们本身不一定包含有用的信息,故无法 ...

  5. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(二)

    作者:陈颖祥.杨子晗 编译:AI有道 数据预处理后,我们生成了大量的新变量(比如独热编码生成了大量仅包含0或1的变量).但实际上,部分新生成的变量可能是多余:一方面它们本身不一定包含有用的信息,故无法 ...

  6. 机器学习-特征工程中的特征选择

    对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.由此可见,数据和特征在模型的整个开发过程中是比较重要.特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为 ...

  7. K-近邻算法之特征工程-特征预处理

    K-近邻算法之特征工程-特征预处理 1 什么是特征预处理 1.1 特征预处理定义 scikit-learn的解释 provides several common utility functions a ...

  8. 机器学习之特征工程--特征预处理(上)

    机器学习特征工程--特征预处理(上) 最近又重新看了下常用的特征预处理方法,主要来源是sklearn官方文档,一些关键信息记录下,留存用,有些乱和杂,抽时间再整理. 此为上篇,主要包括:线性转化,非线 ...

  9. ML之FE:特征工程/数据预处理中的数据异常值的概述、检测方法、处理方法技巧总结之详细攻略

    ML之FE:特征工程/数据预处理中的数据异常值的概述.检测方法.处理方法技巧总结之详细攻略 目录 异常值 异常值的概述(简介/原因/影响) 异常值的检测方法

  10. 数据挖掘:特征工程——特征处理与特征生成

    数据挖掘:特征工程--特征处理与特征构建 这里贴一张网上特征工程的流程,供大家学习. 一.什么是特征工程 特征工程:其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用..就是 ...

最新文章

  1. oracelp---随意 记录(nvl)
  2. html中如何把两行合并单元格,怎么把Excel单元格中多行文字合并为一行(2)
  3. Java开发环境!我总结了所有面试题
  4. 新手也能看懂,消息队列其实很简单
  5. 在Docker上部署NGINX和NGINX Plus
  6. 科研不是比赛,而是一种对未知和完美的自我追求——跟邢波(Eric Xing)面对面聊科研...
  7. 数据结构一些常见术语的中英文对照
  8. freemarker 数组转字符串_freemarker中的split字符串分割
  9. ios 拍照上传到服务器_iOS 上传图片到服务器
  10. iOS上栈溢出崩溃详解
  11. (二)IJCAI 国际人工智能联合会议
  12. Paillier 半同态加密:原理、高效实现方法和应用
  13. 常用的几种设计模式详解
  14. 调试qbo_video_record问题
  15. 职中计算机一级证,职中计算机等级一级考证教学网站的设计
  16. nginx防止恶意域名解析与反代80与443端口完整版
  17. 基于MATLAB 2021b的机器学习、深度学习
  18. WPF的自动折行面板
  19. springBean的生命周期 面试好记无废话
  20. JS中数组与对象的互相转换

热门文章

  1. LiveData源码解析
  2. Node.js 8有哪些重要功能和修复? 1
  3. 线程执行者(八)执行者周期性地运行一个任务
  4. SharePoint 2013 添加Ribbon菜单
  5. jQuery的一些基本的函数和用jQuery做一些动画操作
  6. 如何用纯 CSS 创作一个记事本翻页动画
  7. POJ 3321 Apple Tree 【树状数组+建树】
  8. php多线程操作同一文件
  9. HDU-5889 Barricade
  10. 常用oracle语句