请选择 进入手机版 | 继续访问电脑版
从零开始 从零开始 查看内容

一文读懂机械进修

2020-6-26 18:03| 发布者: 波罗吹水| 查看: 128| 评论: 4

摘要: 本文转载自公众号 sigua心底的小声音 ,数学系的一线小研发,更新数据结构和算法 | 深度学习 | 职场等技术原创文章。本公众号有 Google TensorFlow程序员,苹果 (Apple) 公司程序员,微软程序员,一站到底选手,科技 ...
一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

本文转载自公众号 sigua心底的小声音 ,数学系的一线小研发,更新数据结构和算法 | 深度进修 | 职场等技术原创文章。本公众号有 Google TensorFlow法式员,苹果 (Apple) 公司法式员,微软法式员,一站到底选手,科技公司CTO,省状元都在关注,接待大师关注。

本文约6000字,倡议阅读10+分钟

本文以图文的形式对模子算法中的集成进修,以及对集合进修在深度进修中的利用停止了具体解读。

目录
  • 机械进修概览
    • learning from data
    • 什么是机械进修
  • 机械进修范例
    • Supervised learning 监视进修
    • Unsupervised learning 无监视进修
    • Reinforcement learning 强化进修
  • 机械进修的进程
  • 若何权衡一个模子的黑白
    • Overfitting
    • Training, Testing, and Validation Sets
    • The Confusion Matrix
    • Accuracy Metrics
  • 根本的数据分析
  • 过拟合overfittting和欠拟合underfitting
  • bias and variance

机械进修概览

  • learning from data

在深入探讨该主题之前,让我们退后一步,思考一下实在的进修是什么。我们需要为机械斟酌的关键概念是learning from data。人类和其他动物可以经过进修经历来调剂我们的 行为。learning赋予我们生活的灵活性,我们可以调剂顺应新的情况,并进修新的技能。人类进修的重要部分是remembering, adapting, and generalising:熟悉到上一次我们处于这类情况下(看到了此数据),我们尝试了一些特定的行动(给出了此输出)而且见效了(正确),是以我们将再次尝试,假如没法见效,我们将尝试其他操纵。概括地说,最初一句话是关于识别分歧情况之间的类似性,以便将在一个地方利用的工具可以在另一个地方利用。这就是learning有用的缘由,我们可以在很多分歧的地方利用我们的常识。
  • 什么是机械进修

因而,机械进修就是要使计较机点窜或调剂行动,让这些行动变得加倍正确,它的正确性是由所选行动与正确行动的类似水平来权衡。

本质是让计较机learning from data。

正式界说:

Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure.

机械进修范例


我们将learning宽松地界说为经过在某项使命上的练习变得更好。这就引出了两个重要的题目:计较机若何晓得能否在变好,若何晓得若何改良?这些题目有几种分歧的能够答案,它们会发生分歧范例的机械进修。现在,我们将斟酌机械能否在进修: 我们可以告诉算法题目标正确答案(带标签),以便下次可以正确处理;我们希望只需要告诉它一些正确的答案,然后它便可以“处理”如作甚其他题目获得正确的答案;大概,我们可以告诉它答案能否正确,而不是若何找到正确的答案,是以它必须搜索正确的答案;我们按照答案的正确性给答案打分(几率),而不但仅是“正确或毛病”的答案;最初,我们能够没有正确的答案,我们只希望算法查找具有配合点的输入。

这些分歧的答案为我们将要会商的分歧算法供给了分类。
  • Supervised learning 监视进修

监视进修供给了具有正确答案(targets/标签)的示例练习集,而且基于该练习集,算法可以概括为正确响应一切能够的输入,这也称为learning from exemplars。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

一些典型的监视进修算法有:
  • k近邻
  • 线性回归
  • 逻辑回归
  • SVM
  • 决议树和随机森林
  • 神经收集
  • Unsupervised learning 无监视进修

无监视进修未供给正确的响应,而是算法尝试识别输入之间的类似性,以便将具有配合点的输入归类在一路。用于无监视进修的统计方式称为密度估量(density estimation)。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

