机器学习的相关知识-常用的聚类方法

聚类就是按照某个标准,把数据集划分成不同的类,不同类的数据差异性尽可能大,同类的数据相似性尽可能大。

k-means聚类算法

K邻近算法,要把数据分成K类,一开始是随机的,后来迭代进行选择,直到收敛,采用平方误差。
E = ∑ i = 1 k ∑ p ∈ C i ∥ p − m i ∥ 2 E=\sum_{i=1}^{k}\sum_{p\in C_i}\left\|p-m_i\right\|^2 E=i=1kpCipmi2

算法流程: ​
输入:包含n个对象的数据和簇的数目k; ​
输出:n个对象到k个簇,使平方误差准则最小。 ​
步骤:   
(1) 任意选择k个对象作为初始的簇中心;   
(2) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;   
(3) 更新簇的平均值,即计算每个簇中对象的平均值;   
(4) 重复步骤(2)、(3)直到簇中心不再变化;

层次聚类算法

根据层次分解的顺序是自底向上的还是自上向下的,层次聚类算法分为凝聚的层次聚类算法和分裂的层次聚类算法。

每个对象作为一类,慢慢得合并,直到所有对象都在一个类中,或者某个终结条件被满足。

算法流程

注:以采用最小距离的凝聚层次聚类算法为例:

(1) 将每个对象看作一类,计算两两之间的最小距离;  
(2) 将距离最小的两个类合并成一个新类;  
(3) 重新计算新类与所有类之间的距离;  
(4) 重复(2)、(3),直到所有类最后合并成一类。

SOM聚类算法

SOM网络包含输入层和输出层。输入层对应一个高维的输入向量,输出层由一系列组织在2维网格上的有序节点构成,输入节点与输出节点通过权重向量连接。 学习过程中,找到与之距离最短的输出层单元,即获胜单元,对其更新。同时,将邻近区域的权值更新,使输出节点保持输入向量的拓扑特征。 有点神经网络那味儿了。

算法流程

​(1) 网络初始化,对输出层每个节点权重赋初值; ​
(2) 从输入样本中随机选取输入向量并且归一化,找到与输入向量距离最小的权重向量;
​(3) 定义获胜单元,在获胜单元的邻近区域调整权重使其向输入向量靠拢; ​
(4) 提供新样本、进行训练; ​
(5)收缩邻域半径、减小学习率、重复,直到小于允许值,输出聚类结果。

FCM聚类算法

Fuzzy C-Means(模糊C均值聚类)算法原理详解与python实现
有点类似VAE

FCM算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进。

设数据集 X = x 1 , x 2 , . . . , x n X={x_1,x_2,...,x_n} X=x1,x2,...,xn,它的模糊 c c c划分可用模糊矩阵 U = [ u i j ] U=[u_{ij}] U=[uij]表示,矩阵 U U U的元素 u i j u_{ij} uij表示第 j ( j = 1 , 2 , . . . , n ) j(j=1,2,...,n) j(j=1,2,...,n)个数据点属于第 i ( i = 1 , 2 , . . . , c ) i(i=1,2,...,c) i(i=1,2,...,c)类的隶属度, u i j u_{ij} uij满足如下条件: { ∑ i = 1 c u i j = 1 ∀   j u i j ∈ [ 0 , 1 ] ∀   i , j ∑ j = 1 c u i j > 0 ∀   i \left\{ \begin{array}{lr} \sum_{i=1}^c u_{ij}=1 \quad\forall~j \\u_{ij}\in[0,1] \quad\forall ~i,j \\\sum_{j=1}^c u_{ij}>0 \quad\forall ~i \end{array} \right. i=1cuij=1 juij[0,1] i,jj=1cuij>0 i目前被广泛使用的聚类准则是取类内加权误差平方和的极小值。即:
( m i n ) J m ( U , V ) = ∑ j = 1 n ∑ i = 1 c u i j m d i j 2 ( x j , v i ) (min)J_m(U,V)=\sum^n_{j=1}\sum^c_{i=1}u^m_{ij}d^2_{ij}(x_j,v_i) (min)Jm(U,V)=j=1ni=1cuijmdij2(xj,vi)其中 V V V为聚类中心, m m m为加权指数, d i j ( x j , v i ) = ∣ ∣ v i − x j ∣ ∣ d_{ij}(x_j,v_i)=||v_i-x_j|| dij(xj,vi)=vixj

算法流程

(1) 标准化数据矩阵;  
(2) 建立模糊相似矩阵,初始化隶属矩阵;  
(3) 算法开始迭代,直到目标函数收敛到极小值;  
(4) 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。

posted @ 2022-04-06 20:21  赫凯  阅读(32)  评论(0)    收藏  举报