01 AutoML概述

记得若干年前的某次周会上,我说“AutoML不光是调参,应该包含自动特征工程。”当时得到了大佬们的嘲讽,说我不懂技术瞎说。今天回过头来看AutoML是一个系统化的体系,包含3个要素:

  1. 自动特征工程AutoFeatureEng

  2. 自动调参AutoTuning

  3. 自动神经网络探索NAS

02 NNI概述

NNI(NerualNetworkIntelligence)是微软发起的一个AutoML开源工具,覆盖了上文提到的3要素,地址:

https://github.com/SpongebBob/tabular_automl_NNI

我目前只学习了自动特征工程这一个模块,总体看微软的工具都有一个比较大的特点,技术可能不一定多新颖,但是设计都非常赞。NNI的AutoFeatureENG基本包含了用户对于AutoFeatureENG的一切幻想。在微软做PD应该挺幸福吧,底层的这些个框架的设计都极为合理。

03 细说NNI-AutoFeatureENG

使用是非常简单的,安装下文件中的require,然后

pip install NNI 

NNI把AutoFeatureENG拆分成exploration和selection两个模块。exploration主要是特征衍生和交叉,selection讲的是如何做特征筛选。

04 特征Exploration

在特征衍生方面,微软教科书般的把特征衍生分成以下一些方式:

count:传统的统计,统计一些数据的出现频率

target:特征和目标列的一些映射特征

embedding:把特征看成句子,用word2vector的方式制作向量

crosscount:特征间除法,有点类似CTR

aggregete:特征的min/max/var/mean

nunique、histstat::这两个没太看懂

具体特征怎么交叉,哪一列和哪一列交叉,每一列特征用什么方式衍生呢?可以通过search_space.json这个文件控制。

Exploration的目的就是长生出新的特征。在代码里可以用get parameter的方式获取tuning的参数:

    RECEIVED_PARAMS = nni.get_next_parameter()

05 特征Selection

为了避免特征泛滥的情况,避免过拟合,一定要有Selection的机制挑选特征。这里微软同学用了个小心机,在特征筛选的时候主推了同样是他们自己开源的算法lightGBM,

了解xgboost或者GBDT算法同学应该知道,这种树形结构的算法是很容易计算出每个特征对于结果的影响的。所以使用lightGBM可以天然的进行特征筛选。弊病就是,如果下游是个LR这种线性算法,筛选出来的特征是否具备普适性。跑通后产出的结果包含了每个特征的value以及属性。

06 总结

NNI的AutoFeature模块是给整个行业制定了一个教科书般的标准,告诉大家这个东西要怎么做,有哪些模块,使用起来非常方便。但是如果只是基于这样简单的模式,不一定能达到很好的效果。我觉得在Exploration方面可以引用一些DNN的特征组合方式,提取更高维度的特征。在Selection方面可以有更多的智能化方案,比如可以基于下游的算法自动选择Selection机制。

总之NNI在设计曾给了我一些启发,还是一个挺好的开源项目,推荐给大家~大家用的时候如果是Mac电脑可能会遇到gcc的问题,因为开源项目自带的脚本是基于gcc7编译的,可以用下面的方法绕过去。

brew install libomp

微软NNI-业内最亲民的AutoML工具学习笔记(1):AutoFeatureENG相关推荐

  1. Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例

    Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...

  2. Postman接口测试工具学习笔记(一)接口测试概念及Postman入门

    (下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...

  3. Design Compiler工具学习笔记(7)

    目录 引言 背景知识 多时钟设计 DC 输出文件分析 实际操作 设计源码 综合脚本 综合网表 SDF文件 SDC文件 REPORT文件 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 综合之后 ...

  4. Design Compiler工具学习笔记(5)

    目录 引言 知识储备 代码风格 DFT 实际操作 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 工作机理和工作过程 以及简单介绍 DFT. 前文链接: Design Compiler工具学习 ...

  5. Design Compiler工具学习笔记(6)

    目录 引言 知识储备 实际操作 设计源码 仿真源码 VCS执行仿真 DC 综合 TCL编程练习 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 综合之后的效果分析,重点在时序分析. 前文链接: ...

  6. locust工具学习笔记(三)-Tasks属性、tag修饰符、TaskSet类

    locust工具学习笔记(三) 虚拟用户数分配和权重的关系 1.一个场景文件中如果定义多个用户类,用来对不同用户行为进行压测时,可以用weight属性来控制用户行为执行权重 2.当用户权重不足1人时, ...

  7. VCS工具学习笔记(4)

    目录 引言 VCD文件及生成 实际操作 makefile 编译仿真 打开波形文件 其他 1.$vcdpluson() 参数更改 2. $vcdplusmemon() 3.__FILE__  , __L ...

  8. VCS工具学习笔记(3)

    目录 引言 技术文档 DVE介绍 实践 使用技巧总结 调用光标 局部区域放大 全局查看 进制切换 信号分组 数据查找 信号比较 单步调试 设置总线 PLI/DPI 引言 按照视频的讲解进度,继续学习 ...

  9. GDB调式工具学习笔记---断点

    GDB调式工具学习笔记---断点 2.断点 2.1 示例代码 2.2 常用命令 2.2.1 display和undisplay 2.2.2 break(b) 2.2.3 continue(c) 2.2 ...

最新文章

  1. rstudio怎么安装ggplot2_如何基于ggplot2构建相关系数矩阵热图
  2. windbg-!process显示进程
  3. python自动测试p-python自动化测试_8
  4. netty+mina 区别概要
  5. linux 安装软件_Linux:其它软件安装方式
  6. 吴忠军 - 如何理解马云所说的月入两三万,三四万的人最幸福?
  7. SparkStreaming窗口入门
  8. clr20r3 程序终止的几种解决方案_IT外包桌面解决方案——不慌,蓝屏而已
  9. PHPStorm常用快捷方式
  10. wap jsp 开发
  11. 用VB制作自己的IE网页浏览器
  12. Deepin - 装机必备软件记录
  13. CAD制图初学入门:CAD软件中如何进行弧长标注?
  14. XML Explorer(简单易用的XML中文编辑器)
  15. web前端几个小知识点笔记
  16. 记录看到的crash相关的好网页
  17. 卫生人才网计算机考试,国家医学考试:2017医师资格考试计算机化考试系统体验操作步骤...
  18. comsol学习中心:网格划分基础操作
  19. 传世单机 设置GM账号
  20. QTranslate国际化及多语言切换

热门文章

  1. PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询
  2. C++STL之next_permutation使用
  3. 扫描仪图标无法显示计算机,win7“我的电脑”中不显示扫描仪和摄像头的原因和解决方法...
  4. springboot第十一讲
  5. mybatis第一讲:初探mybatis实现简单的查询
  6. 每次执行java命令 都要source_跟着平台混了四年,现在要单飞了!
  7. 为什么计算机桌面图标不见了,电脑桌面图标都没了,详细教您电脑桌面图标都没了怎么恢复...
  8. 主板19针接口_【新品上市】D4双通道还能组RAID!华南B365D4主板6/7/8/9代全兼容!...
  9. as3 访问远程计算机,Flash AS3中数据发送与接收
  10. android导出excel文件名称,android 导出数据到excel表格文件