K-means聚类算法
聚类
在无监督学习中, 训练样本的标记信息是未知的, 目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律, 为进一步的数据分析提供基础,此类学习任务中研究最多、应用最广的是“聚类”(clustering)
聚类试图将数据集中的样本划分为若干个通常是不相交的子集, 每个子集称为一个“簇”(cluster)
通过这样的划分, 每个簇可能对应于一些潜在的概念(类别), 需说明的是, 这些概念对聚类算法而言事先是未知的, 聚类过程仅能自动形成簇结构, 簇所对应的概念语义需由使用者来把握
关于簇的完整定义尚未达成共识,传统的定义如下
-
同一簇中的实例必须尽可能相似
-
不同簇中的实例必须尽可能不同
-
相似度和相异度的度量必须清楚并具有实际意义
性能度量
聚类性能度量大致有两类
-
将聚类结果与某个参考模型进行比较, 称为“外部指标” (external index)
-
直接考察聚类结果而不利用任何参考模型, 称为“内部指标” (internalindex)
外部指标
对数据集 D = { x 1 , x 2 , … , x m } , D=\left\{\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \ldots, \boldsymbol{x}_{m}\right\}, D={
x1,x2,…,xm}, 假定通过聚类给出的族划分为 C = { C 1 , C 2 , … , C k } , \mathcal{C}=\left\{C_{1},C_{2}, \ldots, C_{k}\right\}, C={
C1,C2,…,Ck}, 参考模型给出的族划分为 C ∗ = { C 1 ∗ , C 2 ∗ , … , C s ∗ } . \mathcal{C}^{*}=\left\{C_{1}^{*}, C_{2}^{*}, \ldots, C_{s}^{*}\right\} . C∗={
C1∗,C2∗,…,Cs∗}. 相应地, 令 λ \boldsymbol{\lambda} λ 与 λ ∗ \lambda^{*} λ∗ 分别表示与 C \mathcal{C} C 和 C ∗ \mathcal{C}^{*} C∗ 对应的族标记向量. 我们将样本两两配对考虑, 定义
a = ∣ S S ∣ , S S = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = λ j ∗ , i < j ) } b = ∣ S D ∣ , S D = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ ≠ λ j ∗ , i < j ) } c = ∣ D S ∣ , D S = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ = λ j ∗ , i < j ) } d = ∣ D D ∣ , D D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ ≠ λ j ∗ , i < j ) } \begin{aligned} a &\left.=|S S|, \quad S S=\left\{\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \mid \lambda_{i}=\lambda_{j}, \lambda_{i}^{*}=\lambda_{j}^{*}, i<j\right)\right\} \\ b &\left.=|S D|, \quad S D=\left\{\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \mid \lambda_{i}=\lambda_{j}, \lambda_{i}^{*} \neq \lambda_{j}^{*}, i<j\right)\right\} \\ c &\left.=|D S|, \quad D S=\left\{\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \mid \lambda_{i} \neq \lambda_{j}, \lambda_{i}^{*}=\lambda_{j}^{*}, i<j\right)\right\} \\ d &\left.=|D D|, \quad D D=\left\{\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \mid \lambda_{i} \neq \lambda_{j}, \lambda_{i}^{*} \neq \lambda_{j}^{*}, i<j\right)\right\} \end{aligned} abcd=∣SS∣,SS={
(xi,xj)∣λi=λj,λi∗=λj∗,i<j)}=∣SD∣,SD={
(xi,xj)∣λi=λj