在机器学习过程中,很多数据都具有特定值的目标变量,我们可以用它们来训练模型。
但是,大多数情况下,在处理实际问题时,数据不会带有预定义标签,因此我们需要开发能够对这些数据进行正确分类的机器学习模型,通过发现这些特征中的一些共性,来预测新数据的类。
无监督学习分析过程
开发无监督学习模型需遵循的整个过程,总结如下:
无监督学习的主要应用是:
- 按某些共享属性对数据集进行分段。
- 检测不适合任何组的异常。
- 通过聚合具有相似属性的变量来简化数据集。
总之,主要目标是研究数据的内在(和通常隐藏)的结构。这种技术可以浓缩为无监督学习试图解决的两种主要类型的问题。如下所示:
- 聚类
- 维度降低
在本文中,我们将重点关注聚类问题。
聚类分析
在基本术语中,聚类的目的是在数据中的元素内找到不同的组。为此,聚类算法在数据中找到结构,以使相同聚类(或组)的元素彼此比来自不同聚类的元素更相似。
以可视方式想象一下,我们有一个电影数据集,并希望对它们进行分类。我们对电影有如下评论:
机器学习模型将能够在不知道数据的任何其他内容的情况下推断出两个不同的类。
这些无监督学习算法具有令人难以置信的广泛应用,并且对于解决诸如音乐、文档或电影分组之类的实际问题,以及基于其购买来找到具有共同兴趣的客户非常有用。
下面是一些最常见的聚类算法:
- K均值聚类
- 分层聚类
- 基于密度的扫描聚类(DBSCAN)
- 高斯聚类模型
K均值聚类
K均值算法非常容易实现,并且在计算上非常有效。这是它为何如此受欢迎的主要原因。但是,在非球形的群体中识别类别并不是很好。
关键概念
- 平方欧几里德距离(Squared Euclidean Distance)
K均值中最常用的距离是欧氏距离平方。m维空间中两点x和y之间的距离的示例是:
这里,j是采样点x和y的第j维(或特征列)。
- 集群惯性
集群惯性是聚类上下文中给出的平方误差之和的名称,表示如下:
其中μ(j)是簇j的质心,并且如果样本x(i)在簇j中则w(i,j)是1,否则是0。
K均值可以理解为试图最小化群集惯性因子的算法。
算法步骤
- 选择k值,即我们想要查找的聚类数量。
- 算法将随机选择每个聚类的质心。
- 将每个数据点分配给最近的质心(使用欧氏距离)。
- 计算群集惯性。
- 将计算新的质心作为属于上一步的质心的点的平均值。换句话说,通过计算数据点到每个簇中心的最小二次误差,将中心移向该点。
- 返回第3步。
K-Means超参数
- 簇数:要生成的簇和质心数。
- 最大迭代次数:单次运行的算法。
- 数字首字母:算法将使用不同的质心种子运行的次数。根据惯性,最终结果将是连续运行定义的最佳输出。
K-Means的挑战
- 任何固定训练集的输出都不会始终相同,因为初始质心是随机设置的,会影响整个算法过程。
- 如前所述,由于欧几里德距离的性质,在处理采用非球形形状的聚类时,其不是一种合适的算法。
应用K均值时要考虑的要点
- 必须以相同的比例测量特征,因此可能需要执行z-score标准化或max-min缩放。
- 处理分类数据时,我们将使用get dummies功能。
- 探索性数据分析(EDA)非常有助于概述数据并确定K-Means是否为最合适的算法。
- 当存在大量列时,批训练(minibatch)的方法非常有用,但是不太准确。
如何选择正确的K值
选择正确数量的聚类是K-Means算法的关键点之一。要找到这个数字,有一些方法:
- 领域知识
- 商业决策
- 肘部法则
由于与数据科学的动机和性质相一致,肘部法则是首选方法,因为它依赖于支持数据的分析方法来做出决定。
肘部法则
肘部法则用于确定数据集中正确的簇数。它的工作原理是绘制K的上升值与使用该K时获得的总误差。
目标是找到每个群集不会显著上升方差的k。
在这种情况下,我们将选择肘部所在的k = 3。
K均值限制
虽然K均值是一种很好的聚类算法,但是当我们事先知道聚类的确切数量以及处理球形分布时,它是最有用的。
下图显示了如果我们在每个数据集中使用K均值聚类,即使我们事先知道聚类的确切数量,我们将获得什么:
将K均值算法作为评估其他聚类方法性能的基准是很常见的。
分层聚类
分层聚类是基于prototyope的聚类算法的替代方案。分层聚类的主要优点是不需要指定聚类的数量,它会自己找到它。此外,它还可以绘制树状图。树状图是二元分层聚类的可视化。
在底部融合的观察是相似的,而在顶部的观察是完全不同的。对于树状图,基于垂直轴的位置而不是水平轴的位置进行结算。
分层聚类的类型
这种类型的聚类有两种方法:集聚和分裂。
- 分裂:此方法首先将所有数据点放入一个集群中。 然后,它将迭代地将簇分割成较小的簇,直到它们中的每一个仅包含一个样本。
- 集聚:此方法从每个样本作为不同的集群开始,然后将它们彼此靠近,直到只有一个集群。
单链接和完整链接
这些是用于凝聚层次聚类的最常用算法。
- 单链接
作为一种凝聚算法,单链接首先假设每个样本点都是一个簇。然后,它计算每对聚类的最相似成员之间的距离,并合并两个聚类,其中最相似成员之间的距离最小。
- 完整链接
虽然与单链接类似,但其理念恰恰相反,它比较了一对集群中最不相似的数据点来进行合并。
分层聚类的优点
- 由此产生的层次结构表示可以提供非常丰富的信息。
- 树状图提供了一种有趣且信息丰富的可视化方式。
- 当数据集包含真正的层次关系时,它们特别强大。
分层聚类的缺点
- 分层聚类对异常值非常敏感,并且在其存在的情况下,模型性能显着降低。
- 从计算上讲,分层聚类非常昂贵。
基于密度的噪声应用空间聚类(DBSCAN)
DBSCAN是另一种特别用于正确识别数据中的噪声的聚类算法。
DBSCAN分配标准
它基于具有指定半径ε的多个点,并且为每个数据点分配了特殊标签。分配此标签的过程如下:
- 它是指定数量(MinPts)的相邻点。 如果存在落在ε半径内的此MinPts点数,则将分配核心点。
- 边界点将落在核心点的ε半径内,但相邻数将少于MinPts数。
- 每隔一点都是噪点。
DBSCAN 算法
该算法遵循以下逻辑:
- 确定核心点并为每个核心点或每个连接的核心点组成一个组(如果它们满足标准为核心点)。
- 确定边界点并将其分配给各自的核心点。
下图总结了这个过程和注释符号。
DBSCAN与K均值聚类
DBDSCAN的优点
- 我们不需要指定群集的数量。
- 集群可采用的形状和大小具有高度灵活性。
- 识别和处理噪声数据和异常值非常有用。
DBSCAN 的缺点
- 处理两个集群可到达的边界点时比较困难。
- 它没有找到不同密度的井簇。
高斯混合模型 (GMM)
高斯混合模型是概率模型,其假设所有样本是从具有未知参数的有限数量的高斯分布的混合生成的。
它属于软群集算法组,其中每个数据点都属于数据集中存在的每个群集,但每个群集的成员资格级别不同。此成员资格被指定为属于某个群集的概率,范围从0到1。
例如,突出显示的点将同时属于集群A和B,但由于其与它的接近程度而具有更高的集群A的成员资格。
GMM假设每个聚类遵循概率分布,可以是高斯分布或正态分布。它是K-Means聚类的推广,包括有关数据的协方差结构以及潜在高斯中心的信息。
一维GMM分布
GMM将在数据集中搜索高斯分布并将它们混合。
二维GMM
当具有的多变量分布如下时,对于数据集分布的每个轴,平均中心将是μ+σ。
GMM 算法
它是一种期望最大化算法,该过程可概括如下:
- 初始化K高斯分布,可通过μ(平均值)和σ(标准偏差)值来实现。也可从数据集(天真方法)或应用K-Means中获取。
- 软聚类数据:这是“期望”阶段,其中所有数据点将分配给具有各自成员级别的每个聚类。
- 重新估计高斯分布:这是“最大化”阶段,该阶段会对期望进行检查并且将其用于计算高斯的新参数中:新μ和σ。
- 评估数据的对数似然性以检查收敛。日志的相似度越高,我们创建的模型的混合可能越适合数据集。所以,这是最大化的功能。
- 从步骤2开始重复直到收敛。
GMM 的优点
- 它是一种软聚类方法,可将样本成员分配给多个聚类。这一特性使其成为学习混合模型的最快算法。
- 集群的数量和形状具有很高的灵活性。
GMM 的缺点
- 它对初始值非常敏感,这将极大地影响其性能。
- GMM可能会收敛到局部最小值,这将是次优解决方案。
- 当每个混合物的点数不足时,算法会发散并找到具有无限可能性的解,除非人为地规范数据点之间的协方差。
聚类验证
聚类验证是客观和定量评估聚类结果的过程。我们将通过应用集群验证索引来进行此验证。主要有三类:
外部指数
这些是我们在标记原始数据时使用的评分方法,这不是这类问题中最常见的情况。我们将一个聚类结构与事先已知的信息相匹配。
最常用的索引是Adjusted Rand索引。
- 调整后的兰特指数(ARI)€[-1,1]
我们应首先对其组件进行定义,以便了解:
- a:是C和K中同一群集中的点数
- b:是C和K中不同群集中的点数。
- n =是样本总数
ARI可以获得从-1到1的值。值越高,它与原始数据匹配越好。
内部验证指数
在无监督学习中,我们将使用未标记的数据,这时内部索引更有用。
最常见的指标之一是轮廓系数。
- 剪影系数:
每个数据点都有一个轮廓系数。
- a =同一群集中与其他样本i的平均距离
- b =最近邻集群中与其他样本i的平均距离
轮廓系数(SC)的值是从-1到1。值越高,选择的K值越好。但是相对于没有达到理想值的情况,超过理想的K值对我们会更加不利。
轮廓系数仅适用于某些算法,如K-Means和层次聚类。它不适合与DBSCAN一起使用,我们将使用DBCV代替。