聚类是目前日常工作中用户分群最常用的机器学习算法之一,下文将对聚类算法的基本原理进行介绍,适合入门机器学习和非技术型的人员阅读。
聚类模型
学习类型:无监督算法(训练集为没有标签的数据)
主要应用:①目标用户的群体分类; ②不同产品的价值组合; ③探测发现异常点孤立点。
应用难点:①如何进行调参? ②如何评估聚类结果?
常用算法:①划分方法:K-Means(K均值)、K-Medoids(K中心); ②层次方法:凝聚层次聚类(自底而上)、分裂层次聚类(自顶而下);③基于密度的方法:DBSCAN、OPTINCS; ④基于网格的方法:STING。
划分方法:给定具有n个对象的数据集,对数据集进行K(K=<n)个划分,每个划分代表一个簇,且每个簇至少包含一个对象。而且每个对象只能 属于一个簇。
层次方法:把样本根据距离分成若干大群,大群之间相异,大群内部相似,把大群内部当成一个全局样本空间,再继续划分成若干小群,小群之间相异,小群内部相似。最后形成的是一棵树的结构。
基于密度的方法:对于非球状类型的数据,只要临近区域内的密度(对象的数量)超过了某个阈值,就继续聚类。
基于网格的方法:把对象空间量化为有限数目的单元,而这些单元形成网格结构,所有的聚类操作都是在这个网格中进行。
K-Means算法
算法简介:给定一个数据集和划分的数目K后,该算法根据某个距离函数反复把数据划分到K个簇中直至收敛为止,用簇中每个对象的平均值来表 示每个簇。
基本概念:①簇的个数(K); ②质心,均值,向量各维度取平均(m每个簇的中心点); ③距离的度量,常用欧几里得距离和余弦相似度; ④优化目标,簇间距离最大即各个簇的质心间距离最大,簇内距离最小即向量点到质心的距离最小。
工作流程:
①给定K值;
②随机抽取K个点作为聚类中心;
③计算每个数据点到聚类中心的距离并把他分配给距离最近的聚类中心;
④在所有数据点分配完毕后,每个聚类中心按照本簇的现有数据点重新计算;
⑤不断重复,直至收敛(误差平方和(SSE)局部最小)。
算法优势:简单、快速适合常规数据集。
算法劣势:①K值难确定; ②复杂度与样本呈线性关系; ③很难发现任意形状的簇; ④初始的选取的中心点对结果影响较大。
DBSCAN算法
算法简介:根据一个密度阈值来控制簇的增长,将具有足够高密度的簇划分成类,并可在带有噪声的空间数据库里发现任意形状的聚类。
基本概念:
①邻域的距离阈值,设定的半径r;
②核心对象,若某个点的密度达到算法设定的阈值则为核心点。(r邻域内点的数量不小于minPts);
③直接密度可达,若某点p在点q的r邻域内,且q是核心点,则p-q直接密度可达;
④密度可达,若有一个点的序列q1、q2…qk,对任意qi-qi-1是直接密度可达的,则称q0到qk密度可达,这实际上是直接密度可达的传播;
⑤密度相连,若从某核心点p出发,点q和点k都是密度可达的则称点q和点k是密度相连的;
⑥边界点,属于某一个类的非核心点不能再发展下线;
⑦噪声点,不属于任何一类簇的点,从任何一个点出发都是密度不可达的。
工作流程:
概述:分得的簇C=p(必须为核心对象)+p的直接密度可达点+p的密度可达点。即与p密度相连的所有点,且不是其他簇的成员。
参数选择:
主要参数:①参数D(输入数据集);②参数ε(指定半径);③MinPts(密度阈值)。
半径ε:根据K距离设定,找突变点。
K距离:给定数据集P={p(i),i=0,1…n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大排列,d(k)就是K距离。
MinPts:K距离中的K值一般取得小一点,多次尝试。
算法优势:①不需要指定簇的个数;②可以发现任意形状的簇;③擅长找到离群点;④两个参数就足够。
算法劣势:①高维数据有些困难(可以先做降维);②参数难以选择(参数对结果的影响非常大);③效率较慢。
聚类结果的评估
1.业务专家的评估
2.聚类技术上的评价指标
RMSSTD:群体中所有变量的综合标准差,RMSSTD越小表明群体内(簇内)个体对象的相似程度越高,聚类效果越好。
R-Square:聚类后群体间差异的大小,也就是聚类结果可以在多大比例上解释原数据的方差,R-Square越大表明群体间(簇间)的相异性越高,聚类效果就越好。
轮廓系数:a(i)为样本的簇内不相似度,表示样本i到同簇其他样本的平均距离,越小越好;b(ij)为样本i的与其他簇的簇间不相似度,样本i到其他簇C的所有样本的平均距离。S(i)越接近1说明聚类越合理,等于0说明在两个簇的边界。