一些重要的非监视进修方式:
  • 聚类
  • 可视化和降维
  • 关联性法则
  • Reinforcement learning 强化进修

强化进修这是在监视进修和无监视进修之间的某个地方。当答案毛病时,系统会奉告该算法,但不会告诉你若何更正该算法。它必须摸索并尝试各类能够性,直到找到正确的答案。强化进修偶然被称为与批评者一路进修,由于该监视器可以对答案停止评分,但不能提出改良倡议。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

机械进修的进程

  • 数据收集和预备: 凡是很难收集,要末是由于它需要停止很多丈量,要确保它是清洁的;它没有严重毛病,缺少数据等,需要斟酌数据量。机械进修算法需求大量的数据,最好没有太多的乐音,可是增加了数据集的巨细增加了计较本钱,而且用充足的数据到达了最好结果而没有过量的计较开销凡是是不成能的。
  • 特征挑选: 这个始终需要事前领会题目和数据;算法按照给定的数据集,挑选合适的算法。
  • 参数和模子挑选:对于很多算法,有一些参数可以必须手动设备,大概需要停止尝试才能肯定适当的值。
  • 练习给定数据集,算法和参数: 练习应当简单天时用计较资本以建立数据模子以停止猜测新数据的输出。
  • 评价: 在摆设系统之前,需要对其停止测试和评价以确保其性能, 对未经练习的数据的正确性计较。

若何权衡一个模子的黑白


learning的目标是更好地猜测输出。晓得算法成功进修的唯一实在方式是将猜测与已知的方针标签停止比力,这是针对监视进修停止练习的方式。这表白你可以做的一件事就是仅检察算法对练习集train set酿成的毛病error。可是,我们希望算法能推行到练习集合没有看到的数据,而且明显我们没法利用练习集对其停止测试(由于数据已经被看见过了)。是以,我们还需要一些分歧的数据(一个测试集test set)来对其停止测试。我们经过输入测试集(input, target) 对到练习好的收集合,并将猜测的输出与方针停止比力,不做权重或其他参数点窜:我们利用它们来肯定算法的性能怎样样。这样做唯一的题目是它削减了我们可用于练习的数据量,但这是我们必须忍受的。
  • Overfitting

但现真相况要比上面的描写要复杂,我们能够还想方法会算法在进修进程中的一般性: 我们需要确保停止充足的练习以使算法有很好的一般性。现实上,过度练习的危险与练习不敷中的危险一样大。在大大都机械进修算法中,可变性的数目是庞大的-对于神经收集,权重很多,而且每个权重都可以变化。是以我们需要谨慎:假如练习时候太长,那末我们将过度拟合数据,这意味着我们已经进修了数据中的噪声和不正确性。是以,我们进修的模子太复杂了,没法推行。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

在进修进程中有两个分歧的点。在图的左侧,曲线很好地拟合了数据的整体趋向(已将其推行到根基的通用函数),可是练习误差不会接近于零。可是右图,随着收集的不竭进修,终极将发生一个更复杂的模子,该模子具有较低的练习误差(接近于零),这意味着它已经记着了练习示例,包括其中的任何噪声成份,是以已经过拟合练习数据。

考证集的出现

我们想在算法过拟合之前停止进修进程,这意味着我们需要晓得它在每个时候步上的推行水平。我们不能为此利用练习数据,由于它是用来练习参数的,我们不会检测到过度拟合;我们也不能利用测试数据,它是用来看模子性能的,我们将其保存为终极测试。是以,我们需要用于此目标的第三组数据,称为考证集validation set,由于到今朝为止我们正在利用它来考证进修,这被称为统计中的穿插考证cross-validation。这是模子挑选model selection的一部分:为模子挑选正确的参数,以便尽能够地泛化。
  • Training, Testing, and Validation Sets

分歧数据集的感化


