有监督学习:对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。这里,所有的标记(分类)是已知的。因此,训练样本的岐义性低。
无监督学习:对没有概念标记(分类)的训练样本进行学习,以发现训练样本集中的结构性知识。这里,所有的标记(分类)是未知的。因此,训练样本的岐义性高。聚类就是典型的无监督学习
聚类分析是无监督学习的一种方法,介绍两种:K均值(K-means)和混合模型(mixture models)
应用
商业
聚类分析被用来发现不同的客户群,并且通过购买模式刻画不同的客户群的特征。
聚类分析是细分市场的有效工具,同时也可用于研究消费者行为,寻找新的潜在市场、选择实验的市场,并作为多元分析的预处理。
生物
聚类分析被用来动植物分类和对基因进行分类,获取对种群固有结构的认识
地理
聚类能够帮助在地球中被观察的数据库商趋于的相似性
保险行业
聚类分析通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组
因特网
聚类分析被用来在网上进行文档归类来修复信息
电子商务
聚类分析在电子商务中网站建设数据挖掘中也是很重要的一个方面,通过分组聚类出具有相似浏览行为的客户,并分析客户的共同特征,可以更好的帮助电子商务的用户了解自己的客户,向客户提供更合适的服务。
一般问题:
顾客偏爱:通过消费信息,访问信息等建立推荐系统
基因功能预测:一个具体基因发挥什么作用,目的是什么,潜在未知功能基因片段(信息)的挖掘
K均值聚类
马氏距离
马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧式距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。对于一个均值为μ,协方差矩阵为Σ的多变量向量,其马氏距离为((x-μ)’Σ^(-1)(x-μ))^(1/2)
算法描述
这是个循环的推理
1)设置初始聚类点数目和位置—(通常以原训练数据为初始聚点)
2)求各点与初始聚点的距离(马氏),依次分类
3)分类后各类点分别求平均值得到拟继聚点
4)分别通过初始聚点和拟继聚点求方差
5)若拟继聚点方差较小,则将初始聚点替换,从 1)循环到4
6)若拟继聚点方差与之很相近,则迭代停止,输出
这种迭代方案能够保证下列值的局部最小:
D=∑Nn=1∑Kk=1Znk(x⃗ n−μ⃗ K)T(x⃗ n−μ⃗ K)
可理解为所有对象与聚类中心的距离之和。然而不能保证得到全局最小值。克服这种不足更常用 从多个随机初始点运行算法并选择总距离最小的解
例子参考:http://www.tuicool.com/m/articles/Vfy6zm
聚类数目的选择
K均值中K的选择是聚类分析中常见的问题。这种选择问题没有简单的解决方案。K应该选择使分类性能最优的值。
1)K值可以先用系统聚类法,看谱系图然后得出大致分几类。然后试多几个k值,确定个最好的。系统聚类是将个样品分成若干类的方法,其基本思想是:先将个样品各看成一类,然后规定类与类之间的距离,选择距离最小的一对合并成新的一类,计算新类与其他类之间的距离,再将距离最近的两类合并,这样每次减少一类,直至所有的样品合为一类为止。
2)遗传算法(GA)可以优化K值的选择。
遗传算法是一种利用达尔文适者生存的自然进化原理实现的全局性随机优化过程,该算法将搜索空间中的每个点用一个染色体(CHROMOSOME)表示,每个染色体包含了一组与题解有关的特征参数(或基因,GENES),不同染色体对于环境的适应性用适应度函数(FITNESS FUNCTION)表示,开始时由随机找到的若干个染色体组成群落(POPULATION),在每一代,通过搜索,即对每个染色体用适应度函数进行评价,找到群落中适应度较高的染色体基因串。经过一代又一代染色体的交叉(CROSSOVER)、变异(MUTATION),可以搜索到多个局部极值,从而增加了找到全局优解的可能性。本方法中,每条染色体对应一个K值,以K-MEAN聚类效果作为评价染色体适应度的主要标准,以寻找到全局优值。使得各类之间距离和达到最大,而类内间的距离达到最小。具体方法:先形成初始染色体组POPULATION,计算染色体的适应函数FITNESS FUNCTION,再进化部分适应性好的染色体到MATING POOL,交叉、变异,最后选择适应性强的染色体形成新一代染色体组POPULATION。循环一定代数,找到最优的K值(见下图)。
核化K均值
真实聚类对象不一定符合相似性(马氏距离)的定义。
核替换方法,拓展K均值算法。将数据变换到算法能够处理的空间,而不增加算法复杂性。
——K均值算法无法获取准确聚类结构的两种数据集
——采用
γ
=1的高斯核
由于:
.距离的定义过于粗糙很可能会出现分类失败的情况。
.聚类表示为单个点(均值)过于粗糙。
.没有指导方法决定聚类数目
——统计混合模型
混合模型
K均值算法对类的定义过于粗糙。统计混合模型将每个类表示为一个概率密度。
这种归纳引出了一个强大的方法,我们可以在几乎任何类型的数据中以各种图形来建模聚类。
在K均值中,这是个循环问题:如果知道个体的分配,那么计算参数非常容易;同样,如果知道分布的参数,那么个体的分配也非常容易。如果两个都不知道,期望-最大(EM)算法给我们一个结果,EM算法是一个在很多模型中广泛应用的迭代最大似然技术,并且与K均值算法是并行算法。
混合模型似然函数
迭代使用EM步骤,直至收敛。
可以有一些比较形象的比喻说法把这个算法讲清楚。比如说食堂的大师傅炒了一份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点一点的精确的去称分量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多的那一份取出一点放到另一个碗中,这个过程一直迭代地执行下去,直到大家看不出两个碗所容纳的菜有什么分量上的不同为止。EM算法就是这样,假设我们估计知道A和B两个参数,在开始状态下二者都是未知的,并且知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。
基于样本独立性假设,我们得到N个数据对象的似然函数:
p(X l
Δ,π
)=
∏Ni=1∑Nn=1πkp(xn∣∣Δk)
EM算法
取对数
L=log
p(x∣∣Δ,π)=∑Nn=1log∑Kk=1πkp(xn∣∣μk,∑k)
对数内的求和使我们直接寻找最优的 μk 、 ∑k 、 π 参数值较难。而EM算法通过计算似然函数的一个下界(参数的一个函数总是小于等于似然函数L)。问题由L最大化转为对它的下界最大化
为得到L的下界,引出著名的詹森(Jensen)不等式
logEp(z){ f(z)}>=Ep(z){logf(z)}
更新
πk
、
μk
、
∑k
、
qnk
可以采用拉格朗日算法将约束条件整合进目标函数(
β
),和关联的拉格朗日乘子
λ
β=∑Nn=1∑Kk=1qnklogπk+∑Nn=1∑Kk=1qnkp(xn∣∣μk,∑k)−∑Nn=1∑Kk=1qnklogqk−λ(∑Kk=1πk−1)
由此分别求偏导=0来更新参数
一些直觉
4个更新的等式分别为
πk=∑Nn=1qnkN
μk=∑Nn=1qnkxn∑Nn=1qnk
∑k=∑Nn=1qnk(xn−μk)(xn−μk)T∑Nn=1qnk
qnk==πkp(xn∣∣μk,∑k)∑Kj=1πjp(xn∣∣μj,∑j)
如果聚类只是我们分析中的一步,我们就可以使用其他的度量指标(比如,分类准确率)来选择类的个数。而且,目前迅速发展的非参数方法可以使我们通过马尔科夫链蒙特卡洛方法来对组分的数目取样。
混合组分的其他形式
即p(xn l…)可以取任意概率密度形式。但有必要花时间在高斯上,因为它通常以稍加改进的形式出现
用EM估计MAP
利用EM可以得到很多先验与似然组合的最大后验解
贝叶斯混合模型
利用EM获得与最大似然或最大后验解对应的点估计,不是用混合模型进行聚类的唯一方法
马尔科夫链蒙特卡洛(MCMC)法对聚类分配和相关组分参数进行采样是很有优点的