【百面机器学习笔记】特征工程

数据类型

  1. 结构化数据 : 可以看作关系型数据库的一张表,包含数值型和类别型两种基本类型;
  2. 非结构化数据:非结构化数据主要包括文本、图像、音频、视频数据,其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且每条数据的大小各不相同。
特征归一化 为消除数据特征之间的量纲影响,如身高和体重。
(1) 最大最小归一化,它对原始数据进行线性变换,使结果映射到[0, 1]的范围,实现对原始数据的等比缩放;
(2)零均值归一化:它会将原始数据映射到均值为0、标准差为1的分布上。
  1. 为什么要对数值型的特征做归一化?
    假设有两种数值型的特征 x1[0,10] ,x2[0,3] 在学习速率相同的情况的下,x1的更新速度会大于x2,需要较多的迭代才能找到最优解。如果将x1和x2归一化到相同的数值区间后,优化目标的等值图会变成图1.1(b)中的圆形,x1和x2的更新速度变得更为一致,容易更快地通过梯度下降找到最优解。
【百面机器学习笔记】特征工程
文章图片
  1. 归一化适用情形
    在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对于决策树模型则并不适用。
类别特征 除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。
处理类别特征
  1. 序号编码 : 特征大小有意义
  2. onehot:通常用于处理类别间不具有大小关系的特征。
    对于类别取值较多的情况下使用独热编码需要注意以下问题。
    (1)使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置取值均为0。因此可以利用向量的稀疏表示有效地节省空间,并且目前大部分的算法均接受稀疏向量形式的输入。
    (2)配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。
  3. 二进制编码:二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。
高维特征组合的处理 若用户的数量为m、物品的数量为n,那么需要学习的参数的规模为m×n。在
互联网环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习m×n规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用k维的低维向量表示(k<
【百面机器学习笔记】特征工程
文章图片

其中, wij = wi' * wj',wi'和wj'分别表示xi和xj对应的低维向量。在推荐问题中,需要学习的参数的规模变为m×k+n×k。熟悉推荐算法的同学很快可以看出来,这其实等价于矩阵分解。所以,这里也提供了另一个理解推荐系统中矩阵分解的思路。
  1. 怎样有效找到组合特征?
    基于决策树:每一条从根节点到叶节点的路径都可以看成一种特征组合的方式。(可以使用梯度提升决策树有效构建)
文本表示模型 词袋模型(Bag of Words),TF-IDF(Term Frequency-Inverse Document Frequency),主题模型(Topic Model),词嵌入模型(Word Embedding)。
1. 词袋模型和N-gram模型
最基础的文本表示模型是词袋模型。顾名思义,就是将每篇文章看成一袋子词,并忽略每个词出现的顺序。具体地说,就是将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文章中的重要程度。常用TF-IDF来计算权重,公式 TF-IDF(t,d)=TF(t,d)×IDF(t) ,
其中TF(t,d)为单词t在文档d中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对表达语义所起的重要性,表示为

【百面机器学习笔记】特征工程
文章图片

直观的解释是,如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩罚。
通常,可以将连续出现的n个词(n≤N)组成的词组(N-gram)也作为一个单独的特征放到向量表示中去,构成N-gram模型。另外,同一个词可能有多种词性变化,却具有相似的含义。在实际应用中,一般会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一成为同一词干的形式。
2. 主题模型
主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并且能够计算出每篇文章的主题分布。
3. 词嵌入模型
词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维间(通常K=50~300维)上的一个稠密向量(Dense Vector)。K维空间的每一维也可以看作一个隐含的主题,只不过不像主题模型中的主题那样直观。 【【百面机器学习笔记】特征工程】

    推荐阅读