<aside> <img src="/icons/condense_yellow.svg" alt="/icons/condense_yellow.svg" width="40px" /> Python | R | 概率 | 分布 | 统计 | 混合模型 | 高斯 | 数学
</aside>
📜Python | MATLAB | R 心理认知数学图形模型推断 | 📜信用卡消费高斯混合模型 | 📜必修课学业成绩分布异常背景混合模型潜在类别分析
本质上,混合模型(或混合分布)是将多个概率分布组合成一个概率分布。
$$ \begin{gathered} P(x)=\pi_0 p_0(x)+\pi_1 p_1(x)+\ldots+\pi_i p_i(x) \\ \text { s.t. } \sum \pi_i=1 \end{gathered} $$
为了将这些分布组合在一起,我们为每个成分分布分配一个权重,使得该分布下的总概率总和为 1。一个简单的例子是包含 2 个高斯分布的混合分布。我们可以有 2 个具有不同均值和方差的分布,并使用不同的权重将这 2 个分布组合在一起。
具体来说,我们可以认为该分布源自一个两步生成过程。在此过程中,可以从 n 个不同的概率分布中生成一个数据点。首先,我们确定它来自哪个概率分布。这个概率就是权重 π_i。一旦选择了组件概率分布,就可以通过模拟组件概率分布本身来生成数据点。
高斯混合模型本质上是一种混合模型,其中所有分量分布都是高斯分布。
$$ \begin{gathered} f(x)=\pi_0 N\left(\mu_0, \Sigma_0\right)+\pi_1 N\left(\mu_1, \Sigma_1\right)+\ldots+\pi_i N\left(\mu_i, \Sigma_i\right) \\ \text { s.t. } \sum \pi_i=1 \end{gathered} $$
现在让我们试着理解为什么使用高斯分布来对混合物的成分进行建模。当查看数据集时,我们希望将相似的点聚类在一起。这些聚类通常本质上是球形或椭圆形的,因为我们希望将靠近的点聚类在一起。因此,正态分布是集群的良好模型。分布的均值将是簇的中心,而簇的形状和分布可以通过分布的协方差很好地建模。
集群的第二个变量是不同集群的相对大小。在有机数据集中,我们通常不期望集群的大小相同,这意味着某些集群的点数会比其他集群多。然后,集群的大小将由集群权重π_i 决定。
在聚类的背景下,我们假设有 k 个影响因素影响数据的生成。每个影响因素都有不同的权重,对应于簇权重π。
💦Python高斯混合模型
让我们生成一个示例数据集,其中点是从两个高斯过程之一生成的。第一个分布的平均值为 100,第二个分布的平均值为 90;和分布的标准差分别为 5 和 2。
第一个过程我们将获得60,000积分;第二个过程中50,000个点并将它们混合在一起。
import numpy as np
np.random.seed(0)
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)