预测建模中的正则化与扩增

许多使用 Tableau 的人可能不使用预测建模,更不用说寻找方法来提高预测模型的拟合和预测质量。本文适用于对数据科学这一领域感兴趣的高级用户。

除了目标表达式(要预测的度量)和预测因子表达式(用于进行预测的度量和/或维度)等默认参数外,您还可以再添加两个参数来微调您的预测 :lambda、正则化参数和扩增。这涉及到将新参数添加到计算的语法中。

哪些模型可与正则化和扩增一起使用?

提醒一下,Tableau 中的预测建模函数支持三种模型:线性回归(也称为普通最小二乘回归,或 OLS)、正则化线性回归(或岭回归)和高斯过程回归。如果您使用线性回归或岭回归,则扩增允许您提高模型拾取非线性模式的能力。如果您使用的是岭回归,则正则化参数是一个标量,可用于调整模型上的正则化效果。

正则化和扩增不适用于高斯过程回归

在进一步讨论正则化和扩增之前,让我们回顾一下以下两个模型:

线性回归最适合用于预测和预测目标之间有线性关系的一个或多个预测因子,它们不受相同基础条件的影响,并且它们不表示同一数据的两个实例(例如,以美元和欧元表示的销售额)。

正则化线性回归用于提高稳定性,减少共线性的影响,并改善计算效率和泛化。在 Tableau 中,使用 L2 正则化。有关 L2 正则化的详细信息,请参见有关岭回归的课程。

什么是正则化?

岭回归是一种特定的正则化线性回归。正则化对模型系数的大小施加了惩罚。正则化的强度由 lambda 控制,后者是用于微调正则化整体影响的标量。值越高,惩罚越重(即正则化程度越高)。

岭回归解决了线性回归的一些问题:

  • 它消除了预测因子间多重共线性带来的病态。

  • 如果最小二乘问题是病态的,例如如果数据点的数量少于特征的数量,那么 lambda 将选择唯一的解。

  • 它为提高线性模型的泛化能力提供了一种途径。

默认情况下,Tableau 中的岭回归具有 lambda=0.5,因为此值在许多情况下效果良好。若要更改 lambda 值,只需编辑表计算(如下例所示)。

什么是扩增?

MODEL_QUANTILE 和 MODEL_PERCENTILE 的扩增是数据扩增的一个简单示例:预测因子扩展到更高阶的多项式。在 Tableau 中,预测建模函数内置了几种类型的多项式加法。

  • 对于有序维度勒让德多项式高达 3 阶,使得线性模型能够获得增强预测因子和响应之间的二次和三次关系。

  • 对于度量,二次埃尔米特多项式允许线性模型获得增强预测器和响应之间的二次关系。

在线性回归中,默认情况下,只有有序维度在 augmentation=on 的情况下被扩增;在 model=rl 的岭回归中,默认情况下仅增加度量。若要覆盖设置并禁用计算中每个预测因子的扩增,请使用 augmentation=off;不会添加更高阶的多项式。

当数据集非常小时,关闭扩增是有利的,因为扩增可能过度拟合原始数据中存在的任何噪音,也因为由此产生的关系更简单、更直观。

注意:基于每个预测因子(即,在您的计算的预测因子参数内)打开/关闭扩增。Lambda(和模型)应用于更高级别(在任何预测因子表达式之外)。

在计算中配置 lambda 和扩增

现在,您了解了正则化参数(或 lambda)以及数据扩增,让我们在预测计算的上下文中查看它们:

MODEL_QUANTILE("model=rl, lambda=0.05", 0.5, SUM([Profit]), "augmentation=off", SUM([Sales]))

下表快速总结了更改默认的扩增和 lambda 是否会影响线性模型:

 扩增Lambda
岭回归
线性回归不适用

正则化和扩增注意事项

  • 如果您的数据模型错误,则更改正则化参数或扩增不太可能产生明显更好的效果。考虑查看数据类型是否正确(度量与维度)。例如,如果基础数据是时间系列,请考虑使用高斯过程回归,方法是使用 model=gp 更改表计算中的模型。

  • 由于 OLS 未正则化,因此没有可以更改的 lambda 值。

  • 如果您的数据集非常小,并且您具有维度(尤其是高基数维度),则考虑通过在表中添加 model=rl 来使用岭回归。

  • 在所有条件相同的情况下(对于相同的数据集,如果启用或禁用扩增),较低的 lambda 可能会改善拟合,但会损害泛化(导致过度拟合)。

  • 相反,高 lambda 可能会将拟合推到一个恒定模型,而不依赖于任何预测因子。这将减少模型容量(导致欠拟合)。

示例 1

这个例子显示了男性和女性的平均胆固醇和心脏病之间的关系,其中男性用方形标记表示,女性用圆圈表示。

在第一个可视化项中,蓝色标记表示预测目标,橙色标记表示建模值。您可以看到,数据非常嘈杂,在启用增强功能和较小的 lambda 值 0.01 的情况下,我们会看到不切实际的心脏病发病率大于 1。这种依赖性太大了,可能是由于噪声数据中的所有离群值造成的。

按性别划分的心脏病,具有预测目标和拟合较差的模型

MODEL_QUANTILE("model=rl, lambda=0.01", 0.5, AVG([Target]), ATTR([Sex]), "augmentation=on", AVG([Chol]))

在下一个可视化项中,我们将预测目标与不同的模型进行比较,扩增关闭,lambda 值关闭 10。请注意,此模型更符合实际,并且没有任何标记超过发病率 1。

按性别划分的心脏病,具有预测目标和更好的模型

MODEL_QUANTILE("model=rl, lambda=10", 0.5, AVG([Target]), ATTR([Sex]), "augmentation=off", AVG([Chol]))

示例 2

接下来,让我们看看另一个使用 Boston’s Bluebikes(前身为 Hubway)自行车共享系统的乘客数据的真实示例。在这种情况下,线性回归效果良好。将汇总到 2017 年各季度的以下可视化项进行比较:

没有过度拟合的 Hubway 乘车数据图

MODEL_QUANTILE('model=rl, lambda=0.05', 0.5, sum([Trip.Duration]), AVG([Temp]))

没有过度拟合的 Hubway 乘车数据图

MODEL_QUANTILE('model=rl, lambda=0.05', 0.5, AVG([Speed]), AVG([Temp]))

两者都不太容易过度拟合,所以对于一个小的 Lambda 来说,对 lambda 的依赖是很弱的。

现在看看最后这一个可视化项:

没有过度拟合的 Hubway 乘车数据图

MODEL_QUANTILE('model=rl, lambda=2', 0.5, sum([Trip.Duration]), AVG([Temp]))

请注意,随着 lambda 的增加,拟合变得平坦到没有坡度(也就是说,变得过度正则化或“欠拟合”)。

感谢您的反馈!您的反馈已成功提交。谢谢!