机器学习之特征工程

背景

整理一下特征工程相关的知识。吴恩达曾经说过:"特征工程不仅操作困难,耗时,而且需要专业领域知识。应用机器学习基本上就是特征工程"。坊间也有流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

特征工程涉及到的知识非常多,慢慢整理。

初稿:2018-12-13

具体说明

1、什么是特征工程

当我们从大量数据中去学习的时候,原始数据需要经过抽象,总结,处理才能更好的更好的表达,方便我们后续的学习。一般我们有两种对原始数据的表达学习的方式:

第一种是特征学习,又叫表示学习或表征学习,模型自动对输入的原始数据进行学习。常见的比如深度学习。

第二种是特征工程,主要指对于数据的人为处理提取,有时候可以理解为人工的"数据挖掘"。其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。

选择哪种方式的根本,在于假设。我们会假设 数据分布,假设函数等,一切的假设都来自人对数据的理解,这是人类的先验经验。在数据量小,或者早期模型简单的时候,人类的先验假设经验对学习结果帮助作用很大,而随着数据量的增大,函数变的复杂,人对数据的理解越来越肤浅,做出的假设不再靠谱,那么往往摆脱人类的经验束缚,会更加有效。

2、特征工程的一般过程

2.1 特征发现

对于一个模型,需要人为的总结整理,基于业务分析,找到与目标相关的自变量。确认自变量后,还要做可用性评估:特征获取难易程度,特征的覆盖度,特征的准确率。

原则上讲:与目标越相关,越容易获取,覆盖度越高,准确率越高的应该优先被挖掘。这一步一般需要行业专家(当然大部分公司都是有经验的开发或者产品来),用excel或者脑图一个一个整理出来,是一个费力的活。

2.2 特征挖掘

收集数据:需要明确特征挖掘的数据来源以及更新频次,这块在实际业务中很关键,很多时候挖掘的特征的原始数据没有,需要从头到尾推动埋点,需要实时获取的可能也不实时,需要推动解决。

需要注意的是,往往越接近用户的数据越真实,有效。而距离用户最近的,就是客户端用户行为操作日志。比如能用客户端impression的就绝对不用服务端下发impression。

特征提取:从类型上看,一般我个人对特征有两种分法:一种是按照来源来分,包括用户特征,物品特征,环境特征,组合特征四种。第二种是数据类型来分,包括:

①标称属性:这种属性往往经过字段抽取就可以直接得到,属于静态信息,比如用户所在城市

②二元属性:这种一般需要转化,比如用户是否付费,表示为0,1

③序列属性:比如用户等级

④数值属性:这种往往都需要经过统计计算得到。

明确了获取特征的方式后,还得考虑特征的存储方式。一般特征需要快速的读写操作,所以特征存储方案至关重要。

特征预处理:现实世界的数据一般是脏的,不完整的,不一致的,所以提到的原始特征一般都是有问题的。特征预处理可以改进数据的质量,从而有助于提高其后挖掘的准确率跟效率。一般来说,预处理包括:

①数据清理:填写缺失值,光滑噪声数据,识别或者删除离群点,解决不一致性

②数据集成:合并来自多个数据存储的数据

③数据归约:维规约,数值规约

④数据变换:离散化,概念分层产生,规范化

以上概念都来自数据挖掘的课本,为了方便大家理解,举一些简单的例子:填写缺失值:比如有大量的用户的性别是缺失的,是不是可以根据她的阅读习惯用模型反推预测中她的性别?(回归预测填充),比如年龄数据,有用户的年龄采集上来为130岁,如果离散到50岁以下,50岁以上就可以光滑(光滑噪声数据)。解决不一致性:比如有些表里时间是2018-12-14 这样表达的,有一些是2018/12/14这样表达的,就需要转化为一致的编码格式(编码不一致)等。

所以,在数据预处理阶段,不管是开发还是产品,都需要不嫌麻烦的不断抽取样本做一些评估,看看重要数据的分布情况,是否符合预期。数据处理上的严谨,对后面的结果至关重要。

机器学习 2018-09-25
上一篇: 下一篇:

评论已关闭。