特征工程

1. 介绍

特征工程是对原始数据进行一系列工程处理,将其提炼为特征,作为输入。是一个表示和展示数据的过程,特征工程去除原始数据中的杂质和冗余,设计更高效的特征来寻找问题与模型之间的关系。

2. 常见数据类型

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

3. 特征归一化

为了消除数据特征之间的量级影响,需要进行特征归一化处理,使各特征指标处于同一量级。对数值类型的特征做归一化可以将所有特征统一到一个大致相同的数值区间。 最常用的方法主要有以下两种:

  1. 线性函数归一化(Min-Max Scaling):对原始数据进行线性变换,是结果映射到[0,1]之间,实现等比缩放。
    X_{norm}= \frac{X-X_{min}}{X_{max}-X_{min}}
  2. 零均值归一化(Z-Score Normalization): 将原始数据映射到均值为0、标准差为1的分布上。假设原始特征的均值为\mu 、标准差为\sigma , 那么归一化公式为:
    z=\frac{x- \mu}{\sigma}
    通过梯度下降求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但是对于决策树并不适用,比如C4.5,决策树在进行节点分裂时,主要依据数据集关于特征的信息增益比,而信息增益比跟特征是否经过归一化无关,因为归一化并不会改变样本在特征上的信息增益。

4. 类别型特征

类别型特征主要是指性别、星座这种有限选项内取值的特征。原始输入通常是字符串,除了决策树等少数模型能直接处理字符串输入,像逻辑回归、SVM等模型,类别型特征必须转化成数值型才能正确工作。在对数据预处理时,处理类别型特征主要有三种方法:序号编码,独热编码,二进制编码。

  • 序号编码(Ordinal):处理类别间有大小关系的数据,按照大小关系对特征赋予一个数值ID,例如大为2、小为1。
  • 独热编码(One-hot):处理类别间没有大小关系的特征。例如血型(A,B,AB,O),独热编码会把血型变成一个4维的稀疏向量,(1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1)。对于类别取值较多的情况需要注意:1. 使用稀疏向量来节省空间。2. 配合特征选择来降维。高维度特征会带来一些问题,K近邻中,高维空间两点的距离很难衡量;逻辑回归中,参数的数量会随维度增高而增加,容易过拟合;通常只有部分维度对分类、预测有帮助。
  • 二进制编码(Binary): 先用序号给每个类别赋予一个ID,然后将ID的二进制编码作为结果。对于血型的例子,使用二进制编码,因为只有4各类型,所以转成二进制,只需要转成3维稀疏向量即可。通过二进制编码,维数小于独热编码,节省了存储空间。

5. 高维组合特征的处理

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

以逻辑回归为例,假设数据的特征向量为 X=(x_1,x_2,...,x_k),则有
\huge{Y = \operatorname{sigmoid}(\sum_i\sum_jw_{ij})}
其中\langle x_i,x_j\rangle表示x_ix_j 的组合特征,w_{ij} 的维度等于\mid x_i\mid\cdot \mid x_j\mid, \mid x_i\mid\mid x_j\mid分别代表第i 个特征和第j 个特征不同的取值个数。例如 i=(语言:中文/英文)j=(类型:小说/散文), 则w 的维度为2\times2=4。这种特征组合看起来没什么问题,但是当引入一些具有标识性的特征(比如ID)时,就会出现参数太多的问题。比如说在推荐系统中,用户的数量为m, 物品的数量为n, 那么需要学习的参数为m\times n个。当用户和物品数量到达百万级、千万级时,这种规模的参数是无法学习的。在这种情况下,可以进行降维处理。将用户和物品分别用k 维的低维向量表示。其中k<<m,k<<n 。所以上面公式中的 w_{ij}=x^\prime_i \cdot x^\prime_j, 其中 x^\prime_i,x^\prime_j,分别表示 x_i,x_j 对应的低维向量。现在需要学习的参数规模就变成m\times k+n\times k。在推荐算法中,这就等价于矩阵分解,这里的低维向量可以看出矩阵分解时的隐含变量。

6. 文本表示模型

  • 词袋模型和N-gram模型

    词袋模型是最基础的文本表示模型。将每篇文章看成一袋子词,并且忽略每个词出现的顺序。具体来说,就是将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,该维所对应的权重反映了这个词在原文章中的重要程度。通常用TF-IDF来计算权重。

