目录
  1. 1. 特征工程
    1. 1.1. 特征归一化
      1. 1.1.1. 为什么需要对数值类型的特征做归一化?
      2. 1.1.2. 特征归一化最常用的两种方法?
      3. 1.1.3. 归一化应用场景?
      4. 1.1.4. 归一化不适合的应用场景
    2. 1.2. 类别型特征
      1. 1.2.1. 什么是类别型特征?
      2. 1.2.2. 为什么需要对类别型特征做编码?
      3. 1.2.3. 在对数据进行预处理时,应该怎样处理类别型特征?
      4. 1.2.4. 高纬度特征会带来几方面的问题?
    3. 1.3. 高维组合特征的处理
      1. 1.3.1. 什么是组合特征?如何处理高维组合特征?
    4. 1.4. 组合特征
      1. 1.4.1. 怎样有效地找到组合特征?
      2. 1.4.2. 给定原始输入该如何有效地构造决策树呢?
    5. 1.5. 文本表示模型
      1. 1.5.1. 有哪些文本表示模型?它们各有什么优缺点?
        1. 1.5.1.1. 词袋模型
          1. 1.5.1.1.1. 优缺点
        2. 1.5.1.2. N-gram模型
          1. 1.5.1.2.1. 优缺点
        3. 1.5.1.3. 主题词模型
          1. 1.5.1.3.1. 优缺点
        4. 1.5.1.4. 词嵌入模型
          1. 1.5.1.4.1. 优缺点
    6. 1.6. Word2Vec✨
百面机器学习-特征工程

特征工程

特征归一化

为什么需要对数值类型的特征做归一化?

  • 对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内,使得不同的指标之间具有可比性。
  • 假设有两种数值型特征x1和x2。将x1和x2归一化后,两者的更新速度变得更为一致,容易更快地通过梯度下降找到最优解

特征归一化最常用的两种方法?

  • 线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。归一化公式如下:

    Xnorm=XXminXmaxXminX_{norm} = \frac{X-X_{min}}{X_{max} - X_{min}}

其中X为原始数据,XmaxX_{max}XminX_{min}分别为数据的最大值和最小值。

  • 零均值归一化(Z-Score Normalization):它会将原始数据映射到均值为0、标准差为1的分布上。具体来说,假设原始特征的均值为μμ、标准差为σσ,那么归一化公式定义为:

    z=xμσz = \frac{x - μ}{σ}

归一化应用场景?

  • 在实际应用中,通过梯度下降法求解的模型通常是需要归一化的
    • 如,线性回归、逻辑回归、支持向量机、神经网络等模型

归一化不适合的应用场景

  • 决策树模型
  • 原因:以C4.5为例,决策树在进行节点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的,归一化并不会改变样本在特征x上的信息增益。

类别型特征

什么是类别型特征?

  • 类别型特征(Categorical Feature)主要是指性别(男、女)、血型(A、B、AB、O)等只在有限选项内取值的特征。

为什么需要对类别型特征做编码?

  • 类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

在对数据进行预处理时,应该怎样处理类别型特征?

  • 序号编码:通常用于处理类别间具有大小关系的数据。
  • 独热编码:通常用于处理类别间不具有大小关系的特征。对于类别取值较多的情况下使用独热编码需要注意以下问题:
    • 使用稀疏向量来节省空间。
    • 配合特征选择来降低维度。
  • 二进制编码:主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。
    • 二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。

高纬度特征会带来几方面的问题?

  • 一是K近邻算法中,高维空间下两点之间的距离很难得到有效地衡量
  • 二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题
  • 三是通常只有部分降维是对分类、预测有帮助。

高维组合特征的处理

什么是组合特征?如何处理高维组合特征?

答:为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种离散特征,表1.2是语言和类型对点击的影响。为了提高拟合能力,语言和类型可以组成二阶特征,表1.3是语言和类型的组合特征对点击的影响。

表1.2 语言和类型对点击的影响
是否点击 语言 类型
0 中文 电影
1 英文 电影
1 中文 电视剧
0 英文 电视剧
表1.3 语言和类型的组合特征对点击的影响
是否点击 语言=中文,类型=电影 语言=英文,类型=电影 语言=中文,类型=电视剧 语言=英文,类型=电视剧
0 1 0 0 0
1 0 1 0 0
1 0 0 1 0
0 0 0 0 1

以逻辑回归为例,假设数据的特征向量为X=(x1,x2,...,xk)X = (x_1,x_2,...,x_k),则有,

Y=sigmoid(ijwij<xi,xj>)Y=sigmoid(\sum_{i}\sum_{j}w_{ij} < x_i,x_j>)

其中,<xi,xj><x_i,x_j>表示xix_ixjx_j的组合特征,wijw_{ij}的维度等于xixj|x_i| \cdot |x_j|xi|x_i|xj|x_j|分别代表第ii个特征和第jj特征不同取值的个数。

