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

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

3天内不再提示

排序算法如何在机器学习技术中发挥重要作用

8g3K_AI_Thinker 来源:未知 作者:胡薇 2018-07-26 14:15 次阅读

机器学习中,支持向量机(SVM)算法是针对二分类任务设计的,可以分析数据,识别模式,用于分类和回归分析。训练算法构建一个模型,将新示例分配给一个类别或另一个类别,使其成为非概率二元线性分类器;使用核技术还可以有效地执行非线性分类。迄今为止线性核技术仍是文本分类的首选技术。

今天,人工智能头条将首先从支持向量机的基础理论知识入手,和大家探讨一个良好的排序算法如何在解决 SVM 问题过程中,在机器学习技术中发挥的重要作用。

▌前言

当前,机器学习(ML)正在迅速成为现实社会中最重要的计算技术之一。作为人工智能(AI)的一个分支,这项技术适用于诸多领域,包括自然语言翻译和处理领域(如Siri和Alexa)、医学研究,自动驾驶及商业战略发展等。一些令人眼花缭乱的算法正在被不断创造来解决ML问题,并从数据流中学习模式以构建AI的基础设施。

然而,有时候我们需要回头思考并分析一些基本算法是如何在这场机器学习革命中发挥作用及其所带来的影响。下面我就举一个非常重要的案例。

▌支持向量机

支持向量机(SVM)是过去几十年发展中出现的最重要的机器学习技术之一。它的核心思想是给定一组训练样本,每个样本标记属于二分类中的一类,SVM将构建一个用于对一个新的样本进行分类的模型,也就是说,它其实是一个非概率的二元线性分类器,广泛用于工业系统,文本分类,模式识别,生物ML应用等。

SVM的核心思想主要如下图所示,它的最终目标是将二维平面中的点分为红蓝两类,这可以通过在两组点集之间创建分类器边界(利用分类算法从带标记的数据中学习边界信息)来实现。下图中展示了一些可能的分类器,它们都将正确地对数据点进行分类,但并非所有分类器都能使得分类后最接近边界的数据点具有相同的边距(距离)。从下图中我们可以看出,其中只有一个分类器能够最大化红色和蓝色点之间的距离,我们用实线表示该分类器而用虚线表示其他分类器。这种边距最大化的效用是尽可能地放大两个类别之间的距离,以便对新的点分类时分类器的泛化误差尽可能小。

SVM算法最明显的特征是分类器不依赖于所有数据点,这不同于依赖每个数据点特征并将其用于构造分类器边界函数的逻辑回归算法。实际上,SVM分类器会依赖于一个非常小的子数据点集,这些数据点最接近边界,同时它们在超平面中的位置可以影响分类器边界线。由这些点构成的向量唯一地定义并支持分类器函数,因此我们把这种分类器称之为“支持向量机”,它的概念图解如下图所示。

这里,我们为大家准备了一个关于 SVM的精彩视频教程

▌关于SVM工作背后的几何解释:Convex Hull

SVM算法背后的形式数学相当复杂,但从直观地我们可以理解为这是一种称为 Convex Hull 的特殊几何结构。

什么是Convex Hull呢?形式上,在欧几里德平面(Euclidean plan)或欧几里德空间(Euclidean space)中的一组 X点的凸包(convex hull)或凸壳(convex envelope)或闭包(convex closure),是包含 X点的最小凸集。我们可以通过类比“橡皮筋”来更容易地理解这个概念。想象一下,橡皮筋在一组钉子(类比我们的感兴趣点)周围伸展。如果橡皮筋被释放,它会缠绕在钉子周围,从而形成一个紧密的边界,这是我们开始定义的集合。由此产生的形状就是凸包,我们可以通过那些由橡皮筋产生的边界钉子集来描述它,下面的图解将有助于更直观地感受这个概念。

现在,我们可以很容易想象SVM分类器只不过是一种线性分类器,它通过二分法将连接这些凸包的线一分为二。因此,确定SVM分类器也就解决了找到一组点的凸包问题。

