opencv中机器学习常用算法简述

Posted 跟着数理化走天下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv中机器学习常用算法简述相关的知识,希望对你有一定的参考价值。

Mahalanobis:通过除以协方差来对数据空间进行变换,然后计算距离,如果协方差矩阵是单位矩阵,那么该度量等价于欧式距离(Mahalanobis

 

K均值:这是一种非监督的聚类方法,使用K个均值来表示数据的分布,其中K的大小由用户定义。该方法跟期望最大化方法(expectation maximization)的区别是K均值的中心不是高斯分布,而且因为各个中心竞争取“俘获”最近的点,所以聚类结果更像肥皂泡,聚类区域经常被用作稀疏直方图的bin,用来描述数据

该方法由Steinhaus发明,并由Lloyd推广使用

 

正态/朴素贝叶斯分类器: 这是一个通用的分类器,他假设特征是高斯分布而且统计上互相独立,这个嘉定过于苛刻,在很多条件下不能满足,正因为如此,他也被称为“朴素贝叶斯”分类器,然而,在许多情况下,这个分类器的效果却出奇的好

该方法最早出自Maron,Minsky)

 

决策树:这是一个判别分类器,该树在当前节点通过寻找数据特征和一个阈值,来最优划分数据到不同的类别,处理流程是不停地划分数据并向下到树的左侧子节点或右侧子节点,虽然他一般不具有最优性能,但是往往是测试算法的第一选择

因为他速度比较快,而且具有不错的功能(Breiman

 

Boosting: 多个判别子分类器的组合,最终的分类决策是由各个子分类器的加权组合来决定,在训练时,逐个训练子分类器,且每个子分类器是一个弱分类器(只是优于随机选择的性能)。

这些弱分类器由单变量决策树构成,被称作“树桩”。在训练时,“树桩”不仅从数据中学习分类决策,而且还根据识别精度学习“投票”的权重,当逐个训练分类器的时候,数据样本的权重被重新分配,使之能够给与分错的数据更多的注意力,训练过程不停地执行,直到总错误(加权组合所有决策树组成的分类器产生的错误)低于某个已经设置好的阈值,为了达到好的效果,这个方法通常需要很大数据量的训练数据(Freund

 

随机森林:这是由许多决策树组成的“森林”,每个决策树向下递归以获取最大深度,在学习过程中,每棵树的每个节点只从特征数据的一个随机子集中选择,这保证了每棵树是统计上不相关的分类器,在识别过程中,将每棵树的结果进行投票来确定最终结果,每棵树的权重相同。这个分类方法经常很有效,而且对每棵树的输出进行平均,可以处理回归问题【ho】【Beriman

 

人脸检测/Harr:这个物体检测方巧妙地使用了boosting算法,opencv提供了正面人脸的检测器,他的检测效果非常好,你也可使用opencv提供的软件训练算法,使之能够检测其他物体,该算法非常擅长检测特定视角的刚性物体【viola

 

期望最大化(EM):一种用于聚类的非监督生成算法,他可以拟合N个多维高斯到数据上,此外N的大小由用户决定,这样仅仅使用几个参数(均值和方差)就可以非常有效的表达一个比较负责的分布。该方法经常用于分科

 

K近邻:K近邻可能是最简单的分类器,训练数据跟类别标签存放在一起,离测数据最近的(欧式距离最近)K个样本进行投票,确定测试数据的分类结果,这可能是你想到的最简单的方法,该方法通常比较有效,但是速度比较慢且对内存的 需求比较大

神经网路/多层传感器:该分类算法在输入节点和输出节点之间具有隐藏节点,这可以更好的表示输入信号。训练该分类器很慢,但是识别时很快,对于一些识别问题,如字符识别,他具有非常不错的性能

 

支持向量机(SVM):它可以进行分类,也可以进行递归,该算法需要定一个高维空间中任两点的距离函数。(将数据投影到高维空间会使数据更容易地线性可分)该算法可以学习一个分类超平面,用来在高维空间里实现最优分类,当数据有限的时候,该算法可以获得非常好的性能,而boosting和随机森林只能在用于大量训练数据时才有好的效果

 

机器学习中常遇到的问题:

1 欠拟合:模型假设太严格,所以模型不能拟合到实际数据上

2 过拟合:算法不仅学习了数据,而且还把噪声也当做信号学习了,这样算法的推广能力很差




机器学习这么火爆,你有什么新知识,新看法,欢迎留言

以上是关于opencv中机器学习常用算法简述的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV4机器学习:标注文字和矩形框

OpenCV4机器学习:KNN 原理及实现

OpenCV4机器学习:KNN 原理及实现

OpenCV4机器学习:决策树原理及分类实战

OpenCV4机器学习:决策树原理及分类实战

OpenCV4机器学习:图像的几何变换仿射变换