来源:Deephub Imba
本文约1800字,建议阅读8分钟
本文我们将通过一个示例介绍如何使用 ATOM 包来快速比较两种自动特征生成算法。

特征工程是从现有特征创建新特征的过程,通过特征工程可以捕获原始特征不具有的与目标列的额外关系。这个过程对于提高机器学习算法的性能非常重要。尽管当数据科学家将特定的领域知识应用特定的转换时,特征工程效果最好,但有一些方法可以以自动化的方式完成,而无需先验领域知识。

在本文中,我们将通过一个示例介绍如何使用 ATOM 包来快速比较两种自动特征生成算法:深度特征合成 (Deep feature Synthesis, DFS) 和遗传特征生成 (Genetic feature generation, GFG)。ATOM 是一个开源 Python 包,可以帮助数据科学家加快对机器学习管道的探索。

基线模型

为了进行对比,作为对比的基线只使用初始特征来训练模型。这里使用的数据是来自 Kaggle的澳大利亚天气数据集的变体。该数据集的目标是预测明天是否会下雨,在目标列 RainTomorrow 上训练一个二元分类器。

import pandas as pd
from atom import ATOMClassifier# Load the data and have a look
X = pd.read_csv("./datasets/weatherAUS.csv")
X.head()

初始化实例并准备建模数据。这里仅使用数据集的一个子集(1000 行)进行演示。下面的代码估算缺失值并对分类特征进行编码。

atom = ATOMClassifier(X, y="RainTomorrow", n_rows=1e3, verbose=2)
atom.impute()
atom.encode()

输出如下所示。

可以使用 dataset 属性快速检查数据转换后的样子。

atom.dataset.head()

数据现在已准备好。本文将使用 LightGBM 模型进行预测。使用 atom 训练和评估模型非常简单:

atom.run(models="LGB", metric="accuracy")

可以看到测试集上达到了 0.8471 的准确率。下面看看自动特征生成是否可以改善这一点。

DFS

DFS 将标准数学运算符(加法、减法、乘法等)应用于现有特征,并组合这些特征。例如,在我们的数据集上,DFS 可以创建新特征 MinTemp + MaxTemp 或 WindDir9am x WindDir3pm。

为了能够比较模型,需要为 DFS 管道创建了一个新分支。如果你不熟悉 ATOM 的分支系统,请查看官方文档。

atom.branch = "dfs"

使用 atom 的 feature_generation 方法在新分支上运行 DFS。为了起见,这里只使用加法和乘法创建新特征(使用 div、log 或 sqrt 运算符可能会返回具有 inf 或 nan 值的特征,所以还需要再次进行处理)。

atom.feature_generation(strategy="dfs",n_features=10,operators=["add", "mul"],
)

ATOM 是使用 featuretools 包来运行 DFS的 。这里使用了 n_features=10,因此从所有可能的组合中随机选择的十个特征被添加到数据集中。

atom.dataset.head()

再次训练模型:

atom.run(models="LGB_dfs")

需要注意的是

  • 在模型的首字母缩写词后添加标签 _dfs 以不覆盖基线模型。

  • 不再需要指定用于验证的指标。atom 实例将自动使用任何先前模型训练的相同指标。在我们的例子中为accuracy。

看起来 DFS 并没有改进模型。结果甚至变得更糟了。让我们看看 GFG 的表现如何。

GFG

GFG 使用遗传编程(进化编程的一个分支)来确定哪些特征是有效的并基于这些特征创建新特征。与 DFS的盲目尝试特征组合不同,GFG 尝试在每一代算法中改进其特征。GFG 使用与 DFS 相同的运算符,但不是只应用一次转换,而是进一步发展它们,创建特征组合的嵌套结构。在使用运算符 add (+) 和 mul (x),特征组合的方式可能是:

add(add(mul(MinTemp, WindDir3pm), Pressure3pm), mul(MaxTemp, MinTemp))

在使用时与 DFS 一样,首先创建一个新分支(从原始 master 分支将 DFS 排除),然后训练和评估模型。同样,这里创建了 10 个新特征。

注意:ATOM 在底层使用 gplearn 包来运行 GFG。

atom.branch = "gfg_from_master"
atom.feature_generation(strategy="GFG",n_features=10,operators=["add", "mul"],
)

可以通过 generic_features 属性访问新生成的特征、它们的名称和适应度(在遗传算法期间获得的分数)的概述。

atom.genetic_features

这里需要注意的是,由于特征的描述可能会变得很长(看上图),因此将新特征将被编号命名为例如feature n,其中 n 代表数据集中的第 n 个特征。

atom.dataset.head()

再次运行模型:

atom.run(models="LGB_gfg")

这次得到了 0.8824 的准确率,比基线模型的 0.8471 好得多!

结果分析

所有三个模型都已训练完毕可以分析结果了。使用 results 属性可以查看所有模型在训练集和测试集上的得分。

atom.results

使用 atom 的 plot 方法可以进一步比较模型的特征和性能。

atom.plot_roc()

使用 atom 可以绘制多个相邻的图,查看哪些特征对模型的预测贡献最大

with atom.canvas(1, 3, figsize=(20, 8)):atom.lgb.plot_feature_importance(show=10, title="LGB")atom.lgb_dfs.plot_feature_importance(show=10, title="LGB + DFS")atom.lgb_gfg.plot_feature_importance(show=10, title="LGB + GFG")

