Chapter1:监督学习、无监督学习:AndrewNg吴恩达《机器学习》笔记

Chapter 1 Introduction

1.1 Welcome

  • 主要介绍了Machine Learning 的概念以及应用场景

  • google、Bing等浏览器的Pagerank算法来进行网页排序

  • 垃圾邮件过滤

  • Facebook、Apple的图片人物分类

  • Database mining:数据挖掘data mining是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。 [1]

  • 手写识别、自然语言处理NLP、计算机视觉CV

1.2 Definition

1.2.1 定义1: ——from Arthur Samuel

  • 定义:在进行特定编程的情况下,给予计算机学习能力的领域。

  • 来源:Samuel编了一个西洋棋的程序,下了上万把之后,程序玩西洋棋的水平就远远超过了Samuel。

  • 特点:编程者(Samuel)是个菜鸟,计算机有足够的耐心去下万盘棋,从而获得非常丰富的经验。

1.2.2 定义2: ——from Tom Mitchell

  • 英文定义:“ A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T as measured by P, improves with experience E. ”

  • 中文定义: 一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。

    Mitchell认为经验E 就是程序上万次的自我练习的经验,而任务T 就是下棋。性能度量值P呢,就是它在与一些新的对手比赛时,赢得比赛的概率

  • 简短定义: 给定一个任务 T,一个性能测量方法 P,在经验 E 影响下,PT 的测量结构得到了改进。

  • 三个要素:任务T、性能P、经验E。

1.3 Supervised Learning 监督学习

1.3.1 例子1:预测放假

  • 背景介绍:这里有一些房价的数据。横轴horizontal axis表示房子的面积,单位是平方英尺,纵轴 vertical axis 表示房价,单位是千美元。

    基于这组数据,假如你有一个朋友,他有一套750平方英尺房子,现在他希望把房子卖掉,他想知道这房子能卖多少钱。

Chapter1:监督学习、无监督学习:AndrewNg吴恩达《机器学习》笔记

  • 方法一: 拟合一条直线,推测价格。(如图中粉色直线)
  • 方法二:拟合二次方程曲线,推测价格。(如图中蓝色曲线)
  • 可以看出: 监督学习指的就是我们给学习算法一个数据集。这个数据集由**“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的价格。用术语来讲,这叫做回归问题**。我们试着推测出一个连续值的结果,即房子的价格。
  • 所给的数据集都是离散的、真实的
  • Regression回归 这个词的意思是,我们在试着推测出这一系列连续值属性

1.3.2 例子2:预测肿瘤良恶(分类)

  • 背景介绍: 想通过查看病历来推测乳腺癌良性与否。 这个数据集中,横轴表示肿瘤tumor的大小,纵轴上只有0和1两个数值,如果是malignant恶性则记为1,不是恶性,或者说benign良性记为0

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

    Chapter1:监督学习、无监督学习:AndrewNg吴恩达《机器学习》笔记

  • -------------------------------------二分类、多分类------------------------------------

  • 这里的分类指的是二分类,我们试着推测出离散的输出值:0或1,良性or恶性。

  • 也可以是多分类: 比如说可能有三种乳腺癌,所以你希望预测离散输出0、1、2、3。0 代表良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类 。

  • ---------------------------单个特征、多个特征、无限个特征--------------------------

  • 上图所采用的指标只有一个Tumor size,属于单特征分类。

  • 实际上,更多的是多特征问题,如图

Chapter1:监督学习、无监督学习:AndrewNg吴恩达《机器学习》笔记

  • 上图中,我列举了总共5种不同的特征,坐标轴上的两种和右边的3种,但是在一些学习问题中,你希望不只用3种或5种特征。相反,你想用无限多种特征,好让你的算法可以利用大量的特征,或者说线索来做推测。

那么怎么处理infinite features无限个特征的情况呢?

  • 以后我们会讲到一个算法,Support Vector Machine支持向量机(SVM) 里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。

    想象一下,我没有写下这两种和右边的三种特征,而是在一个无限长的列表里面,一直写一直写不停的写,写下无限多个特征,事实上,我们能用算法来处理它们。

1.3.3 总结:

  • Supervised Learning监督学习:我们数据集中的每个样本都是离散的,都有相应的“正确答案” , 再根据这些样本作出预测。

  • Regression回归问题:通过对数据的拟合,来推出一个连续的输出值。

  • Classification分类问题:结果集是离散的,数量可以是二分类、多分类,依据的特征可以是单、多、无限个。

1.4 Unsupervised Learning 无监督学习

1.4.1 无监督学习的概念,和监督学习的区别

Chapter1:监督学习、无监督学习:AndrewNg吴恩达《机器学习》笔记

  • 监督学习中,对于监督学习里的每条数据,我们已经清楚地知道,训练集对应的正确答案。

  • 无监督学习中, 没有任何的标签 ,只有一个数据集,让机器从数据中找到某种结构。

    针对数据集,无监督学习就能判断出数据有两个不同的聚集簇。这是一个,那是另一个,二者不同。是的,无监督学习算法可能会把这些数据分成两个不同的簇。

    所以叫做聚类算法。事实证明,它能被用在很多地方。

