在"无监督学习" (unsupervised learning) 中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,常见的无监督学习任务有聚类 (clustering)、密度估计(densityestimation)、异常检测(anomaly detection) 等。
聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个"簇" (cluster)。
聚类算法涉及的两个基本问题:性能度量和距离计算。
性能度量
聚类性能度量亦称聚类"有效性指标" (validity index)。
聚类性能度量大致有两类. 一类是将聚类结果与某个"参考模型" (reference model)进行比较,称为"外部指标" (external index); 另一类是直接考察聚类结果而不利用任何参考模型,称为"内部指标" (internal index).
外部指标:
- Jaccard 系数(J accard Coefficient ,简称JC)
- FM 指数(Fowlkes and Mallows lndex,简称FMI)
- Rand 指数(Rand Index,简称RI)
内部指标:
- DB 指数(Davies-Bouldin Index,简称DBI) 越小越好
- Dunn指数(Dunn Index,简称DI) 越大越好
距离计算
最常用的是"闵可夫斯基距离" (Minkowski distance)公式略
p=1 时,闵可夫斯基距离即曼哈顿距离(Manhattan distance)
p=2 时,闵可夫斯基距离即欧氏距离(Euclidean distance)
对无序属性可采用VDM (Value Difference Metric)距离
通常我们是基于某种形式的距离来定义"相似度度量" (similarity measure) ,距离越大,相似度越小。
原型聚类
“原型"是指样本空间中具有代表性的点。
原型聚类亦称"基于原型的聚类” (prototype-based clustering),此类算法假设聚类结构能通过一组原型刻画,通常情形下:算法先对原型进行初始化,然后对原型进行迭代更新求解。
肘部法:SSE误差平方和
SSE(sum of the squared errors)是对簇松散度的衡量,作为目标函数其实是一个严格的坐标下降(Coordinate Decendet)过程。SSE不能保证找到全局最优解,只能确保局部最优解。也就是说,可能会造成多种 k 个簇的划分情况。但是可以重复执行几次kmeans算法,选取SSE最小的一次作为最终的聚类结果。
使用图形工具肘方法,根据簇的数量来可视化簇内误方差。下降率突然变缓时即认为是最佳的k值(拐点),通过图形可以直观的观察到k对于簇内误方差的影响。
轮廓系数法(Silhouette Coefficient)
轮廓系数法结合了聚类的凝聚度(Cohesion)和分离度(Separation),用于评估聚类的效果。
指标:内部距离最小化,外部距离最大化。平均轮廓系数的取值范围为[-1,1],系数越大,聚类效果越好。
每次聚类后,每个样本都会得到一个轮廓系数,当它为1时,说明这个点与周围簇距离较远,结果非常好,当它为0,说明这个点可能处在两个簇的边界上,当值为负时,暗含该点可能被误分了。
CH系数(Calinski-Harabasz Index)
簇内部数据的协方差越小越好,簇之间的协方差越大越好(换句话说:簇内部数据的距离平方和越小越好,簇之间的距离平方和越大越好),这样的Calinski-Harabasz分数s会高,分数s高则聚类效果越好。
高斯模型自带评价
高斯混合模型为了确定最优组件的个数,需要使用一些分析标准来调整模型。模型中封装了赤池信息量准则 (Akaike information criterion,AIC)或贝叶斯信息准则 (Bayesian information criterion,BIC)两种评价方法。
最佳的聚类数目是使得AIC或BIC最小化的值。