聚类算法简介
聚类是一种常见的无监督学习方法，能够按照某些特定的标准、特征将一个数据集分割成不同的类或者聚簇，在同一个类或者聚簇里的数据差异性尽可能小，不在同一个类或者聚簇的数据差异性尽可能的大。从概念上看（聚类即：将数据集分割成不同的类）感觉聚类跟分类很像，但实际二者有本质区别：聚类的应用非常广泛。在面对未知的世界时，先分类，再逐个研究，是人类探索未知世界的一个基本方法。聚类算法可以应用于探索性数据挖掘、统计分析、生物信息学、数据压缩、计算机图像识别、医学影像分析等，在商业领域可以用来做市场研究、商品归类，在社会科学领域可以用来做犯罪区域分析等等。在我们的业务场景中主要用来做热点挖掘，包括热点事件、热点线索、热点视频、新热专题等。关于在具体业务中的应用，本文暂不赘述，先简介下实践过程中了解的几种聚类算法。聚类的关键就是计算两个数据点或者聚簇之间的相似度，常用的相似度计算有以下几种：这个主要用于计算两个短语、词（字符串）之间的相似度，核心思想有：集合运算、正则匹配、编辑距离、余弦值等。这些算法的优点是实现简单，缺点也很明显，准确性差，比如无法区分“日本时间”和“本日时间”。详情可参考：这个就比较通用了，理论上可以计算任意两种对象之间的相似度（文本和视频、音频和图片等等），当然前提是要先把计算的对象向量化（即把一个对象映射成一个多维数组），这一步很关键，向量化的好坏直接影响到聚类效果，通常有专门的算法团队帮我们做这件事，暂不展开赘述。基于向量的相似度计算主要分两步：a、单点距离定义：即计算任意两个数据点之间的距离，用于判断是否能将两个数据点聚在一起，常用的算法有余弦值和欧式距离。b、聚簇距离定义：即计算任意两个聚簇之间的相似度，由于判断是否能将两个聚簇聚在一起，常用的算法有如下四种：a. 简介：划分聚类最大的特点就是聚出来的类的数量是已知的，它通过事先指定聚类中心点，通过反复迭代，最终达到聚簇内数据点足够近，聚簇间数据点足够远的目标。常见的划分聚类有：k-means、k-means++、bi-kmeans等。经典的k-means算法流程如下：b. 特点：a. 简介：层次聚类是一种聚类分析方法，它将数据集中的对象按照相似性逐步合并到不同的层次结构中。在层次聚类中，每个数据点开始被视为单个聚类，然后它们被合并成更大的聚类，直到所有数据点都被分配到一个聚类中。层次聚类有两种不同的方法：凝聚聚类（Agglomerative）和分裂聚类（Divisive）。在凝聚聚类中，每个数据点开始被视为单独的聚类，然后通过计算它们之间的相似性来合并聚类。最终形成一个大的聚类。在分裂聚类中，所有数据点被视为一个大的聚类，然后通过计算它们之间的不相似性来分割聚类，最终形成一组小的聚类。层次聚类（Agglomerative算法）流程如下：b. 特点：a. 简介：密度聚类是一种基于数据点之间密度的聚类方法，其目标是将具有高密度的数据点分为一组，并将它们与低密度区域中的其他数据点分开。在密度聚类中，数据点的密度是通过计算每个数据点周围的邻居数量来确定的。具有足够高密度的点被认为是“核心点”，而那些周围没有足够多邻居的点则被认为是“噪声点”。密度聚类通过寻找核心点及其邻居来形成簇。簇的数量和形状是基于密度和距离的阈值设置来控制的。密度聚类是一种非参数聚类方法，可以在没有事先确定簇数的情况下对数据进行聚类，适用于具有复杂结构和噪声的数据集。密度聚类（DBSCAN算法）流程如下：b. 特点：