无监督学习 —— 聚类
聚类
聚类的目标是发现数据中的相似群,称为簇(cluster),保证簇内间距小,簇间距离大。
聚类不需要对数据进行标注,因而被看做是无监督学习。
原型聚类,基于数据划分
K-means
K-means是硬聚类的,一个数据点只能属于一个簇。
K-means算法将数据划分为K个簇,K由用户来指定,每一个簇有一个中心,centroid
簇的中心最初是随机设定的,因而容易陷入局部最优解。
输入:数据$D={x_1,x_2,...,x_n}$,簇数目K
1、随机选取K个种子数据点作为K个簇中心
2、repeat
3、 foreach x in D do
4、 计算每一个x与每一个簇中心的距离
5、 将x划分到距离最近的簇中心
6、 endfor
7、 用当前的簇内点重新计算K个簇的中心位置
8、until(达到终止条件,收敛,当前均值向量都未更新)
K-means是一个【数据划分】和【簇中心】交替更新的算法,首先固定簇中心,对数据进行划分,根据划分结果更新簇中心,进行下一轮划分,交替进行,收敛时停下来,是一种alternative optimization的方式。K-means使用greedy的方法对于数据进行划分。
K-means的终止条件:
①数据不再(很少)被重新指定到不同的簇
②中心位置不在变化或者变化很小
③SSE(Sum of Squared Error)不再减少
dist是数据点与簇中心的距离。
然而正是由于是利用贪心的方法进行数据划分,导致初始选择的数据中心对最终结果影响很大,不同的初始中心可能会得到不同的结果,当K的值较小的时候可以通过多次随机选取初始值来进行训练,以得到更好的效果。
K-means易于理解和实现,高效,时间复杂度较低。但容易陷入局部最优解,一般来说要求特征值为数值型,类别型特征不好求解mean,另外K值需要在训练前确定,这个就需要经验来决定然后再不断调整,对于离群点敏感,距离其他数据点很远的点会因为在训练时去适应这个很远的点导致结果出现偏差。
对聚类结果的评价
聚类问题没有统一的评价标准,利用间接评价的方式:通过评价使用聚类结果后对其他应用任务的改进幅度来对聚类进行评价。
也可以直接对聚类结果进行评价:假设数据是有标注的,每一个簇是一个类别,利用标注好的数据对聚类算法进行评价,根据聚类结果与标注数据构造混淆矩阵(Confusion Matrix),
也可以通过聚类结果的总体熵或总体纯度来评价聚类结果。
聚类结果的总体熵,(Pr(c_j))表示(D_i)中标注为(c_j)的数据比例:
聚类结果的总体纯度,(purity(D_i)=max_j Pr(c_j))
学习向量量化(Learning Vector Quantization)
【待整理】
高斯混合聚类
【待整理】
密度聚类
DBSCAN
【待整理】
层次聚类
AGNES
【待整理】
参考文献
1、混淆矩阵(Confusion Matrix) https://www.jianshu.com/p/0fc8a0b784f1