首页 > 编程语言 >机器学习中的常见问题——K-Means算法与矩阵分解的等价

机器学习中的常见问题——K-Means算法与矩阵分解的等价

时间:2023-06-14 20:35:35浏览次数:39  
标签:xj jzij 常见问题 Means tr 矩阵 ui 质心


一、K-Means算法的基本原理

K-Means算法是较为经典的聚类算法,假设训练数据集X X 为:{x1,x2,⋯,xn}{x1,x2,⋯,xn},其中,每一个样本xj x j 为m m 维的向量。此时的样本为一个m×nm×n的矩阵:



Xm×n=(x1x2⋯xn)=⎛⎝⎜⎜⎜⎜x1,1x2,1⋮xm,1x1,2x2,2⋮xm,2⋯⋯⋯x1,nx2,n⋮xm,n⎞⎠⎟⎟⎟⎟m×n X m × n = ( x 1 x 2 ⋯ x n ) = ( x 1 , 1 x 1 , 2 ⋯ x 1 , n x 2 , 1 x 2 , 2 ⋯ x 2 , n ⋮ ⋮ ⋮ x m , 1 x m , 2 ⋯ x m , n ) m × n

假设有k k 个类,分别为:{C1,⋯,Ck}{C1,⋯,Ck}。k-Means算法通过欧式距离的度量方法计算每一个样本xj x j 到质心之间的距离,并将其划分到较近的质心所属的类别中并重新计算质心,重复以上的过程,直到质心不再改变为止,上述的过程可以总结为:

  • 初始化常数K,随机选取初始点为质心
  • 重复计算以下过程,直到质心不再改变
  • 计算样本与每个质心之间的相似度,将样本归类到最相似的类中
  • 重新计算质心
  • 输出最终的质心以及每个类

二、K-Means与矩阵分解的等价

2.1、K-Means的目标函数

K-Means的目标使得每一个样本xj x j 被划分到离质心ui u i 最近的类别中,而质心为:



ui=∑xj∈Cixj#(xj∈Ci) u i = ∑ x j ∈ C i x j # ( x j ∈ C i )

其中,∑xj∈Cixj ∑ x j ∈ C i x j 表示的是所有Ci C i 类中的所有的样本的和,#(xj∈Ci) # ( x j ∈ C i ) 表示的是类别Ci C i 中的样本的个数。

最终使得质心不再改变,这就意味着每一个样本被划分到了最近的质心所属的类别中,即:



min∑i=1k∑j=1nzij‖‖xj−ui‖‖2 m i n ∑ i = 1 k ∑ j = 1 n z i j ‖ x j − u i ‖ 2

其中,样本xj x j 是数据集Xm×n X m × n 的第j j 列。uiui表示的是第i i 个类别的聚类中心。假设Mm×kMm×k为聚类中心构成的矩阵。矩阵Zk×n Z k × n 是由zij z i j 构成的0-1矩阵,zij z i j 为:



