机器学习之Kmeans算法(自学笔记)

文章目录

    • 一,有监督学习与无监督学习
    • 二,Kmeans算法
      • (一)Kmeans算法原理
    • (二)Kmeans算法步骤
    • (三)Kmeans的优化
    • 三,Kmeans优缺点
    • 四,例题

一,有监督学习与无监督学习

有监督学习:有监督学习我们接触过很多,例如线性回归模型,我们给模型一个x,会得到一个与之对应的 y ^ \hat{y} y^,目的是使我们所得到的结果与真实结果y越接近越好 。

无监督学习:有很多数据并没有给定x所对应的真实结果y,这时候,只有x,我们根据x的自身特点来进行分类。Kmeans算法就是无监督学习的一种。

二,Kmeans算法

(一)Kmeans算法原理

假如空间内存在一批数据点,我们一般会认为距离越近的点他们是同一类的概率越大。选取K个点作为质心,对数据点的距离进行计算,一般采取欧式距离计算,距离哪个质心越近,那么这个数据点就归于哪一类。

(二)Kmeans算法步骤

损失函数, L = ∑ k = 1 K ∑ x i ∈ C k ∣ ∣ x i , u k ∣ ∣ L=\sum\limits_{k=1}^K\sum\limits_{x_i\in C_k} ||x_i,u_k|| L=k=1KxiCk∣∣xi,uk∣∣

其中 μ k = 1 N i ∑ x i ∈ C k x i \mu_k = \frac{1}{N_i}\sum\limits_{x_i \in C_k} x_i μk=Ni1xiCkxi

可以从公式中看出损失函数L的意义是所有数据点到每个质心的欧式距离和,目的是使得L最小,找出每个x所属的类别

步骤如下:

1,根据经验以及需求设置K个分类, μ 1 , μ 2 , ⋅ ⋅ ⋅ , μ k \mu_1,\mu_2,\cdot\cdot\cdot,\mu_k μ1,μ2,,μk

2,计算每个点到质心的距离,并讲其分配给距离质心最小的簇中

3,更新簇的质心,即, μ k = 1 N i ∑ x i ∈ C k x i \mu_k = \frac{1}{N_i}\sum\limits_{x_i \in C_k} x_i μk=Ni1xiCkxi

4,重复2-3步,知道满足以下条件之一,停止分类

(1)聚类中心不在变化

(2)没有样本点分到其他类中

(3)损失函数L足够小

(三)Kmeans的优化

Kmeans++在Kmeans的基础上进行了改进

步骤如下:
1,从N个数据点中随机选取一个点作为初始的聚类中心,即 μ 1 \mu_1 μ1

2,计算每个点到聚类中心的距离

3,选取距离最远的数据点作为新的聚类中心

4,重复2-3步知道找到K个聚类中心为止

但是,Kmeans++的后一个聚类中心要依赖于前一个聚类中心

三,Kmeans优缺点

优点:算法简单,速度快,便于理解,复杂度低,当簇近似高斯分布的时候,效果会很好,而且可以保证有较好的伸缩性

缺点:K值的选取影响分类结果。K越大分类越精细;K越小分类越粗糙。对异常值敏感。对于初始聚类中心点的设置非常敏感。

四,例题

假设数据挖掘的任务是将如下的八个点(用(x,y)代表位置)聚类为三个簇.A1(2,10),A2(2,5),A3(8,4),B1(5,8),B2(7,5),B3(6,4),C1(1,2),C2(4,9)距离函数是欧几里得距离.假设初始我们选择A1,B1和C1分别为每个簇的中心,用k均值算法给出 :
1,第一轮执行后的三个簇中心点为多少?

2,最后的三个簇是什么

解:由题目可知,将上述数据点聚成3类,题目要求使用欧式距离,将上述点整理成如下的表格

x y
A1 2 10
A2 2 5
A3 8 4
B1 5 8
B2 7 5
B3 6 4
C1 1 2
C2 4 9

(一)第一轮

初始的聚类中心为A1,B1和C1,我们要算出每个点到这三个聚类中心的距离,距离哪个聚类中心最小,就把这个点归于哪一类

拿A2与A1进行距离,算欧氏距离 S A 2 , A 1 S_{A_2,A_1} SA2,A1

S A 2 , A 1 = ( 2 − 2 ) 2 + ( 5 − 10 ) 2 S_{A_2,A_1} = \sqrt{(2-2)^2+(5-10)^2} SA2,A1=(22)2+(510)2

A1 B1 C1
A2 min
A3 min
B2 min
B3 min
C2 min

算出欧式距离进行比较发现,

第一轮
A1 (2,10)
B1(5,8),A3(8,4),B2(7,5),B3(6,4),C2(4,9)
C1(1,2),A2(2,5)

由此第一轮分类结果已出现,根据第一轮的分类结果重新计算聚类中心

第一个聚类中心为(2,10)

第二个聚类中心为(6,6)

计算方法为:(5+8+7+6+4)/5 = 6,(8+4+5+4+9)/5 = 6

第三个聚类中心为(1.5,3.5)

计算方法为:(1+2)/2 = 1.5,(2+5)/2 = 3.5

(二)第二轮

第二轮的聚类中心已知,所以将A1-C2的每个点与三个聚类中心算欧式聚类,然后进行比较选取最小的距离

(2.10) (6,6) (1.5,3.5)
A1 min
A2 min
A3 min
B1 min
B2 min
B3 min
C1 min
C2 min

由此可知第二轮的最后结果为如下的三类:
{A1(2,10),B1(5,8),C2(4,9)}
{A3(8,4),B2(7,5),B3(6,4)}
{C1(1,2),A2(2,5)

你可能感兴趣的:(机器学习,算法,k-means)