全文链接:http://tecdat.cn/?p=9997

原文出处:拓端数据部落公众号

 【视频】KMEANS均值聚类和档次聚类:R语言剖析生存幸福品质系数可视化实例

KMEANS均值聚类和档次聚类:R语言剖析生存幸福品质系数可视化实例

,时长06:05


k-medoids聚类简介

k-medoids是另一种聚类算法,可用于在数据集中查找分组。k-medoids聚类与k-means聚类十分类似,除了一些区别。k-medoids聚类算法的优化性能与k-means略有不同。在本节中,咱们将钻研k-medoids聚类。

k-medoids聚类算法

有许多不同类型的算法能够执行k-medoids聚类,其中最简略,最无效的算法是PAM。在PAM中,咱们执行以下步骤来查找集群核心:

  1. 从散点图中抉择k个数据点作为聚类核心的终点。
  2. 计算它们与散点图中所有点的间隔。
  3. 将每个点分类到最靠近核心的聚类中。
  4. 在每个群集中抉择一个新点,以使该群集中所有点与本身的间隔之和最小。
  5. 反复  _步骤2,_  直到核心进行变动。

能够看到,除了_步骤1_  和  _步骤4_之外,PAM算法与k-means聚类算法雷同  。对于大多数理论目标,k-medoids聚类给出的后果简直与k-means聚类雷同。然而在某些非凡状况下,咱们在数据集中有离群值,因而首选k-medoids聚类,因为它比离群值更强壮。

k-medoids聚类代码

在本节中,咱们将应用在上两节中应用的雷同的鸢尾花数据集,并进行比拟以查看后果是否显著不同于上次取得的后果。

实现k-medoid聚类

在本练习中,咱们将应用R的预构建库执行k-medoids:

  1. 将数据集的前两列存储在  iris_data  变量中:

    iris_data<-iris\[,1:2\]
  2. 装置  软件包:

    install.packages("cluster")
  3. 导入  软件包:

    library("cluster")
  4. 将PAM聚类后果存储在  km.res  变量中:

    km<-pam(iris_data,3)
  5. 导入库:

    library("factoextra")
  6. 在图中绘制PAM聚类后果:

    fviz\_cluster(km, data = iris\_data,palette = "jco",ggtheme = theme_minimal())

    输入如下:

    图:k-medoids聚类的后果

k-medoids聚类的后果与咱们在上一节中所做的k-means聚类的后果没有太大差别。

因而,咱们能够看到后面的PAM算法将咱们的数据集分为三个聚类,这三个聚类与咱们通过k均值聚类失去的聚类类似。

图:k-medoids聚类与k-means聚类的后果

在后面的图中,察看k均值聚类和k均值聚类的核心如何如此靠近,然而k均值聚类的核心间接重叠在数据中已有的点上,而k均值聚类的核心不是。

k-均值聚类与k-medoids聚类

当初咱们曾经钻研了k-means和k-medoids聚类,它们简直是完全相同的,咱们将钻研它们之间的区别以及何时应用哪种类型的聚类:

  • 计算复杂度:在这两种办法中,k-medoids聚类在计算上更加简单。当咱们的数据集太大(> 10,000点)并且咱们想要节俭计算工夫时,绝对于k-medoids聚类,咱们更偏向于k-means聚类。

    数据集是否很大齐全取决于可用的计算能力。

  • 离群值的存在:k均值聚类比离群值更容易对离群值敏感。
  • 聚类核心:k均值算法和k聚类算法都以不同的形式找到聚类核心。

应用k-medoids聚类进行客户细分

应用客户数据集执行k-means和k-medoids聚类,而后比拟后果。

步骤:

  1. 仅抉择两列,即杂货店和冷冻店,以不便地对集群进行二维可视化。
  2. 应用k-medoids聚类绘制一个图表,显示该数据的四个聚类。
  3. 应用k均值聚类绘制四簇图。
  4. 比拟两个图,以评论两种办法的后果如何不同。

后果将是群集的k均值图,如下所示:

图:集群的预期k均值图

确定最佳群集数

到目前为止,咱们始终在钻研鸢尾花数据集,在该数据集中咱们晓得有多少种花,并依据这一常识抉择将数据集分为三个簇。然而,在无监督学习中,咱们的次要工作是解决没有任何信息的数据,例如,数据集中有多少个天然簇或类别。同样,聚类也能够是探索性数据分析的一种模式。

聚类指标的类型

确定无监督学习中最佳聚类数的办法不止一种。以下是咱们将在本章中钻研的内容:

  • 轮廓分数
  • 弯头法/ WSS
  • 差距统计

轮廓分数

轮廓分数或均匀轮廓分数计算用于量化通过聚类算法实现的聚类品质。