zij={10 if xi∈Ci otherwise  z i j = { 1  if  x i ∈ C i 0  otherwise 

上述的优化目标可以表示成:(在下面会做证明)



min‖X−MZ‖2 m i n ‖ X − M Z ‖ 2

2.2、矩阵分解的等价

2.2.1、优化目标一

对于上述的最小化问题:



min∑i=1k∑j=1nzij‖‖xj−ui‖‖2 m i n ∑ i = 1 k ∑ j = 1 n z i j ‖ x j − u i ‖ 2

则有:



∑i,jzij‖‖xj−ui‖‖2=∑i,jzij(xTjxj−2xTjui+uTiui)=∑i,jzijxTjxj−2∑i,jzijxTjui+∑i,jzijuTiui ∑ i , j z i j ‖ x j − u i ‖ 2 = ∑ i , j z i j ( x j T x j − 2 x j T u i + u i T u i ) = ∑ i , j z i j x j T x j − 2 ∑ i , j z i j x j T u i + ∑ i , j z i j u i T u i

下面分别对上式中的三项进行计算:

  • 对于∑i,jzijxTjxj ∑ i , j z i j x j T x j :



∑i,jzijxTjxj=∑i,jzij‖‖xj‖‖2=∑j‖‖xj‖‖2=tr[XTX] ∑ i , j z i j x j T x j = ∑ i , j z i j ‖ x j ‖ 2 = ∑ j ‖ x j ‖ 2 = t r [ X T X ]

已知:∑izij=1 ∑ i z i j = 1 。

  • 对于∑i,jzijxTjui ∑ i , j z i j x j T u i :



∑i,jzijxTjui=∑i,jzij∑lxljuli=∑j,lxlj∑iulizij=∑j,lxlj(MZ)lj=∑j∑l(XT)jl(MZ)lj=∑j(XTMZ)jj=tr[XTMZ] ∑ i , j z i j x j T u i = ∑ i , j z i j ∑ l x l j u l i = ∑ j , l x l j ∑ i u l i z i j = ∑ j , l x l j ( M Z ) l j = ∑ j ∑ l ( X T ) j l ( M Z ) l j = ∑ j ( X T M Z ) j j = t r [ X T M Z ]

  • 对于∑i,juTiui ∑ i , j u i T u i :



∑i,jzijuTiui=∑i,jzij‖ui‖2=∑i‖ui‖2ni ∑ i , j z i j u i T u i = ∑ i , j z i j ‖ u i ‖ 2 = ∑ i ‖ u i ‖ 2 n i

最终:



∑i,jzij‖‖xj−ui‖‖2=tr[XTX]−2tr[XTMZ]+∑i‖ui‖2ni ∑ i , j z i j ‖ x j − u i ‖ 2 = t r [ X T X ] − 2 t r [ X T M Z ] + ∑ i ‖ u i ‖ 2 n i

2.2.2、优化目标二

对于上述的优化目标的矩阵写法:



min‖X−MZ‖2 m i n ‖ X − M Z ‖ 2

则有:



‖X−MZ‖2=tr[(X−MZ)T(X−MZ)]=tr[XTX]−2tr[XTMZ]+tr[ZTMTMZ] ‖ X − M Z ‖ 2 = t r [ ( X − M Z ) T ( X − M Z ) ] = t r [ X T X ] − 2 t r [ X T M Z ] + t r [ Z T M T M Z ]

对于tr[ZTMTMZ] t r [ Z T M T M Z ] :



tr[ZTMTMZ]=tr[MTMZZT]=∑i(MTMZZT)ii=∑i∑l(MTM)il(ZZT)li=∑i(MTM)ii(ZZT)ii=∑i‖ui‖2ni t r [ Z T M T M Z ] = t r [ M T M Z Z T ] = ∑ i ( M T M Z Z T ) i i = ∑ i ∑ l ( M T M ) i l ( Z Z T ) l i = ∑ i ( M T M ) i i ( Z Z T ) i i = ∑ i ‖ u i ‖ 2 n i

因此得证,两种优化目标等价。

2.2.3、求最优的矩阵M M

最终的目标是求得聚类中心,因此,对矩阵MM求偏导数:




∂∂M‖X−MZ‖2=∂∂M[tr[XTX]−2tr[XTMZ]+tr[ZTMTMZ]]=2(MZZT−XZT) ∂ ∂ M ‖ X − M Z ‖ 2 = ∂ ∂ M [ t r [ X T X ] − 2 t r [ X T M Z ] + t r [ Z T M T M Z ] ] = 2 ( M Z Z T − X Z T )

令其为0 0 :


M=XZT(ZZT)−1M=XZT(ZZT)−1

即可得:




ui=∑jzijxj∑jzij=1ni∑xj∈Cixj u i = ∑ j z i j x j ∑ j z i j = 1 n i ∑ x j ∈ C i x j

三、结论

K-Means算法等价于求下述问题的最小值:



minZ‖‖X−XZT(ZZT)−1Z‖‖2 m i n Z ‖ X − X Z T ( Z Z T ) − 1 Z ‖ 2



s.t.zij∈{0,1},∑jzij=1 s . t . z i j ∈ { 0 , 1 } , ∑ j z i j = 1

参考文献

  • 《k-Means Clustering Is Matrix Factorization》


标签:xj,jzij,常见问题,Means,tr,矩阵,ui,质心
From: https://blog.51cto.com/u_16161414/6480421

相关文章

  • 简单易学的机器学习算法——K-Means算法
    一、聚类算法的简介  聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。聚类算法与分类算法最大的区别是:聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。  在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似......
  • 推荐算法——基于矩阵分解的推荐算法
    一、推荐算法概述对于推荐系统(RecommendSystem,RS),从广义上的理解为:为用户(User)推荐相关的商品(Items)。常用的推荐算法主要有:基于内容的推荐(Content-BasedRecommendation)协同过滤的推荐(CollaborativeFilteringRecommendation)基于关联规则的推荐(AssociationRule-Based......
  • 简单易学的机器学习算法——K-Means++算法
    一、K-Means算法存在的问题由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指定,这一点对于一些未知数据存在很大的局限性。其次,在利用K-Means算法进行聚类之前,需要初始化k个聚类中心,在上述的......
  • SpringSecurity6.0学习常见问题
    环境SpringSecurity6.1版本SpringBoot3.1版本常见问题oauth2客户端请求oauth授权端,响应401检查spring.security.oauth2.client.registration.login-client.client-secret的值很spring.security.oauth2.authorizationserver.client.login-client.registration.client-secret......
  • 2373.矩阵中的局部最大值
    问题描述2373.矩阵中的局部最大值(Easy)给你一个大小为nxn的整数矩阵grid。生成一个大小为(n-2)x(n-2)的整数矩阵maxLocal,并满足:maxLocal[i][j]等于grid中以i+1行和j+1列为中心的3x3矩阵中的最大值。换句话说,我们希望找出grid中每个......
  • 什么是全渠道营销?4个软件组建全渠道营销获客矩阵
    2023年可谓是B2B企业营销获客最为严峻的一年。越来越多的营销人纷纷找到我,询问市场部如何开源获客,如何挖掘高ROI的获客渠道等问题。这种焦虑情绪大部分源自CEO和业务部门对应商机需求的巨大压力,因为所有的B2B市场部都在向获客型市场部转型,通过可量化的方式来评估市场对经营的价值......
  • K-Means聚类分析-有标签
    模型亮点初始测试集上评分为0.51,调参后测试集上评分为0.75数据集由sklearn自带-----------------------------------------以下为模型具体实现-----------------------------------------Step1.数据读取fromsklearn.datasetsimportload_irisiris=load_iris()x=iris.d......
  • ORACLE常见问题一千问(提供下载)(不怕学不成、就怕心不诚!)
    ORACLE常见问题一千问(提供下载)(不怕学不成、就怕心不诚!)——通过知识共享树立个人品牌。ORACLE常见问题是我收集完成,在此共享出来,一为自己以后好做个参考,二为需要的朋友提供帮助。同时,感谢提供这些相关问题及解决方法的朋友。欢迎大家补充,交流与分享才能共同进步嘛,感谢!后附电子版下......
  • 2319.判断矩阵是否是一个X矩阵
    问题描述2319.判断矩阵是否是一个X矩阵解题思路模拟代码classSolution{public:boolcheckXMatrix(vector<vector<int>>&grid){boolres=true;for(inti=0;i<grid.size();i++){for(intj=0;j<grid[0].size();......
  • 2718. 查询后矩阵的和 (Medium)
    问题描述2718.查询后矩阵的和(Medium)给你一个整数n和一个下标从0开始的二维数组queries,其中queries[i]=[typeᵢ,indexᵢ,valᵢ]。一开始,给你一个下标从0开始的nxn矩阵,所有元素均为0。每一个查询,你需要执行以下操作之一:如果typeᵢ==0,将第index......