对于两个非基线模型,生成的特征似乎是都最重要的特征,这表明新特征与目标列相关,并且它们对模型的预测做出了重大贡献。

使用决策图,还可以查看特征对数据集中单个行的影响。

atom.lgb_dfs.decision_plot(index=0, show=15)

总结

本文中比较了在使用两种自动特征生成技术生成的新特征对于模型预测的表现。结果显示使用这些技术可以显着提高模型的性能。本文中使用了ATOM包简化处理训练和建模流程,有关 ATOM 的更多信息,请查看包的文档。

ATOM的github地址:

https://github.com/tvdboom/ATOM

使用的kaggle数据集地址:

https://www.kaggle.com/jsphyg/weather-dataset-rattle-package

编辑:王菁

深度特征合成与遗传特征生成,两种自动特征生成策略的比较相关推荐

  1. 特征工程之自动特征生成(自动特征衍生)工具Featuretools——深度特征合成

    深度特征合成 深度特征合成(DFS)是一种用于对关系数据和时间数据执行特征工程的自动方法. 输入数据 深度特征合成需要结构化数据集才能执行特征工程.为了演示DFS的功能,我们将使用客户交易数据集. I ...

  2. Featuretools 学习3 - 深度特征合成

    深度特征合成 深度特征合成(Deep Feature Synthesis, DFS)是一种用于对关系和时间数据执行特征工程的自动化方法. 输入数据 DFS需要结构化的数据集才能执行特征工程.以下演示使 ...

  3. 跨店购买每满400减50,部分商品每满199减20。把这两种满减策略分别用类型1和2表示,下面,请根据小明购买的商品价格,算算他一共省了多少钱(假设小明有足够多的购物津贴)。

    题目描述 2019年9月马云退休,现任CEO张勇接任.你知道吗?2009年中下旬,时任淘宝商城总裁的张勇和他的团队,为了做大淘宝商城的品牌,策划了一个嘉年华式的网上购物节,当时他们选择11月,因为它刚 ...

  4. 关于深度学习中concat和eltwise两种特征融合方式用处的猜想

    在对网络不同地方的特征进行融合时,尤其是在深层网络融合浅层网络的特征的时候我们需要用到这两种融合方式,这两者的使用有有什么区别吗? 在实际中,直接使用eltwise将当前的深层特征与浅层的特征融合时效 ...

  5. GEE:两种遥感影像的中值合成方法

    目录 前言 一.两种实现方法 二.python代码 1.加载影像集 2.两种合成方法 3.两种方法的差异比较 三.小结 前言 如何使用GEE实现影像的中值合成或最大值合成(median composi ...

  6. ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生

    ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生 目录 基于load_mock_customer数据集(模拟客户)利用f ...

  7. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)

    ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征.利用featuretools工具实现自动特征生成) 目录 基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征 ...

  8. 机器学习的未来——深度特征融合

    摘要: 深度特征融合是一项能够克服机器学习不足,为机器学习打开通往未来大门的新技术.新技术要不要了解一下? 即使是最敏锐的技术布道师也无法预测大数据对数字革命的影响.因为他们最初的关注点都聚焦在了扩大 ...

  9. 特征工程之自动特征生成(自动特征衍生)工具Featuretools介绍

    源文件地址:https://docs.featuretools.com/ 参考内容:https://blog.csdn.net/q337100/article/details/80804887 Fea ...

最新文章

  1. linux 系统日志 查看被杀掉的进程(占用内存过大)
  2. 《python核心编程第二版》第5章习题
  3. window编程_消息分类
  4. Linux网站服务Apache+php+mysql的安装
  5. linux命令(8)wc
  6. 饱和非线性(saturating nonlinearities)和非饱和非线性(non-saturating nonlinearities)的区别(转载)
  7. 计算机视觉论文-2021-09-10
  8. spark视频-Spark on Yarn
  9. python3怎么安装mysql_Python3下mysqlclient的安装和使用
  10. [python][原创]win10 anaconda3报错cannot import name ‘open_code‘ from ‘io
  11. Java项目 yaml明文密码加密
  12. 学编程必看:10道逻辑思维测试题(附答案)
  13. 使用FFmpeg进行摄像头视频采集
  14. wifi文件传输linux,wifi挂载Linux文件系统
  15. 2 会计要素和会计科目
  16. 3D视觉学习计划之PCL库的基础知识
  17. Android.网络连接状态(联网,2g,3g,wifi等)
  18. 一款热电偶冷端补偿电路
  19. PHP microtime 返回当前 Unix 时间戳和微秒数
  20. oracle ebs R12审批流程

热门文章

  1. app图标圆角角度_怎样使用sketch绘制标准APP图标圆角矩形背景?
  2. 高德地图2020最新版下载导航wince_导航定位错误致青城山严重拥堵,高德地图回应:已优化...
  3. Atlassian发布Kubernetes节点自动化扩展工具Escalator
  4. 我有一个计划001之数据挖掘面试(更新ing)
  5. Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店...
  6. 浏览器数据库IndexedDB介绍
  7. 安装 Homestead 可能会出现的一些 Problems
  8. Hibernate一级缓存
  9. 预写式日志(Write-Ahead Logging (WAL))
  10. 解决ngnix服务器上的Discuz!x2.5 Upload Error:413错误