0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

回顾一下机器学习分类算法

新机器视觉 来源:builtin 作者:builtin 2021-05-11 09:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

说起分类算法,相信学过机器学习的同学都能侃上一二。

可是,你能够如数家珍地说出所有常用的分类算法,以及他们的特征、优缺点吗?比如说,你可以快速地回答下面的问题么:

KNN算法的优缺点是什么?

Naive Bayes算法的基本假设是什么?

entropy loss是如何定义的?

最后,分类算法调参常用的图像又有哪些?

答不上来?别怕!一起来通过这篇文章回顾一下机器学习分类算法吧(本文适合已有机器学习分类算法基础的同学)。

机器学习是一种能从数据中学习的计算机编程科学以及艺术,就像下面这句话说得一样。

机器学习是使计算机无需显式编程就能学习的研究领域。 ——阿瑟·塞缪尔,1959年

不过还有一个更好的定义:

“如果一个程序在使用既有的经验(E)执行某类任务(T)的过程中被认为是“具备学习能力的”,那么它一定需要展现出:利用现有的经验(E),不断改善其完成既定任务(T)的性能(P)的特性。” ——Tom Mitchell, 1997

例如,你的垃圾邮件过滤器是一个机器学习程序,通过学习用户标记好的垃圾邮件和常规非垃圾邮件示例,它可以学会标记垃圾邮件。系统用于学习的示例称为训练集。在此案例中,任务(T)是标记新邮件是否为垃圾邮件,经验(E)是训练数据,性能度量(P) 需要定义。例如,你可以定义正确分类的电子邮件的比例为P。这种特殊的性能度量称为准确度,这是一种有监督的学习方法,常被用于分类任务。

机器学习入门指南:

https://builtin.com/data-science/introduction-to-machine-learning

监督学习

在监督学习中,算法从有标记数据中学习。在理解数据之后,该算法通过将模式与未标记的新数据关联来确定应该给新数据赋哪种标签

监督学习可以分为两类:分类和回归。

分类问题预测数据所属的类别;

分类的例子包括垃圾邮件检测、客户流失预测、情感分析、犬种检测等。

回归问题根据先前观察到的数据预测数值;

回归的例子包括房价预测、股价预测、身高-体重预测等。

机器学习新手的十大算法之旅:

https://builtin.com/data-science/tour-top-10-algorithms-machine-learning-newbies

分类问题

分类是一种基于一个或多个自变量确定因变量所属类别的技术。

3a483a82-b1d6-11eb-bf61-12bb97331649.jpg

分类用于预测离散响应

逻辑回归

逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况 (例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,将因变量分为两类。

3a8121c6-b1d6-11eb-bf61-12bb97331649.jpg

如上所述,逻辑回归用于预测二分类的输出。例如,如果信用卡公司构建一个模型来决定是否通过向客户的发行信用卡申请,它将预测客户的信用卡是否会“违约”。 3a8dcb06-b1d6-11eb-bf61-12bb97331649.png 首先对变量之间的关系进行线性回归以构建模型,分类的阈值假设为0.5。 3a983a32-b1d6-11eb-bf61-12bb97331649.png

然后将Logistic函数应用于回归分析,得到两类的概率。

该函数给出了事件发生和不发生概率的对数。最后,根据这两类中较高的概率对变量进行分类。

3aa275ba-b1d6-11eb-bf61-12bb97331649.jpg

K-近邻算法(K-NN)

K-NN算法是一种最简单的分类算法,通过识别被分成若干类的数据点,以预测新样本点的分类。K-NN是一种非参数的算法,是“懒惰学习”的著名代表,它根据相似性(如,距离函数)对新数据进行分类。

3aab9a28-b1d6-11eb-bf61-12bb97331649.jpg

3ab74094-b1d6-11eb-bf61-12bb97331649.jpg

3ac5095e-b1d6-11eb-bf61-12bb97331649.jpg

3ad3860a-b1d6-11eb-bf61-12bb97331649.jpg

K-NN能很好地处理少量输入变量(p)的情况,但当输入量非常大时就会出现问题。

支持向量机(SVM)

支持向量机既可用于回归也可用于分类。它基于定义决策边界的决策平面。决策平面(超平面)可将一组属于不同类的对象分离开。

3ae077a2-b1d6-11eb-bf61-12bb97331649.jpg

在支持向量的帮助下,SVM通过寻找超平面进行分类,并使两个类之间的边界距离最大化。

3af3ade0-b1d6-11eb-bf61-12bb97331649.jpg

SVM中超平面的学习是通过将问题转化为使用一些某种线性代数转换问题来完成的。(上图的例子是一个线性核,它在每个变量之间具有线性可分性)。

对于高维数据,使用可使用其他核函数,但高维数据不容易进行分类。具体方法将在下一节中阐述。

核支持向量机

核支持向量机将核函数引入到SVM算法中,并将其转换为所需的形式,将数据映射到可分的高维空间。

核函数的类型包括:

3affeb82-b1d6-11eb-bf61-12bb97331649.jpg

前文讨论的就是线性SVM。

多项式核中需要指定多项式的次数。它允许在输入空间中使用曲线进行分割。

径向基核(radial basis function, RBF)可用于非线性可分变量。使用平方欧几里德距离,参数的典型值会导致过度拟合。sklearn中默认使用RBF。

类似于与逻辑回归类似,sigmoid核用于二分类问题。

3b0a4564-b1d6-11eb-bf61-12bb97331649.jpg

径向基核(RBF:Radial Basis Function )

RBF核支持向量机的决策区域实际上也是一个线性决策区域。RBF核支持向量机的实际作用是构造特征的非线性组合,将样本映射到高维特征空间,再利用线性决策边界分离类。

3b174cf0-b1d6-11eb-bf61-12bb97331649.jpg

因此,可以得出经验是:对线性问题使用线性支持向量机,对非线性问题使用非线性核函数,如RBF核函数。

朴素贝叶斯

朴素贝叶斯分类器建立在贝叶斯定理的基础上,基于特征之间互相独立的假设(假定类中存在一个与任何其他特征无关的特征)。即使这些特征相互依赖,或者依赖于其他特征的存在,朴素贝叶斯算法都认为这些特征都是独立的。这样的假设过于理想,朴素贝叶斯因此而得名。

3b25b13c-b1d6-11eb-bf61-12bb97331649.jpg

在朴素贝叶斯的基础上,高斯朴素贝叶斯根据二项(正态)分布对数据进行分类。

3b3500b0-b1d6-11eb-bf61-12bb97331649.jpg

P(class|data)表示给定特征(属性)后数据属于某类(目标)的后验概率。给定数据,其属于各类的概率大小就是我们要计算的值。 P(class)表示某类的先验概率。 P(data|class)表示似然,是指定类别时特征出现的概率。 P(data)表示特征或边际似然的先验概率。

3b5cc5b4-b1d6-11eb-bf61-12bb97331649.png

步骤

1、计算先验概率P(class)= 类中数据点的数量/观测值的总数量 P(yellow)= 10/17 P(green)= 7/17

2、计算边际似然P(data)= 与观测值相似的数据点的数量/观测值的总数量 P(?)= 4/17 该值用于检查各个概率。

3、计算似然P(data/class)= 类中与观测值相似的数量/类中点的总数量 P(?/yellow)= 1/7 P(?/green)= 3/10

4、计算各类的后验概率

3b67ab32-b1d6-11eb-bf61-12bb97331649.png

5、分类

3b726180-b1d6-11eb-bf61-12bb97331649.png

某一点归于后验概率高的类别,因为从上可知其属于绿色类的概率是75%根据其75%的概率这个点属于绿色类。

多项式、伯努利朴素贝叶斯是计算概率的其他模型。朴素贝叶斯模型易于构建,不需要复杂的参数迭代估计,这使得它对非常大的数据集特别有用。

决策树分类

决策树以树状结构构建分类或回归模型。它通过将数据集不断拆分为更小的子集来使决策树不断生长。最终长成具有决策节点(包括根节点和内部节点)和叶节点的树。最初决策树算法它采用采用Iterative Dichotomiser 3(ID3)算法来确定分裂节点的顺序。

3b7b0970-b1d6-11eb-bf61-12bb97331649.jpg

信息熵和信息增益用于被用来构建决策树。

信息熵

信息熵是衡量元素无序状态程度的一个指标,即衡量信息的不纯度。

3b84246a-b1d6-11eb-bf61-12bb97331649.png

信息熵是衡量元素的无序状态的程度的一个指标,或者说,衡量信息的不纯度。

3b84246a-b1d6-11eb-bf61-12bb97331649.png

直观上说地理解,信息熵表示一个事件的确定性程度。信息熵度量样本的同一性,如果样本全部属于同一类,则信息熵为0;如果样本等分成不同的类别,则信息熵为1。

信息增益

信息增益测量独立属性间信息熵的变化。它试图估计每个属性本身包含的信息,构造决策树就是要找到具有最高信息增益的属性(即纯度最高的分支)。

3b94d648-b1d6-11eb-bf61-12bb97331649.png

信息增益测量独立属性间的信息熵的变化。它试图估计每个属性本身包含的信息,构造决策树就是要找到具有最高信息增益的属性(即纯度最高的分支)。

3b94d648-b1d6-11eb-bf61-12bb97331649.png

其中Gain((T,X))是特征X的信息增益。Entropy(T)是整个集合的信息熵,第二项Entropy(T,X)是特征X的信息熵。

采用信息熵进行节点选择时,通过对该节点各个属性信息增益进行排序,选择具有最高信息增益的属性作为划分节点,过滤掉其他属性。

决策树模型存在的一个问题是容易过拟合。因为在其决策树构建过程中试图通过生成长一棵完整的树来拟合训练集,因此却降低了测试集的准确性。

3bab0fda-b1d6-11eb-bf61-12bb97331649.jpg

通过剪枝技术可以减少小决策树的过拟合问题。

分类的集成算法

集成算法是一个模型组。从技术上说,集成算法是单独训练几个有监督模型,并将训练好的模型以不同的方式进行融合,从而达到最终的得预测结果。集成后的模型比其中任何一个单独的模型都有更高的预测能力。

3bc34c30-b1d6-11eb-bf61-12bb97331649.jpg

随机森林分类器

随机森林分类器是一种基于装袋(bagging)的集成算法,即自举助聚合法(bootstrap aggregation)。集成算法结合了多个相同或不同类型的算法来对对象进行分类(例如,SVM的集成,基于朴素贝叶斯的集成或基于决策树的集成)。

3bd1452e-b1d6-11eb-bf61-12bb97331649.jpg

集成的基本思想是算法的组合提升了最终的结果。

3bdfe778-b1d6-11eb-bf61-12bb97331649.jpg

深度太大的决策树容易受过拟合的影响。但是随机森林通过在随机子集上构建决策树防止过拟合,主要原因是它会对所有树的结果进行投票的结果是所有树的分类结果的投票,从而消除了单棵树的偏差。

随机森林在决策树生增长的同时为模型增加了额外的随机性。它在分割节点时,不是搜索全部样本最重要的特征,而是在随机特征子集中搜索最佳特征。这种方式使得决策树具有多样性,从而能够得到更好的模型。

梯度提升分类器

梯度提升分类器是一种提升集成算法。提升(boosting)算法是为了减少偏差而对弱分类器的而进行的一种集成方法。与装袋(bagging)方法构建预测结果池不同,提升算法是一种分类器的串行方法,它把每个输出作为下一个分类器的输入。通常,在装袋算法中,每棵树在原始数据集的子集上并行训练,并用所有树预测结果的均值作为模型最终的预测结果;梯度提升模型,采用串行方式而非并行模式获得预测结果。每棵决策树预测前一棵决策树的误差,因而使误差获得提升。

3bef776a-b1d6-11eb-bf61-12bb97331649.jpg

梯度提升树的工作流程

使用浅层决策树初始化预测结果。

计算残差值(实际预测值)。

构建另一棵浅层决策树,将上一棵树的残差作为输入进行预测。

用新预测值和学习率的乘积作为最新预测结果,更新原有预测结果。

重复步骤2-4,进行一定次数的迭代(迭代的次数即为构建的决策树的个数)。

3bf9e02e-b1d6-11eb-bf61-12bb97331649.png

如果想了解更多关于梯度提升分类器的知识,可参考:

https://medium.com/mlreview/gradient-boosting-from-scratch-1e317ae4587d%20/t%20_blank

分类器的性能

混淆矩阵

混淆矩阵是一张表,这张表通过对比已知分类结果的测试数据的预测值和真实值表来描述衡量分类器的性能。在二分类的情况下,混淆矩阵是展示预测值和真实值四种不同结果组合的表。

3c3ed558-b1d6-11eb-bf61-12bb97331649.jpg

多分类问题的混淆矩阵可以帮助你确认错误模式。

对于二元分类器:

3c4bfa94-b1d6-11eb-bf61-12bb97331649.png

假正例&假负例

假正例和假负例用来衡量模型预测的分类效果。假正例是指模型错误地将负例预测为正例。假负例是指模型错误地将正例预测为负例。主对角线的值越大(主对角线为真正例和真负例),模型就越好;副对角线给出模型的最差预测结果。

假正例

下面给出一个假正例的例子。比如:模型将一封邮件分类为垃圾邮件(正例),但这封邮件实际并不是垃圾邮件。这就像一个警示,错误如果能被修正就更好,但是与假负例相比,它并不是一个严重的问题。

作者注:个人观点,这个例子举的不太好,对垃圾邮件来说,相比于错误地将垃圾邮件分类为正常邮件(假负例),将正常邮件错误地分类为垃圾邮件(假正例)是更严重的问题。

假正例(I型错误)——原假设正确而拒绝原假设。

3c842450-b1d6-11eb-bf61-12bb97331649.jpg

假负例

假负例的一个例子。例如,该模型预测一封邮件不是垃圾邮件(负例),但实际上这封邮件是垃圾邮件。这就像一个危险的信号,错误应该被及早纠正,因为它比假正例更严重。

假负例(II型错误)——原假设错误而接受原假设

上图能够很容易地说明上述指标。左图男士的测试结果是假正例因为男性不能怀孕;右图女士是假负例因为很明显她怀孕了。

从混淆矩阵,我们能计算出准确率、精度、召回率和F-1值。

准确率

准确率是模型预测正确的部分。

3cde770c-b1d6-11eb-bf61-12bb97331649.jpg

准确率的公式为:

3ced1cee-b1d6-11eb-bf61-12bb97331649.png

当数据集不平衡,也就是正样本和负样本的数量存在显著差异时,单独依靠准确率不能评价模型的性能。精度和召回率是衡量不平衡数据集的更好的指标。

精度

精度是指在所有预测为正例的分类中,预测正确的程度为正例的效果。

3cf95504-b1d6-11eb-bf61-12bb97331649.jpg

精度越高越好。

召回率

召回率是指在所有预测为正例(被正确预测为真的和没被正确预测但为真的)的分类样本中,召回率是指预测正确的程度。它,也被称为敏感度或真正率(TPR)。

3d03e1c2-b1d6-11eb-bf61-12bb97331649.jpg

召回率越高越好。

F-1值

通常实用的做法是将精度和召回率合成一个指标F-1值更好用,特别是当你需要一种简单的方法来衡量两个分类器性能时。F-1值是精度和召回率的调和平均值。

3d0d3060-b1d6-11eb-bf61-12bb97331649.jpg

普通的通常均值将所有的值平等对待,而调和平均值给予较低的值更高的权重,从而能够更多地惩罚极端值。所以,如果精度和召回率都很高,则分类器将得到很高的F-1值。

接受者操作曲线(ROC)和曲线下的面积(AUC)

ROC曲线是衡量分类器性能的一个很重要指标,它代表模型准确预测的程度。ROC曲线通过绘制真正率和假正率的关系来衡量分类器的敏感度。如果分类器性能优越,则真正率将增加,曲线下的面积会接近于1.如果分类器类似于随机猜测,真正率将随假正率线性增加。AUC值越大,模型效果越好。

3d197aa0-b1d6-11eb-bf61-12bb97331649.jpg

累积精度曲线

CAP代表一个模型沿y轴为真正率的累积百分比与沿x轴的该分类样本累积百分比。CAP不同于接受者操作曲线(ROC,绘制的是真正率与假正率的关系)。与ROC曲线相比,CAP曲线很少使用。

3d249da4-b1d6-11eb-bf61-12bb97331649.png

以考虑一个预测客户是否会购买产品的模型为例,如果随机选择客户,他有50%的概率会购买产品。客户购买产品的累积数量会线性地增长到对应客户总量的最大值,这个曲线称为CAP随机曲线,为上图中的蓝色线。而一个完美的预测,准确地确定预测了哪些客户会购买产品,这样,在所有样本中只需选择最少的客户就能达到最大购买量。这在CAP曲线上产生了一条开始陡峭一旦达到最大值就会维持在1的折线,称为CAP的完美曲线,也被称为理想曲线,为上图中灰色的线。

最后,一个真实的模型应该能尽可能最大化地正确预测,接近于理想模型曲线。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7314

    浏览量

    93965
  • 算法
    +关注

    关注

    23

    文章

    4760

    浏览量

    97136
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136230

原文标题:来!一起捋一捋机器学习分类算法

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于
    的头像 发表于 11-27 10:19 47次阅读

    PID控制算法学习笔记资料

    用于新手学习PID控制算法
    发表于 08-12 16:22 7次下载

    FPGA在机器学习中的具体应用

    随着机器学习和人工智能技术的迅猛发展,传统的中央处理单元(CPU)和图形处理单元(GPU)已经无法满足高效处理大规模数据和复杂模型的需求。FPGA(现场可编程门阵列)作为种灵活且高效的硬件加速平台
    的头像 发表于 07-16 15:34 2630次阅读

    “碰一下”支付终端应用在酒店:智能无卡入住与客房控制

    “碰一下”支付终端和“碰一下”支付机具今年已在各种餐饮零售门店推广应用。就连天波小编家附近的村口小超市也用上了“碰一下”支付终端。近日,卤味龙头企业绝味食品宣布,全国门店将接入“支付宝碰一下
    的头像 发表于 07-04 09:57 619次阅读
    “碰<b class='flag-5'>一下</b>”支付终端应用在酒店:智能无卡入住与客房控制

    肇观电子推出W系列水下机器人视觉模组

    在此背景,肇观电子推出全球首创W系列水下机器人视觉模组,以光学视觉革命突破水下感知瓶颈!
    的头像 发表于 06-17 14:58 1131次阅读
    肇观电子推出W系列水<b class='flag-5'>下机器</b>人视觉模组

    下机器人示教编程教学课件资料

    下机器人示教编程教学课件(新)
    发表于 06-11 17:23 0次下载

    下机器人搭载索尼FCB-EV9520L机芯:重塑深海探测的技术范式

    在海洋资源开发、生态保护与科学探索需求激增的背景,水下机器人技术正经历深刻变革。当索尼FCB-EV9520L体化摄像机模组与水下机器人实现技术融合,这场跨界协作不仅突破了传统深海探
    的头像 发表于 05-09 10:58 343次阅读

    【「# ROS 2智能机器人开发实践」阅读体验】视觉实现的基础算法的应用

    机器人视觉:从理论到实践 第7章详细介绍了ROS2在机器视觉领域的应用,涵盖了相机标定、OpenCV集成、视觉巡线、二维码识别以及深度学习目标检测等内容。通过
    发表于 05-03 19:41

    基于RV1126开发板实现自学习图像分类方案

    在RV1126开发板上实现自学习:在识别前对物体图片进行模型学习,训练完成后通过算法分类得出图像的模型ID。 方案设计逻辑流程图,方案代码分为分为两个业务流程,主体代码负
    的头像 发表于 04-21 13:37 11次阅读
    基于RV1126开发板实现自<b class='flag-5'>学习</b>图像<b class='flag-5'>分类</b>方案

    请问STM32部署机器学习算法硬件至少要使用哪个系列的芯片?

    STM32部署机器学习算法硬件至少要使用哪个系列的芯片?
    发表于 03-13 07:34

    机器学习模型市场前景如何

    当今,随着算法的不断优化、数据量的爆炸式增长以及计算能力的飞速提升,机器学习模型的市场前景愈发广阔。下面,AI部落小编将探讨机器学习模型市场
    的头像 发表于 02-13 09:39 619次阅读

    xgboost在图像分类中的应用

    XGBoost(eXtreme Gradient Boosting)是种高效的机器学习算法,它基于梯度提升框架,通过构建多个弱学习器(通常
    的头像 发表于 01-19 11:16 1558次阅读

    “碰一下”支付背后的4G技术

    不知道你是否有留意,近期,在线下支付场景中,多了个支付宝“碰一下”支付的设备,只需要“解锁手机—碰一下—确认”即可完成支付,对比打开付款码支付,步骤确实更加简洁。
    的头像 发表于 01-03 16:27 4997次阅读

    华为云 Flexus X 实例部署安装 Jupyter Notebook,学习 AI,机器学习算法

    前言 由于本人最近在学习机器算法,AI 算法的知识,需要搭建
    的头像 发表于 01-02 13:43 860次阅读
    华为云 Flexus X 实例部署安装 Jupyter Notebook,<b class='flag-5'>学习</b> AI,<b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>

    传统机器学习方法和应用指导

    在上篇文章中,我们介绍了机器学习的关键概念术语。在本文中,我们会介绍传统机器学习的基础知识和多种算法
    的头像 发表于 12-30 09:16 1969次阅读
    传统<b class='flag-5'>机器</b><b class='flag-5'>学习</b>方法和应用指导