OpenCV分类器学习心得

这篇文章是学习了斯坦福大学《机器学习》、《学习OpenCV》、OpenCV中文文档以及相关博客总结出来的,自认为已经了解各种分类器的工作原理(涉及数学公式推导部分还很薄弱)才敢动笔。不足之处感谢各位指点。

1.  normal_bayes_classifier 朴素贝叶斯分类

OpenCV最简单的监督学习分类器

这个分类器模型是建立在每一个类别的特征向量服从正态分布的基础上的(据说不满足独立分布,效果也很好)。

整个分布函数被假设为一个高斯分布,每一类别一组系数。当给定了训练数据,算法将会估计每一个类别的向量均值和方差矩阵,然后根据这些进行预测。

特点:如果没有很多数据,该模型会比很多复杂的模型获得更好的性能,因为复杂的模型用了太多假设,以致产生欠拟合。

附贝叶斯公式:

2.   k_nearest_neighbors(KNN) K近邻

这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本周围K个最近邻,然后把新样本标记为在K近邻点中频率最高的类。

这种方法有时候被称作“基于样本的学习”,即为了预测,我们对于给定的输入搜索最近的已知其相应的特征向量。

特点:简单有效,但因为需要存储所有的训练集,占用很大内存,速度比较慢。使用该方法前通常训练集聚类来降低数据大小。

3.   support_vector_machines(SVM)支持向量机

SVM是一种基于核函数的方法,它通过某些核函数把特征向量映射到高维空间(一般情况下高维空间上比低维空间上更加线性可分),然后建立一个线性判别函数(或者说是一个高维空间中的能够区分训练数据的最优超平面)。

解是最优的在某种意义上是两类中距离分割面最近的特征向量和分割面的距离最大化。离分割面最近的特征向量被称为”支持向量”,意即其它向量不影响分割面(决策函数)。

注:

1.   当数据集合比较小的时候,支持向量机的效果常常最好。

2.   对于核来说,不仅仅只存在于 SVM 内,对于任意的算法,只要计算时出现了内积的,都可以用核函数替代,从而提高在高维数据上的性能。

4.   decision_trees 决策树

决策树是一个二叉树。当每个叶节点用类别标识(多个叶子可能有相同的标识)时,它可以表示分类树;当每个叶节点被分配了一个常量(所以回归函数是分段常量)时,决策树就成了回归树

决策树是从根结点递归构造的。用所有的训练数据(特征向量和对应的响应)来在根结点处进行分裂。在每个结点处,优化准则(比如最优分裂)是基于一些基本原则来确定的(比如ML中的“纯度purity”原则被用来进行分类,方差之和用来进行回归)。所有的数据根据初始和替代分裂点来划分给左右子结点(就像在预测算法里做的一样)。然后算法回归的继续分裂左右子结点。在以下情况下算法可能会在某个结点停止:

a)   树的深度达到了指定的最大值

b)   在该结点训练样本的数目少于指定值,比如,没有统计意义上的集合来进一步进行结点分裂了。

c)   在该结点所有的样本属于同一类(或者,如果是回归的话,变化已经非常小了)

d)   跟随机选择相比,能选择到的最好的分裂已经基本没有什么有意义的改进了。

决策树自身的优点:

a)   计算简单,易于理解;

b)   适应不同的数据类型(包括类别数据,数值数据,未归一化的和混合的数据);

c)   比较适合处理有缺失属性的样本;

d)   通过分裂的顺序给数据特征赋不同的重要性;

e)   能够处理不相关的特征;

f)    在相对短的时间内能够对大型数据源做出可行且结果良好的结果;

g)   决策树构成了其他算法的基础(如boosting和随机数)。

决策树的缺点:

a)   容易发生过拟合(随即森林可以很大程度上减少过拟合);

b)   忽略了数据之间的相关性;

c)   对于那些,各类别样本数量不一致的数据,在决策树中,信息增益的结果偏向于那些具有更多数值的特征(只要使用了信息增益,都有这个特点,如RF)

5.   boosting

Boosting 是个非常强大的学习方法, 它也是一个监督的分类学习方法。它组合许多“弱”分类器来产生一个强大的分类器组。一个弱分类器的性能只是比随机选择好一点,因此它可以被设计的非常简单并且不会有太大的计算花费。将很多弱分类器结合起来组成一个集成的强分类器。

boosting分类器和随机森林在内部使用了决策树,所以继承了决策树的很多有用的性质(能够处理混合数据模型、没有归一化的数据、特征丢失)。

AdaBoost算法如下:

1.  给定N样本 (xi,yi) 其中

2.  初始化权值

3.  重复 for m = 1,2,…,M:

a)    根据每个训练数据的wi计算 。

b)    计算

c)    更新权值

并归一化使 Σiwi = 1.

4.  输出分类器

.

优点:

简单,不容易发生过拟合,不用做特征筛选。

注:opencv执行的boosting算法是一个两类分类器(不像决策树和随机森林)

6.   random_trees 随机森林

随机森林既可以解决回归问题,也可以解决分类问题。

随机森林可以通过收集很多树的子节点对各个类别投票,然后选择获得最多投票的类别作为判断结果。通过计算”森林“的所有子节点的值的平均值来解决回归问题。

随机森林建立时的基本子系统也是决策树。在建立决策树时会一直继续下去直到数据纯净。因此,尽管每个树都很好的学习了训练数据,但各个树之间仍有很大不同。我们把这些树放到一起求平均以消除这些不同(因此叫随机森林)。

