从pymc3

时间:2016-11-20 15:29:10

标签: python scikit-learn regression bayesian pymc3

我试图从非贝叶斯背景中理解这一点。

在线性回归或黑盒机器学习工具中,工作流程类似于以下内容。

  1. 获取数据
  2. 准备数据
  3. 模型数据(从中学习[或部分,训练集])
  4. 测试模型(通常在测试集上)
  5. 如果模型根据某个指标是好的,请转到6,否则为
    调查和修改工作。
  6. 模型足够好;用它来预测/分类等。
  7. 因此,假设我使用pymc3来了解广告支出与销售商品收入之间的关系。如果从1到5的所有阶段都顺利,那么在R和机器学习包中使用的频繁统计数据(例如scikit-learn)中,我只需要将新的看不见的数据传递给学习模型并调用预测方法。考虑到X(广告支出)的一些看不见的价值,这通常会打印出Y的预测值(销售商品的收入),并且仍然会考虑一些置信区间或一些其他误差幅度。

    如何在pymc3中做到这一点?如果我最终得到许多斜坡和许多贝塔,那么我应该用它来预测?并且不会采用所有斜坡和所有贝塔的平均值来抛弃许多其他有用的学习知识?

    我发现如果难以理解后验的采样如何有助于此。人们可以想象老板需要被告知销售商品的预期收入Y数字给出一些广告支出X金额,有一些信心和误差幅度。除了绘图之外,我不知道如何将后验抽样纳入管理报告中,并使其对有关各方的现金流量计划有用。

    我知道我们中的一些人来自R并且可能是scikit-learn,但是如果有一种预测方法能够以更统一和标准化的方式处理这个问题,那会不会很好?

    由于

1 个答案:

答案 0 :(得分:3)

在使用模型进行预测时,考虑参数的不确定性的一种方法是使用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的平均值&#相同' 39;正如您在问题中提到的那样,因为您正在计算pdf的平均值而不是参数本身)。在实践中,这应该很容易编码,你只需要实现函数p(Y | X,theta),然后插入你的后验参数样本,然后取结尾的均值。在给定MCMC采样的情况下,这为您提供了最公平的模型预测表示。