机器学习算法(一):聚类算法

聚类算法

聚类算法是属于无监督学习算法中非常常用的一种。算法使用的训练数据中的标签信息是未知的,目标是通过对无标记的训练样本的学习来揭示内在的性质和规律。聚类过程能够自动地形成簇结构,但是簇对应的概念语意需要由使用者来决定。聚类既能作为一个单独的过程,用于寻找数据的内在分布结构,也可以作为分类等其他学习任务的前驱过程。

性能度量

对于任何一个算法,我们都需要有一个性能指标来衡量算法结果的优劣。之前已经有一篇博客介绍了性能度量这一问题,那更多的是对于监督学习算法而言。对于聚类问题来说,有其相对独立的性能度量指标。

聚类是将数据集D划分为若干个互不相交的子集。直观上看,我们希望『物以类聚』,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的『簇内相似度』高且『簇间相似度』低。

聚类性能度量大致有两类。一类是将聚类结果与某个『参考模型』进行比较,称为『外部指标』;另一类是直接考察聚类结果而不利用任何参考模型,称为『内部指标』。

外部指标

对数据集D,假定通过聚类给出的簇划分为 C={ C1,C2,...,Ck} ,参考模型给出的簇划分为 C={ C1,C2,...,Cs} 。令 λ λ 分别表示 C C 对应簇的簇心向量。将样本两两配对考虑,定义:

a=|SS|,SS={ (xi,xj)|λi=λj,λi=λj,i<j}

b=|SD|,SD={ (xi,xj)|λi=λj,λiλj,i<j}

c=|DS|,DS={ (xi,xj)|λiλj,λi=λj,i<j}

d=|DD|,DD={ (xi,xj)|λiλj,λiλj,i<j}

其中集合SS包含了在 C 中隶属与相同簇且在 C 中也隶属于相同簇的样本对,集合SD包含了在 C 中隶属于相同簇但在 C 中隶属于不同簇的样本对。其他集合的含义可以类推得到。

基于以上集合,有下面这些常用的聚类性能度量外部指标:

Jaccard系数:

JC=aa+b+c

FM指数(Fowlkes and Mallows Index):

FMI=(aa+baa+c)2

Rand指数:

RI=2(a+d)m(m1)

上述性能度量的结果均在 [0,1] 区间内,只越大越好。

内部指标

考虑聚类结果的簇划分 C={ C1,C2,...,Ck} ,定义以下符号:

avg(C)=2|C|(|C|1)1i<j|C|dist(xi,xj)

diam(C)=max1i<j|C|dist(xi,xj)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值