【数据分析】— 特征工程
- 特征工程是什么? (Feature Engineering)
- 特征工程的意义
- 特征工程的流程
- 特征的设计
- 从原始数据中如何设计特征?
- 基本特征的提取
- 创建新的特征
- 函数变换特征
- 独热特征表示 One-hot Representation
- 数据的统计特征
- TF-IDF(词频-逆文档率)
- 如何找到关键特征(词)?
- 计算 TF-IDF
- TF-IDF(词频-逆文档率)—应用
- 特征组合:构造高阶特征
- 举例:第二届“中国高校计算机大赛-大数据挑战赛”
- 基本特征的提取
- 创建新的特征
- 如何挑选有效的特征(Subset Selection问题)
- 如何生成特征子集
- 举例:
- 如何评价特征子集?
- 1. **过滤式(Filter)评价策略方法**
- 2. 封装式(Wrapper)评价策略方法
- 3. 嵌入式(Embedded)评价策略方法
- 1). 带惩罚项的特征选择方法
- 2). 基于树模型的特征选择方法
- 举例:
- 传统特征工程的缺点
- 特征学习
- 自编码结构(Auto-Encoder)
- 卷积神经网络(CNN): 常用于图像特征提取
- 卷积神经网络(CNN): 常用于图像特征提取
- 循环神经网络(RNN): 常用于序列数据的特征提取
- 利用标准数据集进行特征学习(特征预训练)
特征工程是什么? (Feature Engineering)
- 在数据预处理以后(或者数据预处理过程中),如何从数据中提取有效的特征,使这些特征能够尽可能的表达原始数据中的信息,使得后续建立的数据模型能达到更好的效果,就是特征工程所要做的工作。
特征工程的意义
- 著名数据科学家Andrew Ng 对特征工程这样描述的:“虽然提取数据特征是非常困难、耗时并且需要相关领域的专家知识,但是机器学习应用的基础就是特征工程”
- 特征越好,灵活性越强
好的特征能使一般的模型也能获得很好的性能,在不复杂的模型上运行速度很快,并且容易理解和维护。 - 特征越好,构建的模型越简单
好的特征不需要花太多的时间去寻找最优参数,降低了模型的复杂度,使模型趋于简单。 - 特征越好,模型的性能越出色
好的特征能够使模型表现越出色是毫无疑问的,而特征工程的最终目的就是提升模型的性能。
特征工程的流程
特征的设计
从原始数据中如何设计特征?
基本特征的提取
基本特征的提取过程就是对原始数据进行预处理,将其转化成可以使用的数值特征。常见的方法有:数据的归一化、离散化、缺失值补全和数据变换等。
创建新的特征
根据对应的领域知识,在基本特征的基础上进行特征之间的比值和交叉变化来构建新的特征。
函数变换特征
- 左图是根据两个Sin函数(分别是每秒7个和17个周期),以及一些噪声数据得到的序列图;
- 右图是由傅立叶变换得到了频率图,可以看出变换后成功得到了两个概率最大的频率7和17(其中纵坐标是振幅,即概率值)
独热特征表示 One-hot Representation
- 将每个属性表示成一个很长的向量(每维代表一个属性值,如词语)
- 函数:[0, 0, 1, 0, 0, …, 0, 0, 0, 0]
- 图像:[0, 0, 0, 0, 0, …, 0, 0, 0, 1]
- 优点:直观,简洁
- 缺陷:
- “维度灾难” 问题:尤其是我们所构建的语料库包含的词语数据非常多的时候,独热表征在空间和时间上的开销都是十分巨大的
- “语义鸿沟” 现象:任意两个词之间都是完全孤立的,是无法刻画句子中词语的语序信息的(之前提到的词袋模型也是如此)。例如,我们是无法通过独热表征来判断“函数”与“偶函数”之间的联系的(但实际上这两个词语是非常相关的)。
数据的统计特征
- 如:文档中的词频统计
- 字典
- 文档词频特征
TF-IDF(词频-逆文档率)
- 算法简单高效,工业界用于最开始的数据预处理
- 主要思想:找到能代表该文档中的**“关键词”**
- 词频 (TF, Term Frequency)
- TF = 某个词(特征值)在句子(数据)中出现的频率
- 逆文档率 (IDF, Inverse Document Frequency)
- IDF = log(语料库(数据库)的句子(数据)总数 / 包含该词(特征值)的句子(数据)总数)
- 每个特征值(词)的重要性
- w i j = t f ∗ i d f = T F i j ∗ l o g ( N / D F i ) w_{ij}= tf*idf = TF_{ij}*log(N/DF_i) wij=tf∗idf=TFij∗log(N/DFi)
如何找到关键特征(词)?
- 根据 TF 可以找到一个句子中的高频词(特征值)(删去无意义的词,如停用词“的”、“是”、“了”等)
- 根据 IDF 继续对句子中剩下的词进行权重赋值并排序,在数据库中越常见的词(特征值)权重越小
- 根据 TF-IDF 我们可以得到一个句子(数据)中所有词(特征值)的TF-IDF 值,进而排序筛选得到每个句子最有代表性的特征(“关键词”)
计算 TF-IDF
- 优点
- 简单快速的词(特征)重要性表示方法,结果比较符合实际情况
- 应用广泛:不仅限于文本数据
- 缺点
- 单纯以“词频”衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多
- 无法体现词的位置信息、顺序信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同
- 无法发现词(特征)的隐含联系,如同义词等
TF-IDF(词频-逆文档率)—应用
- 搜索引擎;关键词提取;文本相似性;文本摘要
- 推荐系统
- 可以计算“用户-标签-商品”的特征
- 用户-标签的TF-IDF
- 用户:i。标签:l。用户总数:M。
特征组合:构造高阶特征
上述所有构造的特征均可以:两两、三三、… 进行组合
举例:第二届“中国高校计算机大赛-大数据挑战赛”
简单的说,该赛题的求解目标是利用数据分析将人工的鼠标轨迹和代码生成的鼠标轨迹区分开来。这里的鼠标轨迹是指一种完成一种验证手段——拖动滑块到指定区域时鼠标的轨迹。
原始数据格式:一系列连续点的坐标及其对应时间,目标点的坐标
例如:(2,3,4),(2,5,6)(4,3,7) (4,3),该轨迹中含有三个点的坐标,以(x,y, time)的时间表示,终点坐标为(4,3)
基本特征的提取
- 轨迹运动数据的统计值:运动速度/加速度/角加速度/角速度的均值/极值/最值/中位数 等
- 轨迹的描述:运动在x轴方向是否为单向,曲线平滑程度, 等
创建新的特征
- 基本特征的简单二元运算, 加/减/乘/除/平方和/和平方/倒数和
- 运动数据在某一维上的偏导
- 领域专家知识
如何挑选有效的特征(Subset Selection问题)
- 在实际应用中,特征的数量往往比较多,其中可能会存在不相关的特征。
- 特征数量越多,分析特征、训练模型所需要的时间就越长,同时容易引起“维度灾难”,使得模型更加复杂。
- 特征选择通过剔除不相关的特征或冗余的特征来减少特征数量,从而简化了模型并且提升了模型的泛化能力。
如何生成特征子集
举例:
如何评价特征子集?
不同的特征选择算法不仅对特征子集评价标准不同,有的还需要结合后续的学
习算法模型。因此根据特征选择中子集评价标准和后续算法的结合方式主要分为过滤式(Filter)、封装式(Wrapper) 和嵌入式(Embedded) 三种
1. 过滤式(Filter)评价策略方法
- 独立于后续的学习算法模型来分析数据集的固有的属性
- 采用一些基于信息统计的启发式准则来评价特征子集
- 启发式的评价函数: 距离度量、信息度量、依赖性度量、一致性度量
2. 封装式(Wrapper)评价策略方法
- 将特征选择作为学习算法一个组成部分,需要结合后续的学习算法,并直接将学习算法的分类性能作为特征重要性的评价标准
- 直接使用分类器的性能作为评价的标准,选出来的特征子集对分类一定有最好的性能
- 相对于Filter 选择方法,Wrapper 方法所选择的特征子集的规模要小得多,有利于关键特征的辨识,模型的分类性能更好。但Wrapper 方法泛化能力较差,当改变学习算法时,需要针对该学习算法重新进行特征选择,算法的计算复杂度高.
3. 嵌入式(Embedded)评价策略方法
基于Embedded 嵌入式特征选择方法结合了学习算法和特征选择机制去评价学习过程中被考虑的特征。特征选择算法嵌入到学习和分类算法中,也就是特征选择是算法模型中的一部分,算法模型训练和特征选择同时进行,互相结合(即,算法具有自动进行特征选择的功能)。常见的方法有:
1). 带惩罚项的特征选择方法
其基本思想就是在模型损失函数上加上一个惩罚项,模型训练时通过惩罚项来对特征的系数进行惩罚处理,而在特征选择方法中常使用的是L1 正则化(regularization)项。
正则化是把额外的约束或者惩罚项加到已有模型(损失函数),以防止过拟合并提高泛化能力。
损失函数由原来的
E
(
X
,
Y
)
E(X,Y)
E(X,Y)变为
E
(
X
,
Y
)
+
l
a
m
b
d
a
∣
∣
w
∣
∣
1
E(X,Y)+lambda||w||_1
E(X,Y)+lambda∣∣w∣∣1,
w
w
w是模型系数组成的向量(有些地方也叫参数parameter,coefficients),
∣
∣
⋅
∣
∣
||·||
∣∣⋅∣∣一般是L1或者L2范数,
l
a
m
b
d
a
lambda
lambda是一个可调的参数,控制着正则化的强度。当用在线性模型上时,L1正则化和L2正则化也称为Lasso和Ridge
2). 基于树模型的特征选择方法
这些算法在树增长过程的每一步都必须选择一个特征,将样本集划分为纯度更高的子集,而每次选择出的都是使划分效果最佳的特征,所以决策树的生成过程就是特征选择的过程。当决策树完全生成后,每个结点分裂所使用的特征组成的集合就是最后筛选出的特征子集。比如在比赛中经常使用的迭代决策树(GBDT)、随机森林(RF) 等算法。
举例:
- 前面初步筛选得到的200维特征,将其输入xgboost(一种高效的梯度提升机(GBM,Gradient boosting machine)算法)
- 训练得到特征重要性,也就是分裂树节点时起到的作用权重,自行划分阈值选取特征子集
- 为了保证不遗漏重要特征,这里不妨将树的深度设高一些
传统特征工程的缺点
特征学习
如何从数据中能够自主的学习特征,在这里我们主要介绍在深度学习中常用的三种网络结构。
自编码结构(Auto-Encoder)
卷积神经网络(CNN): 常用于图像特征提取
卷积神经网络(CNN): 常用于图像特征提取
循环神经网络(RNN): 常用于序列数据的特征提取
利用标准数据集进行特征学习(特征预训练)
- 作用:模型效果验证 & 应用问题中的模型预训练
- 图像数据预训练:ImageNet
- http://www.image-net.org/
- 1400万张图片数据,2万类别,已标注
- 常用模型:ResNet,AlexNet,VGG等
- 常见应用:图像分类、目标检测、目标定位,场景分类等
- 文本数据预训练:Twitter,Wiki
- https://nlp.stanford.edu/projects/glove/
- 2 Billon tweets, 27 Billion 词数,1.2M 词表
- 常用模型:CBOW,Skip-gram,Glove等Word2Vec模型
- 常见应用:文本分类,文本推理,翻译等
- 训练好的特征即可直接作为其它模型的输入来使用