机器学习第一章 引言
15 Jun 2013 by LelouchHe
关于机器学习
这几天在看机器学习这本书,本来一直想看类似的东西,在Coursera上也报名了ML的课程,但是一直都没有时间.现在换了新家,以后可以稍微早些回家了,而且周末也不需要去公司加班了,这样就有很长的时间来看这些东西增强自己.更何况,每天上下班的路上还有2个小时可以来看书,所以决定这一块要好好的搞一下
至于原因么,因为机器学习实在是太赞了,虽然以前曾经弄过类似的东西,但是理论知识比较缺乏,所以半懂不懂的,现在正好可以努力一下.
本系列仅仅是机器学习的读书笔记,除了此书上的讲解的东西,可能还会融入一些其他书的内容和理解,比如最近看的非常好的统计学习方法和Coursera上的东东.
机器学习定义
根据Andrew Ng的说法,机器学习并没有很正式的定义,此处只是一个比较”押韵”的版本(Ng语)
- 机器学习: 对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么就称这个计算机程序从经验E中学习
(当然,Ng说的是英语版本的押韵)
机器学习举例
上述定义中的TPE都是比较抽象的概念,我们下面通过一个比较简单的例子(其实就是书上的例子)–下棋来解释机器学习
就下棋而言:
- 任务T: 学会下棋
- 性能度量P: 下棋中赢棋的比例
- 经验E: 自己对弈或人工指导
但是显而易见,TPE是抽象的,对于解决问题,我们需要更加定量化的指标,因此我们需要下面的量:
- 目标函数F: 下棋中赢棋的比例是一个统计量,我们无法在训练时操作整个数据层面的统计,因此我们需要针对每次下棋的一个指标,来量化对整个下棋的目标.如果我们觉得赢棋是通过挑选合适的棋局面来获取的,那么我们此处的目标函数可以是棋局的分数,这个就是我们这里的F.更量化一些,F是一个映射函数,从棋局G映射到分数R的一个函数,我们的目标就是在单次下棋中,让F的值R尽量的大.
- 量化经验S: 经验也是一个抽象的概念,我们无法从这个概念中得到如何进行训练的方式.所以我们引入量化经验S,来表示我们可以使用,可以操作的训练.关于S,我们需要讨论的是两个方向:1.我们使用什么样的经验,有三个问题需要明确,一是这些经验的来源,有直接(各种棋局状态和最佳的下一步)和间接(一场对弈和其结局),其实直接就是明确的指出各棋局和对应分数(就是目标函数F),而间接则是让程序自行或人工判断F,二是程序如何控制经验的获取,可以完全人工指导(人工提供一系列棋局和分数让程序学习),或者程序生成棋局,人工进行干预(程序向人类询问各种棋局的分数,人类只做判断,不生成数据),再或者程序自行解决(自己生成棋局,自己判断分数,即自己对弈),三是可训练的样本在真实数据的分布,有时我们不可能训练全部数据,此时考察可训练样本在真实数据中的分布;2.如何量化经验,训练样本只有量化之后才能被使用,我们需要决定怎么表示训练样本,在下棋中,我们可以使用棋子的类型和位置来表示单次棋局,当然,我们或者可以选择棋子数量来表示单次棋局,甚至,我们可以用有没有特定棋子来表示这一样本,这些选择是应用相关的,虽然有很多选择是通用的.S与F是相关的,只要决定了S的获取和表示方法,那么F的定义域就确定了,如果S使用在X上的向量表示的,那么F的定义域就是X,R=F(X)就是我们的目标函数
- 损失函数C: F是未知的,是我们最终需要求得的,我们目前能得到的只是对F的一系列可能的估计函数h(这些函数组成了我们试图寻找的假设空间H),现在我们的目标就是从这些h中找到F,或者和F最接近的.最接近这个概念,就被量化为损失函数C.损失函数,顾名思义,就是将h同F之间的差别,一个通常的C是误差平方和,即sum((h(x)-F(x))^2).C通常和性能度量P联系在一起,要寻找到目标函数F,我们通常要寻找最小的C,这也是P所要求的(P的目标也是F)
机器学习分类
机器学习大体上分为两类,监督学习和非监督学习.这两类之间的最重要的区别是是否存在人工的目标给定(“Answer Given”)
人工的目标给定出现在若干个训练的地方,比如经验获取时,是否人工给出既定的目标(比如人工指出某些棋局的分数),设计损失函数时,如何衡量误差(和上一个类似,有既定分数么?估计函数的分数怎么表示趋近呢?)
监督学习表示上述这些都人工给出,而非监督学习则没有
监督学习
监督学习中监督说人工给出程序训练样本的真实目标,比如针对所有的训练棋局,我们都人工给出一个真正的分数,然后让程序训练试图达到这样的目标.
监督学习处理的问题有两个重要的分类:
- 回归问题(Regression): 回归问题是指训练目标是连续值或可以看作连续值的问题.比如Ng经常讲的房价问题,虽然房价肯定不是连续值(它有最小单位,不可能是连续实数),但大体上可以看作连续值处理.回归问题就是在给定一系列训练样本和目标值,来预测或者判断真实数据的目标值
- 分类问题(Classification): 分类问题同回归问题相反,它给出阿训练目标是离散值.
实际上,我觉得这个分类的核心更多的是在问题,而不是在目标值上.比如分类问题中,为什么是离散值,因为分类本身的数量就比较少,其实如果我们把连续值当作无数个离散值的话,二者的区别就没有了.所以说,这二者的区别,更多是应用方面,而不是系统本质上的
无监督学习
无监督学习的概念和监督学习相反,我们并没有给出训练样本的目标值,或者是我们也并不知道这些训练样本的目标值,我们知道的只有一系列数据,但数据本身的各种属性是未知的.
无监督学习处理的问题也有两个重要的分类:
- 聚类问题(Cluster): 聚类问题类似监督学习中的分类问题,只是训练数据的目标分类并不是我们人工事先知道的,我们需要依靠程序来获得这样的分类数据.比如从一堆杂乱无章的数据中得到一些分类信息,来区分不同的数据(比如Ng讲的社交圈子划分,或者市场营销划分等)
- 鸡尾酒问题(Cocktail): 类似聚类问题,不过它并不只是分类,还要将不同分类下的数据分开