2.特征工程
1. 数据预处理
1.1. 数据过滤
区隔化模型,替每个客群找出适合它的变量和模型,不同群的数据分别用不同类型来做评估。
Type 1
训练80% + 测试20%(训练数据做区隔化模型)
Type 2
训练80% + 测试20%(在测试数据做区隔化模型,测试不同群效果是否不同)
二种场景有所不同。
1.2. 缺失值填补
1.2.1. 直接忽略法
1. 针对所有数据
有缺失值,整笔删除(机器学习中不允许空值)
特点:
最简单的方法
搜集数据量很多,缺失数据占一小部分,可删除
分类建模时,数据**分类标记(Class Label)**为空,无法正确分类,可删除
缺点:
数据缺失比例大时,造成数据流失。
2. 针对字段
字段有缺失值,整个字段删除
处理数据缺失最简单的方法
将整个字段转换成指示变量(Indicator Variable)
处理缺失的特殊方法
使用此方法理论基础:空值也是行为的一种呈现。
1.2.2. 人工填补
缺点:当数据缺失过多,耗时且人力负担沉重。
1.2.3. 自动填补
1. 类别型
填充一个通用常数,如:
未知/Unknown
,产生新类。填充该字段的众数(Mode)
缺点:不够客观
可分群求众数(每一群的众数有所不同,分群填补可能更客观)
利用模型求出比较可能的值来填入:当做分类问题处理「精确的做法」。
注意点:算法选择上,要能接受输入字段有空值而依然能建立模型的算法:KNN、随机森林、XGBoosting是常用选择(也可建立数字预测模型)。
2. 数值型
填入通用常数,如:
0
。填入该字段的整体平均值(Mean)、或中位数
缺点:不够客观
对统计结果影响不大
也可以分群做平均
利用模型求出比较可能的值来填入:当做数字预测问题处理。
注意点:算法选择上,要能接受输入字段有空值而依然能建立模型的算法(和分类一样)。
3. 初级转换
3.1. 类别字段编码
One-Hot Encoding(机器学习领域说法)
Dummying(统计和学术研究说法)
以上两种等价,叫法不同!
虚拟变量小心虚拟变量陷阱(Dummy Variable Trap):变量之间会有多重共线性或高度相关的情形发生。通常做One-Hot Encoding后会删除其中一个栏位(少一个),防止虚拟变量陷阱。
例子:
多标签编码
用于描述一个对象的多种不同的特征标签,标签会超过一个。
例子(多标签问题):
3.2. 顺序字段编码
顺序字段编码时要特别注意数值的大小,数值大小也许会对计算产生影响,所以编码过程中需要思考数值本身具有的业务意义,再进行编码。
4. 高级转换
4.1. 一般化 Data Generalization
方法一:类别型字段的一般化操作,利用概念阶层对类别进行提升(提升一层或其他),如下图:
方法二:先把教育程度排序,分别计算每种值导致目标字段的概率,根据目标字段的概率进行替换(根据和目标字段关系运算)。
4.2. 离散化 Data Discretization
一般是数值型字段转换成类别型,优点:
使数据精简,降低数据复杂度,让数据容易理解。
可支持许多无法处理数值型字段的算法。
提高分类器稳定性,提升分类模型准确度。
可找出输入字段在目标字段的趋势(Trend),有助于未来解读。
离散化结果需要和目标值有一定的趋势,切割出数个区间来取代值域上众多的数据数值。
人工分离法
基本装箱法Binning Method
等宽(Equal-Width-Interval)装箱
等频(Equal-Frenquency-Interval)装箱法
离散化的结果需要易于解释——这一点也十分重要。
2. 特征工程概要
数据和特征决定了机器学习的上限,模型和算法只是在逼近这个上限,特征工程是机器学习成功的关键因素;特征工程目的是将字段转换为能更好表示潜在问题的特征,提高学习效能。
2.1. 重要性
特征越好,灵活性越强
特征越好,构建的模型越简单
特征越好,模型的性能越出色
2.2. 步骤
建立机器学习模型的Baseline Model(基模型)
使用一种或多种特征工程技术处理原始数据
重新建立机器学习模型,并比较Baseline Model
效能大于某个临界值,代表它有益
特征工程之前,特征理解和特征改进。
2.3. 特征理解
数据是结构还是非结构
字段类型:数值、类别、顺序、二元
探索式数据分析 Exploratory Data Analysis
描述性统计 Descriptive Statistics(生成数据质量报告)
数据可视化 Data Vistualization
2.4. 特征改进
数据清洗
数据编码
标准化:Data Standardization
Z-Score, Min-Max
一般化和离散化
数据归一化:Data Normalization
L1归一化(两个值相加总和为1)
L2归一化
非结构数据结构化
3. 涵盖范围
3.1. 特征建构:Feature Construction
运用外部数据
使用外部特征数据(公司的、OpenSource)的领域知识来补充特征数据。
运用数据探索
使用统计分析的图示查看每种特征引起的最终结果,并进行类似描述性分析的操作,最主要的是查看该特征的相关信息对目标值的影响,根据原始变量产生新的衍生性变量。
运用专家经验
根据领域专家的知识经验选择相关特征。
运用数据分析
(略)案例中使用了决策树做基本分析。决策树的一个核心问题,一次只能考虑一个字段,无法同时考虑两个字段。
degree = 2
degree = 3
3.2. 特征选择:Feature Selection
无效变量:不相关变量、多余变量
3.2.1. 无效变量
维度的诅咒问题。
两种方法删除无效变量:Redundancy
和Irrelevancy
Redundancy
:两个变量效果一致,多余了一个,这两个变量一起考虑或删除其中一个。Irrelevancy
:这两个变量和目标之间关系不密切,不相关,无法带来信息,直接移除。
3.2.2. 统计方式选择
方差阈值化(Variance Thresholding,VT),计算每一个数值型字段的方差,如果方差低于某个阈值,那么该字段包含信息量不够,这样的字段可以拿掉。
方差不能事先标准化,尤其是Z-Score标准化,因此,如果特征集包含了不同单位(
different units
)时VT将会不起作用。方差门槛值必须手工设定(设置阈值)。
如果每个特征方差都是0或1,那么VT将无法工作。
如果是二元变量(男、女),那么VT的方法使用概率计算如:
也可以使用统计检验的方式解决输入字段和目标字段不相关(Irrelevancy
)的问题(VT不考虑和目标字段的关联关系)
类别(离散)
类别
卡方检验/VT
类别(离散)
数值
ANOVA检验、T检验
数值(连续)
类别
ANOVA检验、T检验
数值(连续)
数值
相关系数
必须先计算卡方值
然后根据卡方计算
p-value
2. T检验/ANOVA检验
T检验之前
必须用F检验去检验每个字段样本变异数是否和母体相同:
p-value
越小代表变异数越有差异。然后计算T检验的
T-value
,然后根据它计算p-value
。
ANOVA检验
先计算
F-value
根据
F-value
查表算出p-value
3.2.3. 高度相关
3.2.4. 模型方式
主要是解决共线性(Collinearity
)问题,可使用:
决策树:Decision Tree
随机森林
XGBoost
逻辑回归中的逐步回归:Logistic Regression - Stepwise
主要协助选择并过滤出重要且不具有共线性的变量,KO多余变量Redundant
。
3.2.5. 递归方式
RFECV
,RFE
递归特征评估,CV
交叉验证,反复训练一个模型,每次训练过后移除掉一个特征直到变差(Accuracy
),递归式属于Wrapper Methods
。
Wrapper Method包含:
向前法(Forward)
向后法(递归,Backward)
双向法(Bi-Direcation)
3.3. 特征转换:Feature Transformation
线性的特征转换
和目标无关:PCA、NMF、SVD、TSVD
和目标有关:LDA
非线性特征转换:
和目标无关:Kernel PCA、t-SNE
和目标有关:神经网络
尽量减小损失
依旧可以执行高质量的预测
这种特征转换的一个问题是:可解释性不足,如果您想要解释性特别强,就必须做特征选择。
3.3.1. 线性:PCA
PCA——主成分分析,利用线性方式做维度消减,它会把特征投影到一个维度更小的空间,会保留大多数方差比较大的特征(非指导性技巧)——使用主成分取代原来的特征,如图:
将左侧x,y
两个特征直接转换成主成分,主成分分析步骤如:
(隐藏步骤)处理之前做标准化
计算协方差矩阵(Variance-Covariance Matrix)
解出协方差特征值(Eigen Value)和特征向量(Eigen Vector)
特征值从大到小排序,排序后分第一主成分、第二主成分
3.3.2. 线性:SVD/TSVD
潜在语意分析(Latent Semantic Analysis,LSA)就是衍生出来的模型,它从庞大文字数据中找出词汇所拥有的潜在语意关联性,是广泛用在自然语言上的降维方式。
LSA可计算词汇语意相似度、词汇与文件相似度,它可以将词汇-文件的矩阵降维,转换为潜在语意空间,这个过程就会使用SVD矩阵分解技术(奇异值分解)。
中间去掉了部分特征经过了特征转换,如图只转换前两个维度,忽略其他维度。左边相乘结果:左边词和文件的关系、右边是词和语义的关系。
LSA的缺陷:
LSA通过奇异值分解降维后,语义维度形成正交,矩阵中有可能有负值,造成解读困难:使用NMF/LDA解决。
奇异值分解费时,尤其是关键词量大时
新词加入时,需重新进行矩阵分解。
取而代之将SVD替换成TSVD(Truncated SVD),它可以产生一个指定维度分解矩阵,运算速度更快。
3.3.3. 线性:NMF
NMF(Non-negative Matrix Factorization)是一个非监督的线性维度降维技术,将原始空间对应到语义空间,它不会产生负值。
给定需要转换的特征维度
r
NMF的一个主要改动就是,生成的矩阵不会包含负值(非负矩阵)。
NMF特征
原始矩阵中所有元素都是非负数
分解后矩阵中所有元素都是非负数
潜在语意控件维度不一定正交
NMF步骤
3.3.4. 线性:LDA
LDA(Linear Discriminant Analysis)是和目标有关的线性转换,它是一个分类的降维算法,利用线性区别。它的工作原理类似于PCA,但是二者新维度方向不同:
PCA是最大化数据中的变异,并且保留数据中的变异,非监督
LDA是把不同的两个类别之间的距离拉远(分开),监督
LDA步骤
计算每个类别的平均值向量
LDA是希望把各类数据分得越开越好,PCA则是保留数据中的变异,注意二者区别。
左侧LDA分类效果很好,每一类直接可以用垂直直线分开,而PCA的分类效果不好,LDA参考了目标字段(监督),PCA则不参考(非监督)。
3.3.5. 非线性:Kernel PCA
PCA的一个扩展,使用核kernal函数,允许对非线性数据进行降维,比PCA多了一个核函数步骤。将原始坐标投影到一个线性可分的空间,核函数(此处核函数和SVM的核函数一模一样)如:
RBF:高斯核函数
Poly:多项式核函数
Sigmoid:Sigmoid核函数
Linear:线性核函数(使用Linear则是标准PCA)
Kernal(Linear) PCA = PCA,比PCA多一个核函数的过程,转换到另外的特征空间。
3.3.6. 非线性:t-SNE
t-SNE(t-Distributed Stochastic Neighbor Embedding)是将复杂的高维数据降维到二维或三维(固定目标维度),有助于低维空间可视化,降维后相似数据会聚在一起,方便理解。
步骤
t分布可以将原本高维空间彼此邻近的结构,在低维空间更近,原本更远的结构,低维空间更远。
3.3.7. 非线性:神经网络
神经网络会参考目标字段(监督式),字段和字段相关性可通过神经网络学习来处理,后续做特征部分做详细说明。
3.3.8. 总结
PCA
x
线性
NMF
x
线性
SVD,TSVD
x
线性
Kernel PCA
x
非线性
T-SNE
x
非线性
AutoEncoder
x
非线性
LDA
o
线性
NN/Deep Learning
o
非线性
3.4. 特征学习:Feature Learning
在示例中,最终都是运行决策树算法
C 5.0
,运行属性对目标的影响结果。
3.4.1. 类别:关联规则为基础
决策树算法是通过不断迭代对数进行切割来划分数据集,表现很好,但是:
这类算法只能同时考虑一个属性
并且这类算法不去参考属性和属性之间的相关性
字段相关性分两类:类别型、数值型,最终有三类:
Categorical-Type:类别型
Numerical-Type:数值型
Categorical-Numerical-Mix:混合型
1. CAM模型
CAM(Classification based on Association Mining)模型用来解决相关性的组合型爆炸问题。
先把训练数据执行关联规则挖掘
此处的关联规则使用了多维度关联规则挖掘
关联规则挖掘分析之后再将数据执行传统决策树算法
数值型离散化,可以根据目标字段直接运行决策树得到数值分布结果。
3.4.2. 数值:神经网络为基础
神经网络决策树(NDT,Neural Decision Tree):
NDT结合了神经网络和传统决策树来分析案例
3.4.3. 深度学习为基础
Autoencoder架构:学习一个压缩表示法,它包含了一个encoder层和decoder层。
中间的隐藏层会很多,越多隐藏层产生出来的特征有可能会越好(左右隐藏层是对称的),训练完成后保留Encoder的模型。
没有使用目标字段,是非监督的,但又使用了监督方式在执行,所以又称为自监督(Self-Supervised)的方式学习。AE变种:
Auto Encoder:AE,标准的
Variational AE:VAE
Denoising AE:DAE
Sparse AE:SAE
它是一个多层神经网络,称为自编码器,隐藏层的向量可以降维。
1. VAE:Variational AE
VAE在编码器阶段添加了一个约束,产生的code服从单位高斯分布:Gaussian Distribution。
2. DAE:Denoising AE
给定一个带有噪音的图像,让该Encoder具有抗噪的能力,它是一种学习对图片去噪(Denoise)的神经网络,实际过程中在输入内随机加入噪声数据,让机器执行后回复到无噪声的数据状态。
3. SAE:Sparse AE
AE基础上限制每次得到的中间表示尽量稀疏,使自动编码器将每个输入表示为少量节点组合,中间的非零值节点称为活动节点。
4. RBM:受限波尔兹曼机
也可用于深度学习网络,深度信念网络使用多个RBM堆栈而成,并可使用梯度相加法和反向传播算法进行调优。
Encoder和Decoder的权重实际是一样的
3.4.4. 词嵌入为基础
词嵌入(Word Embedding)是一种将文本中词转换成数字向量的方法,把一个维数为所有词数量的高维空间嵌入到一个维数低得多的连续向量空间,每个单词或词组被映射为实数域上的向量,词嵌入结果就生成了词向量。
词向量的数量远小于词本身的数量,词嵌入具有语义层的效果。
词嵌入模型不考虑权重,词袋模型才考虑权重。
最后更新于
这有帮助吗?