1. 原型聚类
概念
- "原型:"
"原型"是指样本空间中具有代表性的点。
- "别名:"
1)基于原型的聚类
2)英文:prototype-based clustering
- "此类算法的原理:"
算法先对原型进行初始化,然后对原型进行迭代更新求解
- "常见的原型聚类算法:"
1. k均值算法(k-means)
2. 学习向量量化(LVQ)
3. 高斯混合聚类
算法讲解
1.1 k均值算法(K-Means)
1.1.1 最小化平方误差
概 念 : 概念: 概念:
\ \ \ \ \ \ \ \ \ \ {} 刻 画 了 簇 内 样 本 围 绕 簇 均 值 向 量 的 紧 密 程 度 , 值 越 小 则 簇 内 样 本 相 似 度 越 高 刻画了簇内样本围绕簇均值向量的紧密程度,值越小则簇内样本相似度越高 刻画了簇内样本围绕簇均值向量的紧密程度,值越小则簇内样本相似度越高
前 提 : 前提: 前提:
\ \ \ \ \ \ \ \ \ \ {} 样 本 集 D = { x 1 , x 2 , . . . , x m } 样本集D=\{x_1,x_2,...,x_m\} 样本集D={
x1,x2,...,xm}
\ \ \ \ \ \ \ \ \ \ {} 簇 划 分 C = { C 1 , C 2 , . . . , C k } 簇划分C=\{C_1,C_2,...,C_k\} 簇划分C={ C1,C2,...,Ck}
\ \ \ \ \ \ \ \ \ \ {} 簇 C i 的 均 值 向 量 : u i = 1 ∣ C i ∣ ∑ x ∈ C i x 簇C_i的均值向量:u_i=\frac{1}{|C_i|}\sum_{x\in C_i}x 簇Ci的均值向量:ui=∣Ci∣1∑x∈Cix
公 式 : 公式: 公式:
\ \ \ \ \ \ \ \ \ \ {} E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − u i ∣ ∣ 2 2 E=\sum_{i=1}^k\sum_{x\in C_i}||x-u_i||_2^2 E=∑i=1k∑x∈Ci∣∣x−ui∣∣22
最 优 解 : 最优解: 最优解:
\ \ \ \ \ \ \ \ \ \ {} 最 小 化 E 不 好 求 : 最 优 解 需 考 察 样 本 集 所 有 可 能 的 簇 划 分 ( N P 问 题 ) 最小化E不好求:最优解需考察样本集 所有可能的簇划分(NP问题) 最小化E不好求:最优解需考察样本集所有可能的簇划分(NP问题)
\ \ \ \ \ \ \ \ \ \ {} N P 问 题 : 找 一 个 解 很 困 难 , 但 验 证 一 个 解 很 容 易 ( 片 面 理 解 哈 ) NP问题:找一个解很困难,但验证一个解很容易(片面理解哈) NP问题:找一个解很困难,但验证一个解很容易(片面理解哈)
迭 代 法 : 迭代法: 迭代法:
\ \ \ \ \ \ \ \ \ \ {} k 均 值 算 法 采 用 了 贪 心 策 略 , 通 过 “ 迭 代 优 化 ” 来 近 似 求 解 k均值算法采用了贪心策 略,通过“迭代优化”来近似求解 k均值算法采用了贪心策略,通过“迭代优化”来近似求解
1.1.2 k均值算法伪代码
输 入 : 输入: 输入:
\ \ \ \ \ \ \ \ \ \ {} 样 本 集 D = x 1 , x 2 , . . . , x m 样本集D = {x_1,x_2,...,x_m} 样本集D=x1,x2,...,xm
\ \ \ \ \ \ \ \ \ \ {} 聚 类 簇 数 k 聚类簇数k 聚类簇数k
过 程 : 过程: 过程:
\ \ \ \ \ \ \ \ \ \ {} 从 D 中 随 机 选 择 k 个 样 本 作 为 初 始 均 值 变 量 u 1 , u 2 , . . . , u k 从D中随机选择k个样本作为初始均值变量{u_1,u_2,...,u_k} 从D中随机选择k个样本作为初始均值变量u1,u2,...,uk
\ \ \ \ \ \ \ \ \ \ {} r e p e a t repeat repeat
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 令 C i = ∅ ( 1 ≤ i ≤ k ) 令Ci = \emptyset (1\leq i\le k) 令Ci=∅(1≤i≤k)
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} f o r j = 1 , 2 , . . . , m d o for\ j = 1,2,...,m\ do for j=1,2,...,m do
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 计 算 样 本 x j 与 各 均 值 向 量 u i ( 1 ≤ i ≤ k ) 的 距 离 : d j i = ∣ ∣ x j − u i ∣ ∣ 2 ; 计算样本x_j与各均值向量u_i(1\leq i\le k)的距离:d_{ji}=||x_j-u_i||_2; 计算样本xj与各均值向量ui(1≤i≤k)的距离:dji=∣∣xj−ui∣∣2;
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 根 据 距 离 最 近 的 均 值 向 量 确 定 x j 的 簇 标 记 : λ j = m i n i ∈ { 1 , 2 , . . . , k } d j i 根据距离最近的均值向量确定x_j的簇标记:\lambda_j=min_{i\in\{1,2,...,k\}}d_{ji} 根据距离最近的均值向量确定xj的簇标记:λj=mini∈{
1,2,...,k}dji
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 将 样 本 x j 划 入 相 应 的 簇 : C λ j = C λ j ⋃ { x j } 将样本x_j划入相应的簇:C_{\lambda_j}=C_{\lambda_j}\bigcup\{x_j\} 将样本xj划入相应的簇:Cλj=Cλj⋃{
xj}
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} e n d f o r end\ for end for
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} f o r i = 1 , 2 , . . . , k d o for\ i=1,2,...,k\ do for i=1,2,...,k do
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 计 算 新 均 值 向 量 : u i ′ = 1 ∣ C i ∣ ∑ x i ∈ C i x 计算新均值向量:u'_i=\frac{1}{|C_i|}\sum_{x_i\in C_i}x 计算新均值向量:ui′=∣Ci∣1∑xi∈Cix
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} i f u i ′ ≠ u i t h e n if\ u'_i\neq u_i\ then if ui′=ui then
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 将 当 前 均 值 向 量 u i 更 新 为 u i ′ 将当前均值向量u_i更新为u'_i 将当前均值向量ui更新为ui′
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} e l s e else else
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 保 持 当 前 均 值 向 量 不 变 保持当前均值向量不变 保持当前均值向量不变
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} e n d i f end\ if end if
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} e n d f o r end\ for end for
\ \ \ \ \ \ \ \ \ \ {} until
\ \ \ \ \ \ \ \ \ \ {} \ \ \ \ \ \ \ \ \ \ {} 当前均值向量均未更新
输 出 : 输出: 输出:
\ \ \ \ \ \ \ \ \ \ {} 簇划分C = {C1,C2,…,Ck}
- 1.1.3 k均值算法注意
- "最大运行轮数" + "最小调整幅度"
1)为避免运行时间过长,通常设置一个"最大运行轮数"
或"最小调整幅度",
2)若达到最大轮数或调整幅度小于阂值,则停止运行.
- 1.1.4 k-means聚类的缺点
- "2维k-means模型:"
1)以每个簇的中心为圆心,簇中点到簇中心点的欧氏距离最大值为半径画一个圆。
2)k-means要求这些簇的形状必须是圆形的。
3)k-means模型拟合出来的簇(圆形)与实际数据分布(可能是椭圆)差别很大。
4)应用中缺少鲁棒性(在异常和危险情况下系统生存的能力)。
- 1.1.5 k均值算法例子
【D】
【k = 3】
【步骤】
第 一 步 : 随 机 选 择 第一步:随机选择 第一步:随机选择
算 法 开 始 时 随 机 选 取 三 个 样 本 x 6 , x 12 , x 27 \ \ \ \ \ \ \ \ \ \ \ 算法开始时随机选取三个样本x_6,x_{12},x_{27} 算法开始时随机选取三个样本x6,x12,x27
即 , u 1 = ( 0.403 ; 0.237 ) , u 2 = ( 0.343 ; 0.099 ) , u 3 = ( 0.532 ; 0.472 ) \ \ \ \ \ \ \ \ \ \ \ 即,u_1=(0.403;0.237),u_2=(0.343;0.099),u_3=(0.532;0.472) 即,u1=(0.403;0.237),u2=(0.343;0.099),u3=(0.532;0.472)
第 二 步 : 考 察 样 本 第二步:考察样本 第二步:考察样本
例 : x 1 = ( 0.697 ; 0.460 ) \ \ \ \ \ \ \ \ \ \ \ 例:x_1=(0.697;0.460) 例:x1=(0.697;0.460)
一 般 用 欧 式 距 离 \ \ \ \ \ \ \ \ \ \ \ 一般用欧式距离 一般用欧式距离
d 1 = ∑ i = 1 2 ∣ ∣ x 1 i − u 1 i ∣ ∣ 2 \ \ \ \ \ \ \ \ \ \ \ d_1=\sum_{i=1}^2||x_{1i}-u_{1i}||_2 d1=∑i=12∣∣x1i−u1i∣∣2
d 1 = ( 0.697 − 0.403 ) 2 + ( 0.460 − 0.237 ) 2 = 0.369 \ \ \ \ \ \ \ \ \ \ \ d_1=\sqrt{(0.697-0.403)^2+(0.460-0.237)^2}=0.369 d1=(0.697−0.403)2+(0.460−0.237)2=0.369
d 2 = ( 0.697 − 0.343 ) 2 + ( 0.460 − 0.099 ) 2 = 0.506 \ \ \ \ \ \ \ \ \ \ \ d_2=\sqrt{(0.697-0.343)^2+(0.460-0.099)^2}=0.506 d2=(0.697−0.343)2+(0.460−0.099)2=0.506
d 3 = ( 0.697 − 0.532 ) 2 + ( 0.460 − 0.472 ) 2 = 0.166 \ \ \ \ \ \ \ \ \ \ \ d_3=\sqrt{(0.697-0.532)^2+(0.460-0.472)^2}=0.166 d3=(0.697−0.532)2+(0.460−0.472)2=0.166
因 此 x 1 将 划 入 簇 C 3 中 \ \ \ \ \ \ \ \ \ \ \ 因此x_1将划入簇C_3中 因此x1将划入簇C3中
第 三 步 : 划 分 样 本 第三步:划分样本 第三步:划分样本
C 1 = { x 5 , x 6 , x 7 , x 8 , x 9 , x 10 , x 13 , x 14 , x 15 , x 17 , x 18 , x 19 , x 20 , x 23 } \ \ \ \ \ \ \ \ \ \ \ C_1=\{x_5,x_6,x_7,x_8,x_9,x_{10},x_{13},x_{14},x_{15},x_{17},x_{18},x_{19},x_{20},x_{23}\}