聚类(一)
来源:互联网 发布:自动伴奏音源软件 编辑:程序博客网 时间:2024/06/03 22:39
一.概念性介绍
若样本的标记信息未知,我们称这样的问题为“无监督学习”(unsupervised learning)。针对于无监督学习我们常用的方法是聚类的方法。
聚类的方法来自于“物以类聚”,即样本自动聚集成一个一个的我们称之为簇(cluster)的东东。簇与簇之间无交集,且各个簇的并集即为整个样本整体。
说是自动聚集,但其实只是人为的给它定一个聚集的标准,它按照这个标准来自动聚集而已。
1.1性能度量
分类可以用我们预测的结果和样本本身的标签进行比较,算得分类错误率来作为性能度量。与分类不同,聚类问题无标签,所以也就无法算得错误率,只能是我们自己想当然的定一个标准,我们说聚类的结果符合这个标准,则聚类就聚的好,不符合就聚得不好。这个标准就是“簇内相似度高,簇间相似度低”。可能不同的书上会定义一堆“指数”,“系数”来数学化引号里面的内容。感觉记住这两句话就行了,这些公式不用记即可。
1.2距离计算
1.1中提到,聚类性能度量的关键在于“相似度”。相似度又是如何定义的呢?针对有序属性和无序属性,会有不同的定义和计算方法。
如图所示所有的连续属性都属于有序属性,部分离散属性也属于有序属性,比如公交车票有1元,2元,3元,该属性的取值虽然是离散的,但3>2>1所以也属于有序属性,也可以通过“闵可夫斯基距离”来定义相似度。对于离散属性例如颜色(白,黑,灰)则必定为无序属性。
有序属性之间的相似度用闵可夫斯基距离来度量
无序属性可采用VDM(Value Difference Metric)
其中
第
距离越大,相似度越小。
接下来会介绍三种原型聚类的算法。
二.原型聚类
原型聚类是指聚类结构能够通过一组原型刻画。那么到底什么是原型呢?即样本空间中具有代表性的点。以下是三种比较著名的原型聚类算法。
2.1k均值算法
好熟悉的名字!
枚举出所有可能的簇划分,又一次被证明是一个NP难的问题。其迭代算法如下:
输入:样本集
聚类簇数k.
过程:
1.从
repeat
令
for
计算样本
根据距离最近的均值向量确定
将样本
end for
for
计算新均值向量
end for
until当前均值向量均未更新
输出:簇划分
2.2学习向量量化(Learning Vector Quantization)算法
学习向量量化适用于训练样本的标签已知(奇了怪了 ,聚类不是无监督学习建立模型的方法吗。学习向量量化算法作为聚类的著名算法之一,为何样本标签已知呢?矛盾不矛盾,先不管了,以后想明白了再回来修改)。与
有三个样本
如果按照
这对于没有外在证据证明错的情况下,这样分类确实能够自圆其说:达到分类之后簇内紧密。但有的时候或者说一定是这样,分类之后簇内最紧密的时候并不代表分类正确。这里的根本原因是因为样本数量的关系,当样本数量无限大的时候,
一方面,我们可以通过大数据提升训练样本的数量;另一方面如果训练样本的标签已知,我们就可以不断纠正样本数量少时的不知天高地后。得到较好的结果。还以上图为例
算法如下:
输入:样本集
原型向量个数q,各原型预先向量预设的类别标记
学习率
过程:初始化一组原型向量{
repeat
从样本集
计算样本
找出与
if
else
end if
更新原型向量
until 满足停止条件(比如说到达最大迭代轮数)
记住上面两种聚类算法,我们建立最后的模型得到的都仅仅是原型向量。
- 聚类(一)
- 聚类(一)
- 机器学习(聚类[一])
- K-means聚类(一)
- 聚类(一)
- (一)
- (一)
- (一)
- (一)
- (一)
- hibernate一二级缓存(一)
- 每日一题(一)
- 一、对象导论(一)
- 万能的一玄:一玄创业故事(一)
- python(一)端口扫描器(一)
- C每日一读(一)
- 每日一植物(一) -- 虎皮兰
- 第六周 项目一(一)
- Hadoop1中如何确保HDFS的高可靠(HA)
- java测试Junit框架
- IOS中tableView的cell的复用机制-许笑欢
- python--循环、列表、字典、元组
- 异步批量加载网络图片,并使用二级缓存.
- 聚类(一)
- BZOJ4010: [HNOI2015]菜肴制作 解题报告
- correlation filter 目标跟踪论文集
- 杂谈
- Why you should embrace functional programming in Java 8
- hdu 1171
- MUi 框架ajax请求WebService接口
- Java 8: No more loops
- 02-线性结构1 两个有序链表序列的合并