k k k-均值聚类,就是利用每个样本到各个类中心的距离来判断属于哪个类,或者知道属于某个类别来求解中心。但是,这就陷入先有鸡还是先有蛋的问题,因为此问题有隐含变量,故可以用EM算法求解。
- ① 随机化
假设你想分成 k k k 类,那么可以随机化 μ 1 , μ 2 , ⋯ , μ k \mu_1,\mu_2,\cdots,\mu_k μ1,μ2,⋯,μk - ② E-step
Z i = arg min k ∣ ∣ x i − μ k ∣ ∣ , i = 1 ∼ N Z_i=\argmin_k||x_i-\mu_k||,\quad i=1\sim N Zi=kargmin∣∣xi−μk∣∣,i=1∼N 此处很好理解,离谁进属于谁嘛 - ③ M-step
{ N k = ∑ i = 1 N I ( Z i = k ) N 个 样 本 中 多 少 个 属 于 第 k 类 μ k = 1 N k ∑ i = 1 Z i = k x i μ k 是 第 k 类 样 本 均 值 \begin{cases} N_k=\displaystyle\sum_{i=1}^NI(Z_i=k)&N个样本中多少个属于第k类\\\\ \mu_k=\displaystyle\frac{1}{N_k}\sum_{i=1\atop Z_i=k}x_i&\mu_k是第k类样本均值 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧Nk=i=1∑NI(Zi=k)μk=Nk1Zi=ki=1∑xiN个样本中多少个属于第k类μk是第k类样本均值 - ④跳到②,循环直至收敛