特征工程

特征工程是数据分析的关键步骤,包括特征清洗、数据预处理(如无量纲化、二值化、哑编码和缺失值处理)、特征选择(Filter、Wrapper、Embedded方法)和降维(PCA、LDA)。预处理涉及标准化、归一化和正则化等,数据预处理的目的是提高模型性能。特征选择通过评估特征的发散性、相关性和信息增益来决定特征的优劣。降维方法如PCA和LDA用于减少计算量和提升模型效率。
摘要由CSDN通过智能技术生成

特征工程

目录

1 特征工程是什么?

2 特征清洗

3 数据预处理
  3.1 无量纲化
    3.1.1 标准化
    3.1.2 归一化(区间缩放)
    3.1.3 正则化

  3.2 对定量特征二值化
  3.3 对定性特征哑编码
  3.4 缺失值计算
  3.5 生成多项式特征和自定义转换
4 特征选择
  4.1 Filter
    4.1.1 方差选择法
    4.1.2 相关系数法
    4.1.3 卡方检验
    4.1.4 互信息法
  4.2 Wrapper
    4.2.1 递归特征消除法
  4.3 Embedded
    4.3.1 基于惩罚项的特征选择法
    4.3.2 基于树模型的特征选择法
5 降维
  5.1 主成分分析法(PCA)

​ 5.2 线性判别分析法(LDA)

1 关于特征工程:

在数据预处理之前,先来了解下特征工程,特征工程指的是在原始数据之中提取,构造,选择数据特征的过程。有句话是:“数据和特征工程决定了你能到达的上限,机器学习模型决定了你能多么逼近这个上限”。特征工程是数据分析过程中最重要的一步,当然也很能简单的理解,毕竟特征工程是建模步骤的基础和准备。

特征工程详细分解为特征使用、特征获取、特征处理、特征监控。

特征使用是指基于业务理解,尽可能找出对因变量有影响的所有自变量(特征)。找出特征后需要评价其特征的获取难度、覆盖率和准确率。

特征获取是指如何获取这些特征、如何存储这些特征。

接下来是特征处理,特征处理分为特征清洗、对单个特征的预处理、对多个特征的预处理和衍生变量。

最后是特征监控,指验证特征的有效性分析,防止特征质量下降、影响模型效果。

2 特征清洗
3 数据预处理(数据变换)

通过特征提取,得到未经处理的特征存在以下问题:

不属于同一量纲:即特征的单位不同,不能相互比较。

信息冗余:这里主要争对定量特征,我们只关心某变量属于哪一类区间而不是具体等于具体值,这个时候需要对其值进行区间划分,比如二值化。

定性特征不能直接使用:对于某些模型不能直接使用定性特征,通常使用哑编码(又叫独热编码)的方式将定性特征转化为定量特征,假设某个定类特征有N个定类值,则处理方式是原始特征值为第i种定性值时,将第i个扩展特征赋值为1,其余扩展特征赋值为0。这样原来一个特征从形式上来看就被扩展为N个特征,这种方式不用增加调参的工作。

存在缺失值:要么剔除要么填充。

信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,之前提到在线性模型中,使用对定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化,或者进行其他的转换,都能达到非线性的效果。

我们使用sklearn中的preproccessing库来进行数据预处理,可以覆盖以上问题的解决方案。

3.1 无量纲化

无量纲化使不同量纲的数据转换到同一标准上。目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。

常见的无量纲化方法有:min-max标准化(Min-max normalization),log函数转换,atan函数转换,z-score标准化(zero-mena normalization,此方法最为常用),模糊量化法。本文只介绍min-max法,z-score法(标准化),正则化。

3.1.1 标准化

标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。标准化需要计算特征的均值和标准差,对特征进行以下处理:

x=xX¯¯¯S

from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
iris = load_iris()
# 载入鸢尾花数据
a = StandardScaler()
# a选择StandardScaler作为数据的estimator.
b = a.fit_transform(iris.data)
# iris.data 为特征矩阵 iris.target为目标向量
# fit_transform为拟合并转换数据
print(b)

3.1.2 归一化(区间缩放)

区间缩放利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。区间缩放需要找特征中的最大最小值,

x=xMinMaxMin

from sklearn.preprocessing import MinMaxScaler
#区间缩放,返回值为缩放到[0, 1]区间的数
a = MinMaxScaler()
b = a.fit_transform(iris.data)
print(b)

3.1.3 正则化(还没有想到实际的数据转化应用)

标准化和正则化的区别,简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。正则化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。(其他相似解释:正则化数据和之前的标准化数据不同,之前标准化数据是针对特征来说的,而现在正则化是对样本来做的,是用样本数据除以他的范式)

Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。在sklearn中有三种正则化方法,l1范数、l2范数、max范数。

​ p-范数的计算公式:

||X||p=(|x1|p+|x2|p+...+|xn|p)1/p

该方法主要应用于文本分类和聚类中。例如,对于两个TF-IDF向量的l2-norm进行点积,就可以得到这两个向量的余弦相似性。

规则为l2(2-范数)的正则化公式如下:

x=xix2i
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值