如果机器学习模型的输出量通过样本特征与模型参数的线性组合计算获得,则称该模型为线性模型。线性模型结构中只有乘法和加法运算,是一种非常简单的机器学习模型。对于给定带标签训练样本,通过监督学习训练构造线性模型的关键技术在于如何算出合适的模型参数值,即线性组合系数或权重,使得训练样本的模型输出值能较好地拟合样本标签。最常用的方法是通过优化输出值与标记值之间的误差来调整模型参数,使得误差越小越好。本节主要介绍如何通过训练样本自动构造出适当的线性模型以完成回归、分类等机器学习任务。
在机器学习领域,线性模型是一类由线性组合方式构成的预测性模型的统称,这类模型在机器学习领域有着非常广泛的应用,其基本形式如下
其中, μ i 表示第 i 个变量; a i 表示 μ i 所对应的权重参数;参数 b 称为 偏置项 。
当 b ≠0时,称式(3-1)为 非齐次线性模型 ;当 b =0时,可将式(3-1)简化为
并称式(3-2)为 齐次线性模型 。
显然,齐次线性模型是非齐次线性模型在偏置项 b =0时的一种特殊形式。事实上,对于式(3-2)表示的齐次线性模型,若令其中的变量 μ n 恒等于1,则该模型就变成一个以 a n 为偏置项的非齐次线性模型。由此可见,在一定条件下,齐次线性模型与非齐次线性模型可以相互转化。因此,基于齐次线性模型的很多结论可以直接推广到非齐次线性模型,反之亦然。在不失一般性的前提下,将根据实际需要或表述方便,灵活地采用齐次线性模型或非齐次线性模型作为线性模型的表示形式。
可将线性模型式(3-1)表示为如下向量形式
其中, a =( a 1 , a 2 ,…, a n ) T 表示权重向量; μ =( μ 1 , μ 2 ,…, μ n ) T 表示变量向量。
在机器学习领域,通常将样本数据表示为表征向量或特征向量形式,并默认样本数据由特征向量形式表达。具体地说,对于任意给定的一个样本 X ,可将其表示成特征向量( x 1 , x 2 ,…, x m ) T ,即 X =( x 1 , x 2 ,…, x m ) T ,每个样本数据对应各自的特征向量。此时可将线性模型表示为样本特征向量与权重向量的线性组合,即有
其中, w =( w 1 , w 2 ,…, w m ) T 为权重向量; w i 表示样本 X 的第 i 个特征 x i 对模型输出的影响程度。 w i 值越大,则表示特征 x i 对线性模型 f ( X )输出值的影响就越大。
对于给定的机器学习任务,获得一个满足任务需求的线性模型主要是通过调整模型的权重参数实现的,即确定样本属性或特征数据与模型输出之间满足何种线性关系。对模型参数的调整一般是通过对训练样本数据的学习来实现的。有时模型自变量与参数之间并不满足线性关系,需要通过某些数学技巧将原始模型转化为适当线性模型以实现对问题的求解。
回归是机器学习的一项重要任务。所谓回归,就是通过带标签样本训练构造适当模型,并通过该模型算出新样本的预测值。基于线性模型的回归学习任务通常称为 线性回归 ,相应的线性模型称为 线性回归模型 。可以使用线性回归模型解决很多预测问题,不过如何构造适当的线性模型是一个需要仔细考虑的问题。对于任意一个给定的样本 ξ ,令
为样本 ξ 的属性提取函数,则可将 ξ 映射成一个 m 元特征向量 X ,即
由此可将线性回归模型的初始模型表示为如下的线性组合形式
其中, w =( w 1 , w 2 ,…, w m ) T 为参数向量。
建立线性回归模型的目标是希望模型输出的预测值能够较好地符合实际数据。对于不同模型参数向量 w ,线性模型的拟合效果会有所差异,需要根据样本数据计算出合适的模型参数,使得模型预测效果达到最优。因此,线性回归模型的构造其实是一个优化问题,需要建立一个适当的目标函数或损失函数作为优化计算的基本依据。
对于给定带标签训练样本 X ,设其标签值为 y ,则希望线性回归模型关于该训练样本的预测输出 f ( X )与 y 能够尽可能接近。通常采用平方误差来度量 f ( X )和 y 的接近程度,即
其中, e 表示单个训练样本 X 的误差。
在机器学习的模型训练中,通常使用多个训练样本,可将所有训练样本所产生平方误差的总和看成是模型的总误差。因此,对于任意给定的 n 个训练样本 X 1 , X 2 ,…, X n ,令其标签值分别为 y 1 , y 2 ,…, y n ,可将对线性回归模型 f ( X )进行优化计算的目标函数定义为
令训练样本集的特征矩阵为 A =( X 1 , X 2 ,…, X n ) T =( x ij ) n × m ,相应的训练样本标签值向量为 y =( y 1 , y 2 ,…, y n ) T ,则可将上述损失函数转化为
因此,线性回归模型的构造就转化为如下最优化求解问题
令 J ( w )对参数向量 w 各分量的偏导数为0,即
则由 A T ( y - Aw )=0解得
可通过式(3-9)计算参数向量 w 的取值,并将其代入 f ( X )= w T X 获得所求线性回归模型。
【例题3.1】 某企业某商品的月广告费用与月销售量数据如表3-1所示,试通过线性回归模型分析预测这两组数据之间的关系。
【解】 首先,将表3-1中的样本数据可视化,即将表中数据以点的形式展现在二维坐标系中,如图3-1所示。通过考察这些点的位置分布,不难发现它们基本上成直线排列。为此可用直线方程表示月广告费 s i 与月销售量 t i 之间的关系,即有: f ( s )= as + b 。
表3-1 月广告费与月销售量数据
令特征提取函数为 x 1 = ψ 1 ( s )= s , x 2 = ψ 2 ( s )=1,则样本 s i 可表示为特征向量( s i ,1) T ,令 y = t , w =( a , b ) T ,则可将表3-1中的 s i 和 t i 值代入公式 w =( A T A ) -1 A T y 中,算出 w =(0.968,0.191) T ,得到所求线性回归模型 f ( s )=0.968 s +0.191。图3-2展示了该模型对数据的拟合效果,可用该模型就广告费与销售量之间的关系做短期预测。例如,已知即将投入的广告费用,可大致预测出相应的销售量。
图3-1 广告费与销售量数据
图3-2 线性回归模型
由以上分析可知,线性回归模型的初始模型是若干以样本特征提取函数为基函数的线性组合,在构造线性回归模型完成机器学习回归任务时,首先必须通过一定的先验经验或专业知识构造出若干特征提取函数,然后通过最小化损失函数的优化计算实现对线性回归模型参数向量 w 的求解,获得性能提升的线性回归模型。
需要注意的是,上述线性模型回归参数的求解方法只有在 A T A 是可逆矩阵的条件下才能获得唯一解。然而,当矩阵 A 的行向量之间存在一定的线性相关性时,即不同样本之间的属性标记值存在一定的线性相关性时,就会使得矩阵 A T A 不可逆。自变量之间存在线性相关情况,在统计学中称为 多重共线现象 。
事实上,自变量之间的线性相关不仅会造成矩阵 A T A 不可逆,而且在 A T A 可逆的情况下,也有可能导致对参数向量 w 的计算的不稳定,即样本数据的微小变化会导致参数 w 计算结果的巨大波动。此时,使用不同训练样本获得的回归模型之间会产生很大的差异,使得回归模型缺少泛化能力。因此,需要对上述线性回归参数的求解方法进行改进,从而有效解决多重共线现象带来的问题,下面介绍一种名为 岭回归 的改进方法。
岭回归方法的基本思想是:既然共线现象会导致参数估计值变化非常大,那么就在现有线性回归模型损失函数上增加一个针对 w 的范数惩罚函数,通过对目标函数做正则化处理,将参数向量 w 中所有参数的取值压缩到一个相对较小的范围,即要求 w 中所有参数的取值不能过大,由此可以得到如下用于岭回归的损失函数
其中, λ ≥0称为正则化参数。
当 λ 的取值较大时,惩罚项 λw T w 就会对损失函数的最小化产生一定的干扰,此时优化算法就会对回归模型参数 w 赋予较小的取值以消除这种干扰。因此,正则化参数 λ 的较大取值会对模型参数 w 的取值产生一定的抑制作用。 λ 的值越大, w 的取值就会越小,共线性的影响也越小,当 λ =0时,即退化为传统线性回归方法。
令 J ( w )对参数 w 的偏导数为0,可得 w =( A T A + λI ) -1 A T y 。其中, I 为 m 阶单位矩阵。这样即使 A T A 本身不是可逆矩阵,加上 λI 也可使 A T A + λI 组成可逆矩阵。
岭回归方法采用参数向量 w 的 L 2 范数作为惩罚函数,具有便于计算和数学分析的优点。然而当参数个数较多时,需要将重要参数赋予较大的值,不太重要的参数赋予较少的值,甚至对某些参数赋零值。此时需用其他范数作为惩罚函数对目标函数做正则化处理。例如,使用参数向量的 L 1 范数作为惩罚函数,可以得到Lasso回归及相关算法,这里不再赘述。
日常生活和工作中经常会遇到一些分类问题,例如,有时需要将产品按质量分为优等品、合格品和次品,将公司客户分为贵宾客户和普通客户等。可以使用有监督的机器学习方式实现分类任务,即根据有标注样本数据训练出相应的分类模型,然后根据分类模型实现对新样本的自动分类。显然,如果回归模型的预测输出是离散值而不是连续值,则机器学习的回归预测事实上就实现了分类效果。因此,只要将线性回归模型输出的连续值进行离散化,就可以将线性回归模型改造成相应的线性分类模型。所谓线性分类模型,就是基于线性模型的分类模型,通常亦称为 线性分类器 。使用线性回归模型构造线性分类器的关键在于如何将线性回归模型输出的连续性取值进行离散化。
最直接的想法是将线性回归模型输出值的取值范围划分为有限个不相交区间,每个区间表示一个类别,由此实现模型连续值输出的离散化。这相当于使用跃阶函数对线性回归模型的输出值进行激活函数映射。然而,跃阶函数为不连续函数,直接在模型中引入跃阶函数不便于进行数学分析。因此,需要设计一些具有良好数学性质的激活函数来替代跃阶函数,以实现对连续值的离散化。下面以二值分类任务为例,介绍激活函数及分类模型的设计方法。
对于任意给定的一个线性回归模型 f ( X )= w T X ,其中 X =( x 1 , x 2 ,…, x m ) T 为待分类样本,二值分类任务的目标是将模型预测值 f ( X )划分为0/1两个值,即将样本 X 划分为正例或反例这两种类型之一。图3-3表示使用该线性回归模型完成二值分类任务的基本流程,其中激活函数 g ( f ( X ))的设计是实现二值分类任务的关键要点。
图3-3 基于线性回归模型的二值分类
显然,式(3-11)所表示的单位阶跃函数 g ( f ( X ))可以获得比较理想的二值分类效果,即当预测值 f ( X )大于零时将样本 X 划分为正例,当 f ( X )小于零时将样本 X 划分为反例, f ( X )为零时则将样本 X 随机划分为正例或反例中的任意一类。
然而,函数 g ( f ( X ))在跳跃点瞬间从0跳跃到1,这个瞬间跳跃过程有时在数学上很难处理,例如在优化计算时不适合进行求导运算。因此,希望能够使用一种与单位阶跃函数类似且具有良好单调可微性质的函数作为激活函数。
图3-4表示的Sigmoid函数满足上述条件且在数学上更易处理,使用Sigmoid函数作为线性回归模型激活函数的回归方法通常称为逻辑斯谛(Logistic) 回归 ,可通过逻辑斯谛回归实现二值分类效果。Sigmoid函数的数学表达式如下
图3-4 Sigmoid函数图像
a)较小尺度自变量情形 b)较大尺度自变量情形
当 x =0时,Sigmoid的函数值为0.5;随着 x 的增大,对应的Sigmoid值逼近于1;随着 x 的减小,Sigmoid值逼近于0。如果 x 轴的刻度足够大,Sigmoid函数就很接近于阶跃函数。图3-4a、b分别给出了Sigmoid函数在不同横坐标尺度下的函数图像。
令 g ( x )=Sigmoid( x ),则Sigmoid函数的导数 g′ ( x )= g ( x )[1- g ( x )]。将 f ( X )= w T X 作为自变量 x 代入 g ( x ),可以得到如下激活函数
令 H ( X )=Sigmoid( f ( X )),则 H ( X )是一个值域为(0,1)的函数,可将 H ( X )看成是一个关于 X 的概率分布,用于表示 X 为正例的概率,即: H ( X )的值越接近1,则 X 属于正例的可能性就越大; H ( X )的值越接近于0,则 X 属于正例的可能性就越小,属于反例的可能性就越大。也就是说,将 H ( X )定义为样本 X 在正例条件下 f ( X )=1的后验概率,即有
对于每个样本 X ,都希望线性分类模型对其分类的类别结果为其真实类别的概率越接近于1越好。具体地说,如果样本 X 为正例,希望 H ( X )值尽可能地接近1或者说越大越好;如果样本 X 为反例,希望 H ( X )值尽可能地接近0,即1- H ( X )的值越大越好。虽然在数学上难以精确地定量表示这个要求,但可用极大似然法对似然函数进行最优化计算以获得优化的模型参数向量 w ,使得所求的线性模型能够近似地满足上述要求。
对于由任意给定
n
个带标签样本构成的训练样本数据集
,其中,
y
i
表示
X
i
的标签。如果
X
i
为正例,则希望
P
(
y
i
=1|
X
i
;
w
)的值越大越好,即
的值越大越好;如果 X i 为反例,则希望 P ( y i =0| X i ; w )的值越大越好,即
的值越大越好。由于 y i 的两个取值状态为互补,故可将上述两式结合起来,即有
此时,无论
X
i
为反例还是正例,都希望
P
(
y
i
|
X
i
;
w
)的值越大越好。由此可得
H
(
X
)在数据集
上的似然函数
l
为方便计算,将上式两边取对数,得到
可将 L 作为目标函数,通过求解如下最优化问题获得所求模型参数向量 w
在机器学习的具体应用中,可以在线性分类模型的目标函数中加入适当范数惩罚项,通过正则化方式消除模型对样本数据的过拟合。这与前述线性回归模型类似,不再赘述。
【例题3.2】 假设确定某产品是否为次品由两个质量指标 x 1 和 x 2 决定,由于包装人员粗心,将次品和合格品混合在一起。现取100个具有人工标注的样品,表3-2是这些样品的具体数据(其中, y =1表示合格品, y =0表示次品)。试用表3-2所示数据集合构造一个可用于对产品进行次品与合格品分类的线性分类模型。
表3-2 某产品质量指标
【解】 这是一个二分类问题,建立线性模型 f ( x 1 , x 2 , x 3 )= w 1 x 1 + w 2 x 2 + w 3 x 3 。将 w 3 置为线性模型的偏置项,即令 x 3 恒等于1,则有
令 w =( w 1 , w 2 , w 3 ) T , X i =( x 1 i , x 2 i , x 3 i ) T , i =1,2,…,60。通过梯度下降算法求解如下似然函数的最优化问题
通过编程计算,解得 w =(4.125,0.48,-0.618) T 。由此得到如下分类模型
有了分类模型,对于任意一个产品,只要知道该产品的质量指标 x 1 和 x 2 ,就可以根据上述所求分类模型算出该产品为合格品的概率。
现在介绍另外一种名为 线性判别分析 (Linear Discriminant Analysis,LDA)的分类方法,该方法也是基于线性模型实现机器学习分类任务,即训练构造一种线性分类器,有时亦称为 Fisher线性判别 (Fisher Linear Discriminant,FLD)方法。
线性判别分析的基本思想是在特征空间中寻找一个合适的投影轴或投影直线,并将样本的特性向量投影到该投影直线,使得样本在该投影直线上易于分类。具体地说,对于给定训练样例集,设法将训练样本投影到如图3-5所示的一种具有合适方向的直线 f ( X )= w T X 上,使得该直线上同类样例的投影点尽可能接近,而异类样例的投影点则尽可能远离。这样在对新样本进行分类时,可将其投影到该直线上并根据投影点位置确定其类别。
由于不同方向的投影直线会产生不同的投影效果,故投影直线方向的选择是线性判别分析方法的关键。例如,图3-6a、b是两个不同投影方向的示意图,显然图3-6b的投影效果比较好,可以有效实现对不同类别样本点的分离。
图3-5 样本点在投影轴上的投影效果
图3-6 不同投影方向的投影效果
a)非最佳投影方向 b)最佳投影方向
对于给定带标注训练样本数据集
,假设
D
中有且仅有两类样本,其中:
为第一类样本,
k
=1,2,…,
n
1
;
为第二类样本,
t
=1,2,…,
n
2
。需要找到一条合适的投影直线
f
(
X
)=
w
T
X
,使得同类样本在该直线上的投影点尽可能接近且异类样本在该直线上的投影点尽可能远离。为此,首先需要分别计算这两类样本的映像在投影直线上的中心值或均值,由此获得异类样本映射在投影直线上分布的位置差异。
令
和
分别表示第一类和第二类样本投影在直线
f
(
X
)=
w
T
X
上的中心值,则有
其中,
和
分别表示第一类样本和第二类样本的中心点坐标,即平均坐标值。
令
,则只要选择适当的参数向量
w
,使得
L
(
w
)的值尽可能大,就能实现异类样本在直线
f
(
X
)=
w
T
X
上的投影点尽可能远离。
对属于同一类的某类样本,可用该类样本的散列值表示它们在直线
f
(
X
)=
w
T
X
上投影点的离散程度。所谓某类样本的
散列值
,就是该类所有样本在直线
f
(
X
)=
w
T
X
上投影值与该类样本在该直线上平均投影值之间的平方误差总和。对于数据集
D
,令
和
分别表示第一类样本和第二类样本的散列值,则有
显然,散列值可以用来表示样本在直线 f ( X )= w T X 上投影点分布的密集程度:散列值越大,投影点的分布越分散;反之,投影点的分布越集中。
令
,则只要选择适当的参数向量
w
,使得
S
(
w
)的值尽可能地小,就能实现同类样本在直线
f
(
X
)=
w
T
X
上的投影点尽可能接近。
令
,则投影直线的选择就转化为以
J
(
w
)为目标函数的最优化问题,即寻找使
J
(
w
)值最大的参数向量
w
,并将其作为投影直线
f
(
X
)=
w
T
X
的参数。
首先,考察 J ( w )的分子
其中,
称为
类间散度矩阵
。
再考察 J ( w )的分母
其中,
称 S 1 为第一类的 散列矩阵 。
同理,有
,其中
称 S 2 为第二类的 散列矩阵 。
令 S w = S 1 + S 2 ,将 S w 称为 类内散度矩阵 ,则可将 J ( w )转化为
在求 J ( w )的最大值之前,需要对分母进行归一化处理。为此,令| w T S w w |=1,则求 J ( w )的最大值等价于求解如下条件极值问题
引入拉格朗日乘子: C ( w )= w T S b w - λ ( w T S w w - 1 ),并令 C ( w )对 w 的导数为零,得
如果 S w 可逆,则有
不难看出,
w
是矩阵
的特征向量。又因为
,故有
其中,
为常数。
综合式(3-19)和式(3-20),可得
由于对 w 伸缩任何常数倍都不会改变投影方向,故可略去未知常数 λ 和 λ w ,得到
至此,只需要算出训练样本的均值和类内散度矩阵,就可获得最佳投影直线。以上求解过程针对二分类问题,可类似求解多分类问题。
【例题3.3】 假设某产品是否合格取决于 a 、 b 这两项质量指标,表3-3表示10个带标注训练样本,试用线性判别分析方法建立产品质量线性分类器。
表3-3 某产品质量指标
【解】 可以将表3-3中的样本数据分为合格与不合格这两类,即
合格类: Ф 1 ={ X 1 , X 2 , X 3 , X 4 , X 5 }={(4,2) T ,(2,4) T ,(2,3) T ,(3,6) T ,(4,4) T }
不合格类:
Ф
2
={
X
6
,
X
7
,
X
8
,
X
9
,
X
10
}={(9,10)
T
,(6,8)
T
,(9,5)
T
,(8,7)
T
,(10,8)
T
}算出这两类样本的均值
和
。再算出这两类样本的散列矩阵
由 S 1 和 S 2 进一步算出类内散度矩阵 S w
最后,根据公式
算出参数向量
w
得到最佳投影直线: f ( X )= f ( a , b )=0.9088 a +0.4173 b 。对于任意一个产品对象,若已知该产品的质量指标 X =( a , b ) T ,则可将其投影到该直线上实现质量分类。
线性判别分析将原始的高维数据投影到合适的投影直线上完成分类任务,可将投影直线直接推广到一般低维超平面。事实上,线性判别分析实现了一种对高维数据进行降维的效果。因此,线性判别分析还常用于数据降维以实现特征提取,这里不再赘述。