十一、聚类

聚类算法

可用于寻找优质客户、社区发现、异常点监控

K-MEANS

    -算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类,以便使得所获得的聚类满足:同一聚类中的对象相似度较高,而不同聚类中的对象相似度较小。

    -算法思想:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果

    -步骤:1、先从没有标签的元素集合A中随机取k个元素,作为k个子集各自的重心

                2、分别计算剩下的元素到k个子集重心的距离(距离也可以使用欧式距离)根据距离将这些元素分别划归到最近的子集

                3、根据聚类结果,重新计算重心(方法:计算子集中所有元素各个维度的算术平均数)

                4、将集合A中全部元素按照新的重心再重新聚类

                5、重复第4步,直到聚类结果不再发生变化

算法分析1:

    对K个初始值的选择比较敏感,容易陷入局部最小值

算法分析2:

    K值的选择是用户指定的,不同的K得到的结果会有挺大的不同

算法分析3:

    有局限性,有些数据分布无法处理,如非球状数据(比如太极图)

算法分析4:

    数据比较大时,收敛会比较慢——用mini batch k-means

Mini Batch K-Means

    用于解决算法分析4中的问题,为K-MEANS的变种,采用小批量的数据子集减小计算时间。所谓的小批量是指每次训练算法时所随机抽取的数据子集,采用这些随机产生的子集进行训练算法,大大减小了计算时间,结果一般只略差于标准算法,该算法迭代步骤有两步:

    1、从数据集中随机抽取一些数据形成小批量,把他们分配给最近的质心

    2、更新质心

    与K-Means算法相比,数据的更新是在每一个小的样本集上,mini batch k-means比K-Means有更快的收敛速度,但同时也降低了聚类的效果,但在实际项目中表现得并不明显


对K-Means算法分析1的问题——局部最小值,解决方案

    使用多次的随机初始化,计算每一次建模得到的代价函数的值,选取代价函数最小的结果作为聚类结果

            

            

            

   取模

sklean已包含这种处理


对K-Means算法分析2的问题——k选值问题,解决方案

    使用肘部法则来选择k的值


对K-Means算法分析3的问题——局限性,解决方案

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

    基于密度的方法,本算法将具有足够高密度的区域划分为簇,并可以发现任何形状的聚类

概念

    邻域:给定对象小于半径内的区域称为该对象的邻域,为参数

    核心对象:如果给定邻域内的样本点数大于等于(参数),则该对象称为核心对象

    直接密度可达:给定一个对象集合,如果在的邻域内,且是一个核心对象,则我们称对象从出发是直接密度可达的(directly density-reachable)

    密度可达:集合,存在一个对象链:,是从关于和直接密度可达,则称点是从关于和密度可达的

    密度相连:集合存在点,使得点、是从关于和密度可达的,那么点、是关于和密度相连的。

算法思想

    1、指定合适的和

    2、计算所有的样本点,如果点的邻域里有超过个点,则创建一个以为核心点的新簇

    3、反复寻找这些核心点直接密度可达(之后可能是密度可达)的点,将其加入到相应的簇,对于核心点发生“密度相连”状况的簇,给予合并

    4、当没有新的点可以被添加到任何簇时,算法结束

缺点:-当数据量增大时,要求较大的内存支持,I/O消耗也很大

           -当空间聚类的密度不均匀,聚类间距相差很大时,聚类质量较差


DBSCAN与K-Means比较

    -DBSCAN不需要输入聚类个数

    -聚类簇的形状没有要求

    -可以在需要时输入过滤噪声的参数


 

你可能感兴趣的:(十一、聚类)