轮廓分数在1到-1之间。如果聚类的轮廓分数较低(介于0和-1之间),则示意该聚类散布开或该聚类的点之间的间隔较高。如果聚类的轮廓分数很高(靠近1),则示意聚类定义良好,并且聚类的点之间的间隔较低,而与其余聚类的点之间的间隔较高。因而,现实的轮廓分数靠近1。

计算轮廓分数

咱们学习如何计算具备固定数量簇的数据集的轮廓分数:

  1. 将iris数据集的前两列(隔片长度和隔宽度)放在  iris_data  变量中:
  2. 执行k-means集群:
  3. 将k均值集群存储在  km.res  变量中:
  4. 将所有数据点的成对间隔矩阵存储在  pair_dis  变量中:
  5. 计算数据集中每个点的轮廓分数:
  6. 绘制轮廓分数图:

    输入如下:

  7. 图:每个群集中每个点的轮廓分数用单个条形示意

后面的图给出了数据集的均匀轮廓分数为0.45。它还显示了聚类和点聚类的均匀轮廓分数。

咱们计算了三个聚类的轮廓分数。然而,要确定要领有多少个群集,就必须计算数据集中多个群集的轮廓分数。

确定最佳群集数

针对k的各个值计算轮廓分数来确定最佳的簇数:

从后面的图中,抉择得分最高的k值;即2。依据轮廓分数,聚类的最佳数量为2。

  1. 将数据集的前两列(长度和宽度)放在  iris_data  变量中:
  2. 导入  库
  3. 绘制轮廓分数与簇数(最多20个)的图形:

    留神

    在第二个参数中,能够将k-means更改为k-medoids或任何其余类型的聚类。

    输入如下:

    图:聚类数与均匀轮廓分数

WSS /肘法

为了辨认数据集中的聚类,咱们尝试最小化聚类中各点之间的间隔,并且平方和(WSS)办法能够测量该间隔  。WSS分数是集群中所有点的间隔的平方的总和。

应用WSS确定群集数

在本练习中,咱们将看到如何应用WSS确定集群数。执行以下步骤。

  1. 将虹膜数据集的前两列(隔片长度和隔片宽度)放在  iris_data  变量中:
  2. 导入  库
  3. 绘制WSS与群集数量的图表

    输入如下:

  4. 图:WSS与群集数量

在后面的图形中,咱们能够将图形的肘部抉择为k = 3,因为在k = 3之后WSS的值开始降落得更慢。抉择图表的肘部始终是一个主观抉择,有时可能会抉择k = 4或k = 2而不是k = 3,然而对于这张图表,很显著k> 5是不适宜k的值,因为它们不是图形的肘部,而是图形的斜率急剧变动的中央。

差距统计

差距统计数据是在数据集中找到最佳聚类数的最无效办法之一。它实用于任何类型的聚类办法。通过比拟咱们察看到的数据集与没有显著聚类的参考数据集生成的聚类的WSS值,计算出Gap统计量。

因而,简而言之,Gap统计量用于测量察看到的数据集和随机数据集的WSS值,并找到察看到的数据集与随机数据集的偏差。为了找到现实的聚类数,咱们抉择k的值,该值使咱们取得Gap统计量的最大值。

利用间隙统计量计算现实的簇数

在本练习中,咱们将应用Gap统计信息计算现实的聚类数目:

  1. 将Iris数据集的前两列(隔片长度和隔片宽度)放在  iris_data  变量中
  2. 导入  factoextra  库
  3. 绘制差距统计与集群数量(最多20个)的图表:

    图1.35:差距统计与集群数量

如上图所示,Gap统计量的最大值是k = 3。因而,数据集中现实的聚类数目为3。

找到现实的细分市场数量

应用上述所有三种办法在客户数据集中找到最佳聚类数量:

将变量中的零售客户数据集的第5列到第6列加载。

  1. 用轮廓分数计算k均值聚类的最佳聚类数。
  2. 用WSS分数计算k均值聚类的最佳聚类数。
  3. 应用Gap统计量计算k均值聚类的最佳聚类数。

后果将是三个图表,别离代表轮廓得分,WSS得分和Gap统计量的最佳聚类数。


最受欢迎的见解

1.R语言k-Shape算法股票价格工夫序列聚类

2.R语言中不同类型的聚类办法比拟

3.R语言对用电负荷工夫序列数据进行K-medoids聚类建模和GAM回归

4.r语言鸢尾花iris数据集的档次聚类

5.Python Monte Carlo K-Means聚类实战

6.用R进行网站评论文本开掘聚类

7.用于NLP的Python:应用Keras的多标签文本LSTM神经网络

8.R语言对MNIST数据集剖析 摸索手写数字分类数据

9.R语言基于Keras的小数据集深度学习图像分类