特征工程

导读:

术语:特征选择,特征工程,降维,one-hot编码,虚拟编码,效果编码,多热编码,主成分分析/PCA,因子分解机/FM,前向神经网络/FNN

概念定义
特征:是原始数据的数值表示【3】
特征工程:就是在给定数据、模型和任务的情况下设计出最合适的特征的过程。【3】
在这里插入图片描述
从上图中可以看出,特征工程应该就是将原始数据转化为特征,然后上层模型使用这些特征【这些特征可以是原始的特征,也可以是我们使用其他模型构建的新特征(如两个特征的内积,或者从图片中提取的特征,或者使用词嵌入方法提取的特征)】进行建模。特征就是单纯的表示某一个属性的数字,这个数值可以被人类理解,也可以无法被解释。

特征工程

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。

特征工程包括:特征预处理/特征处理,特征选择,特征提取/特征压缩这三部分内容。特征工程也就是将原始数据转化为特征向量的过程。
特征预处理:清理和转化为数字编码
特征选择:筛选有用特征
特征提取:降维或者提取特征之间的相互作用。(如PCA降维或者嵌入模型)

一:数据预处理/数据处理

数据预处理包括很多:将最原始数据文字表示转化为数字表示(离散和连续值的处理),缺失值/异常值/重复值处理

(1)离散值处理: 离散值也就是类别信息:又可分为互斥的类别:如星期,职业,城市,也可以分为非互斥的类别:如电影类型(爱情,动作,搞笑)

互斥的类别信息常用的编码方式有:one-hot编码,虚拟编码和效果编码等**
非互斥的类别信息常用的编码方式有:多热编码
在这里插入图片描述
在这里插入图片描述

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

(2)连续值处理:如(成绩,工资,身高,年龄等),连续值通常不直接放入及其学习进行训练,需要进一步进行归一化处理
连续值的归一化处理:为什么要做特征归一化/标准化?:https://blog.csdn.net/sa726663676/article/details/112293733

(3)缺失值/异常值/重复值处理:根据自己的任务定,筛选掉一定范围的异常值以及使用平均值等方法代替异常值或者专门为异常值设置个类别

特征选择( Feature Selection )

概念:也称特征子集选择( Feature Subset Selection , FSS )。是从很多原始特征中选择出一些最有效特征以降低数据集维度的过程,是提高学习算法性能的一个重要手段。对于一个学习算法来说,好的学习样本是训练模型的关键。【1】

一个典型的机器学习任务,是通过样本的特征来预测样本所对应的值。如果样本的特征少,我们会考虑增加特征,比如Polynomial Regression就是典型的增加特征的算法。而现实中的情况往往是特征太多了,需要减少一些特征。【2】
特征可以分为“无关特征”和“冗余特征”:
无关特征:比如在预测当地天气是否会下雨,那么当地男女生的比例就是对于预测毫无意义的。
冗余特征:比如通过收入和税收预测某人的消费水平,税收通常和收入呈正相关,那么税收和收入取其中一个特征就行了。

特征选择好处:
减少特征的维度,比如减小冗余特征来减少计算能力,减少无关特征,提升模型建模准确率

常用的特征选择方法:

(1)手动过滤法:
1.方差选择法:
原理:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。可以使用feature_selection库VarianceThreshold类来选择特征。

(2)模型算法筛选法
比如使用决策树来筛选重要特征。当然还有其他很多算法。

三 特征提取-压缩维度(降维)或者发现关联特征(特征交互)

在讲解特征提取之前,需要和特征选择做区分:
特征选择(feature selection)和特征提取(Feature extraction)都属于降维(Dimension reduction),这两者达到的效果是一样的,就是试图去减少特征数据集中的属性(或者称为特征)的数目;但是两者所采用的方式方法却不同。
特征提取的方法主要是通过属性间的关系,如组合不同的属性得到新的属性,这样就改变了原来的特征空间。(如无监督PCA方法对原始数据集进行降维)
特征选择的方法是从原始特征数据集中选择出子集,是一种包含的关系,没有更改原始的特征空间。(人工或者某种算法赛选)
这两种降维方法也能同时使用,比如先对原始所有数据特征选择部分子集,然后使用PCA算法对部分子集进行降维提取主成分。

降维
当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法有主成分分析法(PCA)和线性判别分析(LDA)。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。

其他特征提取方式:
直接使用词嵌入word2vec的方式抽象出特征的表示供上层模型的学习,后面也可以对抽象出的特征进行特征交互等操作。

特征交互
特征交互的作用,根据原始数据关联的特征产生新的特征表示,能够利用新的特征来更好的对数据信息进行建模和表示。。
常用的特征之间的交互的方式:
特征交互(自己定义0_0)是指:通常用于推荐系统中,用于捕获特征之间的相互作用,是通过(人工或者其他方式)将两个或者多个特征进行运算得到新的特征的过程,模型可以同时结合原始特征或者新的特征进行学习和推荐提升模型的数据建模效果。
我将特征分为三类:原始特征,低阶特征交互,高阶特征交互。
原始就是直接利用原始的特征进行建模。(通常是使用LR模型对其进行线性建模)
低阶特征交互是使用特征的简单内积进行简单的非线性运行(比如使用FM,FFM模型进行简单的非线性推荐)
高阶特征交互是使用复杂的特征作用得到新的特征用于建模(比如使用FNN,CNN,RNN得到复杂的高阶特征用于推荐)

直接对原始特征建模有什么好处:比如使用LR模型可以直观的解释哪些特征更为重要,直接可以通过权重控制。
使用高阶特征建模有什么好处:比如使用Deep模型对高阶特征建模可以找出这些低级特征更为深层更为抽象的共性问题。

就好像图片识别一样,原始特征只能根据像素的变化和像素信息进行底层最简单的图像识别。而高级特征可以学习这些像素分布的特征建立他们之间的相互影响抽象出共性的特征(比如腿,手,头),然后基于共性问题进行识别。

高级特征好处是能够找出共性的问题,而坏处是特异性不好,对于冷门的用户或者项目推荐效果非常不好。而直接使用原始特征对于冷门的用户影响不是太大。

特征交互的一些常用方法:
1.两个向量的内积形式(FM模型)
2.两个向量的外积形式
3.使用多层神经网络(FNN,CNN,RNN)提取特征之间的高阶交互特征(DeepFM,Wide$deep模型)

【1】https://baike.baidu.com/item/%E7%89%B9%E5%BE%81%E9%80%89%E6%8B%A9/4950639?fr=aladdin
【2】https://blog.csdn.net/qq_33876194/article/details/88403394
【3】《精通特征工程》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值