kmeans聚类基本思想

您所在的位置:网站首页 灌篮的步骤 kmeans聚类基本思想

kmeans聚类基本思想

2024-07-13 20:34| 来源: 网络整理| 查看: 265

聚类的基本思想

俗话说"物以类聚,人以群分"

聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中。簇内的对象越相似,聚类的效果越好。

定义:给定一个有个对象的数据集,聚类将数据划分为个簇,而且这个划分满足两个条件:(1)每个簇至少包含一个对象;(2)每个对象属于且仅属于一个簇。

基本思想:对给定的,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得每一次改进之后的划分方案都较前一次更好。

监督学习(supervised learning):是对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。【神经网络和决策树】

无监督学习(unsupervised learning):是对没有概念标记(分类)的训练样本进行学习,以发现训练样本集中的结构性知识。【聚类】

K-均值(K-means)聚类算法

聚类分析(cluster analysis)试图将相似对象归入同一簇,将不相似对象归到不同簇。

K-Means: K-均值聚类也称为快速聚类法,在最小化误差函数的基础上将数据划分为预定的类数K。该算法原理简单并便于处理大量数据。

K-中心点:K-均值算法对孤立点的敏感性,K-中心点算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心。

系统聚类:也称为层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,其所包含的对象就越少,但这些对象间的共同特征越多。该聚类方法只适合在小数据量的时候使用,数据量大的时候速度会非常慢。

 

K-Means算法

K-Means算法是最为经典的基于划分的聚簇方法,是十大经典数据挖掘算法之一。简单的说K-Means就是在没有任何监督信号的情况下将数据分为K份的一种方法。聚类算法就是无监督学习中最常见的一种,给定一组数据,需要聚类算法去挖掘数据中的隐含信息。聚类算法的应用很广:顾客行为聚类,google新闻聚类等。

K值是聚类结果中类别的数量。简单的说就是我们希望将数据划分的类别数

 

一、K-Means算法基本思想

在数据集中根据一定策略选择K个点作为每个簇的初始中心,然后观察剩余的数据,将数据划分到距离这K个点最近的簇中,也就是说将数据划分成K个簇完成一次划分,但形成的新簇并不一定是最好的划分,因此生成的新簇中,重新计算每个簇的中心点,然后在重新进行划分,直到每次划分的结果保持不变。在实际应用中往往经过很多次迭代仍然达不到每次划分结果保持不变,甚至因为数据的关系,根本就达不到这个终止条件,实际应用中往往采用变通的方法设置一个最大迭代次数,当达到最大迭代次数时,终止计算。

二、算法实现

具体的算法步骤如下:

随机选择K个中心点把每个数据点分配到离它最近的中心点;重新计算每类中的点到该类中心点距离的平均值分配每个数据到它最近的中心点;重复步骤3和4,直到所有的观测值不再被分配或是达到最大的迭代次数(R把10次作为默认迭代次数)。 K-means聚类能处理比层次聚类更大的数据集。另外,观测值不会永远被分到一类中,当我们提高整体解决方案时,聚类方案也会改动。不过不同于层次聚类的是,K-means会要求我们事先确定要提取的聚类个数

适用范围及缺陷

K-Menas算法试图找到使平方误差准则函数最小的簇。当潜在的簇形状是凸面的,簇与簇之间区别较明显,且簇大小相近时,其聚类结果较理想。对于处理大数据集合,该算法非常高效,且伸缩性较好。

但该算法除了要事先确定簇数K和对初始聚类中心敏感外,经常以局部最优结束,同时对“噪声”和孤立点敏感,并且该方法不适于发现非凸面形状的簇或大小差别很大的簇。

克服缺点的方法:使用尽量多的数据;使用中位数代替均值来克服outlier的问题。

三、K-Means R语言实战

一般情况下,没有必要自己实现K-Means算法,有很多成熟的软件包实现了K-Means算法,R语言提供了kmeans方法进行聚类分析。

kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen"), trace=FALSE) # centers为提取的聚类数目

进行K-Means划分时,首先要确定划分簇数K,如果对数据有先验性认知可根据对数据的认知确定K,在对数据没有先验性认知的情况下,通常通过数据可视化方法确定K值。我们以机器学习中常用的iris数据集为例演示如何进行K-Means聚类分析。首先使用主成分分析(PCA)等降维方法将数据将降维投影到二维平面上,通过人工观察确定划分数。

library(ggplot2) library(ggfortify) #使用ggfortify包进行聚类结果的可视化展示 newiris


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3