万字长文总结特征工程干货-云社区-华为云万字长文总结特征工程干货 1. 简介( Feature Engineering) 1.1问题定义“Feature engineering is the art...https://bbs.huaweicloud.com/blogs/255357

1. 简介( Feature Engineering)

特征工程到底是什么? - 知乎

1.1问题定义

“Feature engineering is the art part of data science” —Sergey Yurgenson

Feature engineering is the process of using domain knowledge to extract features from raw data via data mining techniques. These features can be used to improve the performance of machine learning algorithms.—wiki

特征工程(Feature Engineering)是将数据转换为能更好地表示潜在问题的特征,从而提高机器学习性能的过程。

1.2特征工程评价指标

a.使模型更精准:好的特征工程是数据中抽取出来的对预测结果最有用的信息,可以提高模型的业务指标。

序号 领域 评价指标 介绍
1 classification(分类) accuracy_score 分类准确率分数是指所有分类正确的百分比
2 balanced_accuracy_score 计算平衡精度
3 confusion_matrix 混淆矩阵
4 f1_score f1值
5 jaccard_similarity_score Jaccard相似系数得分
6 precision_recall_fscore_support 为每个类计算precision, recall, F值和 support
7 precision_score 计算precision
8 recall_score 计算召回率
9 multilabel_confusion_matrix 多标签混淆矩阵
10 regression(回归) explained_variance_score 解释回归模型的方差得分,其值取值范围是[0,1],越接近于 1说明自变量越能解释因变量的方差变化,值越小则说明效果越差。
11 mean_absolute_error 平均绝对误差
12 mean_squared_error 均方差(Mean squared error,MSE),该指标计算的是拟合数据和原始数据对应样本点的误差的平方和的均值,其值越小说明拟合效果越好
13 mean_squared_log_error 均方差加log
14 r2_score R2 决定系数(拟合优度) 模型越好:r2→1 模型越差:r2→0

b.模型更简单:好的特征工程应该使得模型复杂度更低,更加精简

ID 评价指标 介绍
1 参数个数 参数量 模型的参数数量
2 时间复杂度 计算量FLOPS 模型的运算次数

c. 模型更稳定: 算法模型运行更加稳定,鲁棒性更强

ID 名称 评价指标 介绍
1 计算稳定性 下溢(Underflow)和上溢(Overflow) 受限于计算机的运算精度使得大量的微小误差积少成多造成模型失效
2 特征稳定性 PSI = \sum{(\rho_{test}^{i} - \rho_{base}^{i})\ast \ln (\rho_{test}^{i}/ \rho_{base})}PSI=∑(ρtesti​−ρbasei​)∗ln(ρtesti​/ρbase​) PSI是对两个日期的特征数据进行计算,可以任选其一作为base集另一则是test集,小于0.1认为特征稳定
3 模型稳定性 psi = sum((实际占比-预期占比)/ln(实际占比/预期占比)) 一般认为psi小于0.1时候模型稳定性很高,0.1-0.25一般,大于0.25模型稳定性差,建议重做。
4 模型稳定性 交叉验证 当算法的输入发生变化时,输出是否会随之发生较大的变化

2. 特征工程

2.1特征变换

特征变换(feature transformation)指的是使用数学映射从现有特征构建新特征。例如,在一组体检数据中,若提供了身高、体重等信息,想要判断受检者健康情况,单单把身高、体重两列数据不加处理地直接交给模型进行训练,训练结果就不够好。

2.1.1 特征编码

对于离散的类别特征,往往需要进行必要的特征编码才能将其作为特征输入到模型中。常用的编码方式有OneHot编码。譬如对于性别这个特征(取值为男性和女性),使用这两种方式可以分别编码为{0,1}和{1,0}。此外还有Count Encoding和Target Encoding。Count Encoding编码,用类别的频数来编码,也可以对频数进行归一化,Target Encoding用目标变量(二分类)中的某一类的比例来编码。

2.1.2 特征归一化

归一化:使得不同尺度的数据转换到同一规格尺度

目的:

1)归一化可以让不属于同一尺度的特征值进行比较:比如身高(cm)体重(kg)

2)归一化后模型收敛会加快(运行速度快)

3)归一化对一些模型的结果影响比较大,比如聚类模型,归一化后效果更好

效果:把原始的连续型变量转换为均值为0,标准差为1的变量

公式:

\tilde{x}=\frac{{x-\bar{x}}}{\delta}x~=δxxˉ​

\overline{x}x均值, \deltaδ 是标准差。

最大最小归一化

效果:把原始的连续型变量转换为范围在[a-b]之间的变量,常见的a=0,b=1

公式:

\tilde{x}=\frac{{x-min(x)}}{max(x)-min(x)}x~=max(x)−min(x)xmin(x)​

2.1.3特征离散

特征离散化:把连续的数值切割为少数的一些区间,例如将年龄切割为5个年龄段

目的:离散化后的特征方便探索数据的分布和相关性,同时对异常数据有很强的鲁棒性可以减少异常数据对模型的影响,对特征离散化后引入非线性,可以提升模型的预测能力。

常用的无监督的离散化方法主要有:自定义规则,等宽法,等频法等。

二值化是一种特殊的离散方法,它把连续型变量分割为0/1(是/否)类型的类别型变量,例如年龄是否大于18岁,电话号码是否是手机 城市是否是一线城市。

2.1.4特征深度合成

特征深度合成算法(结构型数据 知识图谱)

论文:Kanter, James Max, and Kalyan Veeramachaneni. “Deep feature synthesis: Towards automating data science endeavors.” 2015 IEEE international conference on data science and advanced analytics (DSAA). IEEE, 2015.

原理:

例子:

开源实现:Featuretools · GitHub

2.2特征交叉

特征组合也叫特征交叉(Feature Crosses),即不同类型或者不同维度特征之间的交叉组合,其主要目的是为了弥补早期的模型无法有效的进行特征组合而产生的:

按照特征进行分类可以分为类别特征之间交叉类别特征和数值特征之间交叉

类别特征之间交叉组合:比如用户性别、年龄、喜爱视频类别之间的交叉特征。类别特征数值特征之间交叉组合 这类特征通常是在类别特征某个具体类别中计算一些统计量。例如用户对不同类目视频的完播率、平均播放时长等。

与非嵌入法不同,嵌入法是直接将特征交叉嵌入到模型的构建过程中。

按照特征交叉的方式可以分为非嵌入式和嵌入式

非嵌入式交叉:非嵌入式的关联方式有内积、笛卡尔积、哈达玛积以及多项式方法等。

嵌入式交叉: 利用模型可以自动进行特征的交叉组合,比如常用的 FM 和 FFM 模型等

2.2.1非嵌入法

非嵌入法和具体的机器学习算法相互独立,可以通过机器学习算法评估特征子集的效果,非嵌入法主要包括内积、笛卡尔积、哈达马内积以及多项式的方法进行组合。

2.2.2模型特征交叉

模型特征交叉:

针对特征交叉的问题,工程师首先想到的是特征两两组合,这种组合特征然后在手工筛选的方式无疑是低效的。

2.2.2.1 POLY2模型

POLY2模型:

POLY2(w,x) = \sum_{j_{1} = 1}^{n-1}\sum_{j_{2} = j_{1}+1}^{n}w_{h}(j_{1},j_{2})x_{j1}x_{j2}POLY2(w,x)=j1​=1∑n−1​j2​=j1​+1∑nwh​(j1​,j2​)xj1​xj2​

POLY2模型一定程度上解决了特征组合的问题,但是它本质还是线性模型,训练方法和逻辑回归一样。

缺陷:

1)在处理数据时,类别数据一般采用onehot编码,这样的话特征向量会很稀疏,再利用POLY2进行无选择的特征交叉会使原来非常稀疏的特征向量更加稀疏,会导致大部分交叉特征权重缺少有效的数据进行训练

2)权重参数的数量由nn直接上升到n^{2}n2极大的增加了训练复杂度。

2.2.2.2 FM模型

FM模型

为了POLY2模型的缺陷,Rendle于2010年提出FM模型:

下面是FM的二阶形式:

FM(w,x) = \sum_{j_{1} = 1}^{n-1}\sum_{j_{2} = j_{1}+1}^{n}(w_{1}.w_{2})x_{j1}x_{j2}FM(w,x)=j1​=1∑n−1​j2​=j1​+1∑n​(w1​.w2​)xj1​xj2​

与POLY2模型相比,主要的区别是用两个向量的内积 代替了单一的权重系数 。

FM为每个特征学习了一个隐权重向量,在特征交叉时,使用两个特征隐向量的内积w_{1}.w_{2}w1​.w2​作为交叉特征的权重。