现在,我们需要三组数据:
  • 练习集train set: 用于现实练习算法的练习集,把它拿来做函数拟合,使得模子好一点。
  • 考证集validation: 用于跟踪算法进修情况, 观察函数好欠好调剂(改模子的时辰依靠它),每次练习完后把模子拿到它的上面去测试一下看看模子好欠好,用于没见过的数据,避免模子过拟合,虽然没有练习模子,可是改模子是根据模子的,对于模子来说,validation现实上是见过的,测试实在的结果应当给模子历来没有见过的数据。
  • 测试集test set: 当我们的模子都能忍受两个值的时辰就定了,最初一步就是拿test来模子上感化看终极的看黑白(用过一次就不用第二次)。假如test数据上了结果还是欠好,就要重新挑选这三个数据了,由于test数据集已经被见过了。

数据集分别


每种算法都需要一些公道量的数据去进修(切确度有所分歧,可是算法看到的数据越多,看到每种能够输入范例的示例的能够性就越大,虽然更多的数据也会增加计较时候)。

平衡的分派

一般来说,数据分别比例取决于你,倘使有大量数据,凡是履行2:1:1,否则停止3:1:1。拆分方式也很重要。假如你挑选前几个作为练习集,接下来挑选测试集,依此类推,那末成果将是很是糟糕的,由于练习没有看到一切的种别。这可以经过以下方式处理:首先对数据停止随机重新排序,大概将每个数据点随机分派给一组数据,以下图。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

缺少练习数据

假如你确切缺少练习数据,那末假如你有零丁的考证集,能够会担忧算法将没法获得充实练习;那末便可以履行leave-some-out, multi-fold cross-validation。这个想法以下图所示。数据集被随机分为K个子集,一个子集用作考证集,而算法对其他所稀有据停止练习。然后遗漏另一个子集,并在该子集上练习一个新模子,并对一切分歧的子集反复不异的进程。最初,测试并利用发生最小考证误差的模子。由于我们不能不练习K个分歧的模子,而不但仅是一个模子,是以我们权衡了数据的运转时候。在最极真个情况下,存在留一法穿插考证,该算法仅对一项数据停止考证,并对其他所稀有据停止练习。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

  • The Confusion Matrix

不管我们利用几大都据来测试练习过的算法,我们仍然需要肯定成果能否杰出。我们将在这里先容一种适用于分类题目标方式,称为混淆矩阵。

混淆矩阵:建造一个包括水和蔼垂直偏向上一切能够种此外方矩阵,并沿着表格顶部列出这些种别作为猜测输出,然后在左侧向以下出方针种别。

是以,例如矩阵(i,j)的元素告诉我们输入的数据中,原本是i类的,成果算法辨别它呈j类的数占有几多个。算法判定对的数据是对角线上的任何内容。假定我们有三个类:C1,C2和C3。现在,我们计较次数,当种别是C1时辰,算法辨别它是C1的次数,辨别它是C2的次数,等等。直到填写完表格:

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

该表告诉我们,对于这三个类,大大都示例已正确分类,可是C3类的两个示例被毛病分类为C1,依此类推。对于类少的时辰,这是检察输出的好方式。假如只需要一个数字,则可以将对角线上的元素之和除以矩阵中一切元素的总和,这就是所谓的正确性accuracy,我们将看到它并不是评价机械进修算法成果的唯一方式。
  • Accuracy Metrics

我们不但可以丈量正确性,还可以做更多分析成果的工作。假如斟酌这些类的能够输出,则可以将它们放置在这样的简单图表中,ture positive是实在情况,predicted condition 是猜测情况,condition positive是实在情况是真的,condition negative是实在情况是假的,predicted condition positive是猜测情况是真的,predicted condition negative是猜测情况是假的。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

就像混淆矩阵一样,此图表的对角线上的输入是正确的(猜测情况和实在情况分歧),而副对角线上的输入则是毛病的(猜测情况和实在情况纷歧致)。

因而正确性界说:

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

正确性的题目在于,它没法告诉我们成果的一切信息,由于它将四个数字酿成一个。有一些互补的丈量值可以帮助我们诠释分类器的性能,即 sensitivity 和 specificity 以及 precision 和 recall。接下来显现它们的界说,然落后行一些诠释。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

  • sensitivity(也称为true positive rate)是正确的阳性样本与分类为阳性的样本之比。
  • specificity 是正确的阴性样本与分类为阴性的样本之比。
  • precision 是正确的阳性样本与现实阳性样本数目的比率,猜测正确的值中,真正猜测正确的是对少,正确率是几多。
  • recall 是分类为阳性的阳性样本中正确阳性的样本数目的比率,这与sensitivity不异。一切正的值中,现实找到它几多个。

