传统机器学习聚类算法——总集篇

        工作需要,涉及到一些聚类算法相关的知识。工作中需要综合考虑数据量、算法效果、性能之间的平衡,所以开启新的篇章——机器学习聚类算法篇。

        传统机器学习中聚类算法主要分为以下几类:

1. 层次聚类算法

        层次聚类算法是一种无监督学习算法,按照样本 or 簇之间的相似性对数据进行递归式划分,将数据样本从独立的点 逐步合并 成类簇,最终生成一颗树形结构。主要分为自上而下自下而上 和以BIRCH算法为代表的分层、平衡迭代 三种方法。

1.1 凝聚层次聚类:自下而上 + 递归 的聚类方法

        算法初始化将每个样本都作为单独的簇,然后将相邻的簇、自下而上逐渐合并成更大的簇,直到生成需要的簇数。

        该类算法需要计算两个簇之间距离的度量,通常使用欧式距离,或者根据业务或数据类型自定义度量方法。

1.2 分裂层次聚类:自上而下 + 递归 的聚类方法

        算法自上而下递归地对样本整体进行聚类,将所有样本归于一个簇,然后依次对簇进行分裂,直到每个簇只包含一个样本。

1.3 BIRCH算法

        一种用于大规模数据聚类的层次聚类算法。该算法利用了B树结构来进行聚类,并使用了CF树(Clustering Feature Tree)来存储聚类中心信息。

        补充:1.1和1.2两种算法都涉及簇之间的相似度 / 距离的计算or度量,这是层次聚类算法设计的核心。在计算簇之间的距离度量时,可以使用最短距离、最长距离、簇平均距离、重心距离、Ward's方差最小化等,每种距离度量方法都有其适用的数据类型和应用场景;更细致,可以根据业务和数据特征,定制相似度 / 距离的计算方式。

2. 划分聚类算法

        划分聚类算法通过迭代聚类中心,达到(类内间距小、类间间距大)或者说 (簇内点足够近,簇间点足够远)的目标,最终算法将数据集划分为多个不相交的簇,每个数据点只属于一个簇。

        常用的方法包括K-means、K-medoids、K-means++、二分K-means、C-means、

X-means、CLARANS和 CLARA等。

3. 密度聚类算法

        基于密度的聚类算法,是从密度的角度考虑样本之间的关系。该类算法通过计算数据样本分布的疏密情况,从密度的角度考虑样本之间的关系,并利用样本的密度和密度可达性来判断是否属于某个簇,最终将高密度区域的点划分到同一个簇。这种方式可以处理具有复杂形状的簇有噪声数据

        常用的算法包括DBSCAN(Density-Based Spatial Clustering of Applications with Noise)、OPTICS(Ordering Points To Identify the Clustering Structure)、DENCLUE(DENsity-based CLUstEring)等。

        最近博主有复现 + 应用到实际业务中的密度聚类算法是密度峰值聚类DPC —— science《Clustering by fast search and find of density peaks》,效果还不错

4. 基于网格的聚类算法

        基于网格的聚类算法,利用多分辨率的网络结构将数据空间划分为一个个的网格单元,并将数据点映射到相应的单元中来进行聚类和类簇的划分。

        该类算法简单、高效、适用于高维数据和大规模数据集。但是,缺点是参数敏感、无法处理不规则分布的数据、处理精度也不高

        代表算法有STING 算法、CLIQUE算法(结合网格和密度的聚类算法)、WAVE-CLUSTER 算法(引入了小波变换);不同的算法主要区别是采用了不同的网格划分方法,核心步骤如下:

        a. 将数据空间划分为多个互不重叠的网格

        b. 对每个网格内的数据进行统计,找到高密度网格单元

        c. 将相连的高密度网格单元进行合并,合并为一个簇

        d. 将低密度网格单元划分给距离最近的高密度网格单元,并认定为一个粗

5. 模型聚类算法

        该类算法主要包括基于概率的模型聚类基于神经网络的模型聚类。这类算法利用统计模型来描述数据的分布,并根据模型判断数据点是否属于同一个簇(是否具有相同 / 相似的分布)。

        5.1 基于模型的聚类算法

        为每个未知的簇假设一个模型,然后寻找数据和模型的最佳拟合,最后根据模型判断出的不同簇的分布结果,进行聚类。例如:基于概率的模型聚类算法采用概率生成的方法,假定在同一个簇中的数据有相同的概率分布。最常用的是高斯混合模型(Gaussian Mixture Models, GMM)。

        5.2 基于神经网络的聚类算法

        主要利用神经网络的特点和能力进行数据聚类,通常将结果映射为数据所属类簇的概率问题。常见的模型有自组织映射(Self-Organizing Maps,SOM)、总体相似度神经网络(Growing Neural Gas,GNG)、流形学习聚类(Manifold Learning-based Clustering)、深度聚类(Deep Clustering)。

        基于神经网络的聚类算法具有灵活性和强大的建模能力,能够捕捉数据的复杂结构和非线性关系。然而,它们通常需要更多的数据量更多的计算资源训练时间,并且对参数设置和网络结构的选择较为敏感。相对的,该类算法处理效率一般不高;特别是数据量很少时,聚类效果较差

你可能感兴趣的:(机器学习细节研讨,聚类,机器学习,算法)