机器学习-kmeans/kmedoids/spectralcluster聚类算法

Posted 二层楼实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习-kmeans/kmedoids/spectralcluster聚类算法相关的知识,希望对你有一定的参考价值。


kmeans/kmedoids/spectralcluster这类聚类算法一个典型的特点需要在聚类之前指定聚类的数量k,这个需要先验知识。
 
kmeans将数据划分为k个互斥簇,并返回它分配给每个观测的簇的索引。kmeans将数据中的每个观测值视为空间中具有位置的对象。该函数寻找一个分区,在这个分区中,每个集群中的对象彼此尽可能接近,而其他集群中的对象尽可能远离。
 
与层次聚类不同的是,k-means聚类是根据实际的观察结果而不是数据中每一对观察结果之间的差异来操作的。此外,k-means集群创建了单个级别的集群,而不是多层层次的集群。因此,对于大量数据,k-means聚类往往比层次聚类更适合。
 
k-means分区中的每个集群由成员对象和一个质心(或中心)组成。在每个簇中,kmeans使质心和簇中所有成员对象之间的距离之和最小。
 
Kmedoids同理。
 
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的Kmeans算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多。
 
谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。
 
以下述样本做为例子,进行聚类分析。
n=20;a=1.4;x1=[12+rand(n,1)/a,12+randn(n,1)/a,12+randn(n,1)/a];x2=[5+randn(n,1)/a,24+rand(n,1)/a,4+randn(n,1)/a];x3=[24+randn(n,1)/a,26+randn(n,1)/a,26+randn(n,1)/a];x4=[31+randn(n,1)/a,36+randn(n,1)/a,33+rand(n,1)/a]; dat=[x1;x2;x3;x4];


假设有80个样本,每个样本有3个特征。

原始数据分布如下:


对聚类簇数量的评估,分为4类最优。

机器学习-kmeans/kmedoids/spectralcluster聚类算法


分为4类的轮廓图如下,轮廓值较大且均匀,聚类质量较好。

机器学习-kmeans/kmedoids/spectralcluster聚类算法


聚类结果如下:

机器学习-kmeans/kmedoids/spectralcluster聚类算法



如下是kmedoids聚类结果及其中心点。

机器学习-kmeans/kmedoids/spectralcluster聚类算法


如下是spectralcluster聚类结果及相似度图。

机器学习-kmeans/kmedoids/spectralcluster聚类算法



实际工程应用中,需根据问题及数据特征选择合适的聚类算法。



[历史文章]










以上是关于机器学习-kmeans/kmedoids/spectralcluster聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

机器学习:机器学习工作流程

一文读懂什么是机器学习--1. 机器学习是什么?

机器学习机器学习的经典算法

机器学习基础教程笔记---机器学习概述

机器学习基础教程笔记---机器学习概述

机器学习入门