1 特征工程
发布日期:2021-06-29 18:40:42 浏览次数:2 分类:技术文章

本文共 5906 字,大约阅读时间需要 19 分钟。

文章目录

  • 没充足数据、合适特征,再强大的模型也无法满意输出
  • 数据和特征决定结果上限
    • 模型、算法的选择及优化则逐步接近这个上限

  • 特征工程对原始数据一系列工程处理
    • 将其提炼为特征,作为输入供算法和模型
  • 特征工程旨在去除原始数据中的杂质和冗余
    • 设计更高效特征以刻画求解的问题与预测模型之间的关系

  • 本章讨论两种数据类型
  • 1)结构化数据
    • 可看作关系型数据库的一张表,
    • 每列都有清晰定义
    • 含数值型、类别型两种基本类型
  • 非结构化数据。
    • 文本、图像、音频、视频数据
    • 无法用一个简单数值表示,也没有清晰的类别定义,
    • 每条数据的大小不同

1 特征归ー化

场景描述

  • 为消除数据特征间量纲影响,需对特征归一化
    • 使不同指标有可比性
  • 分析一个人的身高和体重对健康影响,如果用m和kg作单位
    • 那么身高特征在1.6-1.8m
    • 体重特征50~100kg
    • 结果显然会倾向于数值差別较大的体重
  • 想要更准确,就需特征(Normalization)
    • 使各指标处于同一数值量级

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

  • 对数值类型的特征做归一化可以将所有的特征都统一到一个大致相
    同的数值区间
  • (1)Min- Max Scaling
  • 对原始数据线性变换,映射到[0,1],
    • 对原始数据的等比缩放

  • 原来还有这个东西啊

  • (2) Z-Score Normalization

  • 它将原始数据映射到均值为0、标准差为1的分布上

  • 设原始均值为

    • 标准差为

  • 为什么要对数值型做归一化?
  • 设有两种数值型特征,x1[0,10],x2[0,3],
  • 构造一个目标函数符合图1.1(a)中的等值图。

  • 学习速率相同时,x1更新速度>x2,需较多的迭代オ能找到最优解
  • 如果x1和x2归一化到相同区间后
    • 优化目标的等值图会变成圆形,
    • x1和x2的更新速度一致
    • 易更快通过梯度下降找到最优解

  • 通过梯度下降法求解的模型通常要归一化,
    • 线性回归、逻辑回归、支持向量机、神经网络
  • 决策树模型不适用,以C4.5为例
    • 决策树在节点分裂时主要依据数据集D关于特征x的信息增益比
      (第3章第3节)
    • 信息増益比跟特征是否经过归一化是无关
    • 归ー化不改变样本在特征x上的信息增益

2类別型特征

场景描述

  • Categorical Feature指性别(男、女)、血型(A、B、AB、O)。
  • 类别型特征原始输入常是字符串,除决策树等少数模型能直接处理字符串形式的输入
  • 逻辑回归、支持向量机,类别型特征必须经过处理转换成数值型特征

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

  • 序号编码常用于处理类別别间具有大小关系的数据
  • 如成绩,分低、中、高,且“高>中>低
  • 序号编码会按照大小关系对类别型特征赋予一个数值ID,
    • 如高表示为3
    • 中表示为2、低表示为1
    • 转换后保留大小关系。

  • 独热编码
    • 处理类別间不具有大小关系的特征。
  • 血型
    • 独热编码会把血型变成一个4维稀疏向量
    • A型血(1,0,0,0)
    • B型血(0,1,0,0)
  • 对类别取值较多的情況下用独热编码需注意
  • (1)用稀疏向量来节省空间
  • 在独热编码下,特征向量只有某维取值为1,其他均为0。
  • 因此可利用向量的稀疏表示有效地节省空间,
    • 且目前大部分的算法均接受稀疏向量形式的输入
  • (2)配合特征选择来降低维度。
    • K近邻中,高维空间下两点之间的距离很难得到有效衡量
    • 逻辑回归中,参数数量会随着维度增高而增加,昜过拟合
    • 通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度

  • 二进制编码分两步
    • 先用序号编码给每个类别赋予一个类别ID
    • 然后将类别ID对应的二进制编码作为结果
  • 二进制编码本质上是利用二进制对ID哈希映射,
    • 最终得到0/1特征向量,
    • 维数少于独热编码,节省存储空间

  • 其他编码方式
  • 如Helmert Contrast、 Sum Contrast、 Polynomial
    ontrast、 Backward Difference Contrast