FM引入隐向量的思路和矩阵分解的思路有异曲同工之妙,直接把POLY2模型n^2n2级别的权重直接降低到nknk,梯度下降过程训练FM过程中,FM的复杂度同样减低到 nknk 。

隐向量的引入也使FM可以更好的解决数据稀疏性的问题,比如推荐场景中某样本有两个特征频道(channel)和品牌(brand),某训练样本组合是(ESPN,Adidas)在POLY2中,只有ESPN和Adidas同时出现在一个样本中的时候模型才能学习到权重,而在FM中,ESPN的隐向量可以通过(ESPN,Gucci)学习,Adidas隐向量可以通过( NBC,Adidas )学习,甚至对于没有出现过的(NBC,Gucci)模型也可以学习到权重

理论上,FM可以引申到三阶特征交叉,甚至更高维度,但是由于组合爆炸的问题,三阶FM无论是权重数量还是训练复杂度都过高。

2.2.2.3 GBDT+LR模型

FM模型只能做二阶特征交叉,要想提高特征交叉的维度会不可避免的产生组合爆炸和计算复杂度高的问题。

为了有效的解决高维特征组合和特征筛选的问题,2014年Facebook提出来GBDT+LR模型

组合模型利用GBDT自动进行特征筛选和组合,生成新的离散特征向量,然后把该特征向量当做LR模型的输入。

一个训练样本输入GBDT模型落入 某一子树,会根据每个节点的规则最终落到某个叶子节点上,那么这个叶子节点标为1,其他节点为0,综合所有子树的结果,把特征向量连接起来就是新的离散型特征向量。

事实上,决策树的深度决定了特征交叉的阶数,如果决策树深度为4那么就是3次节点分裂的结果也就是三阶特征交叉。可以看出GBDT特征组合能力远远强过FM,但是GBDT容易过拟合。

2.3特征压缩

当特征经过处理之后,虽然可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,出现训练时间长的问题,因此对特征进行压缩可以有效解决训练时间过长的问题特征压缩最直接的方法就是特征降维,常见的降维方法主要是主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中。

2.3.1降维算法

PCA算法:

​ PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到 个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

LDA算法:

​ 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。性鉴别分析的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。因此,它是一种有效的特征抽取方法。使用这种方法能够使投影后模式样本的类间散布矩阵最大,并且同时类内散布矩阵最小。就是说,它能够保证投影后模式样本在新的空间中有最小的类内距离和最大的类间距离,即模式在该空间中有最佳的可分离性。

2.3.2 Embedding技术

Embedding中文可以直译为嵌入,一般翻译为向量化或者向量映射。特别是在推荐广告和搜索为核心的互联网Embedding技术应用非常广泛。Embedding从形式上讲就是用一个低稠密的向量“表示”一个对象。这里对象可以是一个词也可以是一个电影一个商品。表示就是说Embedding向量能够表达相应对象的某些特征,同时向量之间的距离反映了对象之间的相似性。

Embedding方法首先流行于NLP领域,在大语料的输入下,Embedding可以挖掘一些潜在的知识。

Embedding技术的重要性:

1)推荐场景中大量使用onehot编码对类别id型特征进行编码,导致样本特征极度稀疏,在几乎所有的推荐模型中都会有Embedding层负责将这些高维稀疏的特征转换成低维稠密特征向量。

2)Embedding本身就是十分重要的特征向量,Embedding的表达能力更强

3)Embedding技术对物品用户的相似度计算是最常用的一种召回层技术,结合局部敏感哈希技术之后更适合海量数据的初步筛选。

2.3.2.1 Word2vec

Word2vec

自2013年谷歌提出Word2vec以来,Embedding技术从自然语言处理推广到广告 搜索 图像 推荐等深度学习领域。Word2vec是word to vector 的简称,Word2vec是一种生成对词的向量表达的一种方法。

为了训练Word2vec模型,需要准备一组由句子组成的语料,我们假设一个长度为T的句子 w_{1} w_{2} w_{3}... w_{T}w1​w2​w3​...wT

CBOW模型是用 w_{T}wT​的周边词预测w_{T}wT​,Skip-Gram是用 w_{T}wT​预测w_{T}wT​的周边词。

输入:选取一个 2c+12c+1 (目标词前后各取 cc个词)的滑动窗口,从语料库抽取一个句子,滑动窗口从左到右,每移动一次,窗口中的词就组成了一个训练样本。

