Machine Learning-Decison Trees 1

120 阅读3分钟

我正在参加「掘金·启航计划」

学习目标

  • 能够区分记忆(memorization)泛化(generalization);
  • 能够实现一个决策树分类器(decision tree classifier);
  • 把一个具体的任务(concrete task)当做是学习目标,使用形式化的概念(formal notion)表示输入空间(input space)特征(feature)输出空间(output space),生成分布函数(distribution function)损失函数(loss function); 一般而言,机器学习(Machine Learning)是用过去经验来预测未来。 比如,可能你希望基于用户Alice对过去所看过的电影的打分高低,来推断她对某一部没有看过的电影的喜好程度。这个预测结果会受到很多电影因素的影响: 电影分类(戏剧、纪录片etc.)、语言、导演和演员和制片公司等。总的而言,根据观察到的物体某些属性,机器学习能够物体某些未被观察到的属性做出有根据的猜测(informed guesses)。 在这里,我们将会提出第一个问题:what does it mean to learn? 为了能够开发learning machine, 我们必须清楚学习(learning)的真正含义是什么,以及如何去评判成功和失败!你将会在一个非常有限的学习环境中看到这个问题的回答,并且在后面的章节进行放松和调整。具体而言,我们的重点将会放在一个非常简单的模型-决策树(decision tree)

what does it mean to learn?

Alice 刚刚开始接触机器学习这门课,她期待在课程的最后能够掌握已经学到的全部内容。一种常用的方法就是通过考试来评判—考试考得好,说明这门课学得好!
但是如何开展一场合理的测试?假若老师上课花费大量的时间在谈论机器学习相关的内容,但是在考核时却使用了与讲授内容无关的试卷,那么Alice的考试成绩就不能反映她的学习情况。此外,倘若老师在考试过程中仅仅是考察课堂上讲过的内容,那么这也是一场糟糕的考试,它同样不能反映Alice的学习情况。我们所期待的是,Alice能够观察课堂中的具体例子,然后在考试中回答新的相关问题。这是在测试Alice是否具备了泛化(generalize)的能力。泛化(generalization)几乎是机器学习中最核心的概念!
举个具体的例子, 考虑为计算机科学专业的本科生设计一个课程推荐系统。我们有两个数据集:学生集合、课程集合。每个学生都已经选修并评估了其中某些课程。学生对课程的评估直接使用简单的分数 -2(terrible) 到 2(awesome)。要设计的推荐系统需要实现某个具体的学生对某门具体课程的喜好程度!
根据所提供的课程评分(历史数据),我们尝试去预测新课程的评分(将来数据)。接下来我们对推荐系统所做的两件事是不公平的!其一,我们期待得知Alice对于一门新课程的喜好程度,这是不公平的,因为历史数据中并不存在相关的内容;其二,我们期待得知Alice对于某一个选修过的课程的喜好程度,从历史信息可以直接查询出来,这个结果是从历史数据中查询所得,而不是推荐系统学习而来!前面的一个例子,我们希望系统能够泛化经验之外的内容,在后面的例子,我们却并不希望它具有泛化能力,因为它直接就可以从历史数据中获取真实值!