原创: JunLiang 木东居士 1周前
特征工程系列:特征构造之概览篇
本文为数据茶水间群友原创,经授权在本公众号发表。
关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~
0x00 前言
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。
那特征工程是什么?
特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。
特征工程又包含了 Data PreProcessing(数据预处理)、Feature Extraction(特征提取)、Feature Selection(特征选择)和 Feature construction(特征构造)等子问题,本章内容主要讨论特征构造的方法。
创造新的特征是一件十分困难的事情,需要丰富的专业知识和大量的时间。机器学习应用的本质基本上就是特征工程。
——Andrew Ng
0x01 特征构造介绍
特征构造意味着从现有的数据中构造额外特征,这些特征通常分布在多张相关的表中。特征构造需要从数据中提取相关信息并将其存入单张表格中,然后被用来训练机器学习模型。这需要我们花大量的时间去研究真实的数据样本,思考问题的潜在形式和数据结构,同时能够更好地应用到预测模型中。
特征构建需要很强的洞察力和分析能力,要求我们能够从原始数据中找出一些具有物理意义的特征。对于表格数据,特征构建意味着将特征进行混合或组合以得到新的特征,或通过对特征进行分解或切分来构造新的特征;对于文本数据,特征够自己按意味着设计出针对特定问题的文本指标;对于图像数据,这意味着自动过滤,得到相关的结构。
特征构造是一个非常耗时的过程,因为每个新的特征通常需要几步才能构造,特别是当使用多张表的信息时。我们可以将特征构造的操作分为两类:“转换”和“聚合”。
0x02 转换
通过从一或多列中构造新的特征,“转换”作用于单张表(在 Python 中,表是一个 Pandas DataFrame )。
例子:客户表信息如下
通过查找 joined 列中的月份或是自然对数化 income 列的数据来构造新的特征。这些都是转换操作,因为它们只用到了一张表的信息。
0x03 聚合
“聚合”是跨表实现的,并使用一对多的关联来对观测值分组,然后计算统计量。
例子:若有另外一张包含客户贷款信息的表格,其中每个客户可能有多项贷款,我们便可以计算每个客户贷款的平均值、最大值和最小值等统计量。
这个过程包括根据不同客户对贷款表进行分组并计算聚合后的统计量,然后将结果整合到客户数据中。以下是我们在 Python 中使用 Pandas 库执行此操作。
0x04 特征构造具体方法
以下机器学习中特征构造的常用方法:
注:由于图像和语音涉及的专业知识比较多,此处不对图像特征构造和语音特征构造展开讨论。
0x0FF 总结
特征构造是一个非常耗时的过程,因为每个新的特征通常需要几步才能构造,特别是当使用多张表的信息时。我们可以将特征构造的操作分为两类:“转换”和“聚合”。
很多机器学习比赛都是直接给出了训练集(特征+类标),我们可以对给出的特征进行“转换”操作,构造更多的特征。而在实际的工作中,很多时候我们都没有现成的特征,需要自己进行“聚合”操作从多个原始数据表中构造出模型所需要的特征。
例如,用户行为数据表中每条记录为某个用户的一次浏览行为或一次点击行为,我们需要通过“聚合”操作构造出用户的行为特征(如:用户最近一次浏览的时长、用户最近一次登录的点击次数等特征),然后再使用“转换”操作来构造更多特征,最后再使用这些特征训练模型。
后续文章将对特征构造展开详细讨论,欢迎大家留言讨论~
预告:下一篇文章将介绍聚合特征构造以及转换特征构造。
参考文献
[1] Feature Tools:可自动构造机器学习特征的Python库. https://www.jiqizhixin.com/articles/2018-06-21-2
特征工程系列文章:
热门文章