首页 > 其他分享 >Paper Reading: SAFE: Scalable Automatic Feature Engineering Framework for Industrial Tasks

Paper Reading: SAFE: Scalable Automatic Feature Engineering Framework for Industrial Tasks

时间:2024-08-20 17:28:49浏览次数:9  
标签:Industrial 特征 复杂度 SAFE Scalable 生成 算法 所示

目录
Paper Reading 是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具体的细节还需要以原文的内容为准,博客中的图表若未另外说明则均来自原文。

论文概况 详细
标题 《SAFE: Scalable Automatic Feature Engineering Framework for Industrial Tasks》
作者 Qitao Shi, Ya-Lin Zhangy, Longfei Li, Xinxing Yang, Meng Li, Jun Zhou
发表会议 IEEE International Conference on Data Engineering(ICDM)
发表年份 2020
会议等级 CCF-A
论文代码 文中未公开

作者单位:

  • Ant Financial Services Group {qitao.sqt, lyn.zyl, longyao.llf, xinxing.yangxx, lm168260, jun.zhoujung}@antfin.com

研究动机

机器学习方法的性能在很大程度上取决于特征的质量,生成良好的特征集是模型是否有高性能的关键步骤。因此大多数机器学习工程师都要花费大量的精力来获取有用的特征,这个过程费时且乏味。在实际工业任务中对机器学习的需求不断增长,在所有任务中执行手工特征工程变得不切实际,这促进了自动特征工程 AutoFE 的研究。一些 AutoFE 方法使用基于强化学习的策略,这类方法需要多次尝试,并且需要在每一轮中生成一个新的特征集并对其进行评估,这使得它们在工业任务中难以应用。也有一些基于迁移学习或基于元学习的方法,但是它们需要在各种数据集上进行大量的实验来训练,并且难以引入新的算子或增加父特征的数量。一些方法遵循生成选择过程来运行,但是它们通常是在特征生成阶段生成所有合法的特征,然后从中选择一个子集特征,因此时间和空间复杂度极高。实际业务数据的规模通常很庞大,对空间和时间复杂度的要求很高,同时算法要具备一定的灵活性和可扩展性来支持业务的变化。

文章贡献

本文提出了一种可扩展自动特征工程方法 SAFE,它包括特征生成阶段和特征选择阶段,具备较高的计算效率、可扩展性,能满足实际业务问题的要求。不同于使用算子枚举所有的生成特征,本文的特征生成阶段专注于挖掘原始特征对,以更高的概率生成更有效的新特征。在特征选择阶段,本文的方法考虑了单个特征的信息量、特征对的冗余性、树模型评估的特征重要性。通过实验证明,SAFE 算法在大量数据集和多个分类器上具有优势,与原始特征空间相比预测精度平均提高了6.50%。

本文方法

整体框架

SAFE 的整体工作流程如下伪代码所示,所提出的自动特征工程算法是一个迭代过程,每次迭代包括特征生成和特征选择两个阶段。由于特征空间是无限的,所以穷举搜索往往无效。即使操作符和迭代的数量有限,穷举搜索也可能导致组合爆炸。为了避免这个问题,本文使用 XGBoost 挖掘当前基本特征集 Xi 之间的关系,实现缩小特征组合的搜索空间。然后根据信息增益比对特征组合进行排序和过滤,将预定义的算子应用于具有高信息增益比的特征组合上,得到新的特征集 X~i。将基本特征 xi 与生成的特征 X~i 结合,得到候选特征集,表示为 X^i= Xi∪X~i

由于特征集的数量仍然非常大,在此之后 SAFE 使用了高效的特征排序和选择方法。其基本思想是找到信息特征,去除冗余特征,然后对每个特征进行评分实现对特征的过滤。首先挑选出对标签影响较大的特征,然后利用 pearson 相关系数去除冗余特征,最后使用 XGBoost 根据使用该特性的所有分割的平均增益对其余特性进行评分。考虑到可扩展性和效率,SAFE 只选择得分最高的特征作为 Xi+1 进行下一次迭代。

特征生成

特征生成阶段的目标是利用现有的特征集 Xi 生成新的特征集 X~i,同时希望在保留有效特征的同时减少新生成的特征的数量。此时的训练集、验证集和测试集表示为 Ditrain、Divalid 和 Ditest,原始特征生成的搜索空间如公式(2)所示,其中 M 为原始特征的个数,Oi 为 i 元算子的集合。

