吴恩达《机器学习》课程笔记归纳(一)-- 初识机器学习

 

参考地址:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

1. 什么是机器学习

一个年代近一点的定义,由 Tom Mitchell 提出,来自卡内基梅隆大学,Tom 定义的机器学习是,一个好的学习问题定义如下,他说,一个程序被认为能从经验 E 中学习,解决任务 T,达到性能度量值 P,当且仅当,有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升。经验 E 就是程序上万次的自我练习的经验而任务 T 就是下棋。性能度量值 P 呢,就是它在与一些新的对手比赛时,赢得比赛的概率。

我们假设您的电子邮件程序会观察收到的邮件是否被你标记为垃圾邮件。在这种 Email 客户端中,你点击“垃圾邮件”按钮,报告某些 Email 为垃圾邮件,不会影响别的邮件。基于被标记为垃圾的邮件,您的电子邮件程序能更好地学习如何过滤垃圾邮件。请问,在这个设定中,任务 T 是什么?

吴恩达《机器学习》课程笔记归纳(一)-- 初识机器学习_第1张图片

2. 监督学习

我们用一个例子介绍什么是监督学习,把正式的定义放在后面介绍。

假如说你想预测房价。前阵子,一个学生从波特兰俄勒冈州的研究所收集了一些房价的数据。你把这些数据画出来,看起来是这个样子:横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是千美元。那基于这组数据,假如你有一个朋友,他有一套 750 平方英尺房子,现在他希望把 房子卖掉,他想知道这房子能卖多少钱。

  那么关于这个问题,机器学习算法将会怎么帮助你呢?

吴恩达《机器学习》课程笔记归纳(一)-- 初识机器学习_第2张图片

我们应用学习算法,可以在这组数据中画一条直线,或者换句话说,拟合一条直线,根据这条线我们可以推测出,这套房子可能卖$150,000,当然这不是唯一的算法。可能还有更好的,比如我们不用直线拟合这些数据,用二次方程去拟合可能效果会更好。根据二次方程的曲线,我们可以从这个点推测出,这套房子能卖接近$200,000。稍后我们将讨论如何选择学习算法,如何决定用直线还是二次方程来拟合。两个方案中有一个能让你朋友的房子出售得更合理。这些都是学习算法里面很好的例子。以上就是监督学习的例子。

可以看出,监督学习指的就是我们给学习算法一个数据集,这个数据集由“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格, 即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的价格。

用术语来讲,这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。 一般房子的价格会记到美分,所以房价实际上是一系列离散的值,但是我们通常又把房价看成实数,看成是标量,所以又把它看成一个连续的数值。 回归这个词的意思是,我们在试着推测出这一系列连续值属性。

再举另外一个监督学习的例子,假设说你想通过查看病历来推测乳腺癌良性与否。

吴恩达《机器学习》课程笔记归纳(一)-- 初识机器学习_第3张图片

让我们来看一组数据:这个数据集中,横轴表示肿瘤的大小,纵轴上,我标出 1 和 0 表示是或者不是恶性肿瘤。

我有 5 个良性肿瘤样本,在 1 的位置有 5 个恶性肿瘤样本。现在我们有一个朋友很不幸检查出乳腺肿瘤。假设说她的肿瘤大概这么大,那么机器学习的问题就在于,你能否估算出肿瘤是恶性的或是良性的概率。用术语来讲,这是一个分类问题。

分类指的是,我们试着推测出离散的输出值:0 或 1 良性或恶性,而事实上在分类问题中,输出可能不止两个值。比如说可能有三种乳腺癌,所以你希望预测离散输出 0、1、2、 3。0 代表良性,1 表示第 1 类乳腺癌,2 表示第 2 类癌症,3 表示第 3 类,但这也是分类问题。

因为这几个离散的输出分别对应良性,第一类第二类或者第三类癌症,在分类问题中我 们可以用另一种方式绘制这些数据点。

