Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >特征工程(中)- 特征表达

特征工程(中)- 特征表达

作者头像
小萌哥
发布于 2020-07-21 03:31:48
发布于 2020-07-21 03:31:48
7620
举报
文章被收录于专栏:算法研习社算法研习社

在本篇中我们聊一下特征表达(或者说特征编码)的问题,即从这些选定的维度,如何去刻画特定的对象。

01

特征表达要考虑哪些方面?

从一个完整的机器学习任务来看,在选择完特征之后,特征表达的任务就是要将一个个的样本抽象成数值向量,供机器学习模型使用。因此,特征表达就要兼顾特征属性和模型需求这两个方面。

  • 特征属性

特征按其取值类型不同,可以简单分为连续型和离散型。而离散型特征,又可以分为类别型和序列型。下面依次简要说明。

连续型特征:取值为连续实数的特征。

比如,身高,175.4cm。

类别型特征:取离散值,表示没有比较关系的类型。

比如,血型有A型、B型、AB型和O型4种,它们各自为一个独立类型。

序列型特征:取离散值,表示有比较关系的类型。

比如,还是身高,但取值为“高”、“中”、“低”3种类型。

  • 模型需求

如果你在公司负责建模调优,那你对负责特征工程的同事,会有什么样的需求呢?换言之,你希望他们给你什么样的特征呢?

应该不外乎这么几点,类型匹配、特征准确性、特征完备性和方便模型训练

类型匹配:对一个树模型而言,其原理是对特征进行切分,因此特征的值是否是数值类型,以及是否有缺失值,都可以不影响模型运算;但对其他基于数学运算的模型,则特征必须转化为数值类型,且对缺失值要有相应的处理逻辑。

准确性:拿身高来说,粗略地分为“高”、“中”、“低”3个类型,大致是对的,但并不足够准确。比如,在“高”这个类型中的人,因为分类太粗糙,已经没办法再进行比较了。

完备性:完备性是说,你的特征是否可以尽可能多方面的刻画一个对象。这一点跟所使用的模型有很大的关系。对简单模型来说,希望特征可以足够复杂,这就可能需要考虑高阶特征。

(比如,对一个电影而言,主演=“杨洋”和类型=“功夫”,单独来看这两者对你可能都很有吸引力,但都是从“主演+类型”这个维度,还是算了吧。)

但对复杂模型而言,如FM和神经网络,其模型结构本身就有一定的特征交叉功能,因此可以不用再考虑高阶特征。

方便模型训练:从模型参数的求解来看,如果特征做过归一化处理,可以有效避免在解空间中形成“峡谷”,从而加速参数求解过程。

探讨完特征表达需要考虑的因素,下面我们就可以有的放矢,讨论一下特征表达的技术问题。

02

连续型特征

上面说过,根据模型的需要,特征需要做连续化或者离散化的处理。连续特征已无需再做连续化处理,可以把特征的值直接拿来用,最多再做个归一化什么的就够了。

  • 连续特征的离散化

方法主要有两种,阈值分组和模型离散。

先说阈值分组,以出生日期为例,如果模型不需要知道一个人具体在哪一分哪一秒出身,很多情况下以年月为阈值划分就足够了。

模型离散的话,我们以树模型为例。树模型是靠对特征空间进行分割,并在每个子空间中用常量建模,得到预测结果的。

特征划分的结果,最终反映为树的叶子结点,因此用某个连续值特征被划分到哪个叶子结点,自然就实现了连续特征的离散化。

03

离散型特征

对离散特征,我们考虑其连续化和离散化的过程。

  • 离散特征的连续化

一篇文章,由很多不同的单词组成;一个视频,则可以有很多的标签,如演员、导演、地区、语言、豆瓣评分等。单词和标签都是离散的,如何得到一个取连续值的特征呢?

下面介绍One hot、TF-IDF和embedding三种方法。

1.One hot 编码

One hot编码依赖一个由所有“单词”组成的“词典”。将词典里的单词排一个固定顺序,假设有10000个单词,即对应一个10000维的向量。对不同的文章,如果对应的单词在文章中出现,即将相应的维度编码为1,否则为0。这样所有的文章都会转化为10000维的向量。

