数据科学/机器学习项目流程 — 特征工程

目录

1 特征工程定义

2 特征工程流程步骤

2.1 数据获取

2.2 特征理解

2.3 特征改进

数据清洗

数据编码

2.4 特征选择

基于统计的特征选择

基于模型的特征选择

2.5 特征转换

主成分分析(PCA)

线性判别分析(LDA )

非线性变换

在数据科学项目中,数据遵循”garbage in, garbage out”,用不好或不对的数据做分析,会产生不好或无用的结论。数据和特征决定了模型精度的上限,算法只是不断趋于这个上限。项目中70%的时间花在特征工程上。

1 特征工程定义

特征工程(Feature Engineering)是将原始数据转化成能更好表达问题本质的特征的过程,使得运用特征后的模型提升预测精度。

特征工程的目的是对原始数据进行选择、分解或聚合,发现对因变量Y有重要作用的自变量X,以更好的表达问题本质。

特征工程的重要性为:特征越好,灵活性越强,构造的模型越简单,模型精度表现越出色。好的特征使一般算法也能获得很好的精度评估,允许选择简单的模型,不需要花太多时间寻找最优参数,降低模型复杂度,并能提升模型精度评估。

2 特征工程流程步骤

数据科学项目常见流程如下:

数据科学/机器学习项目流程 -- 特征工程

其中蓝色框为特征工程步骤。

2.1 数据获取

确定 特征使用方案:

1)基于业务理解和业务目标,尽可能找出对因变量有影响的所有自变量。

2)数据可用性评估

获取难度

覆盖率

准确率

确定 特征获取方案:

1)获取途径

如何获取特征(接口调用/github下载等)

如何存储(数据库/csv/txt/dataframe等)

2.2 特征理解

获取数据后对数据特征进行分析描述、统计、理解和改进:

1)数据是结构数据还是非结构数据

2)数据字段的类型:数值型,分类型,顺序型

3)探索式数据分析

  • 描述性统计: 不同值个数,空值个数,空值比例,分布形状,最大值,最小值,平均值,中值,标准差,离群值,skew,集中情况,离中情况,分类数据的类型比例等

  • 数据可视化:图表(饼图,条形图,直方图,散点图等)

2.3 特征改进

数据清洗

错误值,重复值,空值,离群值的处理

1)缺失值处理:

数据量很大而缺失数据很少时,可直接删除缺失值 删除行(实例)

缺失数据占整个字段所有数据的比例过大(>50%),删除列(字段), 或将整个字段转换成指示变量(Indicator Variable)

其他情况,进行缺失值的填充: 固定值填充, 均值填充,众数填充,用模型自动计算填充(KNN, 随机森林,XGBoost),Imputer, 不填充

2)异常值处理

  • 基于统计的异常值检测:Quartile, Range,Mean Deviation,Standard Deviation等,适用于单变量的数值型数据。

  • 基于距离的异常值检测: 将数据集中与大多数点之间距离大于某个阈值的点视为异常点,主要使用的距离度量方法有绝对距离(曼哈顿距离)、欧氏距离和马氏距离等方法。

  • 基于密度的异常值检测: 考察当前点周围密度,可发现局部异常点。

3)根据需求对重复值去重

数据编码

数据类型转换,数据标准化(Data Standardization),一般化(Data Generalization),离散化(Data discretization),归一化(Data Normalization) ,二值化(Binarization), 编码分类变量,指数变换等

标准化(Standardization): 也称为z-score standardization,将正态分布的连续变量转化为标准正态分布(均值为0,方差为单位长度),也用于非正态分布的连续变量,数据形状不会变化。

无量纲化:Max-Min, 将连续变量值压缩至 [0,1] 区间。

归一化(Normalization):将样本特征向量转化为单位向量(unit norm),norm一般为L2 norm。

一般化(Generalization): 将复杂分类/连续变量简化,如将复杂的地址简化成东南西北。

离散化(Discretization): 将连续变量离散为分类变量,有等宽装箱法(Equal-Width),等深(等频)装箱法(Equal-Size),特征值装箱法,决策树离散化。

二值化(Binarizer): 基于给定阈值,将连续变量按阈值划分为二值变量。

分类变量编码: one-hot哑变量, 顺序哑变量。

