百面机器学习读书笔记 第一章 特征工程

特征工程

本质上来讲,是一个表示和展现数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。

  • 结构化数据。可以看作关系型数据库的一张表,每一列都有清晰的定义,包含数值型、类别型两种基本类型;每行表示一个样本的信息。
  • 非结构化数据。主要包括文本、图像、音频、视频数据,其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义。并且每条数据的大小各不相同。

特征归一化

  1. 目的:消除数据特征之间的量纲影响,使得不同指标之间具有可比性。

  2. 常用方法有线性函数归一化和零均值归一化:

  • 线性函数归一化(Min-Max Scaling,最大最小值归一化),将数据映射到 [ 0 , 1 ] [0,1] [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

  • 零均值归一化(Z-Score Normalization),将数据映射到均值为0、标准差为1的分布上。
    z = x − μ σ z = \frac{x-\mu}{\sigma} z=σxμ

  1. 通过梯度下降求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等。但对于决策树并不适用。例如C4.5节点分裂主要依据信息增益比,而归一化并不会改变信息增益比。

类别型特征

  1. 类别型特征指在有限选项内取值的特征。通常为字符串形式。决策树等少数模型能直接处理字符串形式的输入,逻辑回归、SVM等类别型特征必须处理成数值型特征才能正确工作。
  2. 处理类别型特征的方法:
  • 序号编码,如成绩可以转化为高、中、低三档,分别用3、2、1表示,转换后依然保留了大小关系

  • one-hot编码,通常用于处理类别间不具有大小关系的特征,如各种血型,A型编码为(1,0,0,0),B型编码为(0,1,0,0)。
    one-hot编码需要注意:当类别取值较多时,用one-hot就会非常稀疏,可以用稀疏向量形式输入来节省空间,目前大部分算法都接受这种输入形式。但是高维one-hot编码会有几个问题:

    • knn中高维空间下很难有效衡量两点的距离。
    • 逻辑回归中参数数量会随维度增高而增多,容易引起过拟合。通常只有部分维度对分类、预测有帮助,因此可以配合特征选择来降维。
  • 二进制编码,和one-hot的思想差不多,它允许多位为1。本质是利用二进制对ID进行hash映射,比one-hot节省空间
    还有其他编码方式:Helmert Contrast、Sum Contrast、Polynomial Contrast、Backward Difference Contrast。

文本表示模型

  1. 词袋模型和N-gram模型
  • 词袋模型是最基础的文本表示模型。是将文章以词为单位切分开,忽略词的出现顺序,将文章表示成一个长向量,每一维代表一个单词,该维的权重表示重要程度。常用TF-IDF来计算权重。

    T F − I D F ( t , d ) = T F ( t , d ) × I D F ( t ) TF-IDF(t,d) = TF(t,d) \times IDF(t) TFIDF(t,d)=TF(t,d)×IDF(t)
    (不是减号,是短横线)

    I D F ( t ) = log ⁡ 文 章 总 数 包 含 单 词 t 的 文 章 总 数 + 1 IDF(t) = \log{\frac{文章总数}{包含单词t的文章总数+1}} IDF(t)=logt+1

  • N-gram是指有些词组不能拆开,那么由这n个词组成的词组(N-gram)也作为一个单独的特征放到向量表示中,构成N-gram模型。

注:总的来说就是,TF-IDF是词袋模型中的一种计算权重的方法,N-gram是一种为了解决词组不可分的一种方法,也属于词袋模型,最后依然要用词袋模型来表示。

  1. 主题模型
    词袋模型和N-gram模型无法识别两个不同的词或词组具有相同的主题,主题模型可以将具有相同主题的词或词组映射到同一维度上,映射到的这一维度表示某个主题。主题模型是一种特殊的概率图模型,后面第六章第五节会讲。

  2. 词嵌入
    词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射到低维空间(K=50~300)上的一个稠密向量。K维空间的每一维也可以看作一个隐含的主题,但没有主题模型那样直观。

Word2Vec

  1. Word2Vec是2013年提出的,是目前最常用的词嵌入模型之一。它实际是一种浅层的神经网络模型,有两种网络结构:CBOW(Continues Bag of Words)和Skip-gram

    CBOW根据上下文出现的词语来预测当前词的生成概率,Skip-gram根据当前词来预测上下文中各词的生成概率。结构如下图:
    在这里插入图片描述

  2. CBOW的训练方式:模型有输入层、映射层、输出层。

  • 输入层是one-hot编码的上下文词,如果词汇表中单词总数为N,则输入层的词表示即为N维one-hot向量。
  • 映射层(隐含层)有K个隐含单元,即我们要得到的k维词嵌入向量,这里就是K个隐含单元。映射层的值由输入层的N维向量和 N × K N \times K N×K维权重矩阵计算得到。
    注:CBOW模型需要将输入词计算的隐含单元值求和,比Skip-gram多这一部分。
  • 输出层向量的值由隐含层的K维向量和 K × N K \times N K×N维向量计算得到,输出也是N维向量。但是这里的输出向量并不能保证所有维度加起来为1(one-hot编码加起来就为1),要通过Softmax激活函数进行归一化。
  • 训练的目标是使得语料库中所有单词的整体生成概率最大化。可以用反向传播,沿梯度更优的方向更新权重,但是由于Softmax存在归一化项,推导出来的迭代公式需要对词汇表中所有单词进行遍历(毕竟是维词向量),所以每次迭代过程非常缓慢。有Hierarchical SoftmaxNegative Sampling两种改进方法。
  • 得到训练出来的各词对应的向量:训练得到的维度为 N × K N \times K N×K K × N K \times N K×N的矩阵,可以选择任意一个作为N个词的K维词向量。
  1. Word2Vec和LDA的区别和联系
  • LDA利用文档中单词的共现关系来对单词按主题聚类,可以理解为将“文档-单词”矩阵分解为“文档-主题”和“主题-单词”两个概率分布。但Word2Vec更多融入了上下文共现的特征,是对“上下文-单词”矩阵进行学习。
  • 主题模型通过一定的结构调整可以基于“上下文-单词”单词矩阵进行主题推理,词嵌入方法也可以根据“文档-单词”矩阵学习出词的隐含向量表示。
    最大的区别是模型本身。主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(即主题)。词嵌入一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重得到单词的稠密向量表示。

图像数据不足时的处理方法

  1. 一个模型能提供的信息一般来源于两个方面:一是训练数据中蕴含的信息;二是模型的形成过程中(包括构造、学习、推理等)人提供的先验信息

  2. 训练不足时则要提供更多先验信息。先验信息作用在模型上,如让模型采用特定的内在结构、条件假设或添加一些约束条件。先验信息也可以作用在数据集上,如根据特定的先验假设调整、变换和扩展数据集,让其展现出更多更有用的信息。

  3. 图像分类任务中,训练数据不足的问题主要表现在过拟合方面,处理方法可以分为两类:

  • 基于模型的方法:主要是采用降低过拟合风险的措施,包括简化模型(将非线性模型简化为线性模型)、添加约束项以缩小假设空间(L1/L2正则项)、集成学习、Dropout超参数等。
  • 基于数据的方法:主要通过数据扩充(Data Augmentation,数据增强),对原始数据进行适当变换以达到扩充数据集的效果。
    具体到图像分类,有四种变换方法:(1)随机旋转、平移、缩放、裁减、填充、左右翻转等,对应不同角度的观察结果。(2)对像素添加噪声扰动,如椒盐噪声、高斯白噪声等。(3)颜色变换。(4)改变亮度、清晰度、对比度、锐度等。
  1. 除了在图像空间进行变换,还可以对图像进行特征提取,然后在图像的特征空间内进行变换,利用一些通用的数据扩充或上采样技术如SMOTE等进行扩充。这些都是一些启发式的变换方法,还可以通过GAN等生成模型合成新样本,还可以借助其他模型或数据来进行迁移学习。

参考文献

  1. 百面机器学习|第一章特征工程知识点 https://www.jianshu.com/p/355c4001ca42
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值