本文将探讨 20 项特征工程的最佳实践与启发性结论,包括指标变量、交互特征、特征表达、外部数据引入、错误分析等,希望能够帮助大家顺利踏上特征工程之旅。
作为为机器学习创建新特征的实现过程,特征工程已经成为改进预测模型的最具实效的方法之一。
获取特征难度极高、相当耗时且要求具备专业知识。“应用机器学习”在本质上其实就是在实现特征工程。
—— Andrew Ng
通过特征工程方法,你将能够提取关键信息、突出数据模式并引入你的领域专长。但由于特征工程突出的开放性,极易令实施者陷入困境。
作为一个非正式议题,特征工程可能拥有多种潜在定义。事实上,由于机器学习流程的流动性与迭代性,我们很难为特征工程找到概念层面的惟一“正确答案”。
根据自身理解,我们将特征工程定义为“基于现有的特征创建新特征,以提升模型性能的过程”。
典型的数据科学流程可能如下所示:
项目范围设定 / 数据收集
探索性分析
数据清理
特征工程
模型训练(包括交叉验证以调整超参数)
项目交付 / 获得见解
上述流程意味着我们会将一些步骤明确排除在特征工程范畴之外:
我们认为 初始数据收集 并不属于特征工程。
同样的,我们认为 创建目标变量 不属于特征工程。
我们认为删除重复项、处理丢失值或者修复错误标记类并不属于特征工程,我们将这些纳入 数据清理 范畴。
我们认为 特征缩放或者归一化 不属于特征工程,因为此类步骤归属于交叉验证循环(即在你已经建立起分析基表之后)。
最后,我们认为 特征选择或者主成分分析(PCA) 并不属于特征工程。这些步骤同样归属于交叉验证循环。
再次强调,这些只是我们给出的分类意见。我们接受其他数据科学家对此提出的质疑,毕竟特征工程本身就属于一个开放性概念。
免责声明到此结束,下面让我们进一步探讨与之相关的最佳实践与启发性结论。
特征工程的第一种类型是利用指标变量提取关键信息。
现在,有些朋友可能会问,“好的算法不是应该自行学习关键信息吗?”
这个嘛,情况并非总是如此,具体取决于你所拥有的数据量以及竞争信号的强度。你可以通过预先突出重要内容帮助算法对其给予“关注”。
来自阈值的指标变量: 我们假设你正在研究美国消费者对于酒精饮料的偏好,而当前数据集包含年龄特征 age。您可以创建一个指标变量 age>=21 以区分达到合法饮酒年龄的受试者。
来自多种特征的指标变量: 假设你正在预测房地产价格,并且已经掌握了 n_bedrooms与 n_bathrooms 两项特征。如果拥有两卧两卫的房产在出租时拥有溢价性,你就可以创建一项指标变量对其进行标记。
针对特殊事件的指标变量: 假设你正在为电子商务网站的每周销售情况建模。你可以为黑色星期五与圣诞节那两周分别创建两项指标变量。
类组指标变量: 假设你正在分析网站转换率,而当前数据集包含 traffic_source 这一分类特征。你可以通过标记“Facebook 广告”或者“谷歌广告”为 paid_traffic 创建指标变量。
转自:大数据杂谈