机器学习08-K-means算法

文章目录

  • K-means算法
    • 步骤
  • 代价函数(失真代价函数)
  • 随机初始化
    • 步骤
    • 如何避免局部最优

K-means算法

K-means算法是聚类问题(无监督学习)应用最广泛的算法

步骤

  • K-means算法接收两个输入:

    • K:聚类出的族的个数
    • 数据集 { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } \{x^{(1)},x^{(2)},...,x^{(m)}\} {x(1),x(2),...,x(m)}

    此外,规定 x ( i ) ∈ R n x^{(i)} \in \mathbb R^n x(i)Rn(即去除了 x 0 = 1 x_0 = 1 x0=1)

  • 第一步:随机初始化 K 个聚类中心,记为 μ 1 , μ 2 , . . . , μ k ∈ R n \mu_1,\mu_2,...,\mu_k \in \Bbb R^n μ1,μ2,...,μkRn

  • 第二步:重复以下步骤,直到聚类中心不再移动

    • 族分配
      for i = 1 to m :
      compute c ( i ) = m i n k ∣ ∣ x ( i ) − u k ∣ ∣ 2 c^{(i)} = min_k||x^{(i)} - u_k||^2 c(i)=minkx(i)uk2
      这里 小写 k 表示第 i 个聚类
      c ( i ) c^{(i)} c(i) 表示当前样本 x ( i ) x^{(i)} x(i)所属的那个族的索引或者序号
    • 移动聚类中心
      for k = 1 to k :
      计算聚类 k 的所有点的平均距离 μ k \mu_k μk,将聚类中心 k 移到此处
      例如: c ( 1 ) = 2 , c ( 5 ) = 2 , c ( 6 ) = 2 , c ( 10 ) = 2 c^{(1)}=2,c^{(5)}=2,c^{(6)}=2,c^{(10)}=2 c(1)=2,c(5)=2,c(6)=2,c(10)=2,则
      μ k = 1 4 [ x ( 1 ) + x ( 2 ) + x ( 3 ) + x ( 4 ) ] ∈ R n \mu_k = \frac{1}{4}[x^{(1)}+x^{(2)}+x^{(3)}+x^{(4)}] \in \Bbb R^n μk=41[x(1)+x(2)+x(3)+x(4)]Rn

如果存在一个没有点的聚类中心,一般是直接去除该聚类(即从 K 变成 K-1),或者是重新初始化聚类中心,但这种情况比较少出现。


代价函数(失真代价函数)

J ( c ( 1 ) , c ( 2 ) , . . . , c ( m ) , μ 1 , . . . , μ K ) = 1 m ∑ i = 1 m ∣ ∣ x ( i ) − μ c ( i ) ∣ ∣ 2 J(c^{(1)},c^{(2)},...,c^{(m)},\mu_1,...,\mu_K) = \frac{1}{m}\sum_{i=1}^m ||x^{(i)} - \mu_{c^{(i)}}||^2 J(c(1),c(2),...,c(m),μ1,...,μK)=m1i=1mx(i)μc(i)2

其中, u c ( i ) u_{c^{(i)}} uc(i) 表示 x ( i ) x^{(i)} x(i) 所属的那个族的聚类中心。


随机初始化

步骤

  • 设置 K < 训练样本 m
  • 在训练集中随机选择 K 个点
  • μ 1 , μ 2 , . . . , u K \mu_1,\mu_2,...,u_K μ1,μ2,...,uK 等于这 K 个样本

随机初始化值不同,K均值最后可能得到不同的结果

如何避免局部最优

机器学习08-K-means算法_第1张图片

随机初始化多次(一般50-1000次),选择最小的 J ( θ ) J(\theta) J(θ)

当 K 比较小时(2-10),多次随机初始化会有较大的影响,可以保证最下化畸变函数。
但是当 K 较大时,多次随机初始化结果可能会好一点点,但是不会好太多。


你可能感兴趣的:(机器学习,聚类,算法,机器学习)