搜索空间中的元素个数如公式(3)所示,其中 Akn 表示从 n 个元素的集合中获得 k 个元素的有序子集的方式的数量。

特征组合关系

该步骤的目的是缩小特征的搜索空间,并保留有信息的特征组合。首先在 Ditrain、Divalid 上训练一个 XGBoost。XGBoost 模型中的基学习器是如下图所示的回归树,此处称 {x(i)} 为拆分特征、{vi} 为对应的拆分值,不作为拆分特征的特征称为非拆分特征。叶子节点的父节点表示为 lj,从根节点到 li 的树的路径上的不同分裂特征可以表示为 pi,例如图中的 p1={x(1),X (2),X(3)} 和 p1={x(1),X (2),X(4)} XGBoost 模型中所有树的所有 k 条路径都可以表示为 P={p1,…,pk}。

SAFE 使用 XGBoost 主要基于两个基本假设:

  1. 对于一元算子,基于分裂特征生成的特征比基于非分裂特征生成的特征更有效;
  2. 对于其他算子,基于相同路径的分裂特征生成的新特征比基于不同路径的分裂特征生成的新特征效率更高,后者仍然比基于非分裂特征生成的新特征效率更高。

基于这两个基本假设,可以在这些路径上找到特征或特征组合进行特征生成。这种方式的搜索空间如下公式所示,其中 k 是路径的个数,Oi 表示 i 元算子的集合。

搜索空间中元素的最大个数如下公式所示,其中 pji 表示路径上的第 j 个特征。不同路径上的一些特征组合可能是相同的,所以实际的数量会比这个值小得多。

排序特征组合

为了进一步缩小特征生成的搜索空间,使用信息增益比对搜索空间中的特征和特征组合进行排序。取有 q 个元素的特征组合 {x(1),…,X(q)} 为例,目前已经知道它们产生划分的阈值组成的向量 V1,…,Vq,产生划分的特征和阈值可以将所有记录分成 Πqi=1(|Vi|+1) 个部分。
用这些部分的信息熵减去原始信息熵可以计算出信息增益比,该阶段算法的伪代码如下所示。

生成特征

使用信息增益比最高的 γ 个特征或特征组合生成 ∑Mi=1i×|Oi|) 个新特征X~i,其中 γi 表示具有 i 个特征的特征组合的个数。由于搜索和生成的特征数量远少于穷举搜索,因此可以在大型数据集上使用迭代特征生成策略。

特征选择

候选特征 X^i 由本次迭代中的基本特征 Xi 和生成的特征 X~i 组成,这些特征重要性可能不相等。为了高效地选择信息量更大的特征,采用了包含 3 个步骤的特征选择过程:

  1. 根据信息值去除预测能力较低的特征;
  2. 根据 pearson 相关系数去除冗余特征;
  3. 使用 XGBoost 对剩余的特征进行排序。

去除无信息特征

由于一些候选特征对目标影响很小或没有影响,所以第一步是去除预测能力低的特征,该阶段算法的伪代码如下伪代码所示。

信息值 IV 是衡量一个特征对目标的影响程度的指标,公式如下公式所示。其中 np 和 nn 分别表示所有正样本和负样本的个数,nip 和 nin表示第 i 个 bin 中正样本和负样本的数量。

下表是用于删除低预测能力的特征的经验法则,通常选择预测能力中等和较强的变量进行模型开发,本文取特征选择的阈值为 α=0.1。

去除冗余特征

此时的候选特征具有一定的预测能力,但有些特征是冗余的。此时只需要保留其中一个特征,该阶段算法的伪代码如下所示。

皮尔逊相关性用于表示两个特征线性相关的程度,绝对值为 1 表示两个特征完全线性相关,绝对值为 0 表示两个特征之间不存在线性关系。特征 x(i) 与 x(j) 之间的 Pearson 相关性计算公式如下,其中 x(i) 与 x(j) 表示特征 i 和特征 j 的所有元素的平均值。

通常使用下表的取值范围来判断变量的相对强度,此处将 pearson 相关的阈值 θ 设为 0.8,最后使用 XGBoost 根据所有分割的平均增益对剩余的候选特征进行排序

复杂度分析

SAFE 框架在挖掘特征组合关系和特征重要性排序阶段时,主要的复杂度来源于训练 XGBoost 的过程。它们的时间复杂度分别为 O(N·M·K1·D1 + N·M·logR) 和 O(N·M^BK2D2 + N·M^B· logR),其中的符号的含义如下表所示。

