一、基本概念
聚类:对无标签的数据,按照其内在规律分组
概念:聚类,簇,
用途:1)数据内在的分布结构的探索 2)更复杂的问题的前驱,如分类等其他问题
性能度量:
好的聚类结果:簇内相似度高,簇间相似度低
外部指标:与参考模型对比,(Jaccard系数,FM指数,Rand指数)
外部指标类似于查准率与查全率等指标的意思
内部指标:直接考察聚类结果(样本间的距离,簇的中心点,DB指数,Dunn指数)
内部指标,主要是考察不同簇间的距离关系,通过对距离的计算来判断簇间的差异,从而衡量聚类的性能
DB指数,可以理解为簇的大小,与簇间中心点距离之比
Dunn指数,全局两个不同簇中样本的最小距离,与簇内部样本间的最大距离之比
两个指标,都是在对比簇间的距离和簇本身的大小,可以想象,肯定是簇间距离越大越好,簇的大小越小越好
注:性能度量中讲的度量方式比较抽象,只是基本的公式和定义
距离计算
1)范数
2)有序属性和无序属性
3)加权距离
二、算法
1、原型聚类:假设存在原型,先初始化一个原型,再对原型进行不断的迭代更新
1.1 K-mens
先根据k,初始化k个簇的中心,然后根据点到每个簇心的距离划分点,然后根据划分的点更新簇心,反复迭代,直到基本稳定
1.2学习向量化 LVQ
预设了类别标记——(带标记的聚类)
初始化向量,如果与其最近的元素与词向量的类别标记相同,则优化向量向这个元素靠近,不同则远离
但是类别标记并不是分类
1.3高斯混合聚类
概率模型,计算的距离是用概率表示,用混合的高斯模型和样本点的分布,计算样本点的最大概率然后推出其所属的类,
最后再根据新的类优化高斯模型,反复迭代
关于函数的参数和混合的加权,是使用时要注意的变量
可以和k-means联系记忆,k-means是欧拉距离做评价标准,簇心作为样本的原型,相当于 用簇心的二次函数范围做划分
高斯混胡是用高斯函数做划分
2、密度聚类
主要思想:
实现给定邻域的大小和MinPts(即定义的最小的核心对象的邻域应该包含的样本数)
然后根据邻域和MinPts参数,便利所有的点,找到能算得上是邻域的点,(可以认为是那些周围密度比较稠密的点都会被找到)
然后以这些点为基础,在其中随机抽出一个点,找到他的邻域能有交集的点,在用找到的点反复找,最后把所有能和他邻域相接的点都找到,为止
在对剩下的点继续抽出一个点,重复执行,指导所有的核心点和非核心点都已经分簇为止
密度聚类 并不是理解成单位面积的样本数多少来定义的密度,
这个密度应该指的是样本的分布的密度,即样本分布在很近的位置,就是很稠密,密度比较大,
DBSCAN小结
和传统的K-Means算法相比,DBSCAN最大的不同就是不需要输入类别数k,当然它最大的优势是可以发现任意形状的聚类簇,而不是像K-Means,一般仅仅使用于凸的样本集聚类。同时它在聚类的同时还可以找出异常点,这点和BIRCH算法类似。
那么我们什么时候需要用DBSCAN来聚类呢?一般来说,如果数据集是稠密的,并且数据集不是凸的,那么用DBSCAN会比K-Means聚类效果好很多。如果数据集不是稠密的,则不推荐用DBSCAN来聚类。
3、层次聚类
Agnes自底向上的聚合策略
基本思想:两个簇的距离最小,则合并两个簇,对于样本最初簇的数量和样本数量一致,最终达到我们设定的簇的数量停止聚合
总结:
kmeans和高斯混合很像,一个是利用二次函数算聚类,一个是利用高斯函数算密度,虽然算法不同,但想象在二维上的图形,是很接近的,只不过距离度量不同
密度聚类,是一种用联通关联扩散传染的方式分簇
层次聚类中自底向上的方式,相当于不断合并,最后剩下几个大的聚类
补充:
应用举例:
基于用户定位的商业选址
中文地址标准化处理
保险投保者分组
对于无监督数据,最常规的分析处理办法就是聚类,在什么维度聚类,要依据具体业务具体分析
算法流程简述:
kmeans:
输入训练样本X,簇个数K
1)随机抽取k个X,做初始簇新
2)计算每个X到每个簇心得距离,按照距离,分到距离最近的簇心的一组
3)按照分组,重新计算簇心(各特征维度取均值)
4)反复计算2)3),直到簇心的易懂很小,或者无不同样本重新划分为止
密度——DBSCAN
输入:训练样本X,邻域e,最小邻域个数Minpts
1)计算核心样本点,所有的核心样本点存入到一个集合中A
2)从A中随机取出一个样本,然后遍历所有的样本,计算,如果和其有联通,则划分都一组
3)反复迭代2),直到集合A为空
——注:最后未被分组的点很大可能是异常点
初始参数e和MinPts的调参复杂,二者相互影响
层次聚类——AGNES
输入:训练样本X,簇个数K
1)初始化,每个样本点都是一个簇
2)根据簇的距离的定义规则,将最近的两个簇合并
3)反复迭代2),则到类别的数量等于K