Machine learning K-Means课堂笔记

本文深入探讨了K-Means聚类算法,解释了聚类的基本概念,将其与无监督学习相对比,并介绍了聚类在银行客户细分等实际场景中的应用。讨论了K-Means的评估指标,如惯性距离和邓恩指数,以及如何通过肘部法则选择最佳聚类数。此外,文章还提到了K-Means++算法解决初始化质心问题,并展示了K-Means的局限性和改进策略。
摘要由CSDN通过智能技术生成

Machine learning K-Means课堂笔记

什么是聚类?
聚类如何成为无监督学习问题?
聚类的属性
聚类在实际场景中的应用
了解聚类分析的不同评估指标
什么是 K 均值聚类?
在 Python 中从头开始实现 K-Means 聚类
K均值算法的挑战
K-Means++用于为 K 均值聚类选择初始聚类质心
如何在K均值中选择正确的聚类数?
在 Python 中实现 K-Means ++ 聚类

什么是聚类?

银行把它的客户分类的过程就叫做聚类的过程
在这里插入图片描述

所以聚类就是分类嘛
聚类是一个无监督学习问题!


监督学习和无监督学习的区别
监督学习是一种目的明确的训练方式,你知道得到的是什么;而无监督学习则是没有明确目的的训练方式,你无法提前知道结果是什么。 监督学习需要给数据打标签;而无监督学习不需要给数据打标签。 监督学习由于目标明确,所以可以衡量效果;而无监督学习几乎无法量化效果如何。


聚类的属性

在分类的基础上进行进一步的细分
在这里插入图片描述

在X轴上,我们有客户的收入,y轴代表债务金额。在这里,我们可以清楚地看到这些客户可以细分为4个不同的集群

这就是聚类分析如何帮助从数据创建细分(聚类)的方式。银行可以进一步使用这些集群来制定策略并向其客户提供折扣。因此,让我们看一下这些集群的属性:

1.聚类中的所有数据点应彼此相似。
2.来自不同聚类的数据点应尽可能不同
在这里插入图片描述

case2更好,因为相似的更相似,不相似的更不相似

聚类分析超级有用:

1.可以实现像素的相似聚类,这样就可以识别你是不是个人,还是一条狗了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8gqfpkQG-1651131691592)(file:///E:/kpi/No.2%20semester/MachineLearning/lab1/2.png)]
2.可以实现推荐机制,可以通过你的浏览时长,喜好推荐相同类型的视频或者音乐或者网站或者广告

了解聚类分析的不同评估指标

如果有一堆指标需要聚类分析该怎么办?
我们需要一个评估标尺(指标evaluation metrics)
[++其实也是遵循着相似的靠的更近,不相似的靠的更远的原则++]

1.惯性距离:
及一坨里面的中心到每个点的距离总和
在这里插入图片描述

因为我们希望每一个分类里的东西越相似越好,所以惯性距离越小越好,及这个中心到所有点儿的距离总和越小越好

2.邓恩指数:
因为要同时使得相似的更近和不相似的更远所以有了邓恩指数。

除了质心和点之间的距离外,Dunn指数还考虑了两个聚类之间的距离。两个不同聚类的质心之间的此距离称为簇间距离。让我们看一下邓恩指数的公式:
在这里插入图片描述

上面两个质心的距离越大越好,下面某一个坨里的惯性之和越小越好

Dunn 指数是簇间距离(两个质心之间)的最小值与簇内距离(惯性距离之和)的最大值之比。
我们希望最大化邓恩指数。Dunn指数的值越大,聚类就越好。

为了最大化 Dunn指数的值,分子应该是最大值。在这里,我们取集群间距离的最小值(惯性总和最小的那一坨)。
因此,即使是最近的聚类之间的距离也应该更大,这最终将确保聚类彼此相距甚远。

K-Means

K 均值算法的主要目标是最小化点与其各自的聚类质心之间的距离之和。
K均值算法就是想把每个坨坨里的惯性之和最小化
(如何将一个点分配给某聚类)
【不断地重新选择质心,计算其他点到质心的距离,选出最优点之后将不再重新选择质心的计算过程】

1.一堆球,先确定要分成几类
2.如果分了两类,随机选两个球作为质心
3.以Dunn原则将球分配给质心
在这里插入图片描述

4.在新的坨里重新选择质心,重新分配
在这里插入图片描述

5.重复:选择新的质心然后分配,迭代

计算质心并根据它们与质心的距离将所有点分配给聚类的步骤是一次迭代。但是等等 - 我们什么时候应该停止这个过程?它不能一直运行到永恒,对吧?

1.重新选择,分配了 N 次之后,质心保持不变,就可以停止了
2.达到最大迭代次数
3.所有的点都在自己那一坨里不再变化

K-Means的缺陷就是 均

在这里插入图片描述

这是本来该有的分类BUT因为它太均匀,就变成了
在这里插入图片描述

还有这样的:
此处,红色聚类中的点分散开来,而其余聚类中的点紧密地挤在一起。现在,如果我们在这些点上应用 k 均值,我们将得到如下聚类:
在这里插入图片描述

也就是说,这个东西他不一定能完美的实现聚类
也有可能分类分着分着成了人工智障

解决方案之一是使用更多数量的群集。

因此,在上述所有场景中,我们可以拥有更大的数量,而不是使用3个集群。也许设置 k=10 可能会导致更有意义的聚类。 还记得我们如何在 k 均值聚类中随机初始化质心吗?好吧,这也是潜在的问题,因为我们每次都可能得到不同的集群。因此,为了解决随机初始化的问题,有一种名为K-Means++的算法可用于为K-Means选择初始值或初始聚类质心。

K-Means++用于为 K 均值聚类选择初始聚类质心

【多了一个初始化质心的过程】
【K-Means++用于K-Means之前用公式D(x)2更好的确定质心,然后再用K-Means分配各个点】

例:
让我们举个例子来更清楚地理解这一点。假设我们有以下几点,我们想在这里做3个集群:
在这里插入图片描述

现在,第一步是随机选择一个数据点作为聚类质心:
在这里插入图片描述

假设我们选择绿点作为初始质心。现在,我们将计算具有以下质心的每个数据点的距离(D(x)):
在这里插入图片描述

下一个质心将是其平方距离 (D(x)2) 距离当前质心最远的质心:
在这里插入图片描述

在这种情况下,红点将被选为下一个质心。现在,为了选择最后一个质心,我们将取每个点与其最近质心的距离,并且具有最大平方距离的点将被选为下一个质心:
在这里插入图片描述

我们可以在初始化质心后继续使用 K-Means 算法。使用 K-Means++ 初始化质心往往会改善聚类。尽管相对于随机初始化而言,它的计算成本很高,但随后的 K 均值收敛速度通常更快。

肘部曲线


但是,我们如何确定最佳聚类数呢?我们可以做的一件事是绘制一个图形,也称为肘部曲线,其中x轴将表示聚类的数量,y轴将是评估指标。现在让我们说惯性(也可以选择其他的评估指标,比如邓恩指数)。

在这里插入图片描述

接下来,我们将从一个小的集群值开始,假设为 2。使用 2 个聚类训练模型,计算该模型的惯性,最后在上图中绘制它。假设我们的惯性值约为 1000:
在这里插入图片描述

现在,我们将增加聚类的数量,再次训练模型,并绘制惯性值。这是我们得到的情节:
在这里插入图片描述

当我们将聚类值从 2 更改为 4 时,惯性值急剧降低。惯性值的这种降低会减少,并最终随着我们进一步增加聚类的数量而变为恒定。
因此,++可以将惯性值减少变为常数的聚类值选为数据的正确聚类值。++
在这里插入图片描述

在这里,我们可以在6到10之间选择任意数量的集群。我们可以有 7 个、8 个甚至 9 个集群。在确定聚类数量时,还必须查看计算成本。如果我们增加集群的数量,计算成本也会增加。因此,如果您没有高计算资源,我的建议是选择数量较少的集群。

以上就是我的K-Means&K-Means++课堂笔记
多多指教!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值