- Python机器学习
- 首页
- 基础
- Python 生态系统
- 机器学习方法
- ML 项目的数据加载
- 用统计学理解数据
- 用可视化理解数据
- 准备数据
- 数据特征选择
- ML 算法 - 分类
- 介绍
- 逻辑回归
- 支持向量机 (SVM)
- 决策树
- 朴素贝叶斯
- 随机森林
- ML 算法 - 回归
- 随机森林
- 线性回归
- ML 算法 - 聚类
- 概述
- K均值算法
- 均值漂移算法
- 层次聚类
- ML 算法 - KNN 算法
- 查找最近邻
- 性能指标
- 自动工作流程
- 提高 ML 模型的性能
- 提高 ML 模型的性能(续…)
- Python机器学习 - 资源
- Python机器学习 - 快速指南
- Python机器学习 - 资源
- Python机器学习 - 讨论
聚类算法 - 概述
聚类介绍
聚类方法是最有用的无监督机器学习方法之一。这些方法用于查找数据样本之间的相似性和关系模式,然后根据特征将这些样本聚类到具有相似性的组中。
聚类很重要,因为它确定了当前未标记数据中的内在分组。它们基本上对数据点做出一些假设来构成它们的相似性。每个假设都会构建不同但同样有效的集群。
例如,下图显示了聚类系统将相似类型的数据分组到不同的集群中:
集群形成方法
集群不必形成球形。以下是其他一些集群形成方法:
基于密度的
在这些方法中,集群形成密集区域。这些方法的优点是它们具有良好的准确性和良好的合并两个集群的能力。例如,基于密度的噪声应用空间聚类 (DBSCAN)、排序点以识别聚类结构 (OPTICS) 等。
基于层次的
在这些方法中,集群形成基于层次的树状结构。它们有两类,即凝聚的(自下而上的方法)和分裂的(自上而下的方法)。例如,使用代表的聚类 (CURE)、基于层次的平衡迭代归约聚类 (BIRCH) 等。
分区
在这些方法中,通过将对象划分为 k 个集群来形成集群。集群的数量将等于分区的数量。例如,K均值、基于随机搜索的集群大型应用程序 (CLARANS)。
网格
在这些方法中,集群形成网格状结构。这些方法的优点是所有在这些网格上进行的聚类操作都很快,并且独立于数据对象的数量。例如,统计信息网格 (STING)、查询中的聚类 (CLIQUE)。
衡量聚类性能
关于 ML 模型最重要的考虑因素之一是评估其性能,或者您可以说模型的质量。在监督学习算法的情况下,评估模型的质量很容易,因为我们已经为每个示例提供了标签。
另一方面,在无监督学习算法的情况下,我们并没有那么幸运,因为我们处理的是未标记的数据。但是我们仍然有一些指标可以使从业者洞察集群的变化情况,具体取决于算法。
在我们深入研究这些指标之前,我们必须理解这些指标仅评估模型之间的比较性能,而不是衡量模型预测的有效性。以下是我们可以在聚类算法上部署的一些指标来衡量模型的质量:
轮廓分析
轮廓分析用于通过测量集群之间的距离来检查聚类模型的质量。它基本上为我们提供了一种评估参数的方法,例如借助于轮廓分数的集群数量。此分数衡量一个集群中的每个点与相邻集群中的点的接近程度。
轮廓分数分析
轮廓分数的范围为 [-1, 1]。其分析如下:
+1 分数 - 接近 +1 的轮廓分数表示样本远离其相邻集群。
0 分数 - 0 的轮廓分数表示样本位于或非常靠近分隔两个相邻集群的决策边界。
-1 分数 &minusl -1 的轮廓分数表示样本已被分配到错误的集群。
可以使用以下公式计算轮廓分数:
𝒔𝒊𝒍𝒉𝒐𝒖𝒆𝒕𝒕𝒆 𝒔𝒄𝒐𝒓𝒆=(𝒑−𝒒)/𝐦𝐚𝐱 (𝒑,𝒒)
这里,𝑝 = 到最近集群中的点的平均距离
并且,𝑞 = 到所有点的平均集群内距离。
戴维斯-鲍尔丁指数
DB 指数是执行聚类算法分析的另一个很好的指标。借助 DB 指数,我们可以了解有关聚类模型的以下几点:
集群是否彼此之间间隔良好?
集群的密度有多大?
我们可以使用以下公式计算 DB 指数:
$$DB=\frac{1}{n}\displaystyle\sum\limits_{i=1}^n max_{j\neq{i}}\left(\frac{\sigma_{i}+\sigma_{j}}{d(c_{i},c_{j})}\right)$$这里,𝑛 = 集群数量
σi = 集群 𝑖 中所有点到集群质心 𝑐𝑖 的平均距离。
DB 指数越小,聚类模型越好。
邓恩指数
它的工作原理与 DB 指数相同,但以下几点有所不同:
邓恩指数仅考虑最坏情况,即彼此靠近的集群,而 DB 指数则考虑聚类模型中所有集群的离散度和分离度。
随着性能的提高,邓恩指数也会增加,而当集群间隔良好且密集时,DB 指数会变得更好。
我们可以使用以下公式计算邓恩指数:
$$D=\frac{min_{1\leq i <{j}\leq{n}}P(i,j)}{mix_{1\leq i < k \leq n}q(k)}$$这里,𝑖,𝑗,𝑘 = 集群的每个索引
𝑝 = 集群间距离
q = 集群内距离
ML 聚类算法类型
以下是最重要的和有用的 ML 聚类算法:
K均值聚类
此聚类算法计算质心并迭代,直到找到最佳质心。它假设集群的数量已知。它也称为平面聚类算法。算法从数据中识别出的集群数量由 K均值中的“K”表示。
均值漂移算法
它是无监督学习中使用的另一种强大的聚类算法。与 K均值聚类不同,它不作任何假设,因此它是一种非参数算法。
层次聚类
它是另一种无监督学习算法,用于将具有相似特征的未标记数据点分组在一起。
我们将在接下来的章节中详细讨论所有这些算法。
聚类的应用
我们可以在以下领域发现聚类很有用:
数据汇总和压缩 - 聚类广泛用于需要数据汇总、压缩和减少的领域。示例包括图像处理和矢量量化。
协作系统和客户细分 - 由于聚类可用于查找相似产品或相同类型的用户,因此可用于协作系统和客户细分领域。
充当其他数据挖掘任务的关键中间步骤 - 集群分析可以生成数据的紧凑摘要以进行分类、测试、假设生成;因此,它也充当其他数据挖掘任务的关键中间步骤。
动态数据中的趋势检测 - 聚类也可用于通过对相似趋势进行各种聚类来检测动态数据中的趋势。
社交网络分析 - 聚类可用于社交网络分析。示例包括在图像、视频或音频中生成序列。
生物数据分析 - 聚类也可用于对图像、视频进行聚类,因此可成功用于生物数据分析。