思维导图如下:
在机器学习应用中,特征工程扮演重要的角色,可以说特征工程时机器学习应用的基础。我们都知道,数据和特征决定了机器学习算法的上限,而模型和算法只是不断逼近这个上限而已。
1、特征提取
特征提取是对原数据进行变换的过程,我们首先将原始数据转化为实向量。原始数据有很多类型,比如数值类型、离散类型、文本、图像以及视频等等。将原始数据转化为实向量后,对应的特征空间不一定是最佳的特征空间。为了让模型更好地学习到数据中隐藏的规律,可能还需要对特征进行变换。
对于特征提取,我们一般可以先进行探索性数据分析,然后针对不同类型的特征,采取不同的提取方法。
1.1 探索性数据分析
探索性数据分析(Exploratory Data Analysis,EDA)是采用各种技术在尽量少的先验假设条件下,探索数据内部结构和规律的一种数据分析方法或理念。
EDA技术通常分为两类。一类是可视化技术,如箱形图、直方图、多变量图、链图、帕累托图、散点图、茎叶图、平行坐标、让步比、多为尺度分析、目标投影追踪、主成分分析、多线性主成分分析、降维、非线性降维等。另一类是定量技术,如样本均值、方差、分位数、峰度、偏度等。
1.2 数值特征
数值特征的数据具有实际测量意义,可分为离散型和连续型。数值特征常用的处理方法有:
截断:保留重要信息的前提下对特征进行截断、截断后的特征也可看做是类别特征。
二值化
分桶:常用的分桶方法有均匀分桶、分位数分桶。
缩放:常用的缩放方法又标准化缩放(均值为0,方差为1)、最大最小值缩放、范数归一化。
缺失值处理:处理方法常见的有补均值、补中位数或者直接丢弃
特征交叉:对两个数值变量进行加减乘除等操作。也可以通过FM、FFM等模型进行自动的特征交叉组合。
非线性编码:多项式核、高斯核或者使用树模型的叶结点进行非线性编码。
行统计量:均值、方差、最大值、最小值、偏度、峰度等。
1.3 类别特征
类别特征也就是我们常说的离散变量,常见的处理方法有:
自然数编码:给每一个类别分配一个编号。
独热编码:这是我们最常用的处理方法,即转换为one-hot。
分层编码:对于邮政编码或者身份证号等类别特征,可以取不同位数进行分层,然后按层次进行自然数编码。
散列编码:对于取值特别多的类别特征,可以先使用散列函数进行散列操作,避免特别系数。
计数编码:将类别特征用其对应的计数来代替。
计数排名编码:利用计数的排名对类别特征进行编码
目标编码:基于目标变量对类别特征进行编码
类别特征之间交叉组合
类别特征和数值特征之间交叉组合
1.4 时间特征
常用的时间特征有:年、月、日、时、分、秒、星期几、年的第几天、一天过了多少分钟、季度、是否闰年、是否季度初、是否季度末、是否周末、是否月度末、是否营业时间、是否节假日。
还有一种时间特征是基于滑动窗口的统计特征。
1.5 空间特征
经纬度、行政区ID、街道、城市、距离等等。
1.6 文本特征
对文本特征进行预处理,我们常用的流程有:将字符转换为小写、分词、去除无用字符、词性标注、提取词根、拼写纠错、词干提取、标点符号编码、文档特征、实体插入和提取、Word2Vec、文本相似性、去除停止词、去除稀有词、TF-IDF、LDA、LSA等。
2、特征选择
特征选择是从我们提取的特征集合中选出一个子集。特征选择的目的有三个:
1、简化模型,使模型更易于研究人员和用户理解
2、改善性能
3、改善通用型、降低过拟合风险。
常用的特征选择方法有三类:过滤方法、封装方法和嵌入方法。
2.1 过滤方法
使用过滤方法进行特征选择不需要依赖于机器学习算法。主要分为单变量过滤方法和多变量过滤方法。常见的过滤方法有:
覆盖率计算每个特征的覆盖率。
皮尔逊相关系数:计算两个特征之间的相关性。
Fisher得分:用于分类问题,好的特征应该在同一类别中取值比较相似,不同类别中差异较大。
假设检验
互信息:在概率论或者信息论中,互信息用来度量两个变量之间的相关性。互信息越大表明两个变量相关性越高。
最小冗余最大相关性:对根已选择特征的相关性较高的冗余特征进行惩罚。
相关特征选择CFS:好的特征集合包含给目标变量非常相关的特征,但这些特征之间彼此不相关。
2.2 封装方法
封装方法直接使用机器学习算法评估特征子集的效果。
常用的封装方法有:
完全搜索
启发式搜索:序列前向选择和序列后向选择
随机搜索
2.3 嵌入方法
嵌入方法将特征选择过程嵌入到模型的构建过程中。
常用的方法有LASSO回归、岭回归、树方法。
对于特征选择方法,总结如下:
网友评论