当然,如果所有的树都相同,随机森林也没有很大作用。为了克服这点,随机森林通过在树的建立过程中,随机选择特征子集来使各个树不同。例如,一个目标识别树可以有很多可能的特征:颜色,质地,倾斜度等。树的每个节点可以从这些特征中随机的选择子集,来决定怎样更好地分裂数据。每个后来的节点都获得新的、随机选择的特征子集。

优点:

与boosting和决策树相比,随机森林可以使用更少的重要变量,获得最好的预测性能。即我们可以收缩特征集的大小,在不损失性能的前提下减少计算量和内存使用随机森林。

7.   neural_networks 神经网络

神经网络是对非线性可分数据的分类方法。

与输入直接相连的称为隐藏层( hidden layer),与输出直接相连的称为输出层(output layer)。

神经网络算法的一大特点就在于不知道隐藏层计算的东西的意义;另一个特点在于神经网络有比较多的局部最优值,可以通过多次随机设定初始值然后运行梯度下降算法获得最优值。

opencv图像分类方法汇总相关推荐

  1. 特征点匹配+特征检测方法汇总

    特征点匹配+特征检测方法汇总 特征提取与匹配---SURF:SIFT:ORB:FAST:Harris角点 匹配方法 匹配函数 1. OpenCV提供了两种Matching方式: • Brute-for ...

  2. OpenCV3 Java 机器学习使用方法汇总

    原文链接:OpenCV3 Java 机器学习使用方法汇总  前言 按道理来说,C++版本的OpenCV训练的版本XML文件,在java中可以无缝使用.但要注意OpenCV本身的版本问题.从2.4 到3 ...

  3. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  4. 二、深度学习数据增强方法汇总

    深度学习模型训练数据增强方法汇总 一.随机裁剪 二.RGB-->BGR通道互换 三.仿射变换(缩放) 三.随机旋转 四.对比度调整 五.随机抠图 六.bound box 中心点随机抠图 七.随机 ...

  5. 参数量下降85%,性能全面超越ViT:全新图像分类方法ViR

    来源:机器之心 本文共1700字,建议阅读5分钟 ViT 还不够完美?来自华东师范大学等机构的研究者提出了全新的图像分类方法 ViR,在模型和计算复杂性方面都优于 ViT. 近一年来,视觉 Trans ...

  6. 统计计量 | 统计学中常用的数据分析方法汇总

    来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...

  7. js如何操作表格(常用属性方法汇总)

    js如何操作表格(常用属性方法汇总) 一.总结 一句话总结: 二.表格相关的属性和方法 1.1 Table 对象集合 cells[] 返回包含表格中所有单元格的一个数组. 语法:tableObject ...

  8. IE问题解决方法汇总

    1.发送错误报告 [故障现象]在使用IE浏览网页的过程中,出现"Microsoft Internet Explorer遇到问题需要关闭--"的信息提示.此时,如果单击"发 ...

  9. winform打开cad图纸_CAD打开图纸的方法汇总

    打开文件属于最基本的操作,大家都会,但每个人的习惯不一样,采用的方法也不完全相同,这里简单地将打开文件的各种方法汇总一下. 一.打开(OPEN)命令 这是最基本也是最常用的方法,但调用方法有很多种,可 ...

最新文章

  1. Udacity机器人软件工程师课程笔记(六)-样本搜索和找回-基于漫游者号模拟器-优化和样本找回
  2. Python 计算机视觉(十一)—— OpenCV 图像形态学处理
  3. JSP每隔指定的时间段自动刷新页面
  4. A/B HDU - 1576 (逆元或拓展欧几里得或数学公式)多解法求大数结果
  5. 数据结构:(3)数据结构求解问题的过程
  6. 264编码基本概念 FFMpeg的解码流程
  7. 服务器重装系统要注意什么_视频海外服务器前期要准备什么?
  8. 冒泡排序的一次自我救赎
  9. 前端调用3dmax模型转换.gltf格式
  10. js select 联动
  11. 系统集成项目管理工程师和信息系统项目管理师的区别
  12. 数据抓包+hijson
  13. 一个简单的数字记忆训练软件介绍
  14. 嵌入式开发中常用的软件设计模式
  15. pytorch实现反向传播
  16. 小伙利用C++实现U盘热插拨监听程序,走上人生巅峰
  17. 一套完整的Android通用框架
  18. a标签,相对地址,绝对地址,锚点技术
  19. 1.亿级流量电商详情页系统实战--主节点部署redis
  20. Oracle VM VirtualBox Ubuntu设置共享文件夹

热门文章

  1. js错误集锦 函数在一个map循环遍历中进行返回值返回 结果在调用该函数时收不到返回值
  2. revit软件元素上色,快速修改单个/同类别构件颜色和透明度
  3. Airpods序列号怎么看 Airpods查看方法
  4. 2023年02月13-17日期货分析及交易操作计划:
  5. 用Python制作视频
  6. C++知识点总结及习题
  7. xml的复杂解析取值和节点插入导出合并后的xml文件
  8. 如何通过cmd命令行切换所在目录
  9. 第三次工业革命pdf
  10. 什么是用户与计算机进行通话,1.手机与固定电话使人们生活中的信息交流更方便.快捷.通过学习有关知识.手机与固定电话分别是利用什么来传递声音信息的?...