机器学习模型中的因果关系:引入单调约束

2024-09-07 18:20

本文主要是介绍机器学习模型中的因果关系:引入单调约束,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单调约束是使机器学习模型可行的关键,但它们仍未被广泛使用欢迎来到雲闪世界。

碳ausality 正在迅速成为每个数据科学家工具包中必不可少的组成部分。

这是有充分理由的。

事实上,因果模型在商业中具有很高的价值,因为它们为“假设”情景提供了更可靠的估计,特别是在用于做出影响业务结果的决策时。

在本文中,我将展示如何通过简单的更改(实际上添加一行代码)将传统的 ML 模型(如随机森林、LightGBM、CatBoost 等)转变为回答因果问题的可靠工具。

因果 ML 模型与传统 ML 模型

假设我们在一家房地产公司工作,公司的业务是购买房屋,然后以更高的价格转售。

我们收集了过去交易过的房屋数据。数据集包含 3 个变量:

  • “平方英尺”,房屋的平方英尺数;
  • “整体状况”,对房产整体状况的数字评分,评分范围为 1 至 9(分数越高越好);
  • “房屋售价”,即房屋最终售出的价格。

以下是数据集中的前 5 栋房屋:

[作者图片]

与以相同方式处理所有特征的传统 ML 模型相比,因果 ML 模型区分了两种类型的特征:

  • 协变量特征,仅可观察到的特征;
  • 处理特征,这些特征可能会受到决策者(在本例中为我们的公司)的影响。

在我们的案例中,我们当然无法改变房屋的面积。我们能做的是通过装修改善房产状况,希望这会影响目标变量(即我们能够以更高的价格出售房屋)。

因此“平方英尺”是一个协变量特征,“整体状况”是一个治疗特征。

[作者图片]

因果模型的主要优势是能够回答因果(或“假设”)问题。

例如,假设我们公司刚刚购买了一栋新房,建筑面积为 3,000 平方英尺,当前状况评级为 5。该公司有两种选择:

  • 按原样出售房屋;
  • 花费 30,000 美元翻新房屋,将状况评级从 5 提高到 7,然后出售。

[作者图片]

公司应该做什么?

“我们应该装修这所房子吗?”

我们是数据科学家,所以我们首先想到的就是训练一个机器学习模型来预测房屋在装修前后的最终价格。

假设我们决定为此目的使用决策树。我们首先在训练数据集上拟合模型:

从sklearn.tree导入DecisionTreeRegressor decision_tree = DecisionTreeRegressor( max_depth= 3 , min_samples_leaf= 10) decision_tree.fit(X_train, y_train)

然后,我们使用该模型预测两种情况下(有或无装修)的销售价格。

X = [ [3_000, 5],3_000 , 5 ], [ 3_000 , 7 ] 
]决策树.预测(X)

以下是结果:

[作者图片]

我希望你不要与销售部门分享这些结果——他们可能会禁止你再次说“机器学习”

他们说得对。这个结果显然是荒谬的。通过翻修改善房屋状况怎么会降低其价值,使其从 36 万美元降至 24.7 万美元呢?

我们的模型肯定有问题。

由于该模型仅基于两个特征,我们可以在二维热图中直观地看到预测阈值:

[作者图片]

这个模型中有几件事完全没有意义:

  • 对于面积在 1,150 到 1,500 平方英尺之间的房屋,将其状况从 5 或更低改善到 6 或更高,会使其价值从 174,000 美元降低到 145,000 美元。
  • 同样,对于面积超过 2,300 平方英尺的房屋,将其状况从 5 或更低改善到 6 或更高,会使其价值从 36 万美元降低到 24.7 万美元。

我们不能相信这些预测。我们确信房屋装修后的价值不可能低于装修前的价值,所以我们需要一种方法将这一常识“转移”到我们的模型中。

引入单调约束

我们的 ML 模型的一个理想特性是,在我们改善房屋状况后,模型应该预测一个大于或等于原始值的值。相反,如果房屋状况更糟,则该值应该更小或相等。

因此,让我们以数据点(面积为 3,000 平方英尺且状况评级为 5 的房屋)为例,并可视化我们希望模型捕捉到的这个属性。

[作者图片]

这被称为“单调约束”,因为它没有说明关系的类型(线性、二次……),而只说明了关系的方向(非减少与非增加)

这个要求比线性约束(即线性回归施加的约束)弱得多,这是很好的,因为:

自然界中很少有关系是线性的,但自然界中的许多关系都是单调的。

这就是为什么线性回归通常表现不佳的原因:它对模型施加了线性约束,这在大多数实际情况下是一个不切实际的强假设。

薪水会随着经验的增加而增加吗?会,但只是单调增加,而不是线性增加。冰淇淋销量会随着温度的升高而增加吗?会,但只是单调增加,而不是线性增加。你懂的。

