聚类算法概述及代码实现

聚类算法概述

聚类分析是根据样本数据之间的某种相似关系将数据集中的样本划分为多个通常不相交的子集的过程,每一个子集称为一个簇(cluster),每个簇对应一个潜在的类别。

按照数据之间的相似性,对数据集进行分组或分簇,每个簇中任意两个数据样本之间具有较高的相似度,而不同簇的数据样本之间具有较低的相似度。

聚类分析的目标:

  • 簇内差距最小化,即一个簇内的数据尽量相似(high intra-class similarity)
  • 簇间差距最大化,即不同簇的数据尽量不相似(low inter-class similarity)

相似度度量

  • 连续性属性的相似度
  • 二值离散型属性的相似度
  • 多值离散型属性的相似度
  • 混合类型属性的相似度

1、连续性属性的相似度

距离度量:距离越大,相似性越小。

  • 常用距离度量方法
    闵可夫斯基距离(Minkowski distance):
    d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dist_{mk}(x_i,x_j)=(\sum^n\limits_{u=1}\mid x_{iu}-x_{ju} \mid^p)^\frac{1}{p} distmk(xi,xj)=(u=1nxiuxjup)p1
    p = 1 p=1 p=1曼哈顿距离(Manhattan distance):
    d i s t m a n ( x i , x j ) = ∥ x i − x j ∥ 1 = ∑ u = 1 n ∣ x i u − x j u ∣ dist_{man}(x_i,x_j)=\|x_i-x_j\|_1=\sum^n\limits_{u=1}\mid x_{iu}-x_{ju} \mid distman(xi,xj)=xixj1=u=1nxiuxju
    p = 2 p=2 p=2欧式距离(Euclidean distance):
    d i s t e d ( x i , x j ) = ∥ x i − x j ∥ 2 = ∑ u = 1 n ∣ x i u − x j u ∣ 2 dist_{ed}(x_i,x_j)=\|x_i-x_j\|_2=\sqrt{\sum^n\limits_{u=1}\mid x_{iu}-x_{ju} \mid^2} disted(xi,xj)=xixj2=u=1nxiuxju2

  • 类间距离计算相似性方法
    设有两个类 C a C_a Ca C a C_a Ca,它们分别有 m m m n n n 个元素,中心分别为 γ a \gamma_a γa γ b \gamma_b γb。设元素 x ∈ C a x \in C_a xCa y ∈ C b y \in C_b yCb ,这两个元素间的距离通常通过类间距离来刻画,记为 D S ( C a , C b ) D_S(C_a,C_b) DS(Ca,Cb)
    最短距离法
    D S ( C a , C b ) = min ⁡ { d ( x , y ) ∣ x ∈ C a , y ∈ C b } D_S(C_a,C_b)=\min\{d(x,y)\mid x\in C_a, y\in C_b\} DS(Ca,Cb)=min{d(x,y)xCa,yCb}
    最长距离法
    D L ( C a , C b ) = max ⁡ { d ( x , y ) ∣ x ∈ C a , y ∈ C b } D_L(C_a,C_b)=\max\{d(x,y)\mid x\in C_a, y\in C_b\} DL(Ca,Cb)=max{d(x,y)xCa,yCb}
    中心法
    D C ( C a , C b ) = d ( γ a , γ b ) = d ( x a ˉ , x b ˉ ) D_C(C_a,C_b)=d(\gamma_a,\gamma_b)=d(\bar{x_a},\bar{x_b}) DC(Ca,Cb)=d(γa,γb)=d(xaˉ,xbˉ)
    类平均法
    D G ( C a , C b ) = 1 m n ∑ x ∈ C a ∑ y ∈ C b d ( x , y ) D_G(C_a,C_b)=\frac{1}{mn}\sum\limits_{x\in C_a}\sum\limits_{y\in C_b}d(x,y) DG(Ca,Cb)=mn1xCayCbd(x,y) 其中 x i ˉ = 1 n i ∑ x ∈ C i x \bar{x_i}=\frac{1}{n_i}\sum\limits_{x\in C_i}x xiˉ=ni1xCix

2、二值离散型属性的相似度

一个二元变量只有两个状态:0或1,0表示变量为空,1表示变量存在。