假如再次检察该图表,你会发现 sensitivity 和 specificity 的分母是各列的和,而 precision 和 recall 的分母是第一列和第一行的和,是以错过了一些在否认示例中的信息。

总之,这些任何一个都供给了更多的信息,而不但仅是正确性。假如你斟酌 precision 和 recall,你会发现它们在某种水平上是负相关的,由于假如 false positive 的数目增加,那末 false negative 的数目凡是会削减,反之亦然。可以将它们组合在一路以给出一个零丁的怀抱标准,即F1怀抱标准:

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

以及就false positive的数目而言

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

根本的数据分析


假如数据是数字范例,可以提早做一个数据分析,以下几个量是比力常见的:
  • 中位数: 数据从小到大排列,最中心的数字就是中位数。
  • 众数: 数据中出现次数最多的数字。
  • 百分位数: 假如将一组数据从小到大排序,并计较响应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。
  • 标准差,方差: 权衡数据的散布平衡不平衡。
  • 数据的标准化normalization: 之前的数据差异大,经过标准化,将它们的差异缩小,这样使得法式更好的计较,数据集和测试集都要标准化。
  • 异常值outline: 异常值的界说方式有很多,一种方式是比25%的1.5倍还小或75%的1.5倍(大太多了)还大,就是异常值。
  • 过拟合overfittting和欠拟合underfitting

过拟合overfittting: 练习数据上结果很是好,没见过的数据就不可 。

欠拟合underfitting: 练习数据上的结果都不怎样行。

过拟合发生在相对于练习数据的量和噪声,模子过于复杂的情况。能够的处理法子有:
  • 简化模子,可以经过挑选一个参数更少的模子(比如线性模子,而不是高阶多项式模子),削减练习数据的 属性数或限制模子。
  • 收集更多的练习数据(但是获得额外的练习数据并不是那末轻易和廉价的)。
  • 减小练习数据的噪声(毛病丈量引入的教噪声,比如点窜数据毛病,去除异常值)。
  • 限制一个模子让它更简单,正则化。

欠拟合发生在你的模子过于简单的时辰,能够处理的法子有:
  • 挑选一个更复杂的模子,带有更多的参数。
  • 用更好的特征练习进修算法(特征工程)。
  • 减小对模子的限制(比如减小正则化超参数)。

机械进修重点处理的工作若何克服overfitting和underfitting。在统计学中,underfitting和overfittting是bias and variance。
  • bias and variance

bias: 随着模子复杂度的上升,毛病有一些变化。模子不够完整,没有把相关的特征挖掘出来。这类情况叫bias。

variance: 对练习数据过分敏感,数据稍微一变就会发生毛病。

一文读懂机械进修__2020-6-26 18:03发布_从零开始_128

上图的意义:
  • 随着模子的复杂度越来越高,overfitting的情况会越来越多(variance),underffting的情况越来越小。
  • 期望到达对于现有的数据比力好,对于预期的数据也比力好。

参考材料
  • Hands on TensorFlow
  • 统计进修方式
  • Machine learning: an algorithmic perspective
  • Learning from data

编辑:王菁

校订:林亦霖

—完—

想要获得更大都据科学范畴相关静态,诚邀关注清华-青岛数据科学研讨院官方微信公众平台“ 数据派THU ”。

鲜花

握手

雷人

路过

鸡蛋
  • 联系我们
  • 邮箱:admin@c0ks.com(请把#改成@)
  • 电话:18530790808
  • QQ客服 1031180668
  • 工作时间:周一至周五(早上9点至下午5点)
  • 微信二维码

  • 扫描访问手机版

Archiver|手机版|小黑屋|从零开始

GMT+8, 2020-7-4 07:02 , Processed in 0.208577 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

  • QQ: 1031180668

    客服电话

    18530790808

    电子邮件

    admin@c0ks.com

    在线时间:8:00-16:00