OpenFE: Automated Feature Generation with Expert-level Performance 的理论分析部分
在论文《OpenFE: Automated Feature Generation with Expert-level Performance》中作者对理论结论给出了详细的分析过程,这篇博客对该部分进行阅读和记录。
论文概况 | 详细 |
---|---|
标题 | 《OpenFE: Automated Feature Generation with Expert-level Performance》 |
作者 | Tianping Zhang, Zheyu Zhang, Zhiyuan Fan, Haoyan Luo, Fengyuan Liu, Qian Liu, Wei Cao, Jian Li |
发表会议 | International Conference on Machine Learning(ICML) |
发表年份 | 2023 |
会议等级 | CCF-A |
论文代码 | https://github.com/IIIS-Li-Group/OpenFE |
作者单位:
- Institute for Interdisciplinary Information Sciences (IIIS), Tsinghua University, Beijing, China
- School of Data Science, The Chinese University of Hong Kong (Shenzhen), Shenzhen, China
- Paul G. Allen School of Computer Science & Engineering, University of Washington, Seattle, U.S.
- Sea AI Lab, Singapore
- Microsoft Research Asia, Beijing, China.
问题定义#
数据集定义#
考虑一个具有数值特征和类别特征的回归问题。
符号 | 说明 |
---|---|
Xnum⊆Rd | 数据集的数值型特征空间,是 d 维的凸向量。 |
Xcat⊆N | 数据集的类别型特征空间 |
Y⊆[0, 1] | 目标域 |
Dtrain | 包含 n 个样本 {(Xi, Yi)}i=1,...,n 的训练集 |
Dtest | 包含 m 个样本 {(Xi, Yi)}i=n+1,...,m 的训练集 |
Xi=(xi0,xi1,…,xid) | 一个样本 包括 1 个类别特征 xi0∈Xcat 和 d 个来自 Xnum 的数值特征 |
数据模型#
训练集 Dtrain 和测试集 Dtest 由两阶段过程生成,涉及的符号如下表所示。在机器学习和统计学习中,假设类 F 是一组函数的集合,它们可以映射输入数据到输出标签或预测值。真实假设 f∗ 是一个特定的函数,它真正描述了输入数据与输出标签之间的真实关系,机器学习的目标就是找到一个函数能够尽可能地接近f∗。
符号 | 说明 |
---|---|
∆(Xcat) | Xcat 上定义的空间所有概率分布 |
Q | 在 ∆(Xcat) 上定义的概率分布 |
g(i) | 表示包含第 i 个样本 (X,Y) 的组的索引 |
F | 假设类 |
f∗:Xnum × Xcat→Y | 真实假设,使得 Yi=f∗(xi1,…,xid,Zi) |
X∼Pg(i) | 表示从 g(i) 的数值特征分布中随机抽取的样本 X |
Zi=EX~Pg(i)[X] | Zi 是 d 维向量,表示一组样本的统计特征的平均值 |
假设分类特征值 c1,…,ck1,ck1+1,…,ck1+k2 都是不同的,通过重复以下 k1 次生成 Dtrain:
- 第 i 次迭代中,首先从 Q 中取一个样本 Pi∈∆(X cat),其中 Pi是 Xcat 上的一个分布。
- 对一组 h 个训练样本进行采样,每个训练数据点的分类特征值为 ci∈Xcat,因此这 h 个训练数据 Xih+1,…,X(i+1)h 具有相同的类别特征值 ci∈Xcat,构成第 i 组 Gi。
此时 Dtrain 包含 k1 个组 G1,…,Gk1,使用 g 表示可得 (Xi,Yi)∈Gg(i)。测试数据集 Dtest 以同样的方式生成,它包含 k2 组 Gk1+1,…,Gk1+k2。
特征生成#
此处使用 GroupByThenMean 等操作生成特征,GroupBy 操作基于类别特征 Xcat 对于样本进行聚合。因此对于一个数据点 Xi 可以从同一组 Gg(i) 中的所有数据点计算,生成一组新的特征 X^i。形式上设 H 为可能特征生成函数的集合,新特征的计算公式为:
对于特征生成函数 H 和预测器 f,数据点(Xi,Yi) 上的损失为:
目标是找到一个特征生成函数 H 和一个预测器 f,使测试损失最小化:
如果不使用任何特征生成,预测器 f' 的损失很简单:
Theorem A.1 及其证明#
对于特定的特征生成函数 H,使用 Radk(F) 表示 F 在 k 个随机样本的经验 Rademacher 复杂度:
公式中的符号如下表所示,假设当 k1→∞ 时 Radk1(F)→0,且 Radk1 的规模与 O(√(1/k1)) 成正比。也就是样本数量的增加,假设空间 F 中的函数在随机标签上的平均表现会趋近于零。这是计算学习理论中一个常见的假设,用于保证学习的泛化能力。
符号 | 说明 |
---|---|
σ=(σ1,…,σk) | 独立的 Rademacher 变量 |
Xi | 来自 Pi 的第 i 个样本 |
Pi | 来自 Q 的第 i 个样本 |
接着假设任意函数 f(·,·)∈F 是 z 上是 Lipschitz 连续的,对于任意 Z1、Z2、x∈X 和 f∈F,存在常数 CF 使得 |f(X,Z1)−f(X,Z2)|≤ CF||Z1−Z2||。Lipschitz 连续性是函数稳定性的一种度量,它限制了函数在输入发生微小变化时输出能变化的最大幅度。在机器学习中这通常是一个好的性质,Lipschitz 连续说明能保证模型对输入数据的微小变化具有鲁棒性。
最后定义特征向量的范数界限,假设存在常数 Bx,使得对于所有 x∈X,都有 supx∈X||x||≤Bx,其中 X 是输入空间,||⋅|| 是某种范数运算。这个假设限制了输入数据 x 的范数的大小,这有助于在理论分析中避免一些极端情况(如无限大的输入值)。
本文提出的定理 1 为:存在一个特征生成函数 H,使得经验风险最小化器 f 的测试损失有界于如下公式所示的量,概率至少为 1−δ。特别是当 k1, h→∞ 时,测试损失趋近于 0。
接下来对这个定理进行证明,将特征生成函数固定为 GroupByThenMean,使用公式表示为:
然后算法最小化经验风险的 f 为:
根据 Hoeffding 不等式和每个维的并集界,对于某个具体的 g(i),如下不等式给出了 ||X^i-Zi|| 的上界,其成立的概率至少为 1−δ/(2(k1 + k2))。通过对所有 group 应用并界,这个命题对所有 i 都成立,且概率至少为 1−δ/2。解释一下这个不等式,不等式的左侧计算了估计均值 X^i 与真实均值 Zi之间的范数运算值,不等式的右侧给出了这个值的一个上界,这个上界是通过应用 Hoeffding 不等式得到的。
其中不等式左边表示第 i 组数据的经验均值(或估计值)X^i 与该组数据在真实分布 Pg(i) 下的期望值 Zi=EX∼Pg(i)[X] 之间的范数差。
对不等式的右式展开讲一下推导过程,首先给出 Hoeffding 不等式:若 x1,x2,…,xm 为 m 个独立随机变量,且满足 0≤xi≤1,则对任意 ε>0 有:
笔者的计算过程如下所示,本文中的一组 h 个训练样本对应 Hoeffding 不等式的 m。考虑 h 个样本包含 d 维特征,根据每个维的并集界,不等式左边需要乘 d。本人推导的结果和作者在文中的结果差了 4d,但是形式上是一致的,且和论文分析并不冲突。最后根据上面定义的特征向量的范数界限,给 ε 乘上常数 Bx 即可得到作者给出的不等式。
回到证明的过程,此时对于任意函数 f∈F 有如下不等式链(2)成立。
解释一下这个不等式链,第一个不等式是通过平方差公式和绝对值不等式得到的。
在第二个不等式中,第一部分主要使用了上文推导的 ||X^i-Zi|| 的上界和函数 f 的 Lipschitz 性质,也就是如下不等式。其中 ||Z^i-Zi|| 被简化为 ||X^i-Zi||,因为它们在这里表示相同的量——估计均值与真实值之差。
第二部分则是由于 Y⊆[0,1],在最坏情况下 f(X^i,Zi) 和 f(Xi,X^i) 做出的决策与目标值 Yi 完全相反,即 f(X^i,Zi)=1 和 f(Xi,X^i)=1 但是 Yi=0,或 f(X^i,Zi)=0 和 f(Xi,X^i)=0 但是 Yi=1。因此可以得到如下不等式成立,将两个式子相乘可得论文给出的不等式是成立的。
定义 H* 为如下公式,也就是特征转换函数 GroupByThenMean 的期望形式。
此时根据论文中给出的不等式链(2)和损失函数的定义,可以得到如下两个不等式也是成立的。
注意此时每个样本并不是独立同分布的,因为一组中的任意两个样本是相关的,所以需要定义针对一个 group 的 Rademacher 复杂度来约束泛化误差。group Rademacher 复杂度如下公式所示,可见就是在 Rademacher 复杂度的 L(H,F,Xi,Yi) 添加了归一化项。
此时如果将每个组视为一个独立的随机样本(尽管组内的数据点是相关的),则这些组可以暂且看作是独立同分布的。因此可以应用 Rademacher 复杂度的经典泛化界限得到公式(3),对于任何函数 f∈F,公式(3)至少 1−δ/2 的概率成立。
此外可以看出:对于独立同分布样本,group Rademacher 复杂度可以由普通 Rademacher 复杂度来估计上界,如公式(4)所示,其中 Gi,j 是组 Gi 中的第 j 个元素。不等式(4)表明:对于由独立同分布样本组成的组,其 group Rademacher 复杂度可以被基于整个数据集的普通 Rademacher 复杂度估计上界。
根据并集界,对于所有 f∈F 都以至少 1−δ 的概率满足公式(2)和(3)。在这种情况下,由于 f∗ 是真实假设,它的经验风险满足 LDtrain(H∗,f∗)= 0,此时可以得到不等式链(5)。不等式链的第一个不等式表示通过经验风险最小化得到的假设 f^,在训练集上的表现至少不会比真实情况 f∗ 更差,最后一个不等式是通过公式(2)计算得到。
最后即可按如下过程计算测试损失 LDtest(H,f^),其中第二个不等式由公式(3)和公式(5)成立,最后一个不等式由公式(4)成立。
解释一下这个式子是将测试损失 LDtest(H,f^) 分解为如下几个部分,至此定理 1 推导完成。
公式 | 损失类型 | 说明 |
---|---|---|
LDtest(H,f ^)-LDtest(H∗,f ^) | 近似误差 | 由于选择的特征生成函数 H 不是最优的 H∗ 而导致的 |
LDtest(H∗,f ^)-LDtrain(H∗,f ^) | 估计误差 | 由于训练集和测试集之间的差异,也就是数据分布的估计误差而导致的 |
LDtrain(H∗,f ^)-LDtrain(H,f ^) | 优化误差 | 由于在训练集上优化模型时没有达到最优解,也就是 H 不是通过训练集优化得到的最佳特征生成函数而导致的 |
LDtrain(H,f ^) | 训练损失 | 实际在训练过程中需要最小化的损失 |
在定理 1 中只考虑 H 只包含一个特定操作 GroupByThenMean 的情况,也可以将上述设置扩展为具有多个特征生成功能的设置,但公式可能会变得非常复杂。本文作者的目标是说明特征生成的统计优势,因此选择的是一个简化但具有代表性的设置。
Theorem A.2 及其证明#
作者提出的定理 2 为:在不使用任何特征生成算子的情况下,存在这样一个问题实例——对于任意函数 f':X→Y,无论 k1(训练集中的组数)、k2(测试集中的组数)、h(每组的大小)有多大,测试损失都至少为:
接下来进行证明,考虑一个具有 X=Y=[0,1] 的问题,使用 B(p) 表示伯努利分布:Pr[B(p)=1]=p=1−Pr[B(p)=0]。数据集按照以下方式生成:
- 每个组包含 h 个数据点,第 i 组的分布 Pg(i) 随机地在 B(3/4) 和 B(1/4) 之间选择,且两者被选中的概率相等。也就是在每个组中 X 在分布 Pg(i) 下的期望值 Zi 都是 3/4 或 1/4。
- Xi是一个 0/1 随机变量,根据 Zi 的值独立同分布地从 B(3/4) 或 B(1/4) 生成。具体来说,如果 Zi=3/4,则 Xi 从 B(3/4) 生成;如果 Zi=1/4,则 Xi 从 B(1/4) 生成。
- 假设数据点的目标值 Yi 由 Yi=f∗(Xi,Zi)=Zi 给出,也就是每个数据点的目标值直接等于其所在组的期望值 Zi。
总结一下就是在这个问题中,数据被组织成多个组,每个组内的数据点共享一个共同的“期望值” Zi,它决定了组内数据点 Xi 的生成方式,同时 Zi值还直接作为该组内所有数据点的目标值 Yi。当 Xi=1 时,Yi 有 1/4 和 3/4 两种取值:Yi=1/4 的概率为 1/4,Yi=3/4 的概率为 3/4,Xi=0 时同理。
当 Xi=1 时,Yi=1/4 的概率由如下公式计算,同理 Yi=3/4 的概率为 Pr[Yi=(3/4)|Xi=1]=3/4。
考虑平方误差的期望表达式,对于任何预测因子 f': X→Y 如下公式成立:
如果将期望表达式当做是一个二次函数,则通过变形之后显然平方项 (t−5/8)2 始终非负,得到其最小值为 3/64。
同理也有 EXi=0[||Yi−f'(Xi)||2]≥3/64。因此,对于任何预测因子 f' 的测试损失至少为:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步