我试图从非贝叶斯背景中理解这一点.
在线性回归或黑盒机器学习工具中,工作流程类似于以下内容.
>获取数据
>准备数据
>模型数据(从中学习[或部分,训练集])
>测试模型(通常在测试集上)
>如果模型根据某个指标是好的,请转到6,否则
调查和修改工作.
>模型足够好;用它来预测/分类等
因此,假设我使用pymc3来了解广告支出与销售商品收入之间的关系.如果从1到5的所有阶段都顺利,那么在R和机器学习包中使用的频繁统计数据(例如scikit-learn)中,我只需要将新的看不见的数据传递给学习模型并调用预测方法.这通常会打印出Y的预测值(来自销售商品的收入),给定X(广告支出)的一些看不见的值,仍然会考虑一些置信区间或一些其他误差幅度.
如何在pymc3中做到这一点?如果我最终得到许多斜坡和许多贝塔,那么我应该用它来预测?并且不会采用所有斜坡和所有贝塔的平均值来抛弃许多其他有用的学习知识?
我发现如果难以理解后验的采样如何有助于此.人们可以想象老板需要被告知销售商品的预期收入Y数字给出一些广告支出X金额,有一些信心和误差幅度.除了绘图之外,我不知道如何将后验抽样纳入管理报告中,并使其对有关各方的现金流量计划有用.
我知道我们中的一些人来自R并且可能是scikit-learn,但如果有一种预测方法以更统一和标准化的方式处理这个问题,那会不会很好?
谢谢
解决方法:
在使用模型进行预测时考虑参数不确定性的一种方法是使用posterior predictive distribution.此分布告诉您新观察的概率,以您用于约束模型参数的数据为条件.如果收入是Y,广告支出是X,模型参数是theta,用于约束模型的数据是X’,那么你可以写
左侧是在给定支出X的情况下获得收入Y的概率,以及用于约束模型X’的数据.这是模型的后验预测分布,应该在进行预测时使用. p(Y | X,theta)是给定一组模型参数theta和支出X的收入概率Y.p(theta | X’)是模型参数的后验分布,给定用于约束的数据模型.
当使用像pymc3这样的软件时,你可以从p(theta | X’)获得样本.您可以使用它们以蒙特卡罗方式进行上述积分.如果你的MCMC链后面有N个样本,那么你可以做总和
换句话说,你为你的MCMC中的每组参数计算p(Y | X,theta_n),然后取平均值(注意,这与你所提到的“取所有斜率和所有beta的平均值”相同)在你的问题中,因为你正在计算pdf的平均值而不是参数本身).在实践中,这应该很容易编码,你只需要实现函数p(Y | X,theta),然后插入你的后验参数样本,然后取结尾的均值.在给定MCMC采样的情况下,这可以为您提供最公平的模型预测表示.