Auto ML自动特征工程

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语句获取最大值。

 max(feature) 
 
;

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

 

 

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

 

4.生成训练和测试数据

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

5.智能特征交叉

  • 字段设置

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

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

PAI命令:

PAI -name fives_ext -project algo_public     
    -DlabelColName=
   

    -Dmetric_file=
 

    -Dfeature_meta=
     
    -DtrainTable=
      
    -Dbuckets=
     
    -Dthreshold=
     
    -Dk=
     
    -DossHost=
 

    -Demb_dims=
     
    -DenableSparse=
     
    -Dtemp_anneal_steps=
     
    -DfeatureColName=
    

    -DtestTable=
     
    -Darn=
  

    -Depochs=
     
    -DcheckpointDir=
;

结果查询

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

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

 

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

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

 

posted @   吴建明wujianming  阅读(284)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示