Introduction
在数据集中有一系列变量作为输入,这些输入变量也就是我们提前测量得到的数据。它们对某个或某些输出产生影响。简言之,就是利用输入来预测输出。形如这种形式的学习形式称之为监督学习。
术语:(在不同的领域)
输入-预测因子-自变量-特征
输出-因变量-响应
Variable Types and Terminology
在不同的例子中输出不同。在葡萄糖预测的例子中,输出是定量的指标,有些指标比其他的大,这些指标在数值上很接近的话也预示着本质上的接近。在著名的Iris分类试验中,输出是定性的(花 的种类),并且假定输出结果在一个有限的集合中G={Virginica,SetosaandVersicolor}。在手写数字识别的例子中,输出是10个不同的数字G={0,1,...,9}。在这两个例子中,在结果的类别中并没有明显的顺序。并且通常是采用描述性的标签而不是数字来代表不同的种类。定性的变量也可称作是分类的或者离散的变量。
对于上面两种类型的输出,都是利用的输入来预测输出。给定今天和昨天的具体的大气测量指标,
我们想要预测明天的空气水平。给出手写数字图像的每个像素点的灰度值,我们可以用来预测它的类标签。
由于输出类型的不同导致了不同预测类型任务的命名的不同:当我们预测定量的输出时称作回归;当我们预测定性的输出时称作分类。我们将会看到这两种任务会有很多共同点。尤其是两者都可以看作是用函数近似完成的任务。
输入也可以有不同的类型;我们既可以用量化的指标作为输入,也可以用定性的指标作为输入,或者两者同时作为输入。这种区别也导致不同的预测方法针对相应的输入。
第三种变量的类别是有序分类,例如,小,中,大;在这每两个值中存在着顺序,但是这里并不存在度量的概念(小和中之间的区别可以和中与大之间区别不一样)。我们将会在第四章进一步讨论。
定性的变量通常用数值编码。二值的通常用{0,1},{?1,1}表示。对于一个K-level的定性变量,通常用一个长度为K的二值向量表示,每次只有一个值为on。当然一些其他的压缩编码也是可行的,但是K长度的向量能够保证对称性。
X:输入
Xj:X是一个向量,它的一个子成员(feature)
Y:定量的输出(回归)
G:定性的输出(分类)
xi:X的第i个观察到的值
例如,一个数据集由N个输入xi组成,每个输入都是长度为p的向量,因此X是一个N?p的矩阵。这样以便区分xi和Xj。xi长度为p,Xj长度为N。
此时,我们可以清楚的表达我们的学习任务:给定一个输入X,想比较好的预测输出Y,用Y^表示定量的输出或者用G^的表示定性的输出。
对于只有两种分类的G,通常是现对目标编码,然后把它当作定量的输出对待。Y^通常处于[0,1]
内,然后根据y^>0.5成立与否,来给G^赋值。这种方法也可以泛化到K个类别的输出。
我们需要数据来学习预测的规则。因此我们需要有一些列的测量数据(xi,yi)或者(xi,gi),i=1,...,N,被称作训练数据,来训练我们的预测规则。
###Two Simple Approaches to Prediction:Least Squares and Nearest Neighbors
在这节,我们将会介绍两种十分简单但非常有效的方法:通过最小二乘法拟合的线性模型和k?nearest?neighbor。线性模型通常会假设结构与收益稳定,因此有时候精确度不高。k?nearest?neighbor则不一样:它的预测通常更准,但是很不稳定。
线性模型和最小二乘法
线性模型一度是过去30年来统计学的中流砥柱,现在也仍然是最重要的工具之一。给定一个输入:XT=(X1,X2,...,Xp),我们通过以下模型预测输出Y:
Y^=β0+∑pj=1Xjβj^^………(2.1)
β0^是截距,也就是机器学习中的bias。通常在输入X中包含常数1很方便,这样便可以把β0^也包含入β^中。因此上式可以重写
Y^=∑pj=0Xjβj^=XTβ^………(2.2)
这里我们假设只有一个输出,所以Y^是一个标量。但通常来说Y^是一个长度为K的向量,这种情况下β通常是一个p?K的系数矩阵。在这个(p+1)维的输入-输出空间中,(X,Y^)定义了一个超平面。如果常数包含在X中,那么超平面将会经过原点;如果没有,那么将会经过(0,β0^)。从现在开始,我们假设β^包含截距(β0^)。
那么我们如何将线性模型应用在训练数据上呢?这里有很多不同方法,但是目前为止最流行的方法是最小二乘法。在这种方法中,我们选择的β要使下面的残差平方和最小:
RSS(β)=∑Ni=1(yi?xiTβ)2………(2.3)
RSS(β)是一个关于参数的平方函数。因此它的最小值是存在的,但是有可能不唯一。它的解很容易用矩阵表示出来。我们可以写成下面的形式:
RSS(β)=(y?Xβ)T(y?Xβ)………(2.4)
其中X是一个N?p的矩阵,每一行都是一个输入向量,y是一个长度为N的输出。
将(2.4)式对β微分,最小值,在导数值为0处取得:
RSS(β)=?XT(y?Xβ)+(y?XβT)(?X)=0
XT(y?Xβ)=0………(2.5)
如果XTX非奇异,唯一解为:
β=(XTX)?1XTy………(2.6)
对于第i个输入,拟合值为yi^=y^(xi)=xTiβ^。对于任意的输入x0,预测的输出y^(x0)=xT0β^。整个拟合的平面是由长度为p的参数\beta$决定的。因此,直觉上,我们会觉得,要拟合得到这样的一个模型并不需要很多的数据。
接下来我们来看一个线性模型在分类中的应用。图2.1是散点图。输出变量G取值为BLUE,ORANGE。将线性模型应用在此数据中,将Y的BLUE编码为0,ORANGE编码为1。判断规则为:
在R2中的点被分为ORANGE对应x:xTβ^>0.5,如图2.1所示。这两类也被决策边界x:xTβ^=0.5。可以观察到有些点被五分了。也许这个线性模型太严格了,这些误分能避免吗?记住有可能我们的训练数据本身也存在错误。考虑下面两个场景:
场景1:训练数据是用独立的、具有不同均值的二元高斯分布产生的。
场景2:训练数据由10个低方差的高斯分布混合产生,并且它们的均值符合高斯分布。
高斯分布的混合模型具有很好的泛化能力。首先产生一个离散变量决定使用哪一个高斯分布,然后产生一个选定的高斯分布的观察值。假如每个高斯一个类别的话,在第四章将看到,线性决策边界已经是最佳的,重叠的区域无法避免,并且将来的数据仍然将会受此困扰。
在混合模型下,线性模型很有可能不是最佳的,事实证明确实不是的。最佳的决策边界时非线性,同时获得该边界的难度也增加了。
接下来,我们来学习一种更适用于场景2 的分类方法。
* Nearest-Neighbor Methods*
最邻近方法利用训练集T中在输入空间最靠近x的观察值来得到Y^。具体来说,KNN由下式决定:
Y(x)^=1k∑xi∈Nk(x)yi………(2.8)
其中Nk(x)是被定义为训练集中最靠近 x的点。“靠近”隐藏着一种度量,此时我们假设的是欧几里的距离。换句话说,就是找出输入空间中,最靠近的 x的k个点 xi,然后取它们响应的平均值。
在图2.2中,我们使用的是图2.1中的数据,并且k=15。因此,Y^是ORANGE占周围点的比例,如果Y^>0.5,将G^赋值为ORANGE。可以发现,将ORANGE和BLUE分开的决策边界非常的不规则,并且是由局部簇的某一占大多数的类产生的。
图2.3展示的是k=1的分类结果:假如训练集中的点xl离x最近,那么Y^被赋值为yl。在这种情况下,计算起来会相对容易很多,也相当于训练集的插入算法。每个点xi都有个区域,在这个区域中的所有点,G^(x)=gi,此时的决策边界比之前更加不规则。
在图2.2中,相对于图2.1,更少的点被误分了。然而这不会让我们更开心,即使在图2.3中更少的点被分错。这预示着KNN算法在训练集上的误差近似是k的递增函数,并且在k=1时总是为0。
容易观察到,在KNN算法中,只有一个参数k,临近点的数目,而最小二乘法中有p个参数。但是,即使这样,我们将会看到,KNN算法中的有效参数的区域通常接近N/k,并且比p大,随着k的增大而减小。可以从一个极端的情况来分析,假如每一个区域都不重复,那么将会有N/k区域,在每个区域中拟合一个参数。
显而易见的是,我们不能用残差和来作为选择合适的k的标准,因为当k=1时,残差和总是为0。对于之前的场景2的高斯混合分布的情况,KNN算法看起来更适合,因为它会避免不必要的噪声。
From Least Squares to Nearest Neighbors
从上面的例子中可以看出,线性模型的决策边界非常平滑,稳定。但是它依赖于这样的一个假设:线性模型的决策边界确实是合适的。因此,这就导致了线性回归具有低方差(variance),高偏差(bias)的特点。
另一方面,KNN算法不需要依赖于任何假设,能够适应任何情况。但是,由于决策边界的子区域依赖于一些输入点和它们具体的位置。因此不够稳定,具有高方差,低偏差。
每个方法都有其适用的范围。具体说来,线性回归适用于上述的场景1(2个独立的高斯分布),同时,KNN算法适用于上述的 场景2(混合高斯分布)。事实上,我们的数据的模型在两者之间,但是 更接近混合高斯分布。首先,我们产生10个服从2维高斯分布N((1,0)T,I)的平均值mk,同时标记这个类别为BLUE,另外10个服从N((0,1)T,I)的类别标记为ORANGE。接下来,为每个类别产生100个观察值:每个观察值,我们以1/10的概率选择一个mk,然后产生一个N(mk,I/5),因此导致每个类别的混合高斯分布。图2.4展示了分类10000个模型产生的新的观察值的结果。我们比较了最小二乘法和不同的k值得KNN算法的分类效果。
如今很多流行的技术相当一部分是这两种简单技术的变种。实际上,KNN中,当k=1时,在低维问题中占领了很大的市场。下面的是一些改善这些简单算法的方法:
- 核方法,KNN可以利用到距离点的距离来决定一个权重(平滑递减到0),而不是简单的利用0/1这样的权重。
-在高维空间中,距离核函数被修改用来强调某些变量的重要性。
局部回归通过局部加权的最小二乘,而不是局部的你拟合常数。
线性模型可以通过原始输入的基础拓张来允许任意复杂的模型。
投影寻踪和神经网络模型由一些线性模型的非线性转换之和组成。
统计边界理论
在这节中,我们将会涉及一些如何得到我们到目前为止谈到的模型的理论框架知识。首先,我们考虑定量的输出。
X∈Rp:输入,Y∈R:输出,并且两者服从联合分布Pr(X,Y)我们需要找到一个函数f(X)来预测Y。这个理论需要损失函数L(Y,f(X))来惩罚预测的误差,目前用的最广泛、最传统的是平方误差损失:
L(Y,f(x))=(Y?f(x))2这就给了一个我们选择合适的f的标准:
EPE(f)==E(Y?f(X))2.........(2.9)∫(Y?f(x))2Pr(X,Y).........(2.10)
EPE被称为平方预测错误期望。
EPE(f)=EXEY|X([Y?f(X)]2|X).........(2.11)
我们可以通过 逐点的使EPE最小:
f(x)=argmincEY|X([Y?c]2|X=x).........(2.12)
解为
f(x)=E(Y|X=x),...........(2.13)
这个条件期望,也被称之为回归函数。因此,在任一点X=x预测最佳的Y是一个条件均值,并且最佳与否是由均方误差衡量的。
KNN算法尝试直接利用训练数据来执行上述的步骤。在任一点x,我们可能会求所有输入为xi=x的yi的均值。在KNN中,就是如下的形式:
f^(x)=Ave(yi|xi∈Nk(x)),.........(2.14)
其中“Ave”代表求平均,Nk(x)是数据集T中最靠近x的k个点。在这里,有两个近似:
期望通过在样本数据中取平均近似。
在一个点求条件期望放松到一个区域的k个点。
当训练集的大小N很大时,x附近的点很可能离x越近,并且当k变大时,平均值会越来越稳定。事实上,在联合概率Pr(X,Y)满足轻微的正则性条件下,可以得到当N,k→+∞时,k/N→0,f^(x)→E(Y|X=x)。然而通常我们不会有这么大的数据集。当线性模型或者一些更结构化的模型合适的时候,我们通常可以得到一个比KNN算法更稳定的估计,尽管这样的只是任然需要从数据中学到这里还存在一些其他的问题,在2.5节中,我们可以看到当维数p变大时,KNN算法的度量尺寸也变得非常大,这是非常灾难性的同时,收敛的速度也会随着维数的增加而减少。
那么在这个框架中,线性回归是如何展开的呢?最简单的解释是假设回归函数f(x)大约和它的参数成线性关系。
f(x)≈XTβ.........(2.15)
这是一个基于模型的方法,我们给这个回归函数指定了一个模型。将这个f(x)带入EPE(2.9)并微分可得到:
EPE(f)|β=2(Y?XTβ)(?X)=0
β=[E(XXT)]?1E(XY).........(2.16)
注意到,我们这里并不是以X为条件,而是使用我们的函数关系的知识来利用X的值。
将我们之前求得(2.6)式的结果取平均期望就是(2.16)的答案。
因此,KNN和最小二乘的方法都是通过取平均来近似求解条件期望。但是他们在模型假设上面有很大的不同:
尽管后者看起来更好,但是我们可能会为它的灵活性因此而付出一些代价。
在本书中的很多现代的技术都是基于模型的,尽管它们都比严格的线性模型灵活很多。例如:加性模型假设:
f(X)=∑pj=1fj(Xj).........(2.17)
这个模型任然保持着线性模型的可加性。但是每一个坐标函数fj是任意的。可以证明对于使用诸如KNN等算法来求解加性模型的最佳估计是同时求解每一个坐标函数的单变量条件期望。因此,在高维中求条件期望的问题就通过模型的假设(通常是不切实际的)被简化掉了。
那我们是否很乐于看到标准(2.11)呢?如果我们将L2损失函数换成L1:E|Y?f(X)|?解在这种情况下,是条件中位数。