▌那么,如何确定凸包呢?

我们通过下面这个动画来说明这个问题!这里,我将展示用于确定一组点的凸包的Graham’s scan算法。该算法能够沿着凸包的边界顺序,依次找到其所有的顶点,并通过堆栈的方法有效地检测和去除边界中的凹陷区域。

现在还有个问题是这种算法的效率如何,即Grahan’s scan算法的时间复杂度是多少呢?

事实证明,Grahan’s scan算法的时间复杂性取决于它用于寻找构成凸包的正确点集的基础排序算法。但是,一开始的排序算法又是什么呢?

Grahan’s scan算法的基本思想来自凸包的两种特性:

只能通过逆时针转动来横穿凸包区域

关于具有最低y坐标的点p而言,凸包的顶点将以极角递增的顺序出现。

首先,这些点以数组 points的形式存储。因此,算法由定位的参考点开始,这是具有最低 y坐标的点(在有捆绑关系(ties)的情况下,我们通过选择具有最低 x和 y坐标的点来解绑)。一旦我们找到参考点,我们可以将该点移动到数组 points的开头,使其与数组中第一个点互换位置。

接着,利用剩余点相对于参考点的极角关系,我们对其进行排序。经过排序后,相对于参考点的极角最小点将位于数组的开始处,而具有最大的极角点将位于数组的末尾。

随着所有的点都被正确地排序,现在我们可以运行算法的主循环部分。当我们处理主数组中的点时,循环并将增长和缩小第二个列表。基本上,如果我们顺时针地旋转点,那么这些点将被推到堆栈上;反之,则如果我们以逆时针地方向,则拒绝并从堆栈弹出这些点。第二个列表一开始是个空列表,在算法结束时,构成凸边界的点将出现在此列表中。堆栈数据结构正用于此目的。

#Threepointsareacounter-clockwiseturnifccw>0,clockwiseif#ccw< 0, and colinear if ccw = 0 because ccw is a determinant that #gives twice the signed  area of the triangle formed by p1, p2, and #p3.function ccw(p1, p2, p3):    return (p2.x - p1.x)*(p3.y - p1.y) - (p2.y - p1.y)*(p3.x - p1.x)let N be number of pointslet points[N] be the array of pointsswap points[0] with the point with the lowest y-coordinate# This is the most time-consuming stepsort points by polar angle with points[0]let stack = NULLpush points[0] to stackpush points[1] to stackpush points[2] to stackfor i = 3 to N:    while ccw(next_to_top(stack), top(stack), points[i]) <= 0:        pop stack    push points[i] to stackend

因此,Graham’s scan算法的时间复杂度取决于排序算法的效率。我们可以使用任何通用的排序算法,但对于时间复杂度为 O (n^2)和 O (n.log(n))的算法而言(如下面的动画所示),它们之间的 Graham’s scan算法的效率存在很大差异。

▌总结

在本文中,我们展示了简单排序算法在解决 SVM 问题过程中发挥的作用,以及它与广泛使用的机器学习技术之间的关系。虽然有许多基于离散优化的算法可以用来解决SVM问题,但在构建复杂的AI学习模型方面,这种方法被视为是一种重要而基础高效的算法。

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

    关注

    0

    文章

    153

    浏览量

    32171
  • 机器学习
    +关注

    关注

    66

    文章

    8112

    浏览量

    130546

原文标题:优秀的排序算法如何成就了伟大的机器学习技术(视频+代码)