在表1.3的广告点击预测问题中,w的维度是22=42*2=4(语言取值为中文或英文两种、类型取值为电影或电视剧两种)

这种特征组合看起来是没有任何问题的,但当引入ID类型特征时,问题就出现了。

若用户的数量为mm,物品的数量为nn,那么需要学习的参数的规模是mnm*n。在互联环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习mnm*n规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用kk维的低维向量表示k<<mk<<nk<<m,k<<n),

Y=sigmoid(ijwij<xi,xj>)Y=sigmoid(\sum_{i}\sum_{j}w_{ij}<x_i,x_j>)

其中,wij=xixjw_{ij}=x'_i \cdot x'_jxix'_ixjx'_j分别表示xix_ixjx_j对应的低维向量。

需要学习的参数的规模变为mk+nkm*k + n*k,这其实等价于矩阵分解。(降维方法来减少两个高维特征组合后需要学习的参数)

组合特征

怎样有效地找到组合特征?

  • 一种基于决策树的特征组合寻找方法。根据原始输入特征并且根据原始输入和标签构造决策树。

给定原始输入该如何有效地构造决策树呢?

  • 可以采用梯度提升决策树,该方法的思想是每次都在之前构建的决策树的残差上构建下一棵决策树

文本表示模型

有哪些文本表示模型?它们各有什么优缺点?

词袋模型

  • 词袋模型:最基础的文本表示模型,它将整段文本以词为单位且分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文章的重要程度。
优缺点
  • 优点
    1. 简单、方便、快捷。
    2. 在语料充足的情况下,对于简单的自然语言处理任务效果不错。如文本分类。
  • 缺点
    1. 其准确率往往比较低。凡是出现文本中的词一视同仁,不能体现不同词在一句话中重要性的不同。
    2. 无法关注词语之间的顺序关系,这是词袋模型最大的缺点。如”武松打老虎“跟”老虎打武松“在词袋模型中被认为是一样的。
    3. 向量维度高,维度高造成了后续相似度或者文本分类的计算量非常大,同时数据稀疏也导致了相似度区分不明显。

常用TF-IDF计算权重,表示为,

TFIDF(t,d)=TF(t,d)IDF(t)TF-IDF(t,d) = TF(t,d)*IDF(t)

其中,TF(t,d)TF(t,d)为单词tt在文档dd中出现的频率,IDF(t)IDF(t)是逆文档频率,用来衡量单词tt对表达语义所起的重要性,表示为,

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

直观的解释是,如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定的惩罚。

N-gram模型

  • N-gram模型:通常可以将连续出现的n个词(nNn≤N)组成的词组(N-gram)也作为一个单独的特征放到向量表示中去,构成N-gram模型。另外,同一个词可能有多种词性变化,却具有相似的含义。在实际应用中,一般会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一成为同一词干的形式
优缺点
  • 优点:
    1. 采用极大似然估计,参数易训练。
    2. 完全包含了前 n-1 个词的全部信息。
    3. 可解释性强,直观易理解。
  • 缺点:
    1. 缺乏长期依赖,只能建模到前 n-1 个词。
    2. 随着 n 的增大,参数空间呈指数增长(常见的n值一般为1,2)。
    3. 数据稀疏,难免会出现OOV问题(使所有的N-gram概率之和为1和使所有的N-gram概率都不为0)。
    4. 单纯的基于统计频次,泛化能力差。

主题词模型

优缺点
  • LSA:

    • 优点:可以把原文本特征空间降维到一个低维语义空间;减轻一词多义和一义多词问题。
    • 缺点:在SVD分解的时候,特别耗时,而且一般而言一个文本特征矩阵维数都会特别庞大,SVD此时就更加耗时;而且,LSA缺乏严谨的数理统计基础。
  • pLSA

    • 优点:PLSA可以解决了同义词和多义词的问题,利用了强化的期望最大化算法(EM)来训练隐含类(潜在类)。而且相对了LSA,有了坚实的统计学基础。
    • 缺点:随着document和term 个数的增加,pLSA模型也线性增加,变得越来越庞大,也就是说PLSA中训练参数的值会随着文档的数目线性递增。还有,PLSA可以生成其所在数据集的的文档的模型,但却不能生成新文档的模型。
  • LDA

    • 优点
      • 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
      • LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
    • 缺点
      • LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
      • LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
      • LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
      • LDA可能过度拟合数据。

词嵌入模型

  • 词嵌入模型:词嵌入是一类词向量化的模型的统称,核心思想是将每个词都映射成低维空间(通常K=50~300维)上的一个稠密向量(Dense Vector)。
优缺点

Word2Vec✨

文章作者: Lesy
文章链接: https://lesylin.com/2020/06/21/%E7%99%BE%E9%9D%A2%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E7%89%B9%E5%BE%81%E5%B7%A5%E7%A8%8B/
文章声明: 转载请注明文章链接
打赏
  • 微信
  • 支付宝

Comment