指数变换: log变换后为正态分布,指数变换后为正态分布,Box-Cox变换。

2.4 特征选择

基于统计的特征选择

1) 皮尔逊相关系数(Pearson correlation):测量列之间的线性关系。在[-1, 1 ] 变化,0代表没有线性关系,相关性接近-1或1代表线性关系很强。要求列是正态分布,数据很大时可忽略此要求。

2) 假设检验 : 将”变量之间不存在相关性”作为

数据科学/机器学习项目流程 -- 特征工程,可选择ANOVA或卡方检验(Chi-Square)。

基于模型的特征选择

1)决策树/随机森林: 对基尼系数或熵进行拟合以找到最优特征,适用于分类特征

2)线性模型和正则化: L1范数的正则化称为Lasso正则化,L2范数的正则化称为岭正则化(Ridge),正则化有助于解决多重共线性问题,适用于定量特征

3)SVC: 二元分类特征

2.5 特征转换

特征选择仅限于从原始列中选择特征,特征转换算法将原始列组合起来,从而构造可以更好描述数据的特征。特征转换使用原始数据集的隐藏结构构造新列,生成一个与原始数据结构不同的数据集。特征转换的原理是生成能捕获数据本质的列,只需要几个就能准确解释数据集。是一种降维手段,将高维数据映射到低维空间。两种主要的特征线性转换方法是PCA和LDA。非线性转换方法有T-SNE等。

主成分分析(PCA)

主成分分析(PCA, Principal Components Analysis )是将有多个相关特征的数据集投影到相关特征较少的坐标系上。这些新的、不相关的特征叫主成分。主成分能替代原始特征空间的坐标系,需要的特征少,捕捉的变化多。主成分会产生新特征,最大化数据的方差。这样每个特征都会解释数据的形状。主成分按可以解释的方差来排序,第一个主成分最能解释数据的方差,第二个其次。

PCA本身是无监督任务,不使用响应列进行投影/转换。

PCA利用了协方差矩阵的特征值分解。PCA也可以在相关矩阵上使用。如果特征的量纲相同,可以使用相关矩阵。量纲不同时,应使用协方差矩阵。一般在缩放数据上使用协方差矩阵。

PCA的过程为:

1)创建数据集的协方差矩阵;

2)计算协方差矩阵的特征值;

3)保留前k个特征值(按特征值降序排列),绘制碎石图确定保留的特征值个数;

4)用保留的特征向量转换为新的数据点。

PCA会消除相关特征。本质上,在特征值分解后,得到的所有主成分都互相垂直,意思是彼此线性无关。很多机器学习和预处理技术会假设特征是相互独立的,用PCA可以确保这个假设。

线性判别分析(LDA )

线性判别分析(LDA, Linear Discriminant Analysis)是特征变换算法,也是有监督分类器。和PCA一样,LDA的目标是提取新坐标系,将原始数据投影到低维空间中。但LDA不会专注于数据的方差,而是优化低维空间,此低维空间在为分类模型查找决策边界时更有用。L DA分类有助于避免过拟合,也会降低计算成本。

LDA会计算类内(within-class)和类间(between-class)散布矩阵的特征值和特征向量,选择分类性能最好的特征,最大化类间距离,最小化类内距离。LDA的步骤为:

1)计算Y变量每个分类的均值向量;

2)计算类内和类间的散布矩阵;

3)计算

数据科学/机器学习项目流程 -- 特征工程的特征值和特征向量;

4)降序排列特征值,保留前k个特征向量;

5)使用前几个特征向量将数据投影到新空间;

非线性变换

PCA和LDA都是线性变换(矩阵变换),不适用于非线性特征。对于非线性变换,可用Kernal PCA,Kernal LDA , t-SNE, LLE等

数据科学/机器学习项目流程 -- 特征工程

参考引用:

【1】https://blog.csdn.net/sunyaowu315/article/details/83782069

【2】https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing

【3】Feature Engineering Made Easy — Sinan Ozdemir, Divya Susarla

【4】Feature Engineering For Machine Learning — Alice Zheng & Amanda Casari

【5】https://blog.csdn.net/u010865478/article/details/82716992

Original: https://blog.csdn.net/liskolnikov/article/details/121465992
Author: liskol
Title: 数据科学/机器学习项目流程 — 特征工程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/700445/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球