Skip to content

[机器学习]12 聚类

首先要明确:聚类是无监督学习

12.1 聚类任务

  • 目标:通过对无标记训练样本的学习来展示其内在规律。其实现的形式是将样本划分为若干个不相交的子集(簇,cluster)
  • 描述:给定一个训练集D={x1,x2,...,xm},其中xiRn,聚类将训练集划分为k个不相交的簇C={C1,C2,...,Ck},其中CiCj=CiD=l=1kCli=1,2,...,k

12.2 性能度量

似乎没啥好考的,因为后面的算法完全没有用到

12.3 距离度量

  • 距离度量的性质:
    • 非负性:d(xi,xj)0
    • 同一性:d(xi,xj)=0xi=xj
    • 对称性:d(xi,xj)=d(xj,xi)
    • 直递性:d(xi,xj)d(xi,xk)+d(xk,xj)
  • 常用距离:
    • 欧氏距离:dist(xi,xj)=u=1n(xiuxju)2
    • 曼哈顿距离/街区距离:dist(xi,xj)=u=1n(xiuxju)

12.4 原型聚类

12.4.1 K均值算法

这是本章最重要的算法,要求完全掌握,即思想、伪代码、优缺点、应用场景

  • 给定数据集D={x1,x2,,xm},K均值针对k个簇,最小化平方误差:
E=i=1kxCj||xμi||22

(1) 伪代码

  • 输入:样本集D={x1,x2,,xm},聚类簇数k;
  • 过程
  1. D中随机选择k个样本作为初始均值向量{μ1,μ2,,μk};
  2. repeat
    • Ci=(i=1,2,,k);
    • for j=1,2,,m do (遍历每个样本,更新每个样本所属的簇)
      • 计算样本xj与各均值向量μi(i=1,2,,k)的距离:dist(xj,μi)=||xjμi||2;
      • 根据距离最近的均值向量确定xj的簇标记:λj=argmini{1,2,,k}dist(xj,μi);
      • 将样本xj划入相应的簇:Cλj=Cλj{xj};
    • end for
    • for i=1,2,,k do
      • 计算新均值向量:μi=1|Ci|xCix;
      • if μiμi then
        • 将当前均值向量μi更新为μi;
      • else
        • 保持当前均值向量不变;
      • end if
    • end for
  3. until 当前均值向量均未更新;
  4. return 簇划分C={C1,C2,,Ck};

12.4.2 高斯混合聚类

应该不会详细考

  • pM(x)=i=1kαip(x|μi,i)

  • 高斯混合分布是若干个参数不同的高斯分布的线性组合,来估计数据总体分布

  • 过程:

    • E:(先估计高斯混合分布参数)
    • M:(最大化对数似然)

12.5 密度聚类

  • 通常情况下,密度聚类算法从样本密度角来考察样本之间可连接性,并基于可连接性样本不断扩展聚类簇,以获得最终结果

12.6 层次聚类

  • 在不同层次对数据集进行划分,从而形成属性的聚类结构,数据集划分可“自底向上”,也可“自顶向下”。

Extra12-总结

  • 本章的知识脉络如下
  • 本章大概只有一个核心重点:K均值聚类,要完全明白其思想、伪代码,要达到能够手写的水平
  • 然后两个距离度量稍微看一眼就行;其他的,大概知道咋回事就行

上次更新于: