分享

MIT公开课-机器学习导论(附视频中字)

 昵称16619343 2017-10-31

CDA字幕组 编译整理

MIT6.0002课程《计算机科学与用Python编程》(Computer Science and Programming in Python)针对没有或有少量编程经验的学生,目的是让学生了解计算在解决问题中的作用,并帮助学生用自己的能力编写小的程序并实现目标。在当中这节机器学习导论课中,Grimson教授介绍了机器学习,并展示了使用特征向量进行监督学习的例子。

主讲人:

Eric Grimson

Eric Grimson是麻省理工学院计算机科学与工程学教授2011年至2014年间,担任麻省理工学院的校长,此前曾担任麻省理工学院电子工程和计算机科学系主任。1975年,在加拿大里贾纳大学获得了理学学士学位,并在1980年获得了麻省理工学院的数学博士学位。Grimson教授的研究团队开创了活动和行为识别、对象与人识别、图像数据库索引、图像引导手术、网站建模以及计算机视觉等许多领域的先进体系。Grimson教授是美国人工智能协会(AAAI)的成、会员,以及IEEE和ACM的会员,并获得了麻省理工学院工程学院颁发的工程学院卓越教学“Bose奖”。

CDA字幕组对该视频进行了汉化,附有中文字幕的视频如下:

MIT机器学习导论(一)

MIT机器学习导论(二)

针对不方面开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:

本节课我们将谈到机器学习。当我们谈到机器学习时,当中会涉及很多要素。首先,毋庸置疑这是一个很大的话题。自然语言处理、计算生物学、计算机视觉、机器人技术等学科如今在很大程度上依赖于机器学习。

在本课我们会讲导论的部分,讲解机器学习的基本概念。拥有样本,以及如何表现出代表样本的特征。如何测量它们之间的距离,并使用距离的概念来聚集类似的内容,从而作为进行机器学习的方法。

我们将看到两种不同标准方法的结果。一个称为分类方法,在例子中我们可以看到K最近邻。第二类称为聚类方法

当具有标注数据时,分类方法的效果很好。样本中的标注,我将用来定义分类。当没有标注数据时,聚类方法的效果很好。一会儿我们将探究当中深意,但我打算给你们一些初步概念。

我们很可能不会向你们展示目前先进的机器学习方法。比如你在新闻中看到的卷积神经网络,或深度学习。但当谈到学习算法时,通过看到我们所做的,你会对那些内容背后的原理有一些了解。

机器学习无处不在

在此之前,我想指出机器学习是多么普遍。1975年我开始进行AI方面的研究,当时机器学习很简单,40年来这发生了惊人的改变。

你不妨想想,AlphaGo来自谷歌的基于机器学习的系统,用来击败世界一流水平的围棋选手。国际象棋已经被计算机战胜了一段时间了,如今世界上最强的围棋选手是计算机。

想必你们很多人都用Netflix推荐系统。Netflix Amazon使用机器学习算法,对你喜欢看的内容提出建议。

其实你可能已经在谷歌上看到了,谷歌上弹出的广告就来自机器学习算法。根据你的喜好,这有点吓人。

药物研发,字符识别。邮局对手写字符进行字符识别,通过使用计算机视觉背后的机器学习算法。

你可能没听过这个公司,这实际上是MIT衍生的公司名为Two Sigma 总部在纽约。他们大量使用AI 机器学习技术,两年前他们的资金获得56%的回报。去年他们做的不是很理想,但使用机器学习技术得到了非常惊人的成果。

另一个出色的MIT公司进行计算机视觉系统。当中大量运用机器学习,这运用于辅助驾驶,之后将用于完全的自动驾驶。当你太靠近前面车辆时,它会按下刹车。

人脸识别,Facebook用这个。许多其他系统用此来进行面部检测和面部识别。

IBM Watson,癌症诊断。这些都是机器学习无处不在的例子,事实就是如此,我仅仅列出了9个例子。

什么是机器学习?

上周我们讲到了线性回归。这开始有点接近学习算法了。因为我们所做的是给出一组数据点,大量的位移数据点。然后我们向你展示,计算机如何用曲线拟合数据点。某种意义上相当于,为数据学习模型。之后可以用来预测其他情况下的行为。这更接近我们谈到机器学习算法时所希望看到的。

我们希望有能够从经验中学习的程序,之后可以用来推断新的事实。这个问题在AI中存在了很长一段时间。我很喜欢这段话,来自Arthur Samuel,在1959年他给出的机器学习的定义是让计算机有学习的能力 而不是直接的进行编程”。

我想很多人会说,他写的第一个程序就是用于学习经验的。他教会计算机下国际跳棋,这展现了该领域是如何进步的。我们从国际跳棋开始,然后是国际象棋,如今是围棋。计算机学会下国际跳棋,击败了国家级的选手。更重要的是,它学会通过观察比赛中的行为改善方法,然后进行推断和改变。

Samuel还做出了许多其他成果,在接下来的课程中你们会看到。他发明了Alpha-beta剪枝算法,用于进行搜索的有效技术。但是问题在于,我们如何能够使计算机学习,而无需进行预先地编程。

方法之一是,思考我们进行标准编程与我们看待机器学习算法间的区别。我知道你们不相信存在标准编程。但如果你想到传统编程,那是什么流程?

我写一个程序,输入到计算机。从而它获取数据,得出适当的输出。我编写代码使用牛顿迭代法得到平方根。然后得到程序,给出任何数字得出平方根。

机器学习方法的理念是,我给计算机提供输出,给出我希望程序要做的例子,标注数据,给出不同类别事物的特征。我希望计算机给出输出和数据的特征,然后机器学习算法能够为我生成程序。该程序能够用于推断新的信息,然后创建出不错的循环。当中让机器学习算法学习程序,接着可以用于解决其他问题。这如果能实现的话是很棒的。

正如我建议的,曲线拟合算法是一个简单的版本。它学习数据的模型,之后我可以用于标记任何数据。或者预测改变质量时的弹簧位移。这就是我们要探究的。

学习的方式

我们需要思考“该怎样学习? 计算机该怎样学习?”

作为人类来说,有一些可能性。这是一种很无聊的、很传统的方法。记住例子,尽可能多的记住例子。然后希望在期末考试中提到那些事实中的例子,而不是其他你没记住的例子。

这是我们在第一节课提到的陈述性知识,事实的陈述。尽可能多的记忆,把维基百科收入囊中。一个更好的方式是能够推断,根据之前的信息推断新的信息。如果想到这点,这更接近所谓的程序性知识。推断新事物的方法。

在第一情况下,我们进行构建。编写计算平方根的程序。而在学习算法中,我们希望有更广义的概念。我们更希望拓展我们的能力。编写能够从数据隐含模式中推断出有用信息的程序,因而不是一些明显的内置信息。比如对权重和位移的比较,而实际上是数据中的隐含模式。从而让算法分辨这些模式是什么,并用它们生成程序。用来推断关于物体以及弹簧位移的新数据,以及任何你想做的。

让我们将看到的基本范式。我们将为系统提供一些训练数据和观测值。正如我们上次针对弹簧位移问题所做的。接着我们要试图弄清楚,如何编写代码,如何编写程序和系统,从而对生成数据的流程做一些推断,就此我们相对未知的事物进行预测。

例子1:橄榄球员分类

我举一个我最喜欢的例子,我是新英格兰爱国者球队的死忠粉。我将用橄榄球队员举例。标签就是他们打的位置。而数据我们将用到身高和体重。但是我们想做的是,能否对隐含模式进行描述,即如何通过身高和体重预测出球员所打的位置。从而得出预测新球员位置的算法。想想怎样通过推断找到模型,以及怎样使用模型进行预测。

在今天的多个例子中我们将看到,学习可以通过两种广泛的途径来实现。第一种被称为有监督学习,在有监督学习中,对于每个新的例子作为训练数据的一部分,都有一个标签。我知道它们代表了什么,我将要做的是基于这些例子,如果找到预测关于未见过的输入的标签。这是有监督的,因为我知道标签是什么。

第二种被称为无监督学习。在无监督学习中,我将给出一些例子。但我不知道与它们相关的标签。我要尝试找出将这些例子归类到不同模型的自然方法。有时我会知道一共有多少模型,有时我仅知道这是我所找到的最好分类。

这里有一些爱国者队现任运动员的数据点。有两类位置,接球手和前锋。每个队员都通过姓名,英寸为单位的身高和镑为单位的体重来标注。

每类位置五个队员,如果将其绘制成二维图。我想要知道的是,有没有特征能够区分这两个类别。在未标注的一类,我有的只是一些例子,所以我要做的是确定什么让两个队员相似。

目标是能否将这个分布划分为,两个或者更多的自然分组。类似于距离测量,如何根据例子的值和特征确定当中的差异。

在无监督情况下简单的实现方式是,如果我知道至少存在K个分组,在这个案例中有两个不同的分组。那么如何更好地进行聚类,因此一组中的例子都彼此接近,另一组的例子也十分接近,而这两组之间数值差的很远。

有很多实现的方法,我将展示一种非常标准的方式。基本原理如下,如果我所知道的是两类分组,那么我将选择两个例子作为范例。我随机选择了两个,但实际上随机选择并不是好。

在训练数据中,哪一个与它最相似的呢?我将要做的是创建簇,簇的特征是当中所有例子的平均差距小。看是否能使两个群集例子间的平均差距尽可能小。

这个算法通过选出两个例子。通过把例子放入最近的分组进行聚类,一旦得到这些簇,我将找到这组当中的中间元素。将这些作为范例,接着不断重复这个过程,直到结果不再改变。这是基于距离的聚类。

针对橄榄球员,如果只根据体重。这个是自然分割线 ,这有一定道理。这三个点很明显的聚集在一起,只是在这个坐标轴上,这三个点在分割线下,另外七个点在不同的位置。这有一条自然分割线。

如果根据身高进行分类,结果不是很清晰。这是算法给出的结果。这里的最优分割线表明,在这个坐标轴上,这四个之间更接近,这六个更接近,但是不是很清晰。这是我们将要考虑的,如何能够找到最好的簇。

如果同时使用身高和体重,结果如下。结果不错。那三个聚集在一起,只针对距离的话它们很接近。另外七个距离很近。在这有一条清晰的自然分割线。实际上为我们得到了分类器,这条线是两个簇中心的等距离分割线,意味着分割线上任意点到两个簇中心的距离均相等。

因此对于任何新的例子,如果位于这条分割线上为上面的标签,位于分割线下为下面的标签。稍后我们将研究如何测量距离。

但是这个思路很简单,我要得到组内相距很近,而组间相距较远的分组,现在假设我实际知道这些球员的标签。这些是接球手,那些是前锋。对于橄榄球迷的来说,你可以分辨出这两个是近端锋,他们块头更大。如果你真是爱国者队的死忠粉,你会知道这个是Bennett 那个是Gronk。

如果我事先知道它们的标签,我将如何进行分组。这很容易,在这种情况下基本思路是,如果在那个特征空间中有被标记的分组。

我想做的是,找到一个能自然地分割空间的次表面。次表面是一个高大上的词。在二维图中,我不想知道哪条是最佳分割线。如果我能找到一条线,能够将两个标签中的所有例子区分。如果例子被很好的区分开来,这将很容易而且很棒。

但在一些情况下更为复杂,因为有些例子可能非常接近于其他例子。这将导致我们之前碰到的问题,我想避免过拟合。我不想生成一个十分复杂的表面来区分事物。如果不能完美区分的话,我们得忍受一些没有被准确标注的例子。

正如你们所知,在有标注数据的情况下,这里有一条最佳拟合线。体重超过280镑(约127千克)的人将会成为优秀的前锋,体重低于280镑的人更可能成为一个接球手。因此我得到了两种做标注的不同的方式。

假设我现在加入了一些新数据,我想为新的例子进行标注。他们实际上是不同位置的球员,这些是跑卫。但假设我只知道接球手和前锋,当我得到这两个新的数据,我想要搞清楚他们更有可能成为接球手还是前锋。

这就是这两位球员的数据,所以当我绘出这两个点,你将发现这个情况,这些(蓝色的)是前锋,红色的是接球手,这两个黑色的点是两个跑卫。注意这里很难将这两个点分开,它们太接近了,这是现在我们需要权衡的。

要么我需要重新考虑分类情况,要么或许这里不止存在两种类别,或许这里有三种类别,我想把它们区分开来。

另一方面,如果我使用标注数据,这就是我的分割线。这很简单。这两个新的样本都处于分割线以下,他们都是很清晰准确的样本。我更倾向去将其归类到接球手,而不是前锋。这是一个关于橄榄球的例子,如果你对橄榄球不感兴趣。你可以选择其他的例子。但是你需要了解为什么,我使用标注数据和未标注数据得出不一样的分类。

我们也将学习基于标注数据的模型,然后思考如何通过一条线、平面或者一些直线,实现对一组样本和另一组样本进分类。鉴于需要避免过拟合,我们并不希望建立过于复杂的系统。因此我们要权衡假正(FP)和假负(FN),但是最后得到的分类器能够仅通过分割线,实现对于新数据的标注。

这里我使用身高和体重来表示橄榄球运动员,但我也可以选择平均速度和臂长等数据,那么该如何才能知道哪些是与之相关的合适特征。我应该如何计量这些特征数据之间的差异,怎样确定哪些接近哪些并不接近,可能根据体重和身高有所不同,我需要做出抉择。

特征表示

现在我们讨论一下特征,我已经得到了一组样本,被标注或者没被标注。当我要衡量两个样本之间的区别时,我需要明确这些样本为何是有用的。但是问题是如果能将这个问题简化,那么一切就简单了。但特征并不总能表现得如你所愿。

引用20世纪最伟大的一位统计学家的一句话,我认为这句话很贴切。“关于特征工作,作为程序员你需要决定我想要测量向量中的哪些特征,以及如何相对地进行测量”。

我本可以让我们这个学期的工作很轻松,如果我们在课程的开始对你们说,我们已经教过很多次这个课程了,我们从成千上万为学生那里获取了大量的数据。让我们设计一个学习算法,能够通过这些数据来预测你们本学科的期末成绩。这样你们不需要来上课,不需要经历难题。直接预测你们的期末成绩,是不是很棒?这样让我们的工作变得更轻松。

想想特征,我们要测量哪些特征?GPA应该是一个不错的选择,你在其它课表现不错的话,那么你也很有可能在本课得到好的成绩。

我将谨慎地使用编程经验这个特征数据,它确实是一个预测数据,但并不是那么完美。就算你们中有些人之前没有编程经验,但仍可能在这门课程之中取得好成绩。

另一方面,我不相信星座。因此我并不认为你出生的月份,所处的星座跟你的编程水平有任何的联系。我也否定眼球颜色与编程能力之间有联系,你懂的,有些特征重要,有些则不重要。

现在我可以加入所有的特征,并希望机器学习算法理清哪些是需要保留的,哪些不需要保留。但是我需要提醒你们过拟合的问题,如果这么做的话存在风险。出现出生月份,眼球颜色以及GPA成绩的相关性,这会导致我们不希望的结论。

我们需要思考怎样选择特征,绝大多数情况下我们尝试将所谓的信噪比进行最大化,将带有绝大部分的信息的特征最大化,去掉那些信息量不足的特征。

例子2:爬行类动物分类

我想要给你们看一个例子,我打算对爬行类动物进行标记。我想试图标记一个动物是否属于爬行类动物。

我知道眼镜蛇能产卵、有鳞片、有毒是冷血动物,它没有腿,它是爬行类动物。

但是如果给你们第二个例子,刚好也是能产卵、有鳞片、有毒、冷血、无腿。这就是我的模型,完美而合理。无论是我还是机器学习算法这样设计,如果这些都标注为爬行类动物。

现在给出一条蟒蛇作为样本。它是爬行类动物,但是它不符合这个模型。尤其是它不能产卵,并且无毒。因此我或者算法需要重新定义模型。

我想要提醒你们的是,注意这些特征。一开始我们使用的是五个特征。这个不符合。所以或许我们应该减少特征,只关注是否有鳞片,为冷血动物是否有腿。这包含所有三个样本的特征,从分类的角度,三个都符合这些特征。

现在给出另一个例子,鸡。我不认为它是爬行类动物,但是它依然符合该模型。可能你没有意识到,它有鳞片。它不是冷血动物,它有腿。所以它是一个反例。它强化了该模型。听起来不错。

现在给出鳄鱼,它是爬行动物。它并不能完全符合该模型。因为它有鳞片,是冷血动物,有腿。

我需要想想如何进行改善,我们可以把模型弄得更复杂。若符合有鳞片的,冷血动物有零到四条腿,则是爬行动物。

看到箭毒蛙。它不是爬行动物,是两栖动物。没问题,它依然符合模型,所以它是该类别之外的样本。没有鳞片,非冷血动物,刚好有四条腿。它不是爬行类动物。

然后看到蟒蛇(Python),这里必须要有蟒蛇。接着看到鲑鱼,现在麻烦来了 ,因为看到是否有鳞片,是否为冷血动物,是否有腿,我不能区分它们。无法根据这些特征正确的判断出蟒蛇是爬行动物。而鲑鱼不是爬行动物,所以没有简单加入该规则的方法。

对此最好的方法是回到只有两个特征的情况,鳞片和冷血动物。也就是说如果某种动物有鳞片,且为冷血动物,那我就判断它为爬行动物。如果同时不符合这两点,那就不是爬行动物。这并不完美,会错误的标记鲑鱼。

但在此我做出了设计的选择,这是很重要的。设计选择是,没有任何漏报(FN),也就是说不会出现我将非爬行动物,判断成爬行动物的情况。漏报(FN)指模型将不是爬行动物的,判断为爬行动物。可能存在误报(FP),会出现少数被误标为爬行动物的例子。特别的是,鲑鱼就是这样的例子。关于误报和漏报的权衡是我们需要注意的,因为多数情况下,没有办法将数据完美地分开。

一旦决定了使用哪些特性。接着我需要决定距离。怎样比较两个特征向量?之所以成为向量,因为存在多个维度。决定怎样比较它们,因为我想利用距离判断如何分类,以及如何找到分割线,需要决定的内容之一是选哪些特征。同时要要决定距离,最后还要决定如何权衡特征向量中不同维度的重要性。在做选择中有些可能更为有价值。

回到动物的例子。一开始特征向量实际存在五个维度。产卵、冷血、有鳞片、腿的数量,还有一个我忘了。

我能想到的方法之一是每个动物有四个二值特征和一个整数特征。分离非爬行动物和爬行动物的方法是测量每对例子之间的距离。利用距离来判断哪些是接近的,哪些不是。

正如之前所说,需要对事物进行聚类,或者需要找到分割它们的分类面。这里有一个简单的方法,每个例子中,正确标为1错误标为0。前四个为0或1。最后是腿的数量。那么现在该如何测量动物间的距离?或者关于这些特征向量的其他内容。

在这里我们要用到闵可夫斯基度量(Minkowski Metric),或者叫闵可夫斯基区别。给出两个向量和系数P,取变量中每个元素间差值的绝对值,取P次方,求和。然后取和值的P次根。

让我们看到两个明显的例子,P为1测量了每个成分间的绝对距离。加起来这就是距离。称为曼哈顿度量(Manhattan Metric)

如果P为2这就是欧几里得距离(Euclidean Distance)。对元素的差值求平方和,然后开平方根。因为距离的某些属性,这就是欧几里得距离。

如果我想测试两者的距离,问题是这个圈更接近星星还是十字形。根据使用的度量答案也不一样。欧几里得距离为,2的平方根乘以2,约为2.8。另一个为3。因此根据的标准距离,我们可以说这两个更近。

曼哈顿距离,之所以称为曼哈顿距离,因为你只能沿着街道走。在曼哈顿距离上会说,这里为4个单位距离,而这里是3个单位距离。在曼哈顿距离中,这一对比起另一对更近。现在你已经习惯了欧几里德,当我们打算比较不同物体的距离时,这是很重要的。通常我们会使用欧几里德,之后会看到曼哈顿的价值。

让我们回到之前的三个例子,响尾蛇、蟒蛇和箭毒蛙。我想问问它们之间的距离是多少。

现在加入鳄鱼,我想进行同样的比较。没有得到同样好的结果。因此像以前那样,两类蛇很接近。但在这种情况下箭毒蛙和鳄鱼也很接近。但它们彼此之间并不像。

在这里要提醒一下,我希望鳄鱼和两类蛇更接近,离箭毒蛙更远。因为这里我们试图分类爬行动物和非爬行动物。

此时特征工程(Feature Engineering)就很重要了。因为事实上 鳄鱼在三个特点上与青蛙不同。但只有两个特点与蟒蛇不同。特征之一是腿的数量,在二进制中差异在0与1之间,而这里是0到4的差异。这使得距离要远的多,腿的维度太大了。

根据这个数值它们之间形成了自然的分割。特征的选择很重要,选择过多的特征会导致一些过拟合。特别是决定特征的权重时影响很大。

当你作为设计师、程序员时如何选择将带来很大的影响。因此特征工程真的很重要。

我可以给你一个非常简单的方法来做聚类。比方说给你100个样本组建100个簇。每个样本自身都是一个簇。距离方面非常好,离自身足够近。但标签方面非常不理想。

所以我们需要思考如何决定分多少簇,分类的困难度如何。怎样避免我们不想遇到的过拟合问题。

让我们以另一个例子结束该部分。假设给出标注的样本。目的是一样的,每个样本具有相关特征并且是多维的。我们也知道与之相关的标签。我想知道何为制定规则的最佳方式。从而接收新样本并将其分配到合适的组中,

有几种解决方法。你可以说我想找到分隔这些样本最简单的平面。在举出的橄榄球例子中,最佳分隔线是哪条。这个很简单。

