本篇主要内容为:机器学习的定义、监督学习算法
Arthur Samuel将机器学习定义为:在没有明确设置的状况下,使计算机具备学习能力的研究领域。他编写了一个西洋棋程序,他虽然不是西洋棋高手,可是程序经过跟本身下上万盘棋以此来观察哪一种布局容易赢,哪一种布局容易输,以此来得出哪一种布局会更好,哪一种布局更差。最后程序玩得比他本身还要好。机器学习
这是有点不正式、也是比较陈旧的一个定义。下面是一个更新的定义。布局
Tom Mitchell 提出:一个适当的学习问题定义以下:计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P,有了经验E后,经过P的测定,程序在T上的表现就会有所提高。性能
假设你的邮件程序观察你将哪些邮件标为垃圾邮件,即在这样的邮件客户端,你可能将一些邮件标为垃圾邮件,而其余的不作标记。基于你标记的垃圾邮件,你的邮件程序学会了如何更好地过滤垃圾邮件。在这个例子中,E、T、P分别是什么呢?学习
所以,咱们的系统在任务T上的性能在获得经验E后会提升性能度量P。spa
目前存在几种不一样类型的学习算法,主要的两种类型被咱们称为 监督学习和无监督学习。blog
(1)监督学习开发
先来看个例子,假如说你想预测房价。
it
假如你绘制了一个数据集,如上图。横轴是不一样房屋的平方英尺数,纵轴是不一样房子的价格,单位是千美圆。那基于这组数据,假如你有一个朋友,他有一套750平方英尺房子,如今他但愿把房子卖掉,他想知道这房子能卖多少钱。那么关于这个问题,机器学习算法将会怎么帮助你呢?软件
咱们应用学习算法,能够在这组数据中画一条直线,或者换句话说,拟合一条直线,根据这条线咱们能够推测出,这套房子可能卖,固然这不是惟一的算法。可能还有更好的,好比咱们不用直线拟合这些数据,用二次方程去拟合可能效果会更好。根据二次方程的曲线,咱们能够从这个点推测出,这套房子能卖接近。稍后咱们将讨论如何选择学习算法,如何决定用直线仍是二次方程来拟合。两个方案中有一个能让你朋友的房子出售得更合理。
从这个例子咱们能够看出,监督学习指的就是咱们给学习算法一个数据集。这个数据集由“正确答案”组成。在房价的例子中,咱们给了一系列房子的数据,咱们给定数据集中每一个样本的正确价格,即它们实际的售价而后运用学习算法,算出更多的正确答案。好比你朋友那个新房子的价格。用术语来说,这叫作回归问题。咱们试着推测出一个连续值的结果,即房子的价格。
通常房子的价格会记到美分,因此房价其实是一系列离散的值,可是咱们一般又把房价当作实数,当作是标量,因此又把它当作一个连续的数值。
回归这个词的意思是,咱们在试着推测出这一系列连续值属性。
再举另一个例子,假设说你想经过查看病从来推测乳腺癌良性与否,假若有人检测出乳腺肿瘤,恶性肿瘤有害而且十分危险,而良性的肿瘤危害就没那么大,因此人们显然会很在乎这个问题。
这个数据集中,横轴表示肿瘤的大小,纵轴上,我标出1和0表示是或者不是恶性肿瘤。有5个良性肿瘤样本和5个恶性肿瘤样本。如今咱们有一个朋友很不幸检查出乳腺肿瘤。假设说她的肿瘤大概这么大,那么机器学习的问题就在于,你可否估算出肿瘤是恶性的或是良性的几率。用术语来说,这是一个分类问题。
分类指的是,咱们试着推测出离散的输出值:0或1良性或恶性,而事实上在分类问题中,输出可能不止两个值。好比说可能有三种乳腺癌,因此你但愿预测离散输出0、一、二、3。0 表明良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类,但这也是分类问题。由于这几个离散的输出分别对应良性,第一类第二类或者第三类癌症,在分类问题中咱们能够用另外一种方式绘制这些数据点。
如今我用不一样的符号来表示这些数据。既然咱们把肿瘤的尺寸看作区分恶性或良性的特征,那么我能够这么画,我用不一样的符号来表示良性和恶性肿瘤。或者说是负样本和正样本如今咱们不所有画X,良性的肿瘤改为用 O 表示,恶性的继续用 X 表示。来预测肿瘤的恶性与否。
在机器学习中,咱们一般会遇到不止一种特征。如今假设,咱们不只知道肿瘤的尺寸,还知道对应患者的年龄。那么咱们这个时候的数据集就以下图。假设有一个朋友,很不幸有一个瘤。他的肿瘤大小和年级在图上为粉点。所以在给定的数据集上,学习算法能作的就是在数据上画一条直线,设法将恶性肿瘤和良性肿瘤分开,以下图。你就能够经过这个来判断这个朋友的肿瘤类型。属于良性区域,即良性的可能性比恶性的大。
就能够得出在其余机器学习问题中,咱们一般有更多的特征,一般采用这些特征,好比肿块密度,肿瘤细胞尺寸的一致性和形状的一致性等等,还有一些其余的特征。不只能处理2种3种或5种特征,并且能够处理无限多种特征。
咱们讨论的监督学习想法是在监督学习中,对于数据集中的每一个样本,咱们想要算法预测并得出“正确答案”。就像是上面的例子中,咱们想要预测房子的价格,想要预测这个肿瘤是良性的仍是恶性的。咱们还讨论了回归问题,回归是指咱们的目标,是预测一个连续值输出。咱们还讨论了分类问题,其目的是预测离散值输出。
下面有一个问题。假设你经营一家公司,你想开发学习算法来处理两个问题。
问题1:你有不少同一件货物的库存。假设你有几千件相同的货物要卖,你想预测在接下来的三个月内你能卖出多少件。
问题2:你有不少用户,你想要写一个软件来检查每个客户的帐户。对于每一个客户的帐户,判断这个帐户是否被入侵或者破坏。
那么,这两个问题应该被归为分类问题仍是回归问题?
答案是:问题1会把它归为回归问题,由于假设我有几千个货物,我会将它当作一个实数,即一个连续的值,即把我要卖的货物数量当作一个连续的值。问题2会将它当作一个分类问题,由于我可能会设置我要预测的值为0表示帐户没有被入侵,设置值为1表示帐号已经被入侵。而后再用一个算法来预测。