符号 含义
K1 和 K2 树的总数
D1 和 D2 树的最大深度
R 每个块的最大样本数
M^B 去除冗余特征后的特征数

特征生成和去除无信息特征后的特征个数分别表示为 M^ 和 M^A,其他四个阶段的时间复杂度为:

算法步骤 时间复杂度
特征组合排序 2D1·K1·A2D1 个二进制特征组合,该阶段的复杂度为 O(2D1·K1·N·D12)
特征生成 将生成 γ2×
去除低信息特征 算法 3 的第三步和第四步的时间复杂度分别为O(N) 和 O(N),总时间复杂度是 O(M^N)
去除冗余特征 每个特征对计算一次 pearson 系数,Pearson 系数计算的时间复杂度为 O(N),该阶段的总时间复杂度为 O(N(M^A)2)

XGBoost 中的树通常并不深,所以可以将 D 视为常量并忽略它。对于数据量较大的实际数据集,logR < logN < M < M^C < M^B < M^A < M^ << N,M^2|O2|, logR < K1,K2。所以 SAFE 的整体时间复杂度如下公式所示,可见可以通过控制 XGBoost 的树总数来控制生成的特征数量和算法的时间复杂度。

算法的时间复杂度和空间复杂度都很低,可以根据实际需要灵活调整。SAFE 算法对用户很友好,不需要像基于强化学习和迁移学习的方法那样学习繁琐的模型。超参数仅用于控制算法的复杂度,设置并不复杂。使用的 XGBoost 被公认为是一种具有良好并行性的算法,同时单个特征的信息值和每个特征对的 pearson 相关性也可以并行计算。

实验结果

数据集和实验设置

使用 12 个基准数据集上进行实验,基本信息如下表所示。

为了简单和通用性,在实验每个算法时只使用 +、−、x、÷ 四个基本的二元运算符。对比算法包括:原始特征(ORIG)、FCTree、TFC、Random(RAND) 和 SAFE-Important(IMP) 进行比较,使用 AUC 作为评价指标。

对比实验

在 AdaBoost、决策树(DT),极度随机树(ET)、KNN、逻辑回归(LR)、多层感知器(MLP)、随机森林(RF)、线性核支持向量机(SVM)和 XGBoost 共 9 种最先进的分类算法上使用每个比较算法的生成特征,实验结果如下表所示,可见 SAFE 比其他比较算法具有明显的优势。

特征重要性比较

将 M 个原始特征与排名最高的生成特征组合成一个新的数据集,使用随机森林对特征重要性进行评分。实验结果如下图所示,可见 SAFE 生成的新特征(橙色)相对于原始特征(蓝色)更重要。

运行时间

下表列出了算法的实际执行时间,可以看出 SAFE 的运行效率很高。

特征稳定性

进一步比较每种算法生成的特征的稳定性,其基本思想是:当重复自动特征工程过程时,如果每次都生成相同的特征,则生成的特征更稳定。使用 Jensen-Shannon 散度(JSD)来评估不同自动特征工程算法生成的特征分布的稳定性,它是 Kullback-Leibler 散度(KLD)的一种变体,如下公式所示。

由于 TFC 的执行时间太长所以此处没有对其进行比较,实验结果如下表所示,可见生成的 SAFE 特征的稳定性具有一定的优势。

不同迭代次数的性能

将迭代轮数设置为 5,实验结果如下图所示。可见随着迭代的进行,性能可能会进一步提高,并在几轮之后变得稳定。在几轮之后可能没有发现新的有用的特征组合,因此特征不会更新,性能保持不变。

大规模数据集实验

在大规模的商业数据集上进行实验,数据集来自蚂蚁金服的欺诈检测任务,数据集信息如下表所示。

当数据集规模过大时,TFC 和 FCTree 两种方法的执行时间太长,所以它们不进行比较。实验结果如下表所示,可见 SAFE 可以持续提高性能,验证了所提出方法在实际工业任务中的有效性。

优点和创新点

个人认为,本文有如下一些优点和创新点可供参考学习:

  1. 很多 AutoFE 的工作都是使用 expand-and-reduce 的思想进行设计,这类方法通常会用一些特征生成算子枚举所有的生成特征,造成很大的搜索空间。本文的方法能够规避这个问题,使用了 XGBoost 来挖掘具有高信息量的特征组合,具备有效性的同时效率很高;
  2. 在第二阶段,SAFE 使用了 3 种不同的特征重要性指标对更高质量的特征按序提取,能够高效、有效地对特征进行选择;
  3. 本文对 SAFE 和一些已有的 AutoFE 的工作分析了计算复杂度,并做了大量的实验分析 SAFE 的性能,说服力强。

