r语言做聚类分析聚类nbclust函数画出的图是什么意思

聚类分析(Cluster analysis)是一组将研究对象分为楿对同质的群组(Clusters)的统计分析技术 聚类分析区别于分类分析(Classification analysis) ,前者是无监督学习而后者是有监督学习。

无监督学习也就是预先没有类别嘚标准K-means方法是最常见的聚类方法之一,在

欢迎加入本站公开兴趣群

兴趣范围包括各种让数据产生价值的办法实际应用案例分享与讨论,分析工具ETL工具,数据仓库数据挖掘工具,报表系统等全方位知识

}

我们知道『物以类聚人以群分』,这里并不是分类问题而是聚类问题。

两者主要区别在于分类是将一组数据根据不同的类区分,已经知道有哪些类也就是数据已經有了类的标签。而聚类是一种事先不知道有多少类通过算法学习,分出来了一些类别

分类跟聚类也分别是有监督学习和无监督学习嘚范畴。

k-means是聚类算法中最简单的也是最常用的一种方法。

这里的 指的是初始规定要将数据集分成的类别means是各类别数据的均值作为中心點。

1.初始设置要分成的类别 及随机选取数据集中 个点作为初始点

2.根据相似性度量函数将其他点与初始点做比较,离哪个值近就分到哪一個类

3.将分出来的 类求取平均值作为新的中心点

4.重复步骤,直到中心点不变或者变化不大(即收敛)或者达到规定的迭代次数则停止

相似性度量有多种函数一般使用欧式距离。

补充:为什么会使用均值作为中心点的选择呢

这主要是因为目标函数的设置决定的。我们使用誤差平方和作为聚类的目标函数即 。

这里的 表示 个类 表示第 个中心, 是欧几里得距离。

对第 个中心 求解最小化上述公式。对上述公式求导并令导数等于0得到如下公式:

可以看到,每个簇中能够让目标函数达到最小的中心点就是这个簇的均值

下面以一个具体例子來说明k-means算法步骤。数据集如下

因为是二维的,可以画下散点图看下

直观来看,这个数据集是有两类的也就是两个簇,一个是在右上角一个是在左下角。可以使用算法看下是否符合预判

那我们可以设置 为2,初始中心值就选

下面就是计算剩下的点到中心点的距离,使用欧氏距离

比较之后,发现剩下的点到 距离更近那现在有了两类:

然后重新选择中心点,第一类只有一个值则仍然为 。第二类按照5个点的均值作为中心点 :

Step2和Step3中心点相差较大重新选择中心点。

这次就是两个类中数据的均值作为新的中心点了分别为 。

继续下去Φ心点不变,也就是达到收敛了分成的两类就是上面两组,与散点图观察到的一致

使用r语言做聚类分析自带的函数及可视化包。

确定朂佳聚类数选择坡度不明显的点作为聚类数。

可以选择4个类别下面进行聚类

第一行结果是4类每个类别的数据个数。

然后是每个值所属哪个类别

聚类的目的是组内距离小,组间距离大between_SS / total_SS就是组间距离占总距离的占比,越接近1越好

①需要确定分类数 ,一般根据经验戓者已经有预判其次是根据上面的方法确定分类数量。

②初始值的选取会影响最终聚类效果并且目标函数 可能会达到局部最优解。这個有相应的改进方法包括k-means++和二分k-means。

③对于类似下面圆形的数据集聚类效果很差,主要是算法原因所以还有其他的聚类算法,比如基於密度的方法等

不过k-means实现简单,易于理解应用很广泛。

}

我要回帖

更多关于 r语言聚类 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信