3 高维组合特征的处理

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

  • 为提高复杂关系拟合能力
  • 特征工程中会把一阶离散特征两两组合,构成高阶组合特征
  • 广告点击预估为例,原始数据有语言和类型两特征
    • 表1.2
  • 为提高拟合能力,语言和类型可组成二阶特征
    • 表1.3

  • 逻辑回归为例,特征向量为 X = ( x 1 , x 2 , ⋯   , x k ) X=(x_1,x_2,\cdots,x_k) X=(x1,x2,,xk),则

每两个特征都组合成一个新的特征吧,所以 w i j w_{ij} wij是一个矩阵哦!

  • < 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|\times|x_j| xi×xj

注意啊, w i j w_{ij} wij是个向量,不是矩阵啊,因为是二分类啊

  • ∣ x i ∣ |x_i| xi ∣ x j ∣ |x_j| xj代表第 i i i个特征和第 j j j个特征不同取值的个数
  • 表1.3中, w w w的维度是2×2=4
  • 这种特征组合看起来是没有任何回题的,但当引入ID类型的特征时,问题就出现
  • 表1.4是用户ID和物品ID对点击
  • 表1.5是用户ID和物品ID的组合特征对点击

  • 若用户数量 m m m、物品数量为 n n n,那么需要学习的参数的规模
    m × n m×n m×n
  • 无法学习

只有两个特征需要组合

  • 将用户和物品分别用 k k k维的低维向量表示
    • k < < m , k < < n k<<m,k<<n k<<m,k<<n

怎么将用户和物品用 k k k维的低维向量表示啊,这正是我们需要学习的,m个ID,每个ID用k维向量表示,n个物品,每个物品也用k维向量表示,所以总共要学 m × k + n × k m\times k+n\times k m×k+n×k个参数

我槽,都用k维向量表示啊??

< x i , x j > <x_i,x_j> <xi,xj>应该还是表1.5的行那样的特征啊,总共mn维,真的吗??不是的!我觉得这里没有必要搞清楚 < x i , x j > <x_i,x_j> <xi,xj>的维度到底是啥样子!他就是个表示法!表明我现在输入1个叫做 x x x的东西啦!

我觉得应该是:先设出来先各自的 k k k维表示,然后是不是有mk+nk个参数啊!然后结合训练数据对 x i ′ ⋅ x j ′ x_i'\cdot x_j' xixj的sigmoid函数来做预测!极大似然把这么多参数求出来!

  • w i j = x i ′ ⋅ x j ′ w_{ij}=x_i'\cdot x_j' wij=xixj
  • x i ′ , x j ′ x_i',x_j' xi,xj分别表示 x i x_i xi x j x_j xj对应的低维向量

为啥是点乘呢?如果不是点乘的话和矩阵分解就不是那么一回事了吧!

  • 在表1.5的推荐问题中,要学习的参数的规模为 m × k + n × k m\times k+n\times k m×k+n×k
  • 熟悉推荐算法的很快可看出来,这其实等价于矩阵分解
  • 所以这里也提供另一个理解推荐系统中矩阵分解的思路。

这篇文章似乎有点懂了!

4组合特征

场景描述

  • 上节如何用降维来减少两个高维特征组合后需学习的参数。
  • 实际中,常面对多种高维特征
  • 简单两两组合,
    • 参数过多、过拟合,
    • 不是所有的特征组合都有意义
  • 有效方法找到应该对哪些特征组合

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

  • 介绍基于决策树的特征组合寻找方法

  • 原始输入特征年龄、性别、用户类型(试用期、付费)

  • 物品类型(护肤、食品)

  • 且根据原始输入和标签(点击/未点击)构造出决策树

  • 每一条从根节点到叶节点的路径都可看成一种特征组合方式

  • 4种特征组合

    • “年岭<=35”且“性别=女”。
    • “年龄<=35”且“物品类别=护肤”。
    • “用户类型=付费”且“物品类型=食品”
    • “用户类型=付费”且“年龄<=40”。

  • 编码为(1,1,0,0)
  • 编码为(0,0,1,1)

  • 给定原始输入该如何有效地构造决策树呢?
  • 可采用梯度提升决策树,思想是每次都在之前构建的決策树的残差上构建下一棵决策树。
  • 对梯度提升决策树感兴趣的参12章

