机器学习系列--特征工程

前言

在机器学习领域,数据和特征的质量往往决定了最后结果的上限。也就是说如果数据和特征的质量不好,即使机器学习的模型再优秀也无法达到理论的最优值。
在本文中,进行讨论的是对数据和特征的处理方法。
数 据 可 以 分 为 { 结 构 化 数 据 非 结 构 化 数 据 数据可以分为 \begin{cases} 结构化数据 \\ 非结构化数据 \end{cases} {

1. 结构化数据

  • 结构化数据:可以看做关系型数据集的一张表,每行代表一个样本的信息,每列都有清晰的定义。
    结 构 化 数 据 { 数 值 型 数 据 类 别 型 数 据 结构化数据 \begin{cases} 数值型数据 \\ 类别型数据 \end{cases} {

2. 非结构化数据

  • 非结构化数据:该类型的数据无法使用一个简单的数据进行表示,也没有清楚的类别定义,而且每条数据的大小也不相同。
    非 结 构 化 数 据 { 文 本 图 像 视 频 音 频 非结构化数据 \begin{cases} 文本 \\ 图像 \\ 视频\\ 音频 \end{cases}

特征处理

1、数值型特征归一化

  • 目的:为了消除量纲对特征的影响。
    可以使得各指标之间处于同一数量级,进而使得不同指标之间具有可比性。

常见的方法

  • 1)线性函数归一化
    对原始数据进行线性变换,使得 X n o r m ∈ [ 0 , 1 ] X_{norm} \in [0,1] Xnorm[0,1],从而实现原始数据的等比例缩放。
    X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X-X_{min}}{X_{max}-X_{min}} Xnorm=XmaxXminXXmin

  • 2)零均值归一化
    将原始数据映射到均值为0,标准差为1的正态分布上。
    X n o r m = X − μ σ X_{norm} = \frac{X-\mu}{\sigma} Xnorm=σXμ
    其中 μ \mu μ为原始数据的均值, σ \sigma σ为原始数据的标准差。
    注意:零均值归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。

为什么要做数据归一化?

  • 1)提高模型的收敛速度
    在这里通过梯度下降的方式来介绍数据归一化的重要性。
    假设存在一组数据型数据,其中 x 1 ∈ [ 0 , 3 ] x_1 \in [0,3] x1[0,3] x 2 ∈ [ 0 , 10 ] x_2 \in [0,10] x2[0,10],可以画出下图中a)中的等值图,图b)是归一化到相同的数值区间之后的等值图。
    在这里插入图片描述
    在学习率相同的情况下,寻找最优解的过程也就是在使得损失函数值最小的 θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2
    假设图a)的损失函数为 J = ( 3 θ 1 + 600 θ 2 + b ) 2 J = (3\theta_1 + 600\theta_2 + b)^2 J=(3θ1+600θ2+b)2 ,我们可以明显的看出, x 2 x_2 x2的更新速度要大于 x 1 x_1 x1,所以需要更多的迭代次数 ;
    假设图b)的损失函数为 J = ( 0.5 θ 1 + 0.55 θ 2 + b ) 2 J = (0.5\theta_1 + 0.55\theta_2 + b)^2 J=(0.5θ1+0.55θ2+b)2,可以明显的看出 x 1 x_1 x1 x 2 x_2 x2的更新速度是基本相同的,可以更快的找到最优解。

  • 2)提升模型的精度
    尤其是涉及到一些距离计算的算法时效果显著。
    比如算法要计算欧氏距离,上图中 x 1 x_1 x1的取值范围比较小,涉及到距离计算时其对结果的影响远比 x 2 x_2 x2带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

如何选择对应的归一化方法?

1) 在分类聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,使用零均值归一化方法(Z-score standardization)表现更好。

2) 在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用线性函数归一化方法或其他归一化方法。
比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。

2、类别型特征

  • 定义:类别型特征是指性别(男、女)、血型(A、B、AB、O)等只在有限选项内取值的特征。
  • 类别型特征的原始输入通常是字符串形式

