OpenCV机器学习基础:K-means聚类与马氏距离应用
1. 误差类型成本与特征方差问题
在机器学习中,若对两种误差类型的相对成本有先验概念,这将非常有用。例如,在超市收银台将一种商品误分类为另一种商品的成本,就可以事先精确量化。
部分分类器在训练时,当特征向量包含方差差异较大的特征时,会出现问题。比如,一个特征用小写ASCII字符表示,其取值范围只有26种;而另一个特征用显微镜载玻片上生物细胞的计数表示,其取值可能有数十亿种。像K近邻算法可能会认为前者相对恒定,没有学习价值。解决此问题的方法是对每个特征变量进行方差归一化。若特征之间不相关,这种方法可行;若特征相关,则可按平均方差或协方差进行归一化。不过,决策树等算法不受特征方差差异的影响,因为它只搜索有效分离阈值,变量范围大小无关紧要。
2. OpenCV中的机器学习算法
OpenCV的机器学习库(ML)大多采用基于对象的C++通用接口,将每个算法封装在从通用基类派生的对象中,实现了算法访问和使用的标准化。但库中一些基本方法不符合此标准接口,因为它们是在通用接口设计之前实现的。接下来我们将介绍K-means聚类、马氏距离及其在K-means聚类中的应用,以及一种用于提高K-means聚类速度和准确性的分区技术。
3. K-means聚类算法
K-means算法旨在找到一组向量值数据中的自然聚类。用户设定所需的聚类数量,算法会快速为这些聚类中心找到合适的位置,使聚类中心倾向于位于数据自然聚集的中间位置。该算法是迭代算法,在OpenCV中也被称为Lloyd算法或“Voronoi迭代”,其运行步骤如下:
1. 输入数据集D和用户选择的聚类数量K。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



