机器学习 Mini Batch K-means聚类算法

机器学习 Mini Batch K-means聚类算法

聚类是一种将数据点分组成各种子组,以使每个子组内的每个点相似的技术。它是一种无监督算法,没有标签或真实数据。Mini Batch K-means是K-Means算法的一种变体,它从内存中随机训练批次。

在本文中,让我们详细了解Mini Batch K-Means。在进入Mini Batch K-Means之前,让我们先看一下K-Means的一般情况

K-Means聚类方法

K-Means是一种迭代方法,试图将数据点分成K个不重叠的子组,使得集群内的点尽可能相似,并且两个集群之间的点尽可能不相似。该算法还尽量使点与质心之间的聚类内距离之和最小,并使聚类间距离最大。一个点只能属于一个集群或子组。

Mini Batch K-Means聚类

Mini Batch K-Means聚类的概念是在内存中存储一小批固定大小的数据点。在每次迭代中,从数据集中随机选择一个小批次,并仅使用该小批次中的数据点来更新聚类的质心。这样可以避免一次性使用整个数据集,就像K-Means算法中解决任何内存问题一样。算法收敛得更快。学习率通常随着迭代次数的增加而降低,因为它与分配的数据成反比。在小批次中,使用数据和原型的凸组合进行群集更新,并随着学习速率在迭代中降低。当重复增加时,新增数据的影响减小,收敛更快,在两个连续迭代中质心不受影响时观察到。

Mini Batch K-Means聚类的工作原理

  • 随机初始化聚类质心。

  • 从原始数据集中随机选择一小批数据。

  • 将每个数据点分配给最接近它的质心。

  • 使用来自小批次的分配点计算聚类质心。

  • 从步骤2到4的过程重复,直到质心位置没有变化。

  • 得到最终的聚类。

Mini Batch K-Means的Python实现

在下面的示例中,我们使用了含有2000个数据点的小批次的KMeans聚类。定义了初始聚类中心,然后使用数据对模型进行训练,找到最终的聚类中心并绘制它们。

from sklearn.cluster import MiniBatchKMeans
from sklearn.datasets import make_blobs as blobs
import matplotlib.pyplot as plt
import timeit as t

c = [[50, 50],[1900, 0],[1900, 900],[0, 1900]]
data, data_labels = blobs(n_samples = 2000, centers = c, cluster_std = 200)

color = ['pink', 'violet', 'green', 'blue']
for i in range(len(data)):
  plt.scatter(data[i][0], data[i][1], color = color[data_labels[i]], alpha = 0.4)

k_means = MiniBatchKMeans(n_clusters=4, batch_size = 40)
st = t.default_timer()
k_means.fit(data)
e = t.default_timer()
label_a = k_means.labels_
cnt = k_means.cluster_centers_
print("Time taken : ",e-st)

for i in range(len(data)):
    plt.scatter(data[i][0],data[i][1], color = color[label_a[i]], alpha = 0.4)
for i in range(len(cnt)):
    plt.scatter(cnt[i][0], cnt[i][1], color = 'black')

输出

Time taken :  0.01283279599999787

机器学习 Mini Batch K-means聚类算法

Mini Batch K 均值聚类法的优势

  • 它可以处理比K−Means算法更大的数据集

  • 它的计算消耗较少

  • 它的收敛速度更快

结论

Mini−batch K−Means是传统K-means的一种更好、更新的方法,解决了一些缺点,如内存使用较少、能够处理内存中的大型数据集,并且收敛时间更短。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程