2.TF-IDF编码

One hot编码有两个问题,一是没有考虑某个单词在一篇文章中出现的次数,二是没有考虑不同单词的刻画能力大小。

某个单词在一篇文章中出现的次数除以文章里单词总数,称之为“词频”,即TF: Term Frequency。

不同的单词,对属性的刻画能力差别很大。比如,“的”这种词,可能在各种文章中都会频繁出现,但不足以说明这篇文章的类型;但“债券”、“期权”这种词,在一篇文章中出现,就说明这篇文章很大可能是在讲金融相关。

所以,一个单词在多少比例的文章中出现过,也是一个很重要的因素。对这个比例取倒数,然后取对数,称之为“逆向文本频率”,即IDF: Inverse document frequency。

综合考虑“词频”和“逆向文本频率”,求两者的乘积,就有了TF-IDF的编码方式。

3、Embedding编码

One hot和TF-IDF的编码,都把每个单词或标签当成一个独立的个体(在特征空间中是彼此正交的),而没有考虑它们之间的联系。比如,“成龙”、“李连杰”作为电影的标签,两者之间的联系,显然比和“巩俐”这个标签的联系更大。

Embedding的编码,考虑了各个单词之间的联系,将这些单词嵌入到了一个低维的特征空间中,从而实现了一种既能表征彼此之间联系又能降维的编码方式。限于篇幅,这里不再详述,有兴趣的同学可以去研究Word2vec等Embedding模型。

  • 离散特征的离散化

离散特征的取值,不一定都需要转化为数值,比如上文提到的树模型;但对更多模型而言,特征的值是需要做数值运算的,因此对离散特征有时也需要做离散化的处理。对类别型特征和序列型特征,其处理方式又有所不同。

对类别型特征,可以采用上文提到的One hot编码。

比如,对类型1、2、3和4,可以分别编码为(1 0 0 0)、(0 1 0 0)、(0 0 1 0)和(0 0 0 1)。为了缩短编码的长度,也可以采用二进制编码,则同样的这4个类型,可以分别编码为(0 0 1)、(0 1 0)、(0 1 1)和(1 0 0)。

对序列型特征,在编码的时候,需要考虑维持原来特征的大小关系。比如,对身高的“高”、“中”、“低”而言,有“高”> “中”>“低”的关系,那么编码出来也要维持这种关系。如果分别编码为t1、t2和t3,则t2必需要介于t1和t3之间。

04

特殊特征的处理

有时候,根据模型的需要,需要对一些特征做特殊处理。这里以时间特征和地理特征为例,进行说明。

对时间特征,有时候模型用到的并不是其绝对量,而是相对量,这个情况下就需要求差值。

比如,想知道一个影片热度,需要参考上映年份这个特征,但模型要的并不是“2018”这个值本身,以2000年为基准的话,“2018”转化为“18”才是需要的。另外,时间也可以按“年-月-日-小时”等拆解为层级特征,这样金融危机可能就跟年份有关,而气温和降雨量等具有周期性的量,就会和月份有关。

对地理特征,也需要根据模型的需要,选择特定的处理方式。比如,对一个全球的GPS系统应用,地理特征很好的标示是(经度,维度)。但对一个邮政或者外卖这样的系统而言,更好用的还是拆解的层级特征,“省-市-区-县-乡-镇”等。

05

缺失值处理

数据来源及处理过程中的各种因素,都可能会导致特征出现缺失值的问题。对树模型来说,缺失值不是个问题,模型可以自行处理。但对其他大多数模型而言,缺失值是需要处理掉的。

缺失值处理的方式主要有两种,筛除和填充。

如果样本足够多,而有缺失值的样本占总体的比例并不大,这种情况下,可以采用最简单粗暴的方式,直接筛除掉就好了。但如果,样本本来就不够充分,又或者有缺失值的样本占了很大比例,这时候就需要考虑对缺失值进行填充了。对连续型特征,一般用均值或者中位数进行填充;而对离散型特征,则更多用众数进行填充。