可以对给定的数据计算相异度矩阵。如果假设所有的二元变量具有相同的权重,得到一个两行两列的可能性。
在这里插入图片描述

  • 对称的二值离散型属性
    对称的二值离散型:属性的两个状态是同等价值的,并有相同的权重,也就是两个取值0或1没有优先权。例如,属性“性别” ,它有两个值“女性”和“男性”
    简单匹配系数SMC:Simple matching coefficient
    (invariant, if the binary variable is symmetric):

S M C ( x i , x j ) = a 10 + a 01 a 11 + a 10 + a 01 + a 00 SMC(x_i,x_j)=\frac{a_{10}+a_{01}}{a_{11}+a_{10}+a_{01}+a_{00}} SMC(xi,xj)=a11+a10+a01+a00a10+a01

  • 不对称的二值离散型属性
    不对称二值离散型:属性两个状态的输出不是同样重要。例如:一个疾病检查的肯定和否定结果。根据惯例,将比较重要的输出结果,即出现几率较小的结果编码为1(例如,HIV阳性),而将另一种结果编码为0(例如,HIV阴性)。给定两个不对称的二元变量,两个都取值1的情况被认为比两个都取值0的情况更有意义。因此,这样的二元变量被认为好像只有一个状态。
    JACCARD系数:在计算中,负匹配的数目d认为是不重要的,因此被忽略。
    J C ( x i , x j ) = a 10 + a 01 a 11 + a 10 + a 01 JC(x_i,x_j)=\frac{a_{10}+a_{01}}{a_{11}+a_{10}+a_{01}} JC(xi,xj)=a11+a10+a01a10+a01

3、多值离散型属性的相似度计算方法

多值离散型属性的相似度
d ( x i , x j ) = d − u d d(x_i,x_j)=\frac{d-u}{d} d(xi,xj)=ddu
其中, d d d 为数据集中的属性个数, u u u 为样本 x i x_i xi x j x_j xj 取值相同的属性个数。

4、混合类型属性的相似度计算方法

对于包含混合类型属性的数据集的相似度通常有两种计算方法:

  • 将属性按照类型分组,每个新的数据集中只包含一种类型的属性;之后对每个数据集进行单独的聚类分析
  • 把混合类型的属性放在一起处理,进行一次聚类分析

d ( x i , x j ) = ∑ k = 1 d δ i j ( k ) d i j ( k ) ∑ k = 1 d δ i j ( k ) d(x_i,x_j)=\frac{\sum^d\limits_{k=1}\delta^{(k)}_{ij}d^{(k)}_{ij}}{\sum^d\limits_{k=1}\delta^{(k)}_{ij}} d(xi,xj)=k=1dδij(k)k=1dδij(k)dij(k)
δ i j ( k ) \delta^{(k)}_{ij} δij(k) 表示第 k k k 个属性对样本 x i x_i xi x j x_j xj 之间距离计算的影响:
x i k x_{ik} xik x j k x_{jk} xjk 不存在时, δ i j ( k ) = 0 \delta^{(k)}_{ij}=0 δij(k)=0
当第 k k k 个属性为不对称二值离散属性,且 x i k = x j k = 0 x_{ik}=x_{jk}=0 xik=xjk=0 时, δ i j ( k ) = 0 \delta^{(k)}_{ij}=0 δij(k)=0
此外 δ i j ( k ) = 1 \delta^{(k)}_{ij}=1 δij(k)=1

k k k 个属性为连续型时, d i j ( k ) = ∣ x i k − x j k ∣ max ⁡ ∣ x 1 k , x 2 k , . . . , x n k ∣ − min ⁡ ∣ x 1 k , x 2 k , . . . , x n k ∣ d^{(k)}_{ij}=\frac{\mid x_{ik}-x_{jk}\mid}{\max\mid x_{1k}, x_{2k}, ..., x_{nk} \mid - \min\mid x_{1k}, x_{2k}, ..., x_{nk} \mid} dij(k)=maxx1k,x2k,...,xnkminx1k,x2k,...,xnkxikxjk
k k k 个属性为二值或多值离散型时, x i k = x j k x_{ik}=x_{jk} xik=xjk d i j ( k ) = 0 d^{(k)}_{ij}=0 dij(k)=0, 否则 d i j ( k ) = 1 d^{(k)}_{ij}=1 dij(k)=1


聚类性能度量

外部指标 (external index)
内部指标 (internal index)

。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值