本章开始进入聚类算法(Cluster)的讲解。 之前讲过的内容都是针对有监督学习的模型,即我们在分类之前知道最终分类的目标。而聚类算法是面向无监督学习的一种建模思想。
聚类就是对大量未知标注的数据集,按照数据内部存在的数据特征将数据集划分为多个不同的类别,使类别内的数据比较相似,类别之间的数据相似度比较小;属于无监督学习。
聚类算法的重点是计算样本项之间的相似度,有时候也称为样本间的距离。
与分类算法的区别:
分类算法是有监督学习,基于有标注的历史数据进行算法模型构建;
聚类算法是无监督学习,数据集中的数据是没有标注的;
在进入聚类算法学习之前,需要对以下知识点进行说明,大纲如下:
● Jaccard相似度、Pearson相似度
● K-means聚类
● 聚类算法效果评估(准确率、召回率等)
● 层次聚类算法
● 密度聚类算法
● 谱聚类算法
1、余弦相似度、Jaccard相似度、Pearson相似度
聚类算法基于特征与特征之间的相似程度对数据进行归类。当数据没有一个明确的分类准则时,我们通过某种规律性的东西,对数据进行归纳和总结,最终得到数据之间的相似性程度。
这章会介绍一些相似度计算的公式。我们在选择了某种相似度的度量公式后,可以基于这种相似度对数据进行聚合,达到分类的效果。
2、K-means聚类
K-means是聚类中最常用的方法。在日常工作中,因为聚类没有明确的标签Y,所以对数据进行归类划分之后,我们也要根据经验主观得对划分后数据的分类进行定义。
在统计分析中,聚类算法是一种探索性分析的工作。拿到数据后,我们可能没有一个明确的目标,不知道要做什么。我想先对数据做一个概要的分析,此时使用聚类分析可以达到这种效果。
本章最后会介绍K-means聚类的优缺点。针对这些缺点,我们可以通过哪些改进的方法,来对数据进一步聚类。
03 聚类算法 - K-means聚类
04 聚类算法 - 代码案例一 - K-means聚类
05 聚类算法 - 二分K-Means、K-Means++、K-Means||、Canopy、Mini Batch K-Means算法
06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较
3、聚类算法效果评估(准确率、召回率等)
聚类算法没有目标值Y,那么如何去度量准确率和召回率呢?
如果所有的数据都没有目标值标签,那么无论怎么计算都不可能算出准确率和召回率的。
因此,我们可以将一些存在目标值Y的数据放到数据集中一起计算,从而得到准确率和召回率。这个思路本质上还是有监督的算法思想。
面试时可能会问:如何去评价一个聚类算法模型的好坏呢?
首先我根据人为的经验对一些数据进行划分,然后将这些数据放入我们的模型中进行分类。如果最终的分类结果和我认为预测的结果相似度高,那么认为这个聚类算法模型是优秀的。毕竟聚类分析是结合了实际业务的,作为数据分析师不可能对业务数据完全不敏感。
07 聚类算法 - 代码案例三 - K-Means算法和Mini Batch K-Means算法效果评估
08 聚类算法 - 聚类算法的衡量指标
4、层次聚类算法
层次聚类算法的基本思想是:通过某种相似性测度计算节点之间的相似性,并按相似度由高到低排序,逐步重新连接个节点。该方法的优点是可随时停止划分。
09 聚类算法 - 层次聚类 - CF-Tree、BIRCH、CURE
10 聚类算法 - 代码案例四 - 层次聚类(BIRCH)算法参数比较
5、密度聚类算法
密度聚类算法的基本思想是:假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。
11 聚类算法 - 密度聚类 - DBSCAN、MDCA
12 聚类算法 - 代码案例五 - 密度聚类(DBSCAN)算法案例
6、谱聚类算法
谱聚类算法是建立在谱图理论基础上的。与传统的聚类算法相比,它具有能在任意形状的样本空间上聚类且收敛于全局最优解的优点。谱聚类算法建立在图论中的谱图理论基础上,其本质是将聚类问题转化为图的最优划分问题,是一种点对聚类算法,对数据聚类具有很好的应用前景。
图论的这个算法一般在自然语言处理中用得比较多。