5文本表示模型

场景描述

  • 文本是重要的非结构化数据
  • 如何表示文本是机器学习重要研究方向
  • 词袋模型(Bag of Words)
  • TF-IDF(Term Frequency-Inverse Document Frequency)
  • 主题模型(Topic Model)
  • 词嵌入模型(Word Embedding)

有哪些文本表示模型?优缺点?

词袋模型和N-gram模型

  • 就是将每篇文章看成一袋子词,忽略词出现的顺序
  • 将整段文本以词为单位切分开,
    • 然后每篇文章可表示成一个长向量,
    • 向量中的每维代表一个单词,
    • 该维对应的权重反映这个词在原文章中的重要程度
  • 用TF-IDF来计算权重
  • TF(t,d)为单词t在文档d中出现的频率
  • 逆文档频率用来衡量单词 t t t对表达语义所起的重要性

在这里插入图片描述

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

  • 将连续出现的n个词(n≤N)组成的词组(N-gram)
    • 也作为一个单独特征放到向量表示中去,构成N-gram模型
  • 同一个词可能有多种词性变化,却有相似含义
  • 实际中,一般会对单词进行词干抽取(Word Stemming)处理
    • 即将不同词性的单词统一成为同一词干的形式

主题模型

  • 用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),且能够计算出每篇文章的主题分布
  • 细节见第6章第5节。

词嵌入与深度学习模型

  • 词嵌入是一类将词向量化的模型的统称
    • 将每个词都映射成低维空间(50~300维)上的一个稠密向量
    • K维空间的每一维也可看作一个隐含主题
    • 不过不像主题模型中的主题那样直观

  • 词嵌入将每个词映射成一个K维向量
    • 一篇文档N个词,就用 N × K N\times K N×K矩阵表示这篇文档,但这样的表示过于底层
  • 如果仅把这个矩阵作为原文本的表示特征输入到模型,不好
    • 还需在此基础上加工出更高层特征
  • 浅层机器学习模型中,好的特征工程可以带来算法效果显著提升。
  • 深度学习模型为我们提供一种自动进行特征工程的方式,
    • 每个隐层都可认为对应不同抽象层次的特征。
    • 这个角度讲,深度学习模型能打败浅层模型也自然了
  • CNN和RNN在文本表示中很好的效果
    • 主要是由于它们能更好对文本建模,抽取出高层语义特征
    • 与全连接的网络结构相比,CNN和RNN抓住文本的特性,又减少网络中待学习的参数,提高训练速度,降低过拟合

6 Word2Vec

场景描述

  • 谷歌13年
  • 最常用的词嵌入模型之一
  • 浅层的神经网络模型,两种网络结构,
    • CBOW( Continues Bag of Words)
    • Skip-gram

Word2Vec如何工作?和LDA区别与联系?

  • CBOW的: 根据上下文出现的词语来预测当前词的生成概率
  • Skip-gram根据当前词来预测上下文中各词的生成概率

在这里插入图片描述

  • w ( t ) w(t) w(t)是当前关注的词
  • w ( t − 2 ) 、 w ( t − 1 ) 、 w ( t + 1 ) 、 w ( t + 2 ) w(t-2)、w(t-1)、w(t+1)、w(t+2) w(t2)w(t1)w(t+1)w(t+2)是上下文中的词
    • 前后滑动窗口为2

  • CBOW和Skip-gram表示成
    • 输入层、映射层和输出层组成的神经网络

  • 输入层中每个词独热编码
    • 词表示成 N N N维向量
    • N N N为词汇表单词总数

  • 映射层(隐含层)中, K K K个隐含单元的取值可由 N N N维输入向量及连接输入和隐含单元之间的 N × K N\times K N×K维权重矩阵计算得到
  • CBOW中,还需将各个输入词所计算出的隐含单元求和

  • 输出层向量的值通过隐含层向量( K K K维),及连接隐层和输出层之间的 K × N K\times N K×N矩阵计算得到
  • 输出层是 N N N维向量,每维与词汇表中的一个单词对应
  • 最后,对输出层向量应用Softmax
    • 计算出每个单词的生成概率

