特征工程之特征降维-特征选择-PCA/LDA

机器学习项目大体流程:

从业场景抽象出问题—>数据获取/采集—>数据清洗—>探索性数据分析—>特征工程 ( 数据采样、特征处理、特征降维[ 特征选择 or 线性降维 ] )—>选择和应用场景以及数据类型相符的机器学习模型
数据采集:哪些数据丢最后的预测结果有帮助?能否采集到这类数据?线上实时计算时数据获取是否快捷?
数据清洗:最后机器学习模型预测结果的好坏 肯定取决于 原材料——数据 的好坏。数据清洗就是要去除“脏”数据。

特征降维之前还可能做的事情:
数据采样【正对样本类别不平衡问题】、特征处理【标准化、归一化、二值化、哑编码、缺失值、数据转换…】

数据采样

数据在采集、清洗过后,正负样本有可能是不均衡的。所以要进行数据采样,采样的方式有随机采样分层抽样
但是随机采样存在隐患,因为随机采样得到的数据很不均匀,因此更多的是根据特征进行分层抽样。

正负样本不平衡的处理办法:
正样本>负样本,样本量大的话,可以采用下采样
样本量不大的话,可以使用上采样,如:图像识别中的 镜像 和 旋转;修改损失函数,设置样本权重。
【周志华 《机器学习》3.6节有介绍】

特征处理

feature scaling

学习链接:https://mp.weixin.qq.com/s/tG9igr5dXawr_ZDWnLwRgg
网上对于 标准化、归一化这两个词的解释,以及代表的含义 五花八门…这里干脆用 feature scaling 统一起来。
feature scaling 的两个原因:

  • 特征的单位(尺度)不一样,就不能放在一起比较。如:一个特征的变化范围是[1000,1000000],而另一个特征的变化范围是[-0.01,0.2],在进行距离计算时,明显尺度大的特征起决定性作用,尺度小的特征的作用极有可能被忽略。
  • 原始特征下,因为尺度差异,损失函数的等高线图可能是椭圆形,如果梯度下降的话,会走zigzag路线。通过zero-mean 或者 unit-variance变换后,损失函数的登高线图更加接近圆形,梯度下降的震荡更小,收敛更快。
    常用feature scaling方法主要有4种:
  1. Rescaling
    在这里插入图片描述
  2. mean normalization:
    在这里插入图片描述
  3. standardization(Z-score Normalization)
    在这里插入图片描述
    每一个特征维度的均值都为0,方差都为1. (zero-mean and unit-variance)
  4. scaling to unit length
    在这里插入图片描述
    每一个样本,除以其长度。这样,每一个样本向量都是单位向量。

如果将每一个样本按列排放,即,每一列代表一个样本,每一行代表一个特征维度(和我们平常用的反过来)。那么,前三种方法都是逐行操作,即,对所有样本的特定特征维度进行操作,变化主要体现在特征上。最后一种方法是对一个个样本,逐列进行操作。

前三种都可以看作是去量纲的方法【因为分子分母相除,单位消失】,降低特征尺度的影响,可以看作是某种尺度无关操作。但是,最大最小值缩放对outliers比较敏感。outliers对后者的影响与outliers数量和数据集大小有关,outliers越少,数据集越大,影响越小。

最后一种除以长度,把所有样本映射到单位球上,可以看作是某种长度无关操作。【计算余弦距离、内积相似度时需要】

在这里插入图片描述
观察上图,standardization是不会消除变量之间的线性相关性的。

  • 定量特征二值化
  • 定性特征哑编码
  • 缺失值处理
  • 数据变换

多重共线性

多重共线性指的是特征变量彼此线性相关。
特征变量之间如果存在多重共线性 该如何处理?
PCA是一个解决办法,PCA 降维后,得到的特征的相关性会降低。但是,PCA会丢掉特征的可解释性。【可以计算PCA前后特征的方差膨胀因子VIF,看看是否是这样。】

一、特征降维之特征选择

特征选择是建模中常用的降维手段,比较暴力,直接将不重要特征删除。
缺点:造成信息丢失,不利于模型精度。【与之形成对比的是PCA、LDA等降维方式。】
主要标准有两个:

  1. 特征是否发散。
  2. 特征与目标的相关性。

:在进行特征工程之前,需要进行特征的设计,因为没有特征又何来的特征选择?项目提供的数据集特征不一定就能直接作为模型训练的特征,需要对具体场景进行理解、建模,得到合理的特征,毕竟“数据决定了机器学习模型能力的上限”。

1. 过滤式特征选择

使用统计的方式对特征进行打分排名。
优点:有统计学理论分析保证。
缺点:独立考虑每个特征与目标相关性,忽略不同特征之间关联性。【与之对比的是wrapper和embedded等特征选择方式。】

简介:
用于 连续型 与 连续型 变量的相关性分析。所以主要用于回归模型,各个 特征与目标之间 的线性相关性。
属于过滤式(filter)特征筛选。pearson相关系数描述两个变量间的相关性,即两个变量在随时间变化过程中,是同向变化,还是反向变化,还是其他。同向变化,即正相关,pearson系数接近1;反向变化即负相关,pearson系数接近-1;其他变化Pearson系数刻画不出来【只能刻画线性相关】,pearson系数接近0。
spearman相关系数刻画两个变量之间是否有单调关系。定义为两个变量秩统计量的pearson相关系数。

操作:
可以筛选与target,pearson相关系数大于0.5的特征;或者,依据相关系数进行特征排序,取前几名。

说明:
相关系数主要用于判别线性相关,对于target变量如果存在更复杂的函数形式的影响,建议使用树模型的特征重要性去筛选。

  • 卡方检验

