K-Means实现mini-batch online learning的原理是什么?

  统计/机器学习 无监督学习    浏览次数:6083        分享
1

K-Means实现mini-batch online learning的原理是什么?

被面试官问到了,这个概念没怎么接触过。谢谢!

----2018.10.21更新----

我有个后续问题在这里:关于online KMeans步骤中成员更新分类的问题?

 

lllinnn   2018-10-01 10:57



   1个回答 
5

mini batch K means的原始论文Web-Scale K-Means Clustering


每次数据只随机取一个mini batch$M$。第13行的公式$c\leftarrow (1-\eta)c+\eta x$,其中第一项$(1-\eta)c$是momentum,第二项$\eta x$是每个数据点带来的改变量,相当于每个点提供的gradient,$\eta$是learning rate。所以相当于是带momentum的minibatch gradient descent。注意,比较一下一般不带momentum的batch Kmeans,第13行应该改为$c\leftarrow \sum_{x_i \in S_c}\frac{x_i}{N_c}$,也就是cluster中所有数据点的均值为中心点。

原文并没有从原理或理论上证明mini-batch Kmeans等价于Kmeans。事实上可能并不等价。作者的动机是


我理解是batch gradient descent是每个batch有所有数据点,minibatch是每个batch有随机M个数据点,SGD是每个batch只有一个数据点。对于随机噪音batch > minibatch> SGD。对于计算量batch < minibatch< SGD。取一个中庸之道,就是minibatch。

论文中结果也说明minibatch(蓝色)收敛最快,效果也相近于Batch Kmeans。


SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2018-10-02 00:50

谢谢你的回答。$c\leftarrow (1−\eta)c+\eta x$这一步应该就是重新更新centroid吧,跟直接计算所有点的centroid的结果是等价的吧 - lllinnn   2018-10-02 10:36
假设原来centroid为c1,现在所有点计算的centroid为c2,那么真正更新的c是c1和c2间的一点。c到c1的距离就是momentum项。其实算法里描述的和我说的还有点出入,但思路就是这样。 - Zealing   2018-10-02 12:02


  相关讨论

关于online KMeans步骤中成员更新分类的问题?

通俗地解释c-means以及fuzzy c-means是什么意思

kmeans可以做并行化计算达到加速效果吗?

KMeans++是怎么选初始点的?

K-MEANS初始点选择的问题

关于小批量K均值(mini-batch K Means)的问题

Jenks和K Means在一维数据时,是不是等价的?

kernal kmeans是什么意思?和一般的kmeans的区别是什么?

k-medoids和k-means区别

K Means初始点必须是样本中的点吗

  随便看看

怎么从矩母函数(mgf)推导得到概率密度函数(pdf)?

单一变量下的异常检测该怎么做?

xgboost怎么调参?

线性可分是什么意思?

模型调参时常用到的Grid Search是什么意思?