文章出处:【微信号:AI_Thinker,微信公众号:人工智能头条】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器视觉技术在质量控制中发挥重要作用

    视觉利用自动化技术使机器能够替代人眼,起到人类视觉的作用。人类视觉系统包括眼睛、视觉中枢、大脑视觉神经,相对应的机器视觉包括工业光源、工业镜头、工业相机、图像采集卡、图像处理软件。采用
    发表于 03-01 17:08

    信号智能或SIGINT在现代战争中发挥着重要作用

      信号智能或SIGINT在现代战争中发挥着重要作用。SIGINT是一个通用的术语,它包括无线电频段系统(通信智能或COMINT)、雷达频段系统(电子智能或ELINT)及测量和签名智能系统
    发表于 07-22 08:15

    嵌入式技术机器人中发挥什么作用

    嵌入式技术机器人中这样发挥作用
    发表于 05-11 13:17

    控制和通信IC对机器人发展起到重要作用

    据麦姆斯咨询介绍,控制和通信IC的发展在实现下一代的机器人中起到重要作用。然而,这些复杂的现代机器人的核心是许多新的、小型化和低成本的传感技术的出现与融合。对实现下一代
    发表于 08-18 06:41

    一文看尽智能连接将会在哪些关键领域中发挥重要作用

    5G、物联网和AI结合的究极形态是什么?智能连接将会在哪些关键领域中发挥重要作用
    发表于 06-29 09:30

    变频电源内部的元器件有着什么样的重要作用

    变频电源内部的元器件有很多,每一个都发挥着发的重要作用。里面的元器件有:整流滤波模块、LC滤波模块、控制电路模块、辅助电源模块等等。他们都在变频电源内部有着什么样的重要作用呢,今天中港扬盛的
    发表于 11-16 07:51

    基于排序学习的推荐算法

    排序学习技术尝试用机器学习的方法解决排序问题,已被深入研究并广泛应用于不同的领域,如信息检索、文
    发表于 01-16 15:50 0次下载
    基于<b class='flag-5'>排序</b><b class='flag-5'>学习</b>的推荐<b class='flag-5'>算法</b>

    氢在可再生能源系统和未来的移动性中发挥重要作用

    电池电动汽车正在成为头条新闻,但燃料电池正在获得动力—这是有充分理由的。氢可以在可再生能源系统和未来的移动性中发挥重要作用
    发表于 08-11 10:17 1081次阅读

    电气系统为什么要去采用机器学习技术

    机器学习技术在企业电气系统中的工作和维护中发挥重要作用,人们需要了解采用机器
    发表于 12-18 08:56 1189次阅读

    企业电气系统为什么采用机器学习技术

    机器学习技术在企业电气系统中的工作和维护中发挥重要作用,人们需要了解采用机器
    发表于 04-26 17:59 767次阅读

    传感器在医疗领域发挥重要作用

    传感器在医疗领域发挥重要作用是有目共睹的,它在此次新冠肺炎疫情中发挥作用的领域主要有:病理检测、人员生理参数监测、生命维持系统以及环境控制等方面。
    的头像 发表于 07-08 18:03 1.1w次阅读

    ZL6300如何在电路中发挥重要作用

    MCU电压跌落,程序异常HardFault.。.,是否有过这种担忧?ZL6300是一颗集看门狗,电压监测,按键复位于一体的芯片,看它如何在电路中发挥重要作用,解决您的后顾之忧。
    发表于 08-22 17:34 497次阅读

    JAE连接器产品系列如何在汽车应用中发挥重要作用

    由于对于汽车开发日益增长的需求,JAE正在将更强大的连接器产品推向市场。本次我们从当前在售热门连接器产品系列中选择了一些产品,向您展示并介绍这些“小”东西如何在汽车应用中发挥重要作用
    发表于 08-23 10:09 519次阅读

    机器学习在物联网中发挥关键作用

    机器学习在物联网中发挥关键作用
    的头像 发表于 01-03 09:45 872次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>在物联网<b class='flag-5'>中发挥</b>关键<b class='flag-5'>作用</b>

    轨道巡检机器人在电力运维中发挥哪些作用

    济南祥控轨道巡检机器人在电力运维中发挥全天自动巡检、视频在线监控等多项重要作用,大大节省了电力运维中的人力物力成本。
    的头像 发表于 01-29 15:22 416次阅读
    轨道巡检<b class='flag-5'>机器</b>人在电力运维<b class='flag-5'>中发挥</b>哪些<b class='flag-5'>作用</b>?