小结

本文在特征选择的基础上,进一步讨论了特征表达的问题,主要涉及连续和离散型特征的编码方式、特殊特征的处理和缺失值处理等方面。

对文中提到的归一化,我们认为也是特征表达的一个方面,但这个问题不太核心,且限于篇幅,不再详述。下篇文章将是特征工程系列的最后一篇,届时会讨论特征评估的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019/10/23 09:41:01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习 | 特征工程(数据预处理、特征抽取)
所谓特征工程即模型搭建之前进行的数据预处理和特征提取。有时人们常常好高骛远,数据都没处理好就开始折腾各种算法,从第一开始就有问题,那岂不是还没开始就已经结束了。所以说啊,不积跬步无以至千里,生活中的每个细节,都可能创造人生的辉煌。
week
2021/11/29
2.4K0
机器学习 | 特征工程(数据预处理、特征抽取)
面对各种数据怎么处理 : 特征工程之特征表达
地址:https://www.cnblogs.com/pinard/p/9032759.html
机器学习算法工程师
2018/07/26
1.3K0
特征工程系列:特征预处理(下)
关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~
木东居士
2019/08/16
2.6K0
特征工程系列:特征预处理(下)
特征工程的方法论,一般都这么做
向AI转型的程序员都关注了这个号👇👇👇 机器学习AI算法工程   公众号:datayx AI算法工程师交流群 一.为什么要做特征工程 1.选对模型有用的特征,让模型达到尽可能大的性能(准确率); 2.剔除掉无用特征,减少模型的过拟合,增加模型泛化能力; 2.对有用特征做相应变化处理,减少模型复杂性,增加模型的性能; 二.特征工程都要做什么 1.特征采集评估 主要是评估需要采集的成本,特征的完整性,特征的有效性 2.特征预处理 做特征的定性分析,缺失值、异常值,基本特征编码和变化 3.特征无量纲化 将特征从
机器学习AI算法工程
2022/06/10
1.1K0
特征工程的方法论,一般都这么做
干货分享 | 详解特征工程与推荐系统及其实践(附PPT)
云脑科技机器学习训练营11月13日正式开始啦!量子位作为合作媒体独家为大家分享课程干货内容。 本期内容简介 主题:亿级用户电商平台推荐系统挑战 主讲人:张本宇(云脑科技创始人&CEO) 从事人工智能十
量子位
2018/03/23
2.1K0
浅谈微视推荐系统中的特征工程
本文作者:hannahguo,腾讯 PCG 推荐算法工程师 在推荐系统中,特征工程扮演着重要的角色。俗话说数据和特征决定了机器学习算法的上限,而模型、算法的选择和优化只是在不断逼近这个上限。特征工程的前提是收集足够多的数据,使用数据学习知识,从大量的原始数据中提取关键信息并表示为模型所需要的形式。本文主要说明微视,这种富媒体形态的短视频平台,是如何通过视频内容特征以及用户属性和行为数据,来精准预测用户对短视频的喜好的。 引言 本文主要是跟各位读者分享特征工程领域的一些通用方法和技巧,以及微视在特
腾讯技术工程官方号
2019/12/06
2.7K0
浅谈微视推荐系统中的特征工程
特征工程
举例梯度下降实例说明归一化的重要性,若两个特征的取值范围不一样,则在学习速率相同的情况下,范围小的特征更新速度会大于取值范围大的特征,需要较多的迭代才能找到最优解。若将两个特征归一化到相同的数值区间,两特征的更新速度变得更为一致,容易更快地通过梯度下降找到最优解。
全栈程序员站长
2021/05/20
4550
特征工程方法综述
根据文章内容撰写摘要总结
DevOps时代
2017/07/12
6.5K2
特征工程方法综述
【技术分享】推荐系统中的自动化特征工程
在机器学习的各个子领域中,特征工程都扮演着重要的角色。业界有这么一句话,数据和特征决定了机器学习算法的上限,而模型、算法的选择和优化只是在不断逼近这个上限。通过运用领域知识,在原始数据集中构造解释变量,有利于机器学习模型预测目标。传统的特征工程方法是运用与问题相关的领域专业知识,从数据集中提取特征。我们称之为手动特征工程,手动特征工程的缺点在于繁琐耗时,对于不同的问题需要重新开始,过于依赖人的经验与判断。因此,研发自动特征工程就尤为重要。
腾讯云TI平台
2020/06/10
3.1K0
特征工程之数据预处理(上)
分别介绍了确定项目终极目标、选择损失函数、获取数据以及构建测试集,接下来在进入选择算法和训练模型之前,一个很重要的步骤就是特征工程,它包括了对数据的预处理、特征提取、特征分析以及特征构建等几个步骤,可以说能否训练一个好的模型,除了选择合适的算法,准备好数据也是非常关键的!
kbsc13
2019/08/16
8050
NLP从词袋到Word2Vec的文本表示
在NLP(自然语言处理)领域,文本表示是第一步,也是很重要的一步,通俗来说就是把人类的语言符号转化为机器能够进行计算的数字,因为普通的文本语言机器是看不懂的,必须通过转化来表征对应文本。早期是基于规则的方法进行转化,而现代的方法是基于统计机器学习的方法。
mantch
2019/07/30
1.4K0
NLP从词袋到Word2Vec的文本表示
52道机器学习常见面试题目
有监督学习:对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。这里,所有的标记(分类)是已知的。因此,训练样本的岐义性低。
1480
2019/11/07
1.9K0
52道机器学习常见面试题目
推荐系统特征工程的万字理论
推荐系统是机器学习的一个子领域,并且是一个偏工程化、在工业界有极大商业价值的方向。大量应用于提供toC类产品的互联网企业服务中,通过推荐系统为用户提供精准的个性化服务。推荐系统通过推荐算法来为用户生成个性化推荐结果,而推荐算法依赖数据输入来构建算法模型。
Sam Gor
2020/01/15
3.3K0
推荐系统特征工程的万字理论
特征工程-特征提取(one-hot、TF-IDF)
特征工程是机器学习中的第一步,会直接影响机器学习的结果。可以说数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。特征工程包括特征提取、特征预处理和特征降维等。
唔仄lo咚锵
2022/11/02
2.2K0
特征工程-特征提取(one-hot、TF-IDF)
特征工程系列:空间特征构造以及文本特征构造
关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~
木东居士
2019/12/10
1.5K1
特征工程系列:空间特征构造以及文本特征构造
特征工程(完)
这也是特征工程系列最后一篇文章,介绍特征提取、特征选择、特征构建三个工作,通常特征工程被认为分为这三方面的内容,只是我将前面的数据&特征预处理部分都加入到这个系列。
kbsc13
2019/08/16
9720
特征工程之特征表达
          在特征工程之特征选择中,我们讲到了特征选择的一些要点。本篇我们继续讨论特征工程,不过会重点关注于特征表达部分,即如果对某一个特征的具体表现形式做处理。主要包括缺失值处理,特殊的特征处理比如时间和地理位置处理,离散特征的连续化和离散化处理,连续特征的离散化处理几个方面。
刘建平Pinard
2018/08/07
9000
《美团机器学习实践》第二章 特征工程
从数学角度讲,特征工程就是将原始数据空间变换到新的特征空间,或者说是换一种数据的表达方式,在新的特征空间中,模型能够更好地学习数据的规律。
Marigold
2023/08/24
7520
《美团机器学习实践》第二章 特征工程
图解机器学习特征工程
上图为大家熟悉的机器学习建模流程图(扩展阅读:一文全览机器学习建模流程(Python代码)),整个建模流程非常重要的一步,是对于数据的预处理和特征工程,它很大程度决定了最后建模效果的好坏。
算法进阶
2023/09/01
1.4K0
图解机器学习特征工程
贝叶斯分类算法
贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。
润森
2019/09/27
1.1K0
贝叶斯分类算法
相关推荐
机器学习 | 特征工程(数据预处理、特征抽取)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档