在这里插入图片描述

  • x x x代表 N N N维的原始输出向量
  • x n x_n xn为在原始输出向量中,与单词 w n w_n wn对应维度取值

  • 接下来任务是训练神经网络权重
    • 使语料库中所有单词整体生成概率最大化
  • 输入层到隐含层需 N x K NxK NxK权重矩阵
    • 隐含层到输出层又要 K x N KxN KxN权重矩阵
    • 学习权重反向传播算法实现
    • 每次迭代将权重沿梯度更优的方向一小步更新
  • 由于Softmax中存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词遍历,使每次迭代过程缓慢,由此产 Hierarchical Softmax和 Negative Sampling两种改进,可参考Word2Vec论文
  • 训练得到 N × K N\times K N×K K × N K\times N K×N两矩阵后,可选其中一个作为 N N N个词的 K K K维向量表示

  • LDA利用文档中单词的共现关系来对单词按主题緊类
    • 也可理解为对“文档-单词”矩阵分解
    • 得到“文档-主题”和“主题-单词”两概率分布
  • Word2vec其实是对“上下文-单词”矩阵学习,上下文由周围几个单词组成,由此得到的词向量表示更多地融入了上下文共现的特征。
    • 如果两个单词所对应的Word2vec向量相似度较高,那么它们很可能经常在同样的上下文中出现
  • 上述是LDA与Word2vec的不同,不应该作为主题模型和词嵌入两类方法的差异。
  • 主题模型通过一定结构调整可基于“上下文-单词”矩阵进行主题推理。
  • 词嵌入方法也可根据“文档-单词”矩阵学习出词的隐含向量表示。
  • 主题模型和词嵌入两类方法最大的不同其实在于模型本身,
    • 主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘,其中包括需要推测的隐含变量(即主题);
    • 词嵌入模型一般表达为神经网络,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

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

转载地址:https://cyj666.blog.csdn.net/article/details/104826995 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:7 优化算法
下一篇:3 存储管理

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月05日 17时43分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

弘辽科技:淘宝开店后就可以直播吗?淘宝直播技巧是什么? 2019-04-30
弘辽科技:淘宝开店后不卖东西可以吗? 2019-04-30
弘辽科技:下沉市场的数字化渗透与割裂 2019-04-30
弘辽科技:拼多多什么时候有活动?参加活动有哪些好处? 2019-04-30
弘辽科技:扶持100个新品牌销量过亿投资人在抖音看到哪些机会? 2019-04-30
弘辽科技:2021开网店还赚钱吗? 2019-04-30
弘辽科技:抖音电商,一场标准的「字节」式战役 2019-04-30
弘辽科技:小伙开网店创业,为卖货反串美妆女主播,只为给父母买房 2019-04-30
弘辽科技:小伙退伍网上创业卖特产,教你免费如何开淘宝网店 2019-04-30
弘辽科技:80后女大学生开网店创业 年销售额达100万元 2019-04-30
弘辽科技:从开网店,到拥有自己的公司、厂房、基地。 2019-04-30
弘辽科技:淘宝开店后怎么建群?手机端怎么建群? 2019-04-30
弘辽科技:新电商掌门人:陈磊、蒋凡、徐雷「掰手腕」 2019-04-30
弘辽科技:新手前期如何开网店? 2019-04-30
弘辽科技:一件代发什么商品最容易赚钱?怎么做优化? 2019-04-30
弘辽科技:新手前期如何开网店? 2019-04-30
弘辽科技:市值仅次京东、直追百度,这家韩国巨头什么来头? 2019-04-30
弘辽科技:现在怎么做淘宝赚钱?有什么办法或者方案用淘宝赚钱? 2019-04-30
弘辽科技:拼多多店铺星级多久更新一次?如何提升? 2019-04-30
弘辽科技:拼多多店铺星级有用吗?什么是星级? 2019-04-30