K-means算法

一、k-means算法的基本介绍

k-means算法是一个十分经典的聚类算法,同时它也是一个无监督的算法。对于一组没有标记的数据,如果我们需要将其分为几组的话,这时候我们就可以使用到K-means算法了。

给定n个样本的集合X={x_1,x_2,...x_n},每个样本都由一个特征向量表示,特征向量的维度为m。k-means算法的目标就是将这n个样本划分为k个集合(k<<n),集合两两之间无交集,k个集合的总和就是样本整体X

每个集合都有一个中心点,某个样本距离哪个集合的中心点距离最近就将其划分为某个集合。

两个向量间距离的衡量方法有很多,k-means中一般使用的是欧氏距离:

d(x_i,x_j)=||x_i-x_j||^2

k-means算法的目标是通过损失函数最小化来选取最优的划分策略,它的损失函数就是所有样本到达所属集合的中心点的距离最小:

W(C)=\sum_{l=1}^{k}\sum_{C(i)=l}||x_i-x_l^{*}||^2

其中𝐶(𝑖)=𝑙表示样本i属于集合l。 X^{*}=(x^{*}_{1},x^{*}_{2},x^{*}_{3}...x^{*}_{k}) 表示k个集合的中心点。计算集合中心点的方法我们采用的是:

x^{*}_l=\frac{1}{\sum_{C(i)=l}} \sum_{C(i)=l}x_i

即该集合中所有样本的在所有维度的平均值。

k-means算法在理解起来是很简单的,不幸的是,求解起来确是很难的,无法求出最优的解,需要使用到迭代的方法,也就是我们下文中介绍的EM算法

二、k-means算法的理论基础——EM算法

EM算法时机器学习中乃至统计学中非常常用的一种算法。在各种模型的优化中都会使用到该算法,比如贝叶斯优化,马尔可夫优化等,K-means算法中的优化算法也是EM算法,因此我们首先来介绍一下EM算法。

EM算法是一种迭代的算法,用于含有隐变量的概率模型参数的极大似然估计。

什么叫含有隐变量的极大似然估计呢?首先我们来个不含有隐变量的极大似然估计。

不含隐变量的极大似然估计

假设我投掷一枚硬币10次,出现的正反面的情况为(0,1,1,1,0,1,1,1,1,0)。如果现在想要求该硬币的参数(也就是硬币为正面的概率)

通过极大似然估计我们有:

\prod p^7(1-p)^3

很显然我们可以很简单地知道𝑝=0.7时结果最优。

将其推广到K-means算法中,如果我们知道了每个类别的中心点,我们也很容易知道每个样本的类别。

包含隐变量的极大似然估计

介绍了无隐变量的极大似然估计,现在我们介绍一个包含隐变量的似然估计(该例子来自于统计学习方法[李航]中p.175至p.176中的例子,当然我会引入自己的理解)

(三硬币模型)假设有A,B,C三枚硬币。它们出现为正面时的概率是𝜋,𝑝,𝑞。现在我们需要做一个实验:先投掷A硬币,假设其出现正面就投掷B,反之就投掷C。根据B,C出现的结果,做如下记录:正面记录1,反面记录0。(注意,虽然我们每次实验开始都是投掷A,根据A的结果去选择B或者C,但是A的投掷结果并没有被记录下来。)
我们独立地进行了10次实验,观测的结果是:

1,1,0,1,0,0,1,0,1,1  

我们只能观测到以上10次结果,每一次的投掷结果都不知道它由硬币B还是硬币C产生的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值