算法强化 —— K-means

k-means

主要思想

有四个牧师去郊区布道,一开始牧师们随意选择了几个布道点,并且把这几个布道点的情况公告给了郊区所有的居民,于是每个居民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己上课所有居民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都很近。有的人发现A牧师移动以后自己还不如去B牧师出听课更近,于是每个居民又去了离自己最近的布道点,…,这样,牧师每个礼拜更新自己的位置,居民根据自己的情况选择布道点,最终稳定下来。
在这里插入图片描述
在这里插入图片描述
从上图中,我们可以看到,A,B,C,D,E是五个在图中点,而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以看= 2

然后K-mean的算法如下:
1.随机在图中取k(这里k = 2)个种子点
2.然后对图中所有点求到这个k个种子点的距离,假如点 P i P_i 离种子点 S i S_i 最近,那么 P i P_i 属于 S i S_i 点群(上图中,我们可以看到A,B输入上面的种子点,C,D,E属于下面中部的种子点)
3.接下来,我们要移动种子点到属于他的"点群"的中心
4.重复第2、3步,直到种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)

归纳下K-mean算法的过程是

1.选取初始聚类中心
2.通过计算距离进行聚类
3.重新计算聚类中心
4.重复2-3步直至聚类中心不发生改变(或者变化小于一定的阈值)或者达到迭代次数上限

k-mean损失函数浅探

该算法旨在最小化目标函数,即在上面这些情况下的平方误差函数
arg min S i = 1 k j S i x j μ S i 2 \underset{S}{\arg \min } \sum_{i=1}^{k} \sum_{j \in S_{i}}\left\|x_{j}-\mu_{S_{i}}\right\|^{2}
其中 S = S 1 , S 2 , . . . , S k S = S_1,S_2,...,S_k 代表聚类后的k个类别 x j μ s i 2 ||x_j - \mu_{si}||^2 是我们这里选定的距离公式,用于计算数据点和群集中心的距离
那么,k-means是否一定会收敛?k-means背后的理论支撑————EM(Expectation Maximum)算法

Expectation Maximum

问题定义
假设有两枚硬币A,B,以相同的概率随机选择一个硬币,进行如下抛硬币实验:共做5次实验,每次实验独立的抛10次,结果如下表,例如某次实验产生了H,T,T,T,H,H,T,H,T,H(H代表正面朝上)。a是在知道每次选择的是A还是B的情况下进行,b是在不知道选择的是A还是B的情况下进行,问如何估计两个硬币正面出现的概率。
a Maximum likelihood

CoinA CoinB
NULL 5H,5T
9H,1T NULL
8H,2T NULL
NULL 4H,6T
7H,3T NULL
24H,6T 9H,11T

b Expectation maximization

CoinA CoinB
2.2H,2.2T 2.8H,2.8T
7.2H,0.8T 1.8H,0.2T
5.9H,1.5T 2.1H,0.5T
1.4H,2.1T 2.6H,3.9T
4.5H,1.9T 2.5H,1.1T
21.3H,8.6T 11.7H,8.4T

在case b中,我们假设A硬币投正面的概率是0.6,B硬币投正面的概率是0.5,然后通过极大似然估计来估计每一组结果是由A硬币投出的概率和由B硬币投出的概率。然后通过估计出来的选择硬币概率反过来重新计算投正面概率。其中每一轮选择的是A硬币还是B硬币我们称之为隐参数z,A硬币投正面的概率和B硬币投正面的概率称之为模型参数 θ \theta
总而言之,EM就是解决带隐参数的参数估计问题的一类算法。

Jensen不等式

在这里插入图片描述
如果f是凸函数,X是随机变量,那么
E [ f ( X ) ] f ( E X ) E[f(X)]\geq f(EX)
更特殊的形式
f ( x 1 + x 2 + + x n n ) f ( x 1 ) + f ( x 2 ) + + f ( x n ) n f\left(\frac{x_{1}+x_{2}+\cdots+x_{n}}{n}\right) \leq \frac{f\left(x_{1}\right)+f\left(x_{2}\right)+\cdots+f\left(x_{n}\right)}{n}
log函数上的jensen不等式:
在这里插入图片描述
E [ l o g ( X ) ] l o g ( E X ) E[log(X)] \leq log(EX)

算法思路

给定的m个观察样本{ x ( 1 ) , x ( 2 ) , . . . , x ( m ) x^{(1)},x^{(2)},...,x^{(m)} },模型的参数为 θ \theta ,我们想找到隐参数z,能使得 p ( X , z ) p(X,z) 最大,简历似然函数
( θ ) = i = 1 m log p ( x ( i ) ; θ ) = i = 1 m log z p ( x ( i ) , z ; θ ) \begin{aligned} \ell(\theta) &=\sum_{i=1}^{m} \log p\left(x^{(i)} ; \theta\right) \\ &=\sum_{i=1}^{m} \log \sum_{z} p\left(x^{(i)}, z ; \theta\right) \end{aligned}
直接计算上述似然函数的最大值比较困难,所以我们希望能够找到一个不带隐变量z的函数 γ ( x θ ) l ( x , z ; θ ) \gamma (x|\theta) \leq l(x,z;\theta) 恒成立,并用$\gamma (x|\theta) $逼近目标函数。

在这里插入图片描述
在绿色线位置,找到一个函数 γ \gamma ,能够使得该函数最接近目标函数,固定 γ \gamma 函数,找到最大值,然后更新 θ \theta ,得到红线
对于红线位置的参数 θ \theta :固定 θ \theta ,找到一个最好的函数 γ \gamma ,使得该函数最接近目标函数。重复该过程,直到收敛到局部最大值。

K-means的收敛性

求解的似然函数是
P ( x , z μ 1 , μ 2 , , μ k ) { exp ( x μ z 2 2 ) , x μ z 2 = min k x μ k 2 0 , x μ z 2 > min k x μ k 2 P\left(x, z | \mu_{1}, \mu_{2}, \ldots, \mu_{k}\right) \propto\left\{\begin{aligned} \exp \left(-\left\|x-\mu_{z}\right\|_{2}^{2}\right),\left\|x-\mu_{z}\right\|_{2}=\min _{k}\left\|x-\mu_{k}\right\|_{2} \\ 0,\left\|x-\mu_{z}\right\|_{2}>\min _{k}\left\|x-\mu_{k}\right\|_{2} \end{aligned}\right.
E步是固定模型参数 μ k \mu_k (中心点的位置),进而求隐变量的分布,也就是每个样本属于哪个类型
γ n k = { 1 ,  if  k = argmin j x n μ j 2 0 ,  otherwise  \gamma_{n k}=\left\{\begin{array}{ll} 1, & \text { if } k=\operatorname{argmin}_{j}\left\|x_{n}-\mu_{j}\right\|^{2} \\ 0, & \text { otherwise } \end{array}\right.
M步是计算出所有样本所属类别之后,更新模型参数 μ k \mu_k (中心点的位置):
μ k = n γ n k x n n γ n k \mu_{k}=\frac{\sum_{n} \gamma_{n k} x_{n}}{\sum_{n} \gamma_{n k}}
通过将K-means"EM"化,就可以通过说明EM收敛性等价到K-means收敛性

发布了110 篇原创文章 · 获赞 3 · 访问量 4093

猜你喜欢

转载自blog.csdn.net/qq_33357094/article/details/105010681