机器学习—EM算法(1)

86 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

大部分 EM 算法都是通过 3 硬币的例子引入的,简单用语言描述一下,现在手里有 3 硬币,每一个硬币投掷正面朝上事件概率都各不相同,我们用 A、B 和 C 分别表示这个 3 个硬币,他们对应正面朝上概率分别用 π\pippqq 来表示。

em_001.PNG

首先投掷硬币 A 然后观测 A 的结果,根据 A 投掷的结果来选择 B 或者 C,如果 A 正面朝上则选择 B 进行投掷,如果结果背面朝上则选择 C 进行投掷,最终观测到值是选择 B 或 C 投掷结果为随机变量 x 值,

HT
Bpp1p1-p
Cqq1q1-q
  • 这里 H(Head) 和 T(Tail) 分别用 H 和 T 表示观测投掷硬币的结果为正面朝上和背面朝上。
P(x=H)=πp+(1π)qP(x=T)=π(1p)+(1π)(1q)P(x=H) = \pi p + (1 - \pi)q\\ P(x=T) = \pi(1-p) + (1 - \pi)(1 - q)

P(x=H)P(x=H) 表示看到正面朝上的概率,首先

条件概率

条件是观测到正面朝上条件下,是投掷硬币 B 的概率

P(Bx=H)=πpπp+(1π)qP(Cx=H)=(1π)qπp+(1π)qP(B|x=H) = \frac{\pi p}{\pi p + (1 - \pi)q}\\ P(C|x=H) = \frac{(1-\pi)q}{\pi p + (1 - \pi)q}\\

条件是观测到背面朝上条件下,是投掷硬币 C 的概率

P(Bx=T)=π(1p)π(1p)+(1π)(1q)P(Cx=T)=(1π)(1q)π(1p)+(1π)(1q)P(B|x=T) = \frac{\pi (1-p)}{\pi(1-p) + (1 - \pi)(1 - q)}\\ P(C|x=T) = \frac{(1 - \pi)(1-q)}{\pi(1-p) + (1 - \pi)(1 - q)}\\

上面 x=Hx=H

x1,x2,,xnx_1,x_2,\cdots,x_n 做 n 实验后来统计 π,p,q\pi,p,q,对于 xix_i 取值可能是 1 或者 0,其中 1 表示正面朝上,0 表示背面朝上

xi=πpxi(1p)1xi+(1π)qxi(1q)1xix_i = \pi p^{x_i}(1-p)^{1-x_i} + (1-\pi)q^{x_i}(1-q)^{1-x_i}
maxπ1,p1,q1i=1n(πp+(1π)q)xi(π(1p)+(1π)(1q))1xi\max_{\pi_1,p_1,q_1} \prod_{i=1}^n (\pi p + (1 - \pi)q)^{x_i}(\pi(1-p) + (1-\pi)(1 -q))^{1-x_i}
maxp[pxi(1p)1xi]\max_p \left[ p^{x_i}(1-p)^{1-x_i} \right]
x1x_1x2x_2\cdotsxix_i
B:Hπpπp+(1π)q=a1\frac{\pi p}{\pi p + (1 - \pi)q} = a_1πpπp+(1π)q=ai\frac{\pi p}{\pi p + (1 - \pi)q}= a_i
B:T(1π)qπp+(1π)q=b1\frac{(1 - \pi)q}{\pi p + (1 - \pi)q} = b_1(1π)qπp+(1π)q=bi\frac{(1 - \pi)q}{\pi p + (1 - \pi)q} = b_i
C:Hπpπp+(1π)q=a1\frac{\pi p}{\pi p + (1 - \pi)q} = a_1πpπp+(1π)q=ai\frac{\pi p}{\pi p + (1 - \pi)q} = a_i
C:T(1π)qπp+(1π)q=b1\frac{(1 - \pi)q}{\pi p + (1 - \pi)q} = b_1(1π)qπp+(1π)q=bi\frac{(1 - \pi)q}{\pi p + (1 - \pi)q} = b_i

计算 π\pi

π(1)=xi=1ai+xi=0bin\pi^{(1)} = \frac{\sum_{x_i = 1} a_i + \sum_{x_i = 0} b_i}{n}

让我们看一看这个公式,进行了 n 次采样,π\pi 也就是做了 n 次实验其中 A 正面朝上的次数,也就是也就是 Bn\frac{B}{n} ,我们每次看到不是正面朝上就是背面朝上,这个可以观测的,那么对于 π\pi 每一个看到正面或者背面都是可能由 B 产生,到这里我们就需要抽象来想问题,我们将每一次其实可能是 B 也就是对于 1 可能会有一定概率是 B 也就是 xi=1ai\sum_{x_i=1} a_i 需要将背面来自 B 也看成概率那么就是每一次当你看到背面的概率为 xi=0bi\sum_{x_i=0} b_i 所及将 xi=1ai+xi=0bi\sum_{x_i = 1} a_i + \sum_{x_i = 0} b_i

概率 p

p(1)=xi=1aixi=1ai+xi=0bip^{(1)} = \frac{\sum_{x_i =1} a_i}{\sum_{x_i = 1} a_i + \sum_{x_i = 0} b_i}

那么 p 就是 B 硬币投掷正面朝上的概率表示为 pp 也就是条件概率,P(B)=xi=1ai+xi=0binP(B) = \frac{\sum_{x_i = 1} a_i + \sum_{x_i = 0} b_i}{n} 那么做了 n 实验看到正面朝上的 xi=1ain \frac{ \sum_{x_i=1} a_i}{n} 所以 p(1)=xi=1aixi=1ai+xi=0bip^{(1)} = \frac{\sum_{x_i =1} a_i}{\sum_{x_i = 1} a_i + \sum_{x_i = 0} b_i}

概率 q

概率 p

q(1)=xi=1cixi=1ci+xi=0diq^{(1)} = \frac{\sum_{x_i =1} c_i}{\sum_{x_i = 1} c_i + \sum_{x_i = 0} d_i}
π(1),p(1),q(1)π(2),p(2),q(2)\pi^{(1)},p^{(1)},q^{(1)} \rightarrow \pi^{(2)},p^{(2)},q^{(2)}