对于每个特征,我们可以想象以下三种情况之一:

  • +1:当特征增加时,预测必须大于或等于;
  • 0:没有单调约束(默认);
  • -1:当特征增加时,预测必须更小或相等。

基于我们所说的,我们需要在称为“整体状况”的特征上添加“+1”单调约束,以确保更好的分数始终对应于更高或相同的价格。

但是“平方英尺”又如何呢?

从视觉上看,这是仅对特征“整体条件”应用单调约束与将其应用于两个特征之间的区别:

[作者图片]

让我们看看左边的图。如果我们只对“整体状况”应用单调约束,我们就无法对面积不同的房屋做出任何判断。在这种情况下,我们会得到:

  • (平方英尺:3,000,整体状况:5)-> 价格:x;
  • (平方英尺:3,000,整体状况:7)-> 价格:y ≥ x
  • (平方英尺:4,000,整体状况:7) -> 价格:z,可能高于或低于xy,因为对变量“平方英尺”没有限制。

相反,在右侧的图中,我们对两个特征都应用了正约束,因此:

  • (平方英尺:3,000,整体状况:5)-> 价格:x;
  • (平方英尺:3,000,整体状况:7)-> 价格:y ≥ x
  • (平方英尺:4,000,整体状况:7)-> 价格:z ≥ y ≥ x

我认为第二种情况更符合我们的直觉。

请注意,在这些图中,我们观察了单调约束对坐标为 (3,000, 5) 的单个数据点的影响,但相同的推理也适用于数据集内的任何数据点

让我们看看将这些单调约束应用到我们的预测模型后会发生什么。

在 Python 中强制执行单调约束

好消息是,单调约束得到了最流行的 Python ML 库(如 Scikit-learn、LightGBM 和 CatBoost)的支持,只需添加一行代码即可应用。

就我们的决策树而言:

decision_tree_with_constraints = DecisionTreeRegressor(max_depth=3, 3, min_samples_leaf=10,monotonic_cst=[1,1] # this line of code adds monotonic constraints
)decision_tree_with_constraints.fit(X_train, y_train)

我们现在可以将非约束模型(左图)的预测热图与约束模型(右图)的预测热图进行比较。

[作者图片]

新的预测(右侧图表)更有意义。事实上,它们对于“平方英尺”和“总体状况”而言都是非减少的。

但决策树可能过于简单。所以,现在让我们尝试使用性能更高的模型,例如 CatBoost。

catboost = CatBoostRegressor(silent=TrueTrue
)catboost_with_constraints = CatBoostRegressor(silent=True, monotone_constraints={"square feet": 1, "overall condition": 1}

我们可以使用 CatBoost 来模拟假设情景。例如:如果我们改变面积分别为 500、1,000、2,000 或 3,000 平方英尺的房屋的“整体状况”,会发生什么?

这也被称为敏感性分析,因为它根据输入变量(房屋的整体状况)的变化来测量结果(我们的模型预测的销售价格)的敏感性。

[作者图片]

受约束的版本比不受约束的版本好得多。

事实上,在约束模型中,面积较小的房屋(500 至 1,000 平方英尺)的预测价格会平稳上升。与此同时,面积较大的房屋(2,000 至 3,000 平方英尺)的状况评分提高会导致价格大幅上涨。

这给出了一个非常直接的商业见解:如果一栋房子面积很大,但状况很差(评分为 4 分或更低),那么对其进行翻新以高得多的价格出售是合理的。但是,将房屋状况改善到 5 分以上是没有意义的,因为这不会带来实质性的额外价值。

受约束模型的预测比不受约束模型的预测更容易解释。但它们的表现如何呢?例如 R 平方?

[作者图片]

不仅约束模型的样本外性能要好得多(57% 对 53%),而且约束模型的 R 平方也明显低于无约束模型的 R 平方(55% 对 72%)。

这意味着,与不受约束的模型相比,具有单调约束的模型过度拟合的程度要小得多

这很有道理:通过施加单调约束,我们将一些关于世界的知识“转移”到模型中。这基本上就像是免费数据!

结论

在本文中,我们已经看到,向 ML 模型添加单调约束可能是一个好主意,原因如下:

  • 提高回答影响商业决策的“假设”问题的可靠性;
  • 在您选择的指标(例如 R 平方)方面表现更佳;
  • 更少的过度拟合,因为我们直接将我们对世界的一些知识(或常识)转移到模型中。

换句话说,单调约束似乎是两个相反极端之间的最佳点:允许模型完全自由(传统的“让数据说话”方法)与强加不切实际的强烈假设(例如线性回归)。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

这篇关于机器学习模型中的因果关系:引入单调约束的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145808

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss