分类和聚类#
给定样本和类别标签,确定决策函数用于分类,属于监督学习
只给定样本,根据样本之间的相似性将样本分组,形成簇,属于非监督学习
聚类准则函数#
将样本分成c个子集D1,⋯,Dc, ni为第i个子集中的样本数,mi为第i个子集的样本均值
mi=ni1x∈Di∑x 误差平方和准则#
Je=i=1∑cx∈Di∑∥x−mi∥2
散布矩阵#
类内散布矩阵#
Sw=i=1∑cx∈Di∑(x−mi)(x−mi)T
就是误差平方和准则的矩阵形式
反映了各个子集的样本与其均值之间的差异,衡量了各个子集内部的紧密程度
类间散布矩阵#
SB=i=1∑cni(mi−m)(mi−m)T 反映了各个子集的均值与整体均值之间的差异,衡量了各个子集之间的分离程度
总体散布矩阵#
ST=i=1∑cx∈Di∑(x−m)(x−m)T=Sw+SB 反映了所有样本的分散程度,衡量了所有样本之间的差异
散布准则#
基于行列式的散布准则:
Jd=∣Sw∣ 基于不变量的散布准则:
Jf=tr(ST−1Sw)
准则函数的优化#
穷举法优化#
对于每个样本,尝试将其分配到不同的子集中,计算准则函数的值,选择使准则函数最小的分配方式,NP问题,不现实
迭代最优化#
随机设置初始聚类,计算将样本x从子集Di移动到子集Dj后的准则函数值是否减小,如果减小则进行移动,直到没有样本可以移动为止
层次聚类#
凝聚层次聚类#
初始每个样本作为一类,计算距离,合并距离最近的两类,直到达到要求的类数为止
- 两类最近的样本的距离最小
- 两类的中心的距离最小
- 如何定义距离(欧氏距离、曼哈顿距离等)
- 如何定义类的中心(均值、质心等)
k-均值聚类(K-means)#
- 随机选择k个样本作为初始聚类中心
- 将每个样本分配到距离最近的聚类中心所在的子集中
- 重新计算每个子集内所有点的均值作为新的聚类中心
- 重复步骤2和3,直到聚类中心不再发生变化或达到最大迭代次数为止
可看作是对平方误差准则的贪心搜索算法
聚类结果受初始聚类中心的选择影响较大,可能会陷入局部最优解
高斯混合模型(GMM)#
一个复杂的概率密度分布函数可以由多个简单的密度函数线性组合而成:
p(x∣θ)=i=1∑Maipi(x∣θi)i=1∑Mai=1,ai≥0 最常用的是GMM:
p(x)=i=1∑MaiN(x;μi,Σi)i=1∑Mai=1
- μi为第i个高斯函数的均值(中心位置)
- Σi为第i个高斯函数的协方差矩阵(控制形状和方向)
GMM能得到每个样本属于每个子集的概率,适用于样本分布不均匀的情况,可用于软聚类,输出属于哪类的可能性,而非硬聚类的类别标签
期望最大化算法(EM)#
E-Step求期望#
根据先验随机初始化模型参数θ={ak,μk,Σk}
用当前参数计算每个样本xi由每个高斯分量k生成的后验概率:
γik=∑j=1MajN(xi;μj,Σj)akN(xi;μk,Σk) M-Step求最大化#
根据E-Step计算的后验概率,重新估计参数:
新权重ak新均值μk新协方差矩阵Σk=N1i=1∑Nγik=∑i=1Nγik∑i=1Nγikxi=∑i=1Nγik∑i=1Nγik(xi−μk)(xi−μk)T 得到新参数后重复E-Step和M-Step,直到参数收敛为止