Auto ML自动特征工程

特征工程是在做机器学习训练的过程中必不可少的环节,特征工程就是找出对模型结果有益的特征交叉关系,通常特征工程需要耗费算法工程师大量的精力去尝试。针对这样的场景,PAI推出智能特征交叉组件,基于该组件可以帮助您锁定哪些特征的交叉是有意义的。本文介绍智能特征交叉组件的使用方法。

流程图

智能特征交叉基于深度学习框架TensorFlow开发,底层有大量并行化计算的工作,需要使用GPU。目前只有北京和上海两个区域支持该功能。

总流程图:

说明 使用首页模板列表创建项目时,需要修改智能特征交叉组件的模型输出路径为您自己账号的OSS地址。

1.开通GPU和OSS访问权限

  1. 登录PAI控制台
  2. 单击左侧导航栏设置,在基本设置处开通GPU和OSS访问权限。

2.数据分桶

目前智能特征交叉组件只支持BIGINT型的数据交叉,考虑到平时业务中的原始数据通常是如下图所示的Double类型:

所以使用SQL组件或Onehot组件将字符型数据转为BIGINT型,另外需要使用特征离散组件进行特征分桶,将不同区间的特征按照分布的不同划分到不同的数据桶之中。数据经过分桶之后变为如下形态:

3.确定特征范围

特征交叉的基本原理是将特征先按照向量空间展开,然后做特征间的相互交叉验证,最终挑选出合理的特征组合方式。在计算之前需要知道每个特征的空间的最大值,如下面这组数据:

  • thalach的特征最大值为4
  • oldpeak的特征最大值为3
  • ca的特征最大值为4

执行如下SQL语句获取最大值。

select max(feature) from table

在本实验样例数据中,所有分桶完的特征的最大值均为4。

于是智能特征交叉的特征长度范围要写成如下图样式。其中5表示开区间[0,5),包含4。

4.生成训练和测试数据

本实验使用的训练数据和测试数据是相同的表,实际使用中也可以把测试数据替换成跟训练数据字段相同的不同表。

5.智能特征交叉

  • 字段设置

输入桩左侧是训练数据,右侧是测试数据。

  • 交叉特征字段选择:选择需要交叉验证的特征字段。
  • 是否为稀疏数据:默认不选中。表示稠密数据。
  • 目标列:选择目标列字段。
  • 模型输出路径:生成的模型存于OSS中。
  • 参数设置                                                                                                                                                                                                                                                                                                                       
  • 遍历次数:迭代次数。
  • 特征阶数:指特征交叉阶数。如3,表示结果最多计算出3个特征之间的交叉。

PAI命令:

PAI -name fives_ext -project algo_public     
    -DlabelColName="ifhealth"   //目标列    
    -Dmetric_file="metric_log.log" //日志    
    -Dfeature_meta="[5,5,5,5,5,5,5,5,5,5,5,5,5]"     
    -DtrainTable="odps://项目名/tables/表名"      
    -Dbuckets="oss://{oss_bucket}/"     
    -Dthreshold="0.5"     
    -Dk="3"     
    -DossHost="oss-cn-beijing-internal.aliyuncs.com" //区域    
    -Demb_dims="16"     
    -DenableSparse="0"     
    -Dtemp_anneal_steps="30000"     
    -DfeatureColName="sex,cp,fbs,restecg,exang,slop,thal,age,trestbps,chol,thalach,oldpeak,ca"    //特征    
    -DtestTable="odps://项目名/tables/表名"     
    -Darn="acs:ram::********:role/aliyunodpspaidefaultrole"  //rolearn    
    -Depochs="1500"     
    -DcheckpointDir="oss://{oss_bucket}/{path}/";

结果查询

在OSS根目录下,亦即Dbuckets路径下找到interactions.json文件。

文件显示的是各种组合的关系:

结果显示的是一些启发性的特征交叉组合方式,您可以按照该特征进行特征组合,举例如下:

  • [0,1]代表着第一个特征和第二个特征组合会有效果,特征顺序跟输入表的特征顺序一致。
  • [8, 6, 5]代表一个三阶特征组合关系。第七个、第五个、第四个这三个特征组合起来会有效果。