现在我用不同的符号来表示这些数据。既然我们把肿瘤的尺寸看做区分恶性或良性的特征,那么我可以这么画,我用不同的符号来表示良性和恶性肿瘤。或者说是负样本和正样本 现在我们不全部画 X,良性的肿瘤改成用 O 表示,恶性的继续用 X 表示。来预测肿瘤的恶性与否。 在其它一些机器学习问题中,可能会遇到不止一种特征。举个例子,我们不仅知道肿瘤的尺寸,还知道对应患者的年龄。在其他机器学习问题中,我们通常有更多的特征,比如肿块密度,肿瘤细胞尺寸的一致性和形状的一致性等等,还有一些其他的特征。

那种算法不仅能处理 2 种 3 种或 5 种特征,即使有无限多种特征都可以处理。

吴恩达《机器学习》课程笔记归纳(一)-- 初识机器学习_第4张图片

现在来回顾一下,这节课我们介绍了监督学习。其基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。 我们还介绍了回归问题,即通过回归来推出一个连续的输出,之后我们介绍了分类问题,其目标是推出一组离散的结果。

3. 无监督学习

吴恩达《机器学习》课程笔记归纳(一)-- 初识机器学习_第5张图片

上个视频中,已经介绍了监督学习。回想当时的数据集,如图表所示,这个数据集中每条数据都已经标明是阴性或阳性,即是良性或恶性肿瘤。所以,对于监督学习里的每条数据, 我们已经清楚地知道,训练集对应的正确答案,是良性或恶性了。

在无监督学习中,我们已知的数据。看上去有点不一样,不同于监督学习的数据的样子, 即无监督学习中没有任何的标签或者全部都是相同的标签。所以我们已知数据集,却不知如何处理,也未告知每个数据点是什么。别的都不知道,就是一个数据集。你能从数据中找到某种结构吗?针对数据集,无监督学习就能判断出数据有两个不同的聚集簇。 这是一个,那是另一个,二者不同。

将数据集分成不同簇的无监督学习算法也被称为聚类算法。

聚类应用的一个例子就是在谷歌新闻中。谷歌新闻每天都在,收集非常多,非常多的网络的新闻内容。 它再将这些新闻分组,组成有关联的新闻。所以谷歌新闻做的就是搜索非常多的新闻事件, 自动地把它们聚类到一起。所以,这些新闻事件全是同一主题的,所以显示到一起。

聚类算法和无监督学习算法同样还用在很多其它的问题上。

所以无监督学习,我们没有提前告知算法一些信息,比如,这是第一类的人,那些是第二类的人,还有第三类,等等。我们只是说,是的,这是有一堆数据。我不知道数据里面有什么。我不知道谁是什么类型。我甚至不知道人们有哪些不同的类型,这些类 型又是什么。但你能自动地找到数据中的结构吗?就是说你要自动地聚类那些个体到各个类,我没法提前知道哪些是哪些。因为我们没有给算法正确答案来回应数据集中的数据,所以这就是无监督学习。

聚类只是无监督学习中的一种。

后面,我会教你们一点关于如何使用 Octave 的知识,你就可以用 Octave 来实现一些算 法了。或者,如果你有 Matlab,你也可以用 Matlab。事实上,在硅谷里,对大量机器学习算法,我们第一步就是建原型,在 Octave 建软件原型,因为软件在 Octave 中可以令人难以置信地、快速地实现这些学习算法。这里的这些函数比如 SVM(支持向量机)函数,奇异值分解,Octave 里已经建好了。如果你试图完成这个工作,但借助 C++或 JAVA 的话,你会需要很多很多行的代码,并链接复杂的 C++或 Java 库。所以,你可以实现这些算法,借助 C++或 Java 或 Python,它只是用这些语言来实现会更加复杂。(编者注:这个是当时的情况,现在 Python 变主流了) 。

你可能感兴趣的:(机器学习)