【机器学习】K-Means 聚类是特殊的矩阵分解问题
【机器学习】K-Means 聚类是特殊的矩阵分解(Matrix Factorization)问题
原文是:《k-Means Clustering Is Matrix Factorization》
本博客是该论文的阅读笔记,不免有很多细节不对之处。
还望各位看官能够见谅,欢迎批评指正。
更多相关博客请猛戳:http://blog.csdn.net/cyh_24
如需转载,请附上本文链接:http://blog.csdn.net/cyh_24/article/details/50408884
论文证明了传统的K-Means算法的目标函数可以被表达成数据矩阵与其低阶数据矩阵之间差异的Frobenius范数。
简要的说,K-Means 聚类其实是一种矩阵分解问题。
K-Means的推导,我想大家都已经很清楚了,这里不细说。它的目标函数,可以定义如下:
\sum_{i=1}^k \sum_{j=1}^n z_{ij} ||x_j-\mu_i||^2
如果能够把目标函数表达成如下形式,那么也就证明了K-Means聚类是特殊的矩阵分解问题。
?=||X-MZ||^2
?=||X-XZ^T(ZZ^T)^{-1}Z||^2
先不用深究,下文会详细介绍,先注意几个变量的意义:
数据集 X∈Rm∗nX\in R^{m*n} 是向量 xi∈Rmx_i \in R^m 的矩阵;
M∈Rm∗kM\in R^{m*k},是类中心点 μi∈Rm\mu_i \in R^m 的矩阵;
Z∈Rk∗nZ\in R^{k*n},是二值指示变量zijz_{ij}的矩阵;若xj∈Cix_j \in C_i,则zij=1z_{ij}=1,否则 zij=0z_{ij}=0;
数学符号说明
- xix_i 表示矩阵 XX 的第 jj-th列向量(好像与平常的相反了);
- XX的第(l,j)(l,j)的元素可以写成xljx_{lj}或者(X)lj(X)_{lj} ;
- ||x||||x|| 表示欧式距离,
- ||X||||X|| 则表示矩阵的 Frobenius 范数,
- 其Frobenius 范数平方形式定义如下:
||X||2=∑l,jx2lj=∑j||xj||2=∑jxTjxj=∑j(XTX)jj=tr[XTX]||X||^2 = \sum_{l,j}x_{lj}^2 = \sum_j ||x_j||^2 = \sum_j x_j^T x_j = \sum_j (X^TX)_{jj} = tr[ X^T X]
推导过程
假设,数据集XX 可以分成 kk 个类 C1,...CkC_1,...C_k, 分别对应的类中心点是 μ1,...μk\mu_1,...\mu_k;
zijz_{ij} 是二值指示变量:若xj∈Cix_j \in C_i,则zij=1z_{ij}=1,否则 zij=0z_{ij}=0;
那么,显然可以得到:
\sum_i z_{ij} = 1
而每行总和刚好是这个类中的样本个数:
\sum_jz_{ij}=n_i=|C_i|
由于zji∈{0,1}z_{ji} \in \{0,1\},所以ZZ的每一列只有一个11,所以:
z_{ij}\cdot z_{i^\prime j}=1\;\;(i=i^\prime)\;\;or\;\;0\;(otherwise)
因此,ZZTZZ^T 是一个对角矩阵,并且:
(ZZ^T)_{ii^\prime}=\sum_j(Z)_{ij}(Z^T)_{ji^\prime}=\sum_j z_{ij}z_{i^\prime j}
=n_i, \;\;if\;i=i^\prime
=0,\;otherwise
Step 1: 将目标函数左边展开
Step 2: 将目标函数中间项展开
接下来,我们看目标函数的中间项。作为矩阵Frobenius范数的平方,它可以按如下方式写:
从之前的结论中,我们可以快速发现:T1=T4andT2=T5T_1=T_4 \;\;and\;\; T_2=T_5. 所以,只要T3=T6T_3=T_6,那么我们假设的目标函数的第一个等式就成立了。所以,现在的目标就是证明 T3=T6T_3 = T_6.
来看一下T6T_6,可以得到:
tr[Z^TM^TMZ] = tr[M^TMZZ^T]
=\sum_i(M^TMZZ^T)_{ii}
=\sum_i\sum_l(M^TM)_{il}(ZZ^T)_{li}
=\sum_i(MTM)_{ii}(ZZ^T)_{ii}
=\sum_i||\mu_i||^2n_i
在上面的推导中,我们用到了 ZZTZZ^T 是对角阵的特性。到此,T3=T6T_3=T_6证明完毕,因此,目标函数的第一个等式也就证明完毕了。
Step 3: 消除矩阵 MM
现在的任务就是证明第二个等式。
回顾一下我们的目的,就是讲目标函数最小化, 因为已经证明了第一个等式,所以,其实也就是让||X−MZ||2||X-MZ||^2 最小化:
\frac{\delta}{\delta M}||X-MZ||^2
=\frac{\delta}{\delta M}[tr[X^TX]-2tr[X^TMZ]+tr[Z^TM^TMZ]]
=2(MZZ^T-XZ^T)
令偏导等于0,可以得到:
M=XZ^T(ZZ^T)^{-1}
代入目标函数第二个等式,就证明完毕了。
结论
我们在上面用了一大堆令人眩晕的代数表达式,终于说明了K-Means聚类问题可以被理解成是如下的受约束的矩阵分解问题:
目标函数\; \sum_{i=1}^k \sum_{j=1}^n z_{ij} ||x_j-\mu_i||^2 \;\;等价于\;\;min_Z||X-XZ^T(ZZ^T)Z||^2
s.t.\;\;\;z_{ij}\in\{0,1\}
\sum_jz_{ij}=1
【机器学习】K-Means 聚类是特殊的矩阵分解问题相关推荐
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- 机器学习中的常见问题——K-Means算法与矩阵分解的等价
一.K-Means算法的基本原理 K-Means算法是较为经典的聚类算法,假设训练数据集XXX为:{x1,x2,⋯,xn}" role="presentation" st ...
- 机器学习-*-K均值聚类及代码实现
KMeans聚类 在聚类算法中,最出名的应该就是k均值聚类(KMeans)了,几乎所有的数据挖掘/机器学习书籍都会介绍它,有些初学者还会将其与KNN等混淆.k均值是一种聚类算法,属于无监督学习的一种, ...
- 机器学习K均值聚类 python
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习-K均值聚类(python3代码实现)
K均值聚类 哈尔滨工程大学-537 算法原理: K均值是发现给定数据集的 k k k个簇的算法.簇个数k" role="presentation" style=" ...
- 机器学习--K均值聚类
机器学习--聚类 一.无监督学习 二.KMeans聚类 2.1 概览 2.2 理论介绍 2.2.1 模型 2.2.2 策略 2.2.3 算法 2.3 案例讲解 2.4 Python实现 2.4.1 导 ...
- k means聚类算法_K-Means 聚类算法 20210108
说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...
- 机器学习--k均值聚类(K-means)
数据分析入门与实战 公众号: weic2c 1.摘要 分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在 ...
最新文章
- 网络新高速:T比特网络技术实现成功测试
- 分析无线充电线圈产生的导航信号在自绕工字型电感中的感应电动势
- 《浪潮之巅》 读后感
- Chrome 74 Beta 发布,Windows 10 支持暗色主题
- 智能指针的释放_手把手教你实现智能指针
- lncrna研究,2021最新相关资料合集
- 二十一、String、StringBuffer和StringBuilder的区别是什么?
- 数据挖掘: 频繁项集挖掘(购物篮问题)
- 客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码
- 3.19PMP试题每日一题
- 山洪沟防洪治理工程技术规范_幸福沟水库一期工程完工丨尚志城市供水、防洪、农业灌溉皆升级...
- 消息队列面试 - 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?
- php什么时候面向对象,php什么时候使用面向对象
- 整人小程序【转自CSDN】
- 如何在Mac上使用屏幕共享
- 服务器网站兼容不正常,升级为IE11后兼容模式设置,部分网站无法正常浏览,兼容模式仍然无法正常访问部分网站的解决办法...
- c# 操作ppt 设置背景色、字体颜色、PPT转图片
- 逻辑究竟是什么以及逻辑应当是什么?
- php to es7,只需五步 集成新版 Elasticsearch7.9 中文搜索 到你的 Laravel7 项目
- 时间线vue,类似物流快递运单追踪
热门文章
- vue+element el-cascader级联选择器,点击lebel选中
- 产品上架后,亚马逊运营应该做什么
- cordova Vue 保存视频/图片到相册 - 实现下载视频/图片到相册
- 面向移动互联网和物联网应用的下一代移动通信
- Ogre 天龙八部 GridInfo文件格式说明(正确版)
- 那是你的计算机怎么用英语表示,“I potato you”可不是“我土豆你”,那这个potato到底啥意思?...
- 2022年G1工业锅炉司炉特种作业证考试题库及在线模拟考试
- java毕业生设计携手同游旅游社交平台计算机源码+系统+mysql+调试部署+lw
- zero eclipse_全球首款真无孔机!魅族zero亮相:支持屏幕发声和18W无线快充
- 时间复杂度:O(log1+log2+...+logn)=O(log(n!))=O(nlogn)