\huge{TF-IDF(t,d)=TF(t,d)\times IDF(t)} \\[3ex]
其中TF(t,d)是单词t 在文档d 中出现的频率,IDF(t) 是逆文档频率,用来衡量单词 t 对表达语义所起的重要性。
IDF(t)=\log(\frac{文章总数}{包含单词t的文章总数+1})
直观的解释,如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的单词,对于区分文章是否有特殊语义的贡献较少,因此对权重做一定的惩罚。

但是很多单词组合起来的意思和这些单词单独出现时表示的意思差距很大,通常可以将连续出现的 n(n\leq N) 个单词合成词组(N-gram),将词组也作为一个单独的特征放到向量表示中去。在实际中,一般会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一成一个词干的形式。

  • 主题模型

    主题模型用于从文本库中发现有代表性的主题(得到每个主题上面单词的分布特点),并且计算出每篇文章的主题分布。

  • 词嵌入

    词嵌入是将单词向量化的模型的统称。核心思想是将每个词都映射成低维空间上的一个稠密向量(Dense),K维空间的每一维也可以看作一个隐含的主题。

7. Word2Vec

word2Vec是目前常用的词嵌入模型之一,实际上是一种浅层的神经网络模型,有两种网络结构,分别是CBOW(Continues Bag of Words)和Skip-gram。

COBW的目标是根据上下文出现的词语来预测当前词的生成概率。而Skip-gram是根据当前词来预测上下文中各词的生成频率。


3.jpg

其中w(t) 是当前所关注的词,w(t-2),w(t-1),w(t+1),w(t+2) 是上下文出现的词。这里前后滑动窗口大小(上下文取值)均为2。

CBOW和Skip-gram都可以看成由输入层(Input),映射层(Projection),输出层(Output)组成的神经网络。

输入层中的每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度均为0.

在映射层中,K个隐含单元的取值可以由N维输入向量以及连接输入和隐含单元之间的N\times K 维权重矩阵计算得到。在CBOW中还需将各个输入词所计算出的隐含单元求和。同样,输出层的值也可以这样得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后,通过Softmax激活函数,可以计算出每个词的生成频率。Softmax函数定义如下:
\huge{P(y=w_n\mid x)=\frac{e^{x_n} }{\sum_{k=1}^N e^{x_k} } }
其中x 代表N维的原始输出向量,x_n 为在原始输出向量中,与单词w_n 所对应维度的取值。

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

一个模型所能提供的信息一般来源于两个方面,一是训练数据中蕴含的信息,二是在模型的形成过程中,人们提供的先验信息。当训练数据不足时,说明原始数据中能获取的信息较少,所以就需要更多的先验信息。先验信息可以添加在模型上,也可以添加在数据集中。

具体到图像上,训练数据不足带来的问题主要表现在过拟合方面。处理方法大致可以分两类,一是基于模型的方法,比如简化模型,添加正则约束,集成学习,Dropout等;二是基于数据的方法,比如数据增强。在保持图像类别不变的前提下,对图像进行变换,旋转、平移、缩放、添加噪声、颜色变换、改变图像亮度、清晰度等等。也可以对图像进行特征提取,或者使用生成模型合成新样本。再就是借助其他模型或数据进行迁移学习,进行fine-tune等等。

参考资料

《百面机器学习》

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 前言 此为本人学习《百面机器学习——算法工程师带你去面试》的学习笔记 第一章 特征工程 特征工程,是对原始数据进行...
    砍柴人z阅读 832评论 2 1
  • 前言 如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试...
    蓝白绛阅读 5,692评论 4 13
  • 问题 特征归一化 为什么要进行特征归一化? 方法? 使用场景? 离散型特征处理 为什么要处理? 方法? 特征组合 ...
    凌霄文强阅读 401评论 0 2
  • 由于学习需要,在此整理了网上特征工程方法,因为其中有很多拓展的内容,所以文章较长。 特征工程常用方法 1. 时间戳...
    ZAK_ML阅读 6,642评论 2 4
  • 【为爱朗读坚持365天第153天】今晚和哥哥复习了以前读过的Biscuits 其中两本,还好过了很久还没忘记,又读...
    大V店_做更好的父母阅读 204评论 0 0