例子可能并不那么严谨,欢迎批评指正。

    现在我们有4位志愿者,我们通过测量获得了他们的身高数据。但是这些志愿者当中有男性有女性,具体比例我们没有记录,所以不知道男女各有多少,假设男女各占的比例分别用$\pi{男},\pi{女}$表示。假设男性和女性的身高分别服从$\mathrm{N}\left(\mu{男}, \sigma{男}^{2}\right)$和$\mathrm{N}\left(\mu{女}, \sigma{女}^{2}\right)$的高斯分布,现在我们来估计一下这六个参数$\mu{男}, \sigma{男} ^ {2},\mu{女}, \sigma{女} ^ {2},\pi{男},\pi{女}$可能的值是多少。

    解:

    反正现在是让我们估计这几个参数,我们不妨瞎猜一下,就假设$\mu{男}=170, \sigma{男} ^ 2=36,\mu{女}=160, \sigma{女} ^ 2=25$,而且男女各一半我们用$\pi{男}=\pi{女}=0.5$表示。

    而且已知其是满足高斯分布的,那么我们可以得到高斯分布的概率密度函数:

    f(x)=\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}}

    现在我们拿到第一个志愿者的身高数据:$x1=188$,我们现在来判断一下第一个志愿者属于男性的概率有多大。我们现在将188代入到概率密度函数当中

    \begin{aligned}f(188 | \mu
    {男}, \sigma{男}^{2}) &=\frac{1}{6 \times \sqrt{2 \pi}} e^{-\frac{(188-170)^{2}}{2 \times 6 ^ 2}} \&= 7.368 \times 10^{-4} \f(188 | \mu{女}, \sigma{女}^{2}) &=\frac{1}{5 \times \sqrt{2 \pi}} e^{-\frac{(188-160)^{2}}{2 \times 5 ^{2}}} \&= 1.236 \times 10^{-8}\end{aligned}

    而且我们假设$\pi
    {男}=\pi_{女}=0.5$,那么当前第一个志愿者为男性的概率

    \frac{7.368 \times 10^{-4} \times 0.5}{7.368 \times 10^{-4} \times 0.5+1.236 \times 10^{-8} \times 0.5}=0.999

    为女性的概率

    \frac{1.236 \times 10^{-8} \times 0.5}{7.368 \times 10^{-4} \times 0.5+1.236 \times 10^{-8} \times 0.5}=0.001

    看来我们猜的还可以,188属于男性的概率确实很高。Anyway,我们继续来算一下剩下的三个志愿者的数据,与第一个志愿的算法类似,这里就不再赘述了。

    剩下的三个志愿者的身高数据分别为:$x2=158, x_3=165, x_4=170$。那我们就可以得到这样一组数据。

    x
    {1} = 188 = \left{\begin{array}{ll}0.999, \text {男} \0.001, \text {女}\end{array}\right. ,x{2}= 158 = \left{\begin{array}{ll}0.098, \text {男} \0.901, \text {女}\end{array}\right. ,x{3} = 165 = \left{\begin{array}{ll}0.490, \text {男} \0.510, \text {女}\end{array}\right. ,x{4} = 170 = \left{\begin{array}{ll}0.529, \text {男} \0.471, \text {女}\end{array}\right.

    之后我们再将每一组数据中的男女汇总一下,得到这样一组数据

    x
    {1} = \left{\begin{array}{ll}188 \times 0.999 = 187.812, \text {男} \188 \times 0.001 = 0.188, \text {女}\end{array}\right. ,x{2} = \left{\begin{array}{ll}158 \times 0.098 = 15.484, \text {男} \158 \times 0.901 = 142.358, \text {女}\end{array}\right. \x{3} = \left{\begin{array}{ll}165 \times 0.490 = 80.85, \text {男} \165 \times 0.510 = 84.51, \text {女}\end{array}\right. ,x{4} = \left{\begin{array}{ll}170 \times 0.52 = 88.4, \text {男} \170 \times 0.47 = 79.9, \text {女}\end{array}\right.

    这样的到的四组数据中男和女就更符合现实的情况,因为我们已经把真实的数据掺进去做了一遍计算,那么现在用这四组数据中的男和女来调整一下最开始估计的那六个参数$\mu
    {男}, \sigma{男} ^ 2,\mu{女}, \sigma{女} ^ 2,\pi{男},\pi_{女}$。

    其中$\pi{男},\pi{女}$的调整方式就是将四组数据中男,女的可能性相加处以4得到的:

    \pi{男} = \frac{0.999 + 0.098 + 0.490 + 0.529}{4} = 0.529 \\pi{女} = \frac{0.001 + 0.901 + 0.510 + 0.471}{4} = 0.470

    我们再来调整一下$\mu{男}, \sigma{男}$,这两个参数怎么调整呢,这里直接告诉你一个结论,先不用管他是怎么来的,我们会用就ok了。如果有一组数据$x1, x_2, x_3, x_4$符合高斯$\mathrm{N}\left(\mu, \sigma\right)$分布,那么他们的参数的估计值为:

    \begin{aligned}&\mu=\frac{1}{n} \sum
    {i} x{i}\&\sigma^{2}=\frac{1}{n} \sum{i}\left(x{i}-\mu\right)^{2}\end{aligned}

    根据这个结论我们拿得到的四组数据更新一下对应的$\mu
    {男}, \sigma{男} ^ 2$。

    \mu
    {男} = \frac{181.812+15.484+80.85+88.4}{0.999+0.098+0.490+0.529}=173.225 \\sigma{男} ^ 2 = \frac{(187.812-173.225)^{2}+(15.484-173.225)^{2}+(80.85-173.225)^{2}+(88.4-173.225)^{2}}{0.999+0.098+0.490+0.529}=19292.733

    根据相同的原则,我们再来更新一下对应的$\mu
    {女}, \sigma{女} ^ 2$。

    \mu
    {女} = \frac{0.188+142.358+84.51+79.9}{0.001+0.901+0.510+0.471}=163.014 \\sigma_{女} ^ 2 = \frac{(0.188-163.014)^{2}+(142.358-163.014)^{2}+(84.51-163.014)^{2}+(79.9-163.014)^{2}}{0,001+0,901+0.510+0.471}=21247.897

    然后我们根据更新后的参数再次从头计算一下,因为每次计算都相当于将数据的真实情况掺杂的参数中,最终就能收敛到符合数据分布的真实情况。
    其实这个例子还有另外一个名称就是高斯混合模型GMM。