聚类算法总结

这里内容值得一看。聚类的形式化定义:样本集D={x1,x2,…,xm}D=\{x_1,x_2,\dots,x_m\}D={x1​,x2​,…,xm​},每个样本xi=(xi1;xi2;…;xin)x_i=(x_{i1};x_{i2};\dots;x_{in})xi​=(xi1​;xi2​;…;xin​)是一个特征向量。聚类算法将DDD分割为kkk个不相交的簇{Cl∣l=1,2,…,k}\{C_l|l=1,2,\dots,k\}{Cl​∣l=1,2,…,k},这些簇两两不交且并集是样本集DDD(即构成了一个划分)。聚类结果以λ={λ1,λ2,…,λm}\lambda=\{\lambda_1,\lambda_2,\dots,\lambda_m\}λ={λ1​,λ2​,…,λm​}表示,其中λj∈{1,2,…,k}\lambda_j\in\{1,2,\dots,k\}λj​∈{1,2,…,k}是xjx_jxj​的簇标记(即xj∈Cλjx_j\in C_{\lambda_j}xj​∈Cλj​​)。聚类性能度量也叫聚类“有效性指标”,一般希望簇内相似度高,簇间相似度低,可以有与专家参考模型比较的外部指标,直接考察聚类结果的内部指标。聚类时有序属性的距离以范数定义,xi−xjx_i-x_jxi​−xj​的LpL_pLp​范数是闵可夫斯基距离,p=1p=1p=1时是曼哈顿距离,p=2p=2p=2时是欧式距离;无序属性的距离以VDMVDMVDM定义。现实任务中距离并不是必须满足范数定义(尤其是三角不等式),可以通过距离度量学习基于数据来确定合适的距离计算式。聚类算法可以分为原型聚类(原型是样本空间中有代表性的点),密度聚类,层次聚类。

《机器学习》给出的“距离度量”性质和范数的定义中第二条不相同,两个定义是否等价?

原型聚类先对原型初始化,再对原型迭代求解:

  • k−meansk-meansk−means算法针对簇划分{Cl∣l=1,2,…,k}\{C_l|l=1,2,\dots,k\}{Cl​∣l=1,2,…,k}最小化平方误差(度量簇内样本相似度)E=∑i=1k∑x∈Ci∣∣x−μi∣∣22E=\sum_{i=1}^{k}\sum_{x\in C_i}||x-\mu_i||_2^2E=∑i=1k​∑x∈Ci​​∣∣x−μi​∣∣22​,通过贪心策略近似求解这个NPNPNP难问题:随机初始化kkk个样本点作为初始均值向量μi\mu_iμi​,然后将样本依据与μi\mu_iμi​的距离聚类,之后重新在簇内计算均值向量μi\mu_iμi​,重复上述过程直到无变化。
  • 学习向量量化LVQLVQLVQ要求样本点带有类别标签,它的学习结果是一组nnn维原型向量{p1,p2,…,pk}\{p_1,p_2,\dots,p_k\}{p1​,p2​,…,pk​},每个原型向量代表一个聚类簇,有簇标记。如果原型向量pip_ipi​与最近样本点xjx_jxj​类别相同就更新pip_ipi​向xjx_jxj​的方向靠近,否则就远离,更新直到最大迭代次数或者原型向量更新很小。预测时根据样本与原型向量的距离分类到最近的原型向量代表的簇中,这种对样本空间的划分称为VoronoiVoronoiVoronoi剖分,代码在这
  • 高斯混合聚类使用概率模型来表达原型(上面两个都是用向量表示),根据多元高斯分布的概率密度函数p(x∣μ,Σ)p(x|\mu,\Sigma)p(x∣μ,Σ)定义高斯混合分布pM(x)=∑i=1kαip(x∣μi,Σi)p_M(x)=\sum_{i=1}^k\alpha_ip(x|\mu_i,\Sigma_i)pM​(x)=∑i=1k​αi​p(x∣μi​,Σi​)