机器学习——聚类方法

机器学习——聚类方法


两种常用聚类方法:层次聚类(hierarchical clustering)和 k k k均值聚类(k-means clustring)。层次聚类又有聚合(自下而上)和分裂(自下而上)

聚类基本概念

聚类的核心是相似度(similarity)或距离(distance)。样本间的相似度也可以用相关系数(correlation coefficient)来表示。相关系数的绝对值越接近于1,表示样本越相似;越接近于0,表示样本越不相似。相关系数定义为
r i j = ∑ k = 1 m ( x k i − x ˉ i ) ( x k j − x ˉ j ) [ ∑ k = 1 m ( x k i − x ˉ i ) 2 ∑ k = 1 m ( x k j − x ˉ j ) 2 ] 1 2 r _ { i j } = \frac { \sum _ { k = 1 } ^ { m } \left( x _ { k i } - \bar { x } _ { i } \right) \left( x _ { k j } - \bar { x } _ { j } \right) } { \left[ \sum _ { k = 1 } ^ { m } \left( x _ { k i } - \bar { x } _ { i } \right) ^ { 2 } \sum _ { k = 1 } ^ { m } \left( x _ { k j } - \bar { x } _ { j } \right) ^ { 2 } \right] ^ { \frac { 1 } { 2 } } } rij=[k=1m(xkixˉi)2k=1m(xkjxˉj)2]21k=1m(xkixˉi)(xkjxˉj)
其中 x ˉ i = 1 m ∑ k = 1 m x k i , x ˉ j = 1 m ∑ k = 1 m x k j \bar { x } _ { i } = \frac { 1 } { m } \sum _ { k = 1 } ^ { m } x _ { k i } , \quad \bar { x } _ { j } = \frac { 1 } { m } \sum _ { k = 1 } ^ { m } x _ { k j } xˉi=m1k=1mxki,xˉj=m1k=1mxkj
协方差矩阵
Σ i j = cov ⁡ ( X i , X j ) = E [ ( X i − μ i ) ( X j − μ j ) ] \Sigma _ { i j } = \operatorname { cov } \left( X _ { i } , X _ { j } \right) = \mathrm { E } \left[ \left( X _ { i } - \mu _ { i } \right) \left( X _ { j } - \mu _ { j } \right) \right] Σij=cov(Xi,Xj)=E[(Xiμi)(Xjμj)]
两者区别在于有没有除以标准差。
如果一个聚类方法假定一个样本只能属于一个类,或类的交集为空集,那么该方法称为硬聚类(hard clustering)方法。否则,如果一个样本可以属于多个类,或类的交际不为空寂,那么该方法称为软聚类(soft clustering)方法。

层次聚类

有聚合(agglomerative)或自下而上(bottom-up)聚类,分裂(divisive)或自上而下(top-down)聚类两种方法,每个样本只属于一个类,所以层次聚类属于硬聚类。
聚合聚类算法
(1)计算 n n n个样本两两之间的欧式距离 d i j {d_{ij}} dij
(2)构造 n n n个类,每个类只包含一个样本
(3)合并类间距最小的两个类
(4)若类的个数为1,终止计算
算法复杂度是 O ( m n 3 ) O(mn^3) O(mn3),m是样本维数。

k k k均值聚类

k k k均值聚类将样本集合划分为 k k k个子集,构成 k k k个类,将 n n n个样本分到 k k k个类中,每个样本到其所属类的中心的距离最小。每个样本只属于一个类,硬聚类。
k k k均值聚类就是求解最优化问题:
C ∗ = arg ⁡ min ⁡ C W ( C ) = arg ⁡ min ⁡ C ∑ l = 1 k ∑ C ( i ) = l ∥ x i − x ˉ l ∥ 2 \begin{aligned} C ^ { * } & = \arg \min _ { C } W ( C ) \\ & = \arg \min _ { C } \sum _ { l = 1 } ^ { k } \sum _ { C ( i ) = l } \left\| x _ { i } - \bar { x } _ { l } \right\| ^ { 2 } \end{aligned} C=argCminW(C)=argCminl=1kC(i)=lxixˉl2
(1)随机选择 k k k个样本点作为初始聚类中心
(2)计算每个样本到类中心的距离,将每个样本指派到与其最近的中心类中
(3)计算新的类中心
(4)如果迭代收敛或符合停止条件,输出 C ∗ C^* C
算法复杂度是 O ( m n k ) O(mnk) O(mnk),m是样本维数。
得到的类别是平坦的、非层次化的
算法是迭代算法,不能保证得到全局最优
初始中心的选择会直接影响聚类结果,初始中心的选择可以用层次聚类对样本进行聚类,得到k个类时停止,然后从每个类中选取一个与中心距离最近的点
一般地,类别数变小时,平均直径会增加;类别数变大超过某个值以后,平均直径会不变,这个值就是最优的 k k k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值