FPGA在k-means聚类及软处理器中的应用与优化
1. k-means聚类算法概述
聚类是机器学习和数据挖掘中常用的过程,是一种无监督的分区技术,用于将数据集分组为子集,通过将每个新数据分组到具有相似特征的数据点组中(例如相同年龄组、相同图像特征)。k-means算法需要将D维点集 $X = {x_j}$($j = 1, …, N$)划分为 $k$ 个簇 $S_i$($i = 1, …, k$),$k$ 通常由用户设置,目标是找到最优分区,最小化目标函数。
在k-means算法中,数据集根据每个数据集与 $k$ 个质心值之间的距离度量被分类到 $k$ 个质心。计算距离值有多种度量方法,最常用的是欧几里得距离和曼哈顿距离。欧几里得距离公式为:
[D_E = \sqrt{\sum_{i = 1}^{d}(X_i - C_i)^2}]
其中 $X$ 是数据点,$C$ 是簇中心,$d$ 是每个数据集的维度数。曼哈顿距离公式为:
[D_M = \sum_{i = 1}^{d}|X_i - C_i|]
虽然欧几里得距离度量更准确,但曼哈顿距离度量计算速度是欧几里得距离的两倍,且消耗资源更少,因此更受青睐。
2. k-means算法的计算复杂度分析
k-means算法包括距离计算、比较和平均三个阶段:
-距离计算:对于RGB图像的每个数据点,曼哈顿距离度量涉及3个绝对值、2个加法和3个减法,共8个操作。对于 $n$ 个数据点和 $k$ 个质心,距离计算的操作数 $k_D = 8nk$。
-比较:比较模块接收每个像素生成的 $