我可能需要找个更复杂的平面,我们马上会看到相应例子。可能会用一系列线段来做分隔,因为并不只是一条线进行分割。和之前一样我们要注意,若弄得太复杂,我们可能会得到一个非常好的分隔,但会对数据过度拟合。

你们下回会看到,我在这里强调一下有第三种方法。可以得出几乎相同的结果,称作

K近邻法

意思是我有一组标注数据,我要做的是对于每个新样本,找到K。比方说五个最近的标注样本,并且决定在这些标签中,如果五个中有三个符合,五个中有四个符合,或是五个中五个全符合的话,它们就是一组的。如果少于那个数就作为待分组。这是学习它们的好方法。

例子3:投票数据分类

最后再让展示一个例子。给你们一些投票数据。这其实是模拟数据。这是一组美国选民以及他们的投票偏向。他们打算选共和党,他们打算选民主党。两种类别为年龄和其居住地到波士顿的距离。我不知道它们是否相关,它们只是我们用来给选民分类的要素。

我想知道如何拟合一条曲线用来区分这两类。我将用一半的数据来测试,另一半用来训练。

如果这是我的训练数据,我想知道最佳分隔线是哪条。这条实线有个特性是所有的民主党都在线的一侧。另一侧的都是共和党,但有些共和党在线的另一侧。我没法找到像在橄榄球队员例子中那样,能够完全分隔的一条线,但这条线分隔也得相当好了。

这里还有另一个候选的线。虚线的特性是,在线的右侧几乎包括所有的共和党。这样非常合适。以及一个民主党。不过这样的分隔已经不错了。然后在左侧是两类的混合。但大部分是民主党都是在线的左侧,实际上波士顿的距离与之完全不相干。

问题是我如何进行评估,我怎样决定哪条线比较好。我打算直接给你们展示一些例子。第一个是混淆矩阵。是指对于这些分类器的其中一个。比如这条实线,基于实线预测出更有可能是民主党或是共和党。然后这边是实际标签,对于虚线也是同理。这条对角线很重要,因为这些是正确标注的结果。

它在实线和虚线中包含所有正确的民主党标签。一半的共和党标签是正确的,但有一些实际上是共和党但它标注为民主党。然后得出自然测度称作准确度。

我们提到过,这些是真正(TP) 也就是说,我标注它为实例结果也是如此。这些是真负(TN),我标注它不为实例,结果确实不是这样。这些是误报(FP),我标记它为实例,而并不是。这些是漏报(FN),我标记它不为实例而却是的。

一个简单的测量方法是,看到所有标签中的正确标签。真正和真负,那些我算对的。这种情况下两个模型的值均为0.7。那么哪个比较好?我应该进行验证,我想先看看其他数据再来验证。

我们也可以找找具有较小训练误差的内容。仅得到70%的正确率还不够好。

这里有个复杂些的模型,这时你该开始担心过拟合了。我做的是用一系列线用来作分隔,这条线上面的均为共和党,这条线下面的均为民主党。所以除去这个那个,仍然能捕捉到很多相同的内容。

这种情况下,我得到12个真正,13个真负,只有5个误报。这样挺好的。可以看到那5个是下面的这5个红点,准确度为0.833。

现在如果我把它运用在测试数据上,我得到一个还不错的结果。准确率大约是0.6。

我可以运用这个想法来尝试推广,看是否能找到更好的模型。

还有其他的测量方法,我将把这个用作最后的例子。我们用到的另一个测量方法称为PPV阳性预测值(positive predictive value)。意思是在所有标注肯定的内容中,有多少为真正(TP)。在实线和虚线模型中,我得到的值约是0.57。训练数据中复杂模型效果不错,测试数据的值更好。

灵敏度和特异度

最后另外两个例子称为灵敏度(sensitivity)特异度(specificity)。灵敏度基本上能告诉你正确的百分比;特异度则为否定的百分比。

我给你们看这个是因为这是需要权衡的地方。我可以理解为灵敏度就是,在所有正确和错误标注的集合中,有多少是标注正确的,有多少标注正确的是我想要的。我可以让灵敏度为1,将所有内容标注为我想要的。但是特异度将为0,因为我将有很多标注错误的。我也可以使特异度为1,否定一切,认为没有一个是实例。真负(TN)为1,情况很好,但是灵敏度变为0。这需要权衡。

当考虑机器学习算法时,使用选择的分类,我们将面临权衡。我们可以损失灵敏度来提高特异度,反之亦然。你将看到一个不错的技术,称为接收者操作曲线。可以让你了解如何处理这种问题。

非常感谢,我们下次见。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多