关于数据挖掘:R语言使用最优聚类簇数kmedoids聚类进行客户细分

37次阅读

共计 3511 个字符,预计需要花费 9 分钟才能阅读完成。

全文链接: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 的小数据集深度学习图像分类

正文完
 0