Auto ML自动特征工程的更多相关文章

  1. python 机器学习库 —— featuretools(自动特征工程)

    文档:https://docs.featuretools.com/#minute-quick-start 所谓自动特征工程,即是将人工特征工程的过程自动化.以 featuretools 为代表的自动特 ...

  2. 手把手教你用Python实现自动特征工程

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...

  3. Auto ML自动调参

    Auto ML自动调参 本文介绍Auto ML自动调参的算法介绍及操作流程. 操作步骤 登录PAI控制台. 单击左侧导航栏的实验并选择某个实验. 本文以雾霾天气预测实验为例. 在实验画布区,单击左上角 ...

  4. 【转】浅谈自动特征构造工具Featuretools

    转自https://www.cnblogs.com/dogecheng/p/12659605.html 简介 特征工程在机器学习中具有重要意义,但是通过手动创造特征是一个缓慢且艰巨的过程.Python ...

  5. 浅谈自动特征构造工具Featuretools

    简介 特征工程在机器学习中具有重要意义,但是通过手动创造特征是一个缓慢且艰巨的过程.Python的特征工程库featuretools可以帮助我们简化这一过程.Featuretools是执行自动化特征工 ...

  6. 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)

    本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26  ...

  7. Auto-ML之自动化特征工程

    1. 引言 个人以为,机器学习是朝着更高的易用性.更低的技术门槛.更敏捷的开发成本的方向去发展,且Auto-ML或者Auto-DL的发展无疑是最好的证明.因此花费一些时间学习了解了Auto-ML领域的 ...

  8. <转>特征工程(二)

    出处: http://blog.csdn.net/longxinchen_ml/article/details/50493845, http://blog.csdn.net/han_xiaoyang/ ...

  9. 想搞机器学习,不会特征工程?你TM逗我那!

    原文:http://dataunion.org/20276.html 作者:JasonDing1354 引言 在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而 ...

随机推荐

  1. php与mysql 绑定变量和预定义处理

    非select 语句(没有结果集的) 1.建立连接数据库 $mysqli=new mysqli("localhost","root","", ...

  2. Python中pip安装报错Unable to create process using '....'

    因为我本人在电脑上安装了python2和python3,所以在安装的时候,把两个python的安装目录都安装到G盘了.然后两个python的执行文件分别改成了 python2.exe 和  pytho ...

  3. Win64 驱动内核编程-13.回调监控模块加载

    回调监控模块加载 模块加载包括用户层模块(.DLL)和内核模块(.SYS)的加载.传统方法要监控这两者加在必须 HOOK 好几个函数,比如 NtCreateSection 和 NtLoadDriver ...

  4. c# 通过 p/invoke 使用 c的加密程序 参数传递问题

    最近项目中使用需要上位机和下位机通过rs232通信,涉及到通讯加密问题, 硬件那边主要是pcb layout的,于是我就把加密的活拦了过来,锻炼锻炼 首先说明问题: 在c中,加密解密都测试通过,然后在 ...

  5. 安装和简单使用apidoc

    安装nodejs 参考链接 安装apidoc 参考链接 使用 https://www.bilibili.com/video/BV1MW411Q7g4 https://www.bilibili.com/ ...

  6. SSM项目使用Spring提供的测试

    在测试类上添加注解@RunWith(SpringJUnit4ClassRunner.class)和@ContextConfiguration(locations = {"classpath: ...

  7. 006-Java的访问权限控制符和包导入机制

    目录 一.Java的访问权限控制符 一.访问控制符的作用 二.访问控制符的分类 二.Java的包导入机制 一.为什么要使用package? 二.package怎么用? 三.对于带有package的ja ...

  8. Convert character array to string in MATLAB

    Matlab提取特征值是经常要读取多个图片文件,把文件名保存在数组中后再读取会出错.从stackoverflow中找到如下解决方法: I've a M by N matrix, each cell c ...

  9. [并发编程 - socketserver模块实现并发、[进程查看父子进程pid、僵尸进程、孤儿进程、守护进程、互斥锁、队列、生产者消费者模型]

    [并发编程 - socketserver模块实现并发.[进程查看父子进程pid.僵尸进程.孤儿进程.守护进程.互斥锁.队列.生产者消费者模型] socketserver模块实现并发 基于tcp的套接字 ...

  10. zimbra安装ssl证书

    zimbra在后台安装证书签发机构签发证书出现时候出现错误:{RemoteManager: mail.domain.com->zimbra@mail.domain.com:22} com.zim ...