标签:Industrial,特征,复杂度,SAFE,Scalable,生成,算法,所示
From: https://www.cnblogs.com/linfangnan/p/18364698

相关文章

  • Unsafe入门讲解
    概述作为一个8年多Javaer,曾无数次看到Unsafe这个类,但一直没有去翻过源码,此为背景。借助于IDEA查看JDK源码,却发现有两个Unsafe类:sun.misc.Unsafejdk.internal.misc.Unsafejdk.internal.misc.Unsafe和sun.misc.Unsafe作为JDK中的两个不同类,它们提供一些底层的、非标准化的功......
  • thisisunsafe
    thisisunsafechrome在Chrome浏览器中,当遇到“您的连接不是私密连接”的警告时,输入“thisisunsafe”是一个临时的绕过机制,允许用户忽略安全警告并继续访问网站。但需要注意的是,这样做会使您的连接变得不安全,容易受到中间人攻击或其他安全威胁。具体来说,当Chrome浏览器显示“您的......
  • git报错 fatal: unsafe repository 解决方法 xxx is owned by someone else
    转载来自:https://www.aspirantzhang.com/network/git-fatal-unsafe-repository.htmlgit近期进行了版本升级,添加了新的目录安全限制。造成在进行git常规操作时,或在各类编辑器如VSCode中无法发现.git文件,报错:fatal:unsaferepository(xxxisownedbysomeoneelse.)Toaddan......
  • Scalable Diffusion Models with Transformers(DIT)代码笔记
    完整代码来源:DiTDiT模型主要是在diffusion中,使用transformer模型替换了UNet模型,使用class来控制图像生成。根据论文,模型越大,patchsize越小,FID越小。模型越大,参数越多,patchsize越小,参与计算的信息就越多,模型效果越好。模型使用了Imagenet训练,有1000个分类,class_labe......
  • Context-Aware Safe Medication Recommendations with Molecular Graph and DDI Graph
    这篇文章是2023年AAAI会议上的一篇论文,主要是利用分子图和DDI图嵌入来提供上下文感知信息,从而进行安全药物推荐。链接Context-AwareSafeMedicationRecommendationswithMolecularGraphandDDIGraphEmbedding|ProceedingsoftheAAAIConferenceonArtificialInt......
  • 论文阅读:Scalable Algorithms for Densest Subgraph Discovery
    摘要密集子图发现(DSD)作为图数据挖掘的基础问题,旨在从图中找到密度最高的子图。虽然已有许多DSD算法,但它们在处理大规模图时往往不可扩展或效率低下。本文提出了在无向图和有向图上求解DSD问题的高效并行算法,通过优化迭代过程和减少迭代次数来计算核心数。同时引入了新的子......
  • Maxon industrial QCN6224 QCN6274 QCN9274 Wi-Fi 7 modules
    Highlights:EmbeddedQualcomm®QCN6224/QCN6274/QCN9274:Deliversgroundbreakingupto10Gbpsandoffersextremelyrevolutionaryhigh-speeddatatransmissiontoensureafluentexperienceincomprehensivemultiple-endsapplicationscenarios.PowerfulSigna......
  • `useHeadSafe`:安全生成HTML头部元素
    title:useHeadSafe:安全生成HTML头部元素date:2024/7/17updated:2024/7/17author:cmdragonexcerpt:摘要:“useHeadSafe”是Vue.js组合函数,用于安全生成HTML头部元素,通过限制输入值格式避免XSS等安全风险,提供了安全值白名单确保只有安全属性被添加。categories:......
  • useHeadSafe:安全生成HTML头部元素
    title:useHeadSafe:安全生成HTML头部元素date:2024/7/17updated:2024/7/17author:cmdragonexcerpt:摘要:“useHeadSafe”是Vue.js组合函数,用于安全生成HTML头部元素,通过限制输入值格式避免XSS等安全风险,提供了安全值白名单确保只有安全属性被添加。categories:前端开......
  • MySQL sql_safe_updates参数
    sql_safe_updates是MySQL中的一个系统变量,用于控制MySQL服务器是否允许在没有使用KEY或LIMIT子句的UPDATE或DELETE语句上执行更新或删除操作。当这个变量被设置为ON时,MySQL会拒绝那些可能影响到表中大量行的UPDATE或DELETE语句,除非这些语句明确使用了W......