🍠Python高层解雇和客户活跃度量化不确定性模型

关键词

Python | 量化 | 概率分布 | 不确定性 | 贝叶斯 | 模型 | 短信 | 竞争性 | 方案 | 供词 | 作弊 | 灾难 | 算法 | 聚类 | 信息 | 虚假 | 策略 | 动态分析 | 常微分方程 | 活跃度 | 非线性 | 回归 | 分层 | 建模

🏈指点迷津 | Brief

🎯要点

🎯量化不确定性模型:🖊模型检测短信编写者行为变化 | 🖊确定(商业领域中)竞争性替代方案 | 🖊确定作弊供词真实比例 | 🖊学生考试作弊 | 🖊确定零部件损坏导致的灾难事故原因 | 🖊马尔可夫链蒙特卡罗算法先验-后验范式可视化 | 🖊聚类寻找信息隐藏源头 | 🖊模型确定和纠正虚假商品星评 | 🖊客户商品价格优化呈现 | 🖊星系位置和椭圆率模拟 | 🖊最大化赌场奖金策略 | 🖊证券分析。

🎯动态分析和常微分方程推理流感传播 | 🎯高层领导被解雇模型预测 | 🎯客户活跃度模型预测 | 🎯热饮冷却非线性模型动态分析 | 🎯多级回归和后分层预测公众人物角逐 | 🎯模型分析专业人士对比机器学习工具的优劣​ | 🎯销售领域利润率建模 | 🎯模型分析定位无线网络用户位置。

🍇Python贝叶斯推理

贝叶斯推理是一种找出变量分布的方法(例如高度 h 的分布)。贝叶斯推理的有趣特征是,统计学家(或数据科学家)可以利用他们的先验知识作为改进我们对分布情况的猜测的手段。贝叶斯推理依赖于贝叶斯统计的主要公式:贝叶斯定理。贝叶斯定理接受我们对分布的假设,即新的数据,并输出更新后的分布。对于数据科学,贝叶斯定理通常表示如下:

P(θ Data )=P( Data θ)P(θ)P( Data )P(\theta \mid \text { Data })=\frac{P(\text { Data } \mid \theta) * P(\theta)}{P(\text { Data })}
  • P(θData\theta \mid D a t a) 后验

  • P( DataθData \mid \theta) 似然

  • P(θ\theta) 先验

  • P( DataData ) 事实

我们可以从贝叶斯定理中看出,先验是一个概率:P(θ)。首先,让我们深入研究一下“θ”的含义。θ 通常表示为我们对最能描述我们试图研究的变量的模型的假设。让我们回到身高的例子。根据背景知识和常识,我们推断出身高在一个班级中呈正态分布。正式来说:

hN(μ,σ)h \sim N (\mu, \sigma)

其中N表示正态分布,μ\mu表示平均值,σ\sigma表示标准差。

现在,我们的先验并不完全是上面的表达式。相反,它是我们对每个参数 μ\mu σ\sigma 如何分布的假设。请注意,这就是贝叶斯统计的定义特征的体现:我们如何找到这些参数的分布?有趣的是,我们根据先验知识“编造”它们。如果我们的先验知识很少,我们可以选择一个非常无信息的先验,以免使过程产生偏差。例如,我们可以定义平均高度 μ\mu 介于 1.65 m 和 1.8 m 之间。如果我们想要一个无信息的先验,我们可以说μ \mu 沿着该区间均匀分布。相反,如果我们认为平均高度在某种程度上偏向于更接近 1.65 m 而不是 1.8 m 的值,我们可以定义 μ\mu 服从 beta 分布,由“超”参数 α\alpha 定义和β\beta。我们可以看看下面这些选项:

 import scipy.stats as sts
 import numpy as np
 import matplotlib.pyplot as plt
 ​
 mu = np.linspace(1.65, 1.8, num = 50)
 test = np.linspace(0, 2)
 uniform_dist = sts.uniform.pdf(mu) + 1 
 uniform_dist = uniform_dist/uniform_dist.sum() 
 beta_dist = sts.beta.pdf(mu, 2, 5, loc = 1.65, scale = 0.2) 
 beta_dist = beta_dist/beta_dist.sum()
 plt.plot(mu, beta_dist, label = 'Beta Dist')
 plt.plot(mu, uniform_dist, label = 'Uniform Dist')
 plt.xlabel("Value of $\mu$ in meters")
 plt.ylabel("Probability density")
 plt.legend()

