到目前为止,所讨论的均是线性回归,输出是特征向量或其各分量的线性函数,即
其中扩充特征向量
和权向量
w
的定义如式(3.1.4)和式(3.1.3)所示。为了将回归的输出与特征向量之间的关系扩展到更一般的非线性关系,可以通过定义一组非线性映射函数来实现。非线性映射函数的一般表示如下:
每个非线性映射函数 ϕ i 将 K 维向量 x 映射为一个标量值,其按次序排列为一个 M +1维向量
一般地,令
ϕ
0
(
x
)=1为哑元。这里
x
ϕ
(
x
)将
K
维向量映射为
M
维向量,称
ϕ
(
x
)为特征向量
x
的基函数向量。
定义权系数向量为
可以通过基函数向量定义新的回归模型为
在式(3.3.4)的模型中,输出与特征向量 x 的关系一般是非线性的,具体非线性形式由 ϕ ( x )的定义决定,但输出与权系数 w 的关系仍然是线性的,因此称这种模型为线性基函数回归模型。这里线性指的是回归输出与权系数是线性关系,与特征向量的非线性形式由基函数确定。
对于一个训练样本集
,取任意样本,由特征向量
x
n
产生一个对应基函数向量
ϕ
(
x
n
),得到模型输出
(
ϕ
n
,
w
)=
w
T
ϕ
(
x
n
),注意,这里用到了简写符号
ϕ
n
=
ϕ
(
x
n
)。模型输出与标注的误差为
与基本线性回归相比,只要用 ϕ ( x n )代替 x n ,其他是一致的,因此定义新的基函数数据矩阵为
注意到,与基本线性回归问题相比,这里除了数据矩阵 Φ 由式(3.3.6)通过基函数映射进行计算外,一旦数据矩阵 Φ 确定了,由于待求参数向量 w 仍保持线性关系,需求解的问题与基本线性回归是一致的,故线性基函数回归系数向量的解为
其中, y 是标注值向量。注意到,与线性回归的不同主要表现在数据矩阵 Φ 中。对于线性回归,若特征向量 x n 是 K 维的,数据矩阵 X 是 N ×( K +1)维矩阵,且矩阵的每个元素直接来自训练集中一个特征向量的分量(包括了哑元);对于线性基函数回归,数据矩阵 Φ 是 N ×( M +1)维矩阵,即数据矩阵的列数为 M +1, M 由基函数数目确定。一般来讲, M ≥ K ,基函数将特征向量 x 映射到更高维空间,并且数据矩阵 Φ 的每个元素需要通过相应映射函数计算得到,增加了计算量。一旦计算得到数据矩阵 Φ ,线性基函数回归的求解问题和线性回归是一致的。
基函数的类型有很多,常用的有多项式基函数、高斯函数、正余弦函数集等。下面看几个例子。
例3.3.1 讨论一个线性基函数回归的问题。设样本集的特征向量是一个三维向量,即
设基函数向量为多项式形式,具体地,本例最高取二阶项,则
这里 M =9,为了与线性回归区别,将线性基函数回归的权系数向量记为
基函数回归的输出为
假设数据集规模为 N =50,则标注向量为
数据矩阵 Φ 为
Φ 是一个50×10的数据矩阵,计算( Φ T Φ ) -1 需要求10×10方阵的逆矩阵。
注意到,对此问题若采用基本线性回归,则输出写为
数据矩阵 X 是50×4的矩阵,则( X T X ) -1 的计算只需求4×4方阵的逆矩阵。另外,也需注意,计算 Φ 需要一定的计算量,尤其当 Φ 中存在复杂非线性函数时,附加计算量可能是相当可观的,而写出 X 不需要附加计算量。
例3.3.2 正余弦类的基函数和高斯基函数的例子。与例3.3.1一样,设特征向量是一个三维向量,即
定义正弦基函数向量的一个分量为
其中,0≤ i 1 , i 2 , i 3 ≤ L 取正整数; L 是预先确定的一个整数或作为超参数通过交叉验证确定,本例中 ϕ ( x n )是( L +1) 3 维向量。
也可以定义高斯基函数的一个分量为
作为基函数使用时,高斯函数不需要归一化,每个基函数分量由中心矩
μ
k
确定,
μ
k
是预先确定的一组向量,且与特征向量
x
同维度。例如,本例是三维情况,
x
的取值范围限定在三维正方体中,每维平均划分成
L
份,则三维正方体被划分成
L
3
个等体积的小正方体,
μ
k
表示每个小立方体的中心点位置。
控制了每个基函数的有效作用范围,一个简单的选择是各个基函数分量的
参数共用一个值。
与基本的线性回归算法一样,线性基函数回归也可以通过随机梯度算法实现,同样,只要用 ϕ ( x n )代替 x n ,可将SGD算法直接用于基函数情况,基本的SGD算法可写为
其中, i 为在权系数的第 n +1次更新时用到的样本序号。同样,可以将小批量SGD算法直接应用于基函数情况。
可直接将3.2节讨论的正则化技术推广到基函数情况,也可直接将3.1.3节讨论的多输出回归推广到基函数情况,由于这两个推广都是非常直接的,请读者自己完成(正则化公式推广见习题),此处不再赘述。
例3.3.3 一个数值例子。本例在第1章用于说明概念,本章已经介绍了这个例子所使用的算法,故重新看一下这个例子。假设存在一个输入输出模型,其关系为
这里
x
是标量,在区间
x
∈[-1,1]均匀采样产生输入样本集
,并通过关系式
y
n
=
f
(
x
n
)+
ε
n
产生标注值
y
n
,其中
ε
n
~
N
(0,0.15
2
)表示采样噪声。用带噪声的标注数据
为
f
(
x
)建模。作为说明,首先设训练集样本数为
N
=10,
f
(
x
)和训练样本值如图3.3.1(a)所示。用同样的方法产生100个样本作为测试集。
使用基函数回归,选择多项式基函数向量为
回归模型为
多项式阶数 M 是一个可选择的值。
首先选择
M
=3,利用式(3.3.7)计算权系数向量,得到的回归模型如图3.3.1(b)所示。注意,为了比较方便,将训练样本和
f
(
x
)也画于同一图中。然后,选择
M
=9,结果如图3.3.1(c)所示。比较图3.3.1(b)和图3.3.1(c)可见,
M
=3学习到的模型是合适的,尽管存在训练误差,但误差都在较小范围内;
M
=9的模型是过拟合的,尽管其训练误差为0,即学习的模型
(
ϕ
,
w
)通过所有训练样本点,因此在所有样本点处
y
n
=
(
ϕ
n
,
w
),但其泛化性能很差,测试误差很大。原理上讲,
M
=9的模型更复杂,表达能力更强,但在有限训练集下,为使训练误差更小,将特别关注匹配标注值,而标注值中的噪声将起到很大的引导作用,尽管训练误差为零,但泛化性很差。
图3.3.1(d)所示为 M 为1~9时,训练误差和测试误差的变化关系。误差度量采用的是均方根误差,可以看到,随着模型复杂度升高,训练误差持续下降,但测试误差先下降再升高,表现为U形特性,尽管该图是针对这一具体例子得到的,但这个规律具有一般性。对于一个具体问题,在有限的训练集下,当模型复杂度高到一定程度,将出现过拟合,这时模型对训练集的表现优异,但泛化性能变差。对于本例, M 取值为3~7比较合适,两个误差均较小。
如果选择了一个较复杂的模型,可以通过正则化降低过拟合。在本例中,取 M =9时,通过正则化降低过拟合。取正则化参数为ln λ =-2(实际通过交叉验证确定)得到图3.3.1(e)的结果,与图3.3.1(c)比较,消除了过拟合问题。
图3.3.1 例3.3.3的数值实验结果
在一般的机器学习中,增加数据可改善性能是一个基本原则,即具有大的有效数据集,等价地,可用于训练的数据集增大。本例中若取训练集规模为 N =150, M =9,不使用正则化,则训练得到的模型如图3.3.1(f)所示,由于训练数据规模明显增加,尽管选择 M =9的复杂模型,并且没有使用正则化,学习得到的模型优于 N =10情况下最好的结果。
对以上例子,选择不同的基函数集,误差性能会不同。例如,可选择傅里叶基函数做以上的实验,这个留作习题,有兴趣的读者可自行编程实验。对于许多实际应用,怎样选择合适的基函数集是一个重要、实际的问题。很多情况下,基函数的选择与所处理的问题密切相关,大多是启发式的选择。基函数方法与所谓核函数方法密切相关,其实任何一个基函数向量 ϕ ( x )都可以对应一个核函数。一个与基函数向量相对应的核函数定义为
因此,核函数是一个具有两个变元的标量函数,具有许多良好的特性。直接利用核函数构造回归模型并利用误差的高斯假设求解该模型的一类方法称为“高斯过程”(在机器学习中,“高斯过程”有这样的专指,不同于随机过程中一般的高斯过程的概念,高斯过程也用于分类)。利用核函数构造支持向量机(SVM)算法则是核函数最重要的应用之一,在SVM框架下,既可以得到回归算法,也可以得到分类算法。有关核函数与SVM的详细讨论见第6章。