聚类算法
-
概念
-
根据样本之间
相似性
,将样本划分到不同类别种,不同相似度计算方法,会得到不同聚类结果,常用相似度计算方法为:欧氏距离 -
目的是在没有
先验知识
情况下,自动发现数据集种内在结构和模式 -
无监督学习算法
-
-
API
sklearn.cluster.KMeans(n_clusters=8)
-
参数:n_clusters:开始聚类中序数量
-
整型状,缺省值=8,生成聚类数,即产生质心(centroids)数
-
-
方法
-
estimator.fit(x)
-
estimator.predict(x)
-
estimator.fit_predict(x)
计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x,在调用predict(x)
-
-
-
KMeans算法实现流程
-
先确定一个常数k,该常数意味最终聚类类别数
-
随机选择k个样本作为初始聚类中心
-
计算每个样本到k个中心聚类,选择最近聚类中心作为标记类别
-
根据每个类别样本点,重新计算出新聚类中心点(平均值),若计算出的新中心与原中心点重叠,则停止聚类,否重新进行第2步过程,直到聚类中心不再变化
-
-
评估指标
-
SSE(误差平方和)
SSE越小,表示数据点越接近它们中心,聚类效果越好
-
"肘"方法(Elbow method) - k值确定
"肘" 方法通过SSE确定n_clusters值
-
对于n个数据集,迭代计算k from i to n,每次聚类完成后计算SSE
-
SSE是会逐渐变小,因为每个点都是它所在的簇中心本身
-
SSE变化过程中出现一个拐点,下降率突然变缓时即人为是最佳n_clusters值
-
在决定什么时候停止训练时,肘形判断同样有效,数据通常有更多噪音,在增加分类无法带来更多汇报时,即停止增加类别
-
-
-
SC (轮廓系数法)
轮廓系数法考虑簇内的
内聚程度(Cohesion)
,簇外的分离程度(Separation)
。-
计算过程
-
对计算每一个样本i到
同簇内其他样本平均距离ai
,该值越小,说明簇内相似程度越大 -
计算每一个样本i
最近簇j内所有样本平均距离bij
,该值越大,说明该样本越不属于其他簇j -
根据下方公式计算该样本轮廓系数
-
计算所有样本平均轮廓系数
-
轮廓系数范围:[-1,1],
SC值越大聚类效果越好
-
-
-
CH (聚类效果评估-CH轮廓系数法)
CH系数考虑簇内的
内聚程度
、簇外的离散程度、质心的个数
-
类别內部数据距离平方和
越小越好
,类别之间距离平方和越大越好
。聚类种类数越少越好
-
-
-
简写:
-
误差平方和SSE
-
误差平方和值越小越好
-
主要考量:簇内聚程度
-
-
肘部法
-
下降率突然变缓时即认为是最佳的k值
-
-
SC系数
-
取值为[-1,1],其值越大越好
-
主要考量:簇内聚程度、簇间分离程度
-
-
CH系数
-
分数s高则聚类效果越好
-
CH达到的目的:用尽量少类别聚类尽量多的样本,同时获得较好的聚类效果
-
主要考量:簇内聚程度、簇间分离程度、质心个数
-
-
-