如何处理类别型特征?

  • 1)决策树等少数模型可以直接处理
  • 2)经过处理转换为数值型特征之后,用过逻辑回归、支出向量机等方法进行处理。
如何对类别型特征进行预处理(如何将类别型特征转化为数值型特征)?

可以通过序号编码独热编码二进制编码三种编码方式对字符串形式的类别型特征进行编码,从而转换成数值型特征。

  • 序号编码
    通过用于处理类别间具有大小关系的数据。
    比如,成绩的“优,良,差”,可以依据大小关系依次赋值一个数值型ID,“优=3,良=2,差=1”,从而保留了大小关系。
  • 独热编码
    尤通过用于处理类别间不具有大小关系的数据。
    例如,血型(A、B、AB、O)不具备大小信息,可以分别表示为(A=1000、B=0100、AB=0010、O=0001)

对于类别特征较多情况下,独热编码的注意事项:

  1. 使用稀疏向量来节省空间。
  2. 配合特征选择降低维度。
    1)在K-近邻算法中,高维特征下两点之间的距离很难得到有效的衡量。
    2)在逻辑回归中,参数的数量会随着维度的增高而增加,–> 容易导致过拟合问题。
    3)高维特征存在数据冗余(只有部分维度特征,对分类和预测是有帮助的),可以通过特征选择降低维度。
  • 二进制编码
    可以看做是独热编码的改进方法,从而在一定程度上可以降低特征的维度和节省空间。

3、组合特征

  • 目的:为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。

例如:假设数据的特征向量为 X = ( x 1 , x 2 , . . . , x k ) X=(x_1, x_2,...,x_k) X=(x1,x2,...,xk),则基于组合特征的表达式可以表示为:
Y = s i g m o i d ( ∑ i ∑ j w i j ∗ ( x i , x j ) ) Y=sigmoid(\sum_i \sum_j w_{ij}*(x_i,x_j)) Y=sigmoid(ijwij(xi,xj))
其中 ( x i , x j ) (x_i,x_j) (xi,xj)表示 x i x_i xi x j x_j xj的组合特征。
w i j w_{ij} wij表示组合特征的学习权重,其维度为 ∣ x i ∣ ∗ ∣ x j ∣ |x_i|*|x_j| xixj,其中 ∣ x i ∣ |x_i| xi ∣ x j ∣ |x_j| xj分别表示第 i i i个特征和第 j j j个特征不同取值的个数。

组合特征的维度较高时,需要对特征进行降维(不太好,需要补充)

假如特征的维度较高,则相对应的权重需要学习的参数量也会变的很高。

寻找有效的组合特征

  • 原因:并不是所有的特征组合都是有意义的,否则容易产生参数过多和过拟合的问题,所以需要寻找有效的组合特征。
  • 方法:可以采用基于决策树的特征组合寻找方法

4、文本表示

文本特征的预处理

(补充内容)

1)词袋模型( B a g    o f    W o r d s Bag \ \ of \ \ Words Bag  of  Words

  • 最基本的文本表示模型。
  • 定义:将每篇文章看成一袋子词,并忽略每个词出现的顺序。
    具体的说,将整篇文章表示成一个长向量,向量的每个维度表示一个单词,该维的权重则反映了这个词在原文章中的重要程度。

2)TF-IDF( T e r m    F r e q u e n c y − I n v e r s e    D o c u m e n t    F r e q u e n c y Term \ \ Frequency-Inverse \ \ Document \ \ Frequency Term  FrequencyInverse  Document  Frequency

文本中能观察到的量其实只有两个:词频和文档频率

  • 常用于表示一篇文章中单个词的重要性。
    T F − I D F ( t , d ) = T F ( t , d ) ∗ I D F ( t ) TF-IDF(t,d) = TF(t,d)*IDF(t) TFIDF(t,d)=TF(t,d)IDF(t)
    其中 T F ( t , d ) TF(t,d) TF(t,d)表示单词 t t t在文档 d d d中出现的频率,
    I D F ( t ) IDF(t) IDF(t)是逆文档频率,用于衡量单词 t t t对表示语义所起的重要程度。
    I D F ( t ) = 文 章 d 的 总 数 l o g 包 含 单 词 t 的 文 章 总 数 + 1 IDF(t) = \frac{文章d的总数}{log包含单词t的文章总数 + 1} IDF(t)=logt+1d
    注意:
    逆文档频率,所以分子是文章总数,方便固定;
    分母加1,是为了防止分母为0的情况。

3)主题模型( T o p i c    M o d e l Topic \ \ Model Topic  Model)

  • 作用:从文本库中发现有代表性的主题(得到发现每个主题上面词的分布特征),并且能够计算出每篇文章的主题分布。