1.4.2 无监督学习的例子

  • 例子1:Google News。 谷歌新闻每天都在,收集非常多,非常多的网络的新闻内容。它再将这些新闻分组,组成有关联的新闻。 所以,这些新闻事件全是同一主题的,所以显示到一起。
  • 例子2:基因学。 基本思想是输入一组不同个体,对其中的每个个体,你要分析出它们是否有一个特定的基因。 你能做的就是运行一个聚类算法,把个体聚类到不同的类或不同类型的组(人)
  • 所以这个就是无监督学习,因为我们没有提前告知算法一些信息,比如,这是第一类的人,那些是第二类的人,还有第三类,等等。我们只是说,是的,这是有一堆数据。我不知道数据里面有什么。我不知道谁是什么类型。我甚至不知道人们有哪些不同的类型,这些类型又是什么。**但你能自动地找到数据中的结构吗?**就是说你要自动地聚类那些个体到各个类,我没法提前知道哪些是哪些。因为我们没有给算法正确答案来回应数据集中的数据,所以这就是无监督学习。

1.4.3 Octave

  • 例子3:Cocktail party problem。一个热闹的宴会房间里,两个人两个麦克风。

    Chapter1:监督学习、无监督学习:AndrewNg吴恩达《机器学习》笔记

  • 看看这个无监督学习算法,实现这个得要多么的复杂,是吧?它似乎是这样,为了构建这个应用,完成这个音频处理似乎需要你去写大量的代码或链接到一堆的合成器JAVA库,处理音频的库,看上去绝对是个复杂的程序,去完成这个从音频中分离出音频。事实上,这个算法对应你刚才知道的那个问题的算法可以就用一行代码来完成。

    就是这里展示的代码:

    [W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');

  • 研究人员花费了大量时间才最终实现这行代码。我不是说这个是简单的问题,但它证明了,当你使用正确的编程环境,许多学习算法是相当短的程序。所以,这也是为什么在本课中,我们打算使用Octave编程环境。Octave,是免费的开源软件,使用一个像OctaveMatlab的工具,许多学习算法变得只有几行代码就可实现。

  • 事实上,许多人在大硅谷的公司里做的其实就是,

  • 使用一种工具像Octave来做第一步的学习算法的原型搭建,只有在你已经让它工作后,你才移植它到C++ 或 Java或别的语言。

  • 事实证明,这样做通常可以让你的算法运行得比直接用C++实现更快

  • 所以,我知道,作为一名指导者,我必须说“相信我”,但对你们中从未使用过Octave这种编程环境的人,我还是要告诉你们这一点一定要相信我,我想,对你们而言,我认为你们的时间,你们的开发时间是最有价值的资源。我已经见过很多人这样做了,我把你看作是机器学习研究员,或机器学习开发人员,想更加高产的话,你要学会使用这个原型工具,开始使用Octave

1.5 【补充】总结

1.5.1 监督学习和无监督学习算法简要概括

  • 监督学习:
    • 主要用途:回归(Regression)和 分类(classification)
    • 常用算法:
      • K—近邻(k-Nearest Neighbor)
      • 决策树(Decision Tree)
      • 朴素贝叶斯(Naive Bayes)
      • 逻辑回归(Logistic Regression)
      • 支持向量机 (Support Vector Machine)
      • 随机森林 (Random Forest)
      • 神经网络 (Neural Networks)
  • 无监督学习:
    • 主要用途:聚类
    • 常用算法:
      • K均值(K-Means)
      • EM(Expectation-Maximization algorithm, 最大期望算法)
      • FP-Growth
  • 这里只是简单的列举一些算法,后期会补上完整表格

1.5.2 机器学习细分为4种

    1. 监督式学习(Supervised learning)

监督式学习是拥有一个输入变量(自变量)和一个输出变量(因变量),使用某种算法去学习从输入到输出之间的映射函数。目标是得到足够好的近似映射函数,当输入新的变量时可以以此预测输出变量。因为算法从数据集学习的过程可以被看作一名教师在监督学习,所以称为监督式学习。监督式学习可以进一步分为分类(输出类别标签)和回归(输出连续值)问题。

    1. 非监督式学习(Unsupervised learning)

非监督式学习指的是只有输入变量,没有相关的输出变量。目标是对数据中潜在的结构和分布建模,以便对数据做进一步的学习。相比于监督式学习,非监督式没有确切的答案和学习过程也没有监督,算法肚子运行发现和表达数据中的结构。非监督式学习进一步可以分为聚类问题(在数据中发现内在的分组)和关联问题(数据的各部分之间的关联和规则)。

    1. 半监督式学习(Semi-Supervised Learning,SSL)

半监督式学习是一种监督式学习与非监督式学习相结合的一种学习方法。拥有大部分的输入数据(自变量)和少部分的有标签数据(因变量)。可以使用非监督式学习发现和学习输入变量的结构;使用监督式学习技术对无标签的数据进行标签的预测,并将这些数据传递给监督式学习算法作为训练数据,然后使用这个模型在新的数据上进行预测。

    1. 强化学习(reinforcement learning)

强化学习可以训练程序作出某一决定。程序在某一情况下尝试所有可能的行动,记录不同行动的结果并试着找出最好的一次尝试来做决定。是多学科多领域交叉的一个产物,它的本质是解决 decision making 问题,即自动进行决策,并且可以做连续决策。它主要包含四个元素,agent,环境状态,行动,奖励, 强化学习的目标就是获得最多的累计奖励。