简介:
用于 类别型 与 类别型 变量的相关性分析。所以主要用于分类模型。
卡方统计量公式:
X α 2 = Σ i ( O i − E i ) 2 E i \mathcal{X}_{\alpha}^2=\Sigma_i \frac{(O_i - E_i)^2}{E_i} Xα2=ΣiEi(OiEi)2
其中, α \alpha α代表自由度,O代表观察值,E代表期望值。
理论具体可以看这篇:https://blog.csdn.net/weixin_44360866/article/details/127108754

操作:
可以筛选与target,卡方值大的特征。
为什么是筛选卡方值大的?因为卡方值很大,就拒绝原假设,原假设是两变量之间无关。

  • 最大信息系数法:

简介:
用于 类别型 与 类别型 变量的相关性分析。所以主要用于分类模型。
有关信息论的基础可以看:https://blog.csdn.net/weixin_44360866/article/details/126304210
两个随机变量X,Y互信息的定义思路就是:已知Y后,X的不确定性减少了多少。因此,可以用来衡量两个变量之间相互依赖程度的度量
公式:
I ( X , Y ) = Σ x ∈ X Σ y ∈ Y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) I(X,Y)=\Sigma_{x\in \mathcal{X}\Sigma_{y\in \mathcal{Y}}} p(x,y){\rm log}\frac{p(x,y)}{p(x)p(y)} I(X,Y)=ΣxXΣyYp(x,y)logp(x)p(y)p(x,y)
两个变量独立时,联合概率等于边际概率的乘积,所以log里面的值都等于1,log1为0,因此,互信息为0.
优缺点:
MIC要比相关系数general,不管是什么函数的相关关系,都能识别。
不需要标准化/归一化,不同数据集可以直接识别。
线性相关性有时不如pearson相关系数强。独立性检测不如dcor(距离相关系数)。用于大规模探索性分析会产生太多错误判例。

操作:
可以看到公式中设计计算两个变量的概率分布。具体数据集中,使用频率代替概率。【蒙特卡洛思想】
计算各个特征和target的MIC,进行排名,选前几名。

图例:
在这里插入图片描述

  • 方差选择法

简介:
属于过滤式特征选择。
不同于上面依照——与目标的相关性程度,这个评价标准进行特征选择,方差选择法根据——特征自身的发散程度,进行特征选择。
发散程度越大的变量,提供的信息越多。而方差就是衡量变量发散程度的一个指标。
变量的方差大家都会算,不放公式了。
操作:
根据阈值选择方差大于阈值的特征。

注:不同的特征单位不同,所以不能直接根据方差进行特征筛选。需要进行归一化 or 标准化 后再用。
更加常用的是变异系数。

  • 变异系数coefficient of variation,CV

也称相对标准差、标准偏差系数
为了针对单位不一致时,可以更加准确地说明两组数据的离散程度,就引入了相对标准差,只需要用标准差除以均值。
公式:
1.总体CV: C V = σ μ CV = \frac{\sigma}{\mu} CV=μσ
2.样本CV: C V = S X ˉ CV = \frac{S}{\bar{X}} CV=XˉS

2. 嵌入式特征选择

将机器学习的模型训练过程与特征筛选过程融为一体,在模型训练完成之后便可得出哪些特征是有用的,哪些是没用的。
但是,只有特定的模型能够用来做特征选择。
目前常用的有两种:

  1. LASSO:正则项是1-范数,模型求出来的解具有稀疏性,可以通过调整惩罚项系数大小来控制解的稀疏程度。【解就是要学习的参数,即,线性回归中的回归系数。】
  2. 树模型:随机森林RF or 梯度提升树GBDT,可以输出特征的重要性【这就有点像过滤法了…】,通过特征重要性对特征进行排序,选择最重要的那几个特征。

树模型做特征选择

树的集成算法最著名的有 随机森林Random Forest、梯度提升树Gradient Boosting Decision Tree.
随机森林属于Bagging,使用自助采样Bootstrap,可以并行训练 ;GBDT属于Boosting,每一轮训练一棵树,且改善前一轮的结果,所以不能并行,使用的是前向分步算法的优化框架。
随机森林具有很好的抵抗过拟合的特性,参数(决策树的个数)对预测能力的影响较小,调参比较容易,一般设置一个较大的数。
GBDT理论丰富,一般性能更加有优势。

关于GBDT:
https://blog.csdn.net/weixin_44360866/article/details/127143440
GBDT详细原理:https://blog.csdn.net/yangxudong/article/details/53872141
关于随机森林:https://wap.sciencenet.cn/blog-3431904-1263043.html?mobile=1

随机森林做特征选择:https://zhuanlan.zhihu.com/p/404691931
RF是通过包外OOB误差率来计算特征重要程度的。
GBDT做特征选择:https://zhuanlan.zhihu.com/p/344052390
GBDT是计算 每一个树中,与特征相关的节点减少了多少平方损失,然后相加 作为特征重要程度的。
其实只要是树 or 森林,就可以按照上面GBDT的思路计算特征重要程度。所以,XGboost、lightGBM也可以用来计算特征重要程度。
【再附上XGboost的学习链接:https://zhuanlan.zhihu.com/p/142413825
lightGBM文档:https://lightgbm.readthedocs.io/en/latest/index.html
lightGBM学习链接:https://www.biaodianfu.com/lightgbm.html
注意:GBDT中的树一定是回归树!!

catBoost学习:link1
link2

天池经典赛题-蒸汽量预测 之特征工程

只提供代码进行举例:


未完待续…

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值