优化目标:每个词 w_twt​决定了相邻词 x_{t+1}xt+1​基于极大似然法,希望所有样本条件概率p(w_{t+j}|w_{t})p(wt+j​∣wt​)的乘积最大

\frac{1}{T}\sum_{t = 1}^{T}\sum_{-c\leq{ j }\leq c, j\neq 0 }\log{p(w_{t+j}|w_{t})}T1​t=1∑T​−cjc,j=0∑​logp(wt+j​∣wt​)

p(w_{t+j}|w_{t})p(wt+j​∣wt​)的定义:Word2vec模型的目的是希望用一个向量 V_wVw​表示词ww,用词之间的内积 V_{i}^{T}V_{j}ViTVj​表示语义的接近程度,最后套上一次softmax函数就可以对上多分类。

p(w_{O}|w_{I}) = \frac{exp(V_{wo}^{T}V_{wI})}{\sum_{t = 1}^{T}exp(V_{w}^{T}V_{wI})}p(wO​∣wI​)=∑t=1Texp(VwTVwI​)exp(VwoTVwI​)​

V_{w}^{T}VwT​表示要训练出的词向量V_{wI}VwI​ 是输入词的向量 V_{wo}^{T}VwoT​是输出词的向量

2.3.2.2 Item2vec

基本思想:Word2vec是对词序列进行Embedding,那么这里的词也可以是一个商品 一部电影。

Word2vec 一个长度为T的句子 w_{1} w_{2} w_{3}... w_{T}w1​w2​w3​...wT​ 优化目标

\frac{1}{T}\sum_{t = 1}^{T}\sum_{-c\leq{ j }\leq c, j\neq 0 }\log{p(w_{t+j}|w_{t})}T1​t=1∑T​−cjc,j=0∑​logp(wt+j​∣wt​)

那么对应到Item2Vec就对应一个长度为K的用户历史记录w_{1} w_{2} w_{3}... w_{K}w1​w2​w3​...wK
Item2Vec的优化目标变成了:

\frac{1}{T}\sum_{t = 1}^{T}\sum_{j\neq i }^{K}\log{p(w_{t+j}|w_{t})}T1​t=1∑Tj=iK​logp(wt+j​∣wt​)

可以发现Item2Vec摒弃了时间窗口的概念,认为序列里任意两个物品都是相关的,剩下的训练过程和word2vec一致。

2.3.2.3 GraphEmbedding

GraphEmbedding是对图结构中的节点进行Embedding编码的方法,最终生成的Embedding向量一般包含图的结构信息和附近节点的局部相似性信息。
DeepWalk是早期影响力比较大的一种GraphEmbedding方法,该方法是2014年提出的,它的主要思想是在由物品组成的图结构上进行随机游走,产生大量的物品序列,然后将这些物品序列作为训练样本输入word2vec进行训练,得到物品Embedding向量。

2016年,斯坦福大学在DeepWalk的基础上更进一步,通过调整随机游走权重的方法使graph embedding的结果在网络的同质性(homophily)和结构性(structural equivalence)中进行权衡权衡。具体来讲,网络的“同质性”指的是距离相近节点的embedding应该尽量近似,节点u与其相连的节点s1、s2、s3、s4的embedding表达应该是接近的,这就是“同质性“的体现。“结构性”指的是结构上相似的节点的embedding应该尽量接近,图中节点u和节点s6都是各自局域网络的中心节点,结构上相似,其embedding的表达也应该近似,这是“结构性”的体现。

为了使Graph Embedding的结果能够表达网络的结构性,在随机游走的过程中,需要让游走的过程更倾向于宽度优先搜索(BFS),因为BFS更喜欢游走到跟当前节点有直接连接的节点上,因此就会有更多同质性信息包含到生成的样本序列中,从而被embedding表达;另一方面,为了抓住网络的同质性,就需要随机游走更倾向于深度优先搜索(DFS),因为DFS会更倾向于通过多次跳转,游走到远方的节点上,使得生成的样本序列包含更多网络的整体结构信息。

那么在node2vec算法中,是怎样控制BFS和DFS的倾向性的呢?主要是通过节点间的跳转概率。图5显示了node2vec算法从节点