请注意 y 轴如何为我们提供“概率密度”,即我们认为真正的 μ\mu 是 x 轴上的概率密度。另外,请注意,β 分布和均匀分布会导致我们对 μ\mu 的值可能得出的不同结论。如果我们选择均匀分布,我们就表示我们不倾向于判断 μ\mu 是否接近我们范围内的任何值,我们只是认为它位于其中的某个位置。如果我们选择 betabeta 分布,我们相当确定 μ\mu 的“真实”值介于 1.68 m 和 1.72 m 之间,如蓝线峰值所示。

请注意,我们正在讨论 μ\mu 的先验,但我们的模型实际上有两个参数:N(μ,σ)N (\mu, \sigma)。一般来说,我们也可以定义 σ\sigma 上的先验。然而,如果我们对 σ\sigma 的猜测感到幸运,或者如果我们想为了示例而简化过程,我们可以将 σ\sigma 设置为固定值,例如 0.1 m。

似然表示为 P ( DataθData \mid \theta)。在这种情况下,“数据”将是高度的观测值。假设我们要测量一名随机挑选的学生,他们的身高为 1.7m。考虑到有了这个数据,我们现在可以了解 \theta 的每个选项有多好。我们通过以下问题来做到这一点:如果 \theta 的一个特定选项(称为 \theta 1)是真实的,那么我们观察到 1.7 m 高度的“可能性”有多大? \theta 2 怎么样:如果 \theta 2 是“正确”模型,观察到 1.7 m 高度的可能性有多大?

然而,就我们目前的目的而言,我们正在改变分布/模型本身。这意味着我们的 x 轴实际上将具有变量 \mu 的不同可能性,而我们的 y 轴将具有每种可能性的概率密度。看看下面的代码,它代表了我们的似然函数及其可视化:

 def likelihood_func(datum, mu):
   likelihood_out = sts.norm.pdf(datum, mu, scale = 0.1) 
   return likelihood_out/likelihood_out.sum()
 ​
 likelihood_out = likelihood_func(1.7, mu)
 ​
 plt.plot(mu, likelihood_out)
 plt.title("Likelihood of $\mu$ given observation 1.7m")
 plt.ylabel("Probability Density/Likelihood")
 plt.xlabel("Value of $\mu$")
 plt.show()

一些统计学家将 P ( Data ) 称为“证据”。这个变量的含义非常简单:它是产生价值数据的概率。然而,这很难直接计算。值得庆幸的是,我们有一个好办法。考虑以下方程:

P( Data θ)P(θ)dθ=P( Data )\int P(\text { Data } \mid \theta) * P(\theta) d \theta=P(\text { Data })

贝叶斯定理的右侧 P (θData\theta \mid Data) 称为“后验”。这是我们对数据如何分布的后验理解,因为我们目睹了数据,并且我们有先验知识。我们如何得到后验呢?回到方程:

P(θ Data )=P( Data θ)P(θ)P( Data )P(\theta \mid \text { Data })=\frac{P(\text { Data } \mid \theta) * P(\theta)}{P(\text { Data })}

那么,第一步是将似然度 (P(Dataθ)P(Data \mid \theta)) 与先验 (P(θ) P (\theta)) 相乘:

 import scipy as sp
 ​
 unnormalized_posterior = likelihood_out * uniform_dist
 plt.plot(mu, unnormalized_posterior)
 plt.xlabel("$\mu$ in meters")
 plt.ylabel("Unnormalized Posterior")
 plt.show()

Last updated