4)词嵌入模型( W o r d    E m b e d d i n g Word \ \ Embedding Word  Embedding)

  • 定义:将每个词映射成低维空间上的稠密向量。
    (该稠密向量,可以看作是一个隐含的主题,只不过不像主题模型中的主题那样直观。)
  • 假设有 N N N个词,并将每个词映射成一个 K K K维向量,权重矩阵可以表示为 N ∗ K N*K NK
    然后通过神经 网络对权重矩阵进行学习,从而抽取高层的语义特征。
    注意:
    CNN和RNN可以很好的提取高层的语义特征;
    而且减少了网络的待学习参数;
    提高的训练速度;
    降低了过拟合的风险。

5)Word2Vec

最早、最常用的神经网络词嵌入模型。
W o r d 2 V e c 有 两 种 网 络 结 构 { C B O W ( C o n t i n u s   B a g   o f   W o r d s ) S k i p − g r a m Word2Vec有两种网络结构 \begin{cases} CBOW (Continus \ Bag \ of \ Words)\\ Skip-gram \\ \end{cases} Word2Vec{CBOW(Continus Bag of Words)Skipgram

(1)CBOW
  • 定义:根据上下文出现的单词来预测当前时刻单词的生成概率。
(2)Skip-gram
  • 定义:根据当前时刻的单词预测上下文中各词的生成概率。

5、图像数据不足的处理方法

  • 数据不足带来的问题:容易造成过拟合
  • 解决方法:
    1)简化模型(非线性模型改为线性模型);
    2)添加约束项来缩小假设空间(L1/L2正则化);
    3)集成学习;
    4)Dropout超参数
    5)扩充数据

常见的数据扩充方法(图片数据)

(1)图像空间上的变化
  • 1)在一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等。
    (操作的目的是:变换对应着同一目标在不同角度的观察结果。)
  • 2)对图像中的像素添加噪声扰动,比如椒盐噪声、高斯白噪声等。
  • 3)颜色变换。
    例如,在图像的RGB颜色空间上进行主成分分析,得到3个主成分的特征向量 p 1 , p 2 , p 3 p_1,p_2,p_3 p1,p2,p3及其对应的特征值 λ 1 , λ 2 , λ 3 \lambda_1,\lambda_2,\lambda_3 λ1,λ2,λ3,然后在每个像素的RGB值上添加增量 [ p 1 , p 2 , p 3 ] ∗ [ α 1 λ 1 , α 2 λ 2 , α 3 λ 3 ] T [p_1,p_2,p_3]*[\alpha_1\lambda_1,\alpha_2\lambda_2,\alpha_3\lambda_3]^T [p1,p2,p3][α1λ1,α2λ2,α3λ3]T,其中 α 1 , α 2 , α 3 \alpha_1,\alpha_2,\alpha_3 α1,α2,α3是均值为0、方差较小的高斯分布随机数。
  • 4)改变图像的亮度、清晰度、对比度、锐度等。
(2)图像特征空间内的变化
  • 1)数据上采样技术。
  • 2)生成模型可以合成一些新样本。
(3)迁移学习
(4)在大数据集上预训练好通用模型,然后在小数据集上进行微调
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值