[机器学习]总结特征工程干货相关推荐

  1. 【机器学习】特征工程概述

    特征工程 "数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已." 1.概念 维基百科:特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过 ...

  2. 面向机器学习的特征工程翻译版

    前些日子推荐了一个仓库,是知名开源apachecn组织翻译的<面向机器学习的特征工程>英文版,可以说是特征工程的宝典,值得推荐. 仓库说明 知名开源apachecn组织翻译了<面向机 ...

  3. 面向机器学习的特征工程 六、降维:用 PCA 压缩数据集

    来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:@cn-Wziv 校对:@HeYun 通过自动数据收集和特征生成技术,可以快速获得大量特征,但并非所有这些都有用.在第 3 ...

  4. 面向机器学习的特征工程 三、文本数据: 展开、过滤和分块

    来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:@kkejili 校对:@HeYun 如果让你来设计一个算法来分析以下段落,你会怎么做? Emma knocked on t ...

  5. 面向机器学习的特征工程 一、引言

    来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:@ZhipengYe 校对:(虚位以待) 机器学习将数据拟合到数学模型中来获得结论或者做出预测.这些模型吸纳特征作为输入.特 ...

  6. 面向机器学习的特征工程 八、自动化特征提取器:图像特征提取和深度学习

    来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:friedhelm739 校对:(虚位以待) 视觉和声音是人类固有的感觉输入.我们的大脑是可以迅速进化我们的能力来处理视觉和 ...

  7. 面向机器学习的特征工程 七、非线性特征提取和模型堆叠

    七.非线性特征提取和模型堆叠 来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:friedhelm739 校对:(虚位以待) 当在数据一个线性子空间像扁平饼时 PCA 是非常 ...

  8. 机器学习之 特征工程

    之前相关文章目录: 机器学习 之线性回归 机器学习 之逻辑回归及python实现 机器学习项目实战 交易数据异常检测 机器学习之 决策树(Decision Tree) 机器学习之 决策树(Decisi ...

  9. 【AlgorithmStar机器学习】AS机器学习库特征工程使用说明文档

    目录 Algorithm Star介绍 概述 AS库的一般处理流程 数据采集与清洗 向量生成与特征提取选择 机器学习 后续处理 Algorithm Star使用 数据类型-操作数 浮点类型操作数 整数 ...

最新文章

  1. js_xpath_搞不定的东西
  2. c++自定义的数据库类
  3. 【夯实Mysql基础】mysql explain执行计划详解
  4. linux 动态执行cp,Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令讲解
  5. python中的set方法_Python中set与frozenset方法和区别详解
  6. 西安邮电大学卓越班c语言面试题,西安邮电大学C语言实验报告.docx
  7. 元宵节快乐 | 2月15日 星期二 | 携程在国内率先开启混合办公模式;米哈游推出元宇宙品牌;AMD宣布完成对赛灵思的收购...
  8. 奇店社群社区团购小程序v5.5.9
  9. 使用定时器判断确保某个标签有值才执行方法, 控制js代码执行先后顺序
  10. 【XS128】Link error L1822 symbol _FADD / _FSUB/ _FDIV/ _FMUL.....错误解决的方法
  11. 自动驾驶1-1 欢迎来到自动驾驶汽车专业 Welcome to the Self-Driving Cars Specialization
  12. 威纶通c语言,威纶触摸屏MODBUS协议的测试数据.pdf
  13. 【excel函数小技巧】多种前置条件下的中位数该如何计算?
  14. numpy创建单位矩阵和对角矩阵
  15. 【原创】Kinect for windows SDK 入门学习资源合辑
  16. 云计算与大数据复习题
  17. nvidia驱动程序下载类型怎么选?
  18. 【知识兔Excel教程】7个Excel序号填充的经典案例,照搬这些公式,效率倍增
  19. 火车售票-线程3种实现
  20. 章节十六:复习与反爬虫

热门文章

  1. 开源网站统计程序 oracle,利用百夫长统计程序源码免费搭建独立网站统计软件工具...
  2. 一键移植工具_让UI设计畅通无阻 — 信息系统人机界面增强工具(HFE Designer)
  3. 重新学习的HTTP协议
  4. android studio 65536错误的解决
  5. IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述
  6. Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定
  7. selenium启动firefox时加载扩展
  8. Mysql基本用法-01
  9. ActiveReports 报表应用教程 (10)---交互式报表之向下钻取(详细数据按需显示解决方案)...
  10. kerberos的故事2