[!IMPORTANT]
参与组队学习的同学须知:
本章学习时间:线性回归3天+对数几率回归3天+线性判别分析3天,共计9天
本章配套视频教程:
一元线性回归:https://www.bilibili.com/video/BV1Mh411e7VU?p=3
多元线性回归:https://www.bilibili.com/video/BV1Mh411e7VU?p=4
对数几率回归:https://www.bilibili.com/video/BV1Mh411e7VU?p=5
线性判别分析:https://www.bilibili.com/video/BV1Mh411e7VU?p=6
本章配套代码:https://github.com/datawhalechina/machine-learning-toy-code/blob/main/%E8%A5%BF%E7%93%9C%E4%B9%A6%E4%BB%A3%E7%A0%81%E5%AE%9E%E6%88%98.md
本章配套代码视频教程:https://space.bilibili.com/431850986/lists/3884942
第3章 线性模型
作为"西瓜书"介绍机器学习模型的开篇,线性模型也是机器学习中最为基础的模型,很多复杂模型均可认为由线性模型衍生而得,无论是曾经红极一时的支持向量机还是如今万众瞩目的神经网络,其中都有线性模型的影子。
本章的线性回归和对数几率回归分别是回归和分类任务上常用的算法,因此属于重点内容,线性判别分析不常用,但是其核心思路和后续第10章将会讲到的经典降维算法主成分分析相同,因此也属于重点内容,且两者结合在一起看理解会更深刻。
3.1 基本形式
第1章的1.2基本术语中讲述样本的定义时,我们说明了"西瓜书"和本书中向量的写法,当向量中的元素用分号";"分隔时表示此向量为列向量,用逗号","分隔时表示为行向量。因此,式(3.2)中w=(w1;w2;...;wd)和x=(x1;x2;...;xd)均为d行1列的列向量。
3.2 线性回归
3.2.1 属性数值化
为了能进行数学运算,样本中的非数值类属性都需要进行数值化。对于存在"序"关系的属性,可通过连续化将其转化为带有相对大小关系的连续值;对于不存在"序"关系的属性,可根据属性取值将其拆解为多个属性,例如"西瓜书"中所说的"瓜类"属性,可将其拆解为"是否是西瓜"、"是否是南瓜"、"是否是黄瓜"3个属性,其中每个属性的取值为1或0,1表示"是",0表示"否"。具体地,假如现有3个瓜类样本:x1=(甜度=高;瓜类=西瓜),x2=(甜度=中;瓜类=南瓜),x3=(甜度=低;瓜类=黄瓜),其中"甜度"属性存在序关系,因此可将"高"、"中"、"低"转化为{1.0,0.5,0.0},"瓜类"属性不存在序关系,则按照上述方法进行拆解,3个瓜类样本数值化后的结果为:x1=(1.0;1;0;0),x1=(0.5;0;1;0),x1=(0.0;0;0;1)。
以上针对样本属性所进行的处理工作便是第1章1.2基本术语中提到的"特征工程"范畴,完成属性数值化以后通常还会进行缺失值处理、规范化、降维等一系列处理工作。由于特征工程属于算法实践过程中需要掌握的内容,待学完机器学习算法以后,再进一步学习特征工程相关知识即可,在此先不展开。
3.2.2 式(3.4)的解释
下面仅针对式(3.4)中的数学符号进行解释。首先解释一下符号"argmin",其中"arg"是"argument"(参数)的前三个字母,"min"
是"minimum"(最小值)的前三个字母,该符号表示求使目标函数达到最小值的参数取值。例如式(3.4)表示求出使目标函数∑i=1m(yi−wxi−b)2达到最小值的参数取值(w∗,b∗),注意目标函数是以(w,b)为自变量的函数,(xi,yi)均是已知常量,即训练集中的样本数据。
类似的符号还有"min",例如将式(3.4)改为
(w,b)mini=1∑m(yi−wxi−b)2
则表示求目标函数的最小值。对比知道,"min"和"argmin"的区别在于,前者输出目标函数的最小值,而后者输出使得目标函数达到最小值时的参数取值。
若进一步修改式(3.4)为
(w,b)mins.t.i=1∑m(yi−wxi−b)2w>0,b<0.
则表示在w>0,b<0范围内寻找目标函数的最小值,"s.t."是"subject
to"的简写,意思是"受约束于",即为约束条件。
以上介绍的符号都是应用数学领域的一个分支------"最优化"中的内容,若想进一步了解可找一本最优化的教材(例如参考文献[1])进行系统性地学习。
3.2.3 式(3.5)的推导
"西瓜书"在式(3.5)左侧给出的凸函数的定义是最优化中的定义,与高等数学中的定义不同,本书也默认采用此种定义。由于一元线性回归可以看作是多元线性回归中元的个数为1时的情形,所以此处暂不给出E(w,b)是关于w和b的凸函数的证明,在推导式(3.11)时一并给出,下面开始推导式(3.5)。
已知E(w,b)=i=1∑m(yi−wxi−b)2,所以
∂w∂E(w,b)=∂w∂[i=1∑m(yi−wxi−b)2]=i=1∑m∂w∂[(yi−wxi−b)2]=i=1∑m[2⋅(yi−wxi−b)⋅(−xi)]=i=1∑m[2⋅(wxi2−yixi+bxi)]=2⋅(wi=1∑mxi2−i=1∑myixi+bi=1∑mxi)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)
3.2.4 式(3.6)的推导
已知E(w,b)=i=1∑m(yi−wxi−b)2,所以
∂b∂E(w,b)=∂b∂[i=1∑m(yi−wxi−b)2]=i=1∑m∂b∂[(yi−wxi−b)2]=i=1∑m[2⋅(yi−wxi−b)⋅(−1)]=i=1∑m[2⋅(b−yi+wxi)]=2⋅[i=1∑mb−i=1∑myi+i=1∑mwxi]=2(mb−i=1∑m(yi−wxi))
3.2.5 式(3.7)的推导
推导之前先重点说明一下"闭式解"或称为"解析解"。闭式解是指可以通过具体的表达式解出待解参数,例如可根据式(3.7)直接解得w。机器学习算法很少有闭式解,线性回归是一个特例,接下来推导式(3.7)。
令式(3.5)等于0
0=wi=1∑mxi2−i=1∑m(yi−b)xi
wi=1∑mxi2=i=1∑myixi−i=1∑mbxi
由于令式(3.6)等于0可得b=m1∑i=1m(yi−wxi),又因为m1∑i=1myi=yˉ,m1∑i=1mxi=xˉ,则b=yˉ−wxˉ,代入上式可得
wi=1∑mxi2wi=1∑mxi2w(i=1∑mxi2−xˉi=1∑mxi)w=i=1∑myixi−i=1∑m(yˉ−wxˉ)xi=i=1∑myixi−yˉi=1∑mxi+wxˉi=1∑mxi=i=1∑myixi−yˉi=1∑mxi=∑i=1mxi2−xˉ∑i=1mxi∑i=1myixi−yˉ∑i=1mxi
将yˉ∑i=1mxi=m1∑i=1myi∑i=1mxi=xˉ∑i=1myi和xˉ∑i=1mxi=m1∑i=1mxi∑i=1mxi=m1(∑i=1mxi)2代入上式,即可得式(3.7):
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−xˉ)
如果要想用Python来实现上式的话,上式中的求和运算只能用循环来实现。但是如果能将上式向量化,也就是转换成矩阵(即向量)运算的话,我们就可以利用诸如NumPy这种专门加速矩阵运算的类库来进行编写。下面我们就尝试将上式进行向量化。
将m1(∑i=1mxi)2=xˉ∑i=1mxi代入分母可得
w=∑i=1mxi2−xˉ∑i=1mxi∑i=1myi(xi−xˉ)=∑i=1m(xi2−xixˉ)∑i=1m(yixi−yixˉ)
又因为yˉ∑i=1mxi=xˉ∑i=1myi=∑i=1myˉxi=∑i=1mxˉyi=mxˉyˉ=∑i=1mxˉyˉ且∑i=1mxixˉ=xˉ∑i=1mxi=xˉ⋅m⋅m1⋅∑i=1mxi=mxˉ2=∑i=1mxˉ2,则有
w=∑i=1m(xi2−xixˉ−xixˉ+xˉ2)∑i=1m(yixi−yixˉ−xiyˉ+xˉyˉ)=∑i=1m(xi−xˉ)2∑i=1m(xi−xˉ)(yi−yˉ)
若令x=(x1;x2;...;xm),xd=(x1−xˉ;x2−xˉ;...;xm−xˉ)为去均值后的x;y=(y1;y2;...;ym),yd=(y1−yˉ;y2−yˉ;...;ym−yˉ)为去均值后的y, (x、xd、y、yd均为m行1列的列向量) 代入上式可得
w=xdTxdxdTyd
3.2.6 式(3.9)的推导
式(3.4)是最小二乘法运用在一元线性回归上的情形,那么对于多元线性回归来说,我们可以类似得到
(w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m(yi−f(xi))2=(w,b)argmini=1∑m(yi−(wTxi+b))2
为便于讨论,我们令w^=(w;b)=(w1;...;wd;b)∈R(d+1)×1,x^i=(xi1;...;xid;1)∈R(d+1)×1,那么上式可以简化为
w^∗=w^argmini=1∑m(yi−w^Tx^i)2=w^argmini=1∑m(yi−x^iTw^)2
根据向量内积的定义可知,上式可以写成如下向量内积的形式
w^∗=w^argmin[y1−x^1Tw^⋯ym−x^mTw^]y1−x^1Tw^⋮ym−x^mTw^
其中
y1−x^1Tw^⋮ym−x^mTw^=y1⋮ym−x^1Tw^⋮x^mTw^=y−x^1T⋮x^mT⋅w^=y−Xw^
所以
w^∗=w^argmin(y−Xw^)T(y−Xw^)
3.2.7 式(3.10)的推导
将Ew^=(y−Xw^)T(y−Xw^)展开可得
Ew^=yTy−yTXw^−w^TXTy+w^TXTXw^
对w^求导可得
∂w^∂Ew^=∂w^∂yTy−∂w^∂yTXw^−∂w^∂w^TXTy+∂w^∂w^TXTXw^
由矩阵微分公式∂x∂aTx=∂x∂xTa=a,∂x∂xTAx=(A+AT)x (更多矩阵微分公式可查阅[2],矩阵微分原理可查阅[3]) 可得
∂w^∂Ew^=0−XTy−XTy+(XTX+XTX)w^=2XT(Xw^−y)
3.2.8 式(3.11)的推导
首先铺垫讲解接下来以及后续内容将会用到的多元函数相关基础知识[1]。
n元实值函数:含n个自变量,值域为实数域R的函数称为n元实值函数,记为f(x),其中x=(x1;x2;...;xn)为n维向量。"西瓜书"和本书中的多元函数未加特殊说明均为实值函数。
凸集:设集合D⊂Rn为n维欧式空间中的子集,如果对D中任意的n维向量x∈D和y∈D与任意的α∈[0,1],有
αx+(1−α)y∈D
则称集合D是凸集。凸集的几何意义是:若两个点属于此集合,则这两点连线上的任意一点均属于此集合。常见的凸集有空集∅,整个n维欧式空间Rn。
凸函数:设D⊂Rn是非空凸集,f是定义在D上的函数,如果对任意的x1,x2∈D,α∈(0,1),均有
f(αx1+(1−α)x2)⩽αf(x1)+(1−α)f(x2)
则称f为D上的凸函数。若其中的⩽改为<也恒成立,则称f为D上的严格凸函数。
梯度:若n元函数f(x)对x=(x1;x2;...;xn)中各分量xi的偏导数∂xi∂f(x)(i=1,2,...,n)都存在,则称函数f(x)在x处一阶可导,并称以下列向量
∇f(x)=∂x∂f(x)=∂x1∂f(x)∂x2∂f(x)⋮∂xn∂f(x)
为函数f(x)在x处的一阶导数或梯度,易证梯度指向的方向是函数值增大速度最快的方向。∇f(x)也可写成行向量形式
∇f(x)=∂xT∂f(x)=[∂x1∂f(x),∂x2∂f(x),⋯,∂xn∂f(x)]
我们称列向量形式为"分母布局",行向量形式为"分子布局",由于在最优化中习惯采用分母布局,因此"西瓜书"以及本书中也采用分母布局。为了便于区分当前采用何种布局,通常在采用分母布局时偏导符号∂后接的是x,采用分子布局时后接的是xT。
Hessian矩阵:若n元函数f(x)对x=(x1;x2;...;xn)中各分量xi的二阶偏导数∂xi∂xj∂2f(x)(i=1,2,...,n;j=1,2,...,n)都存在,则称函数f(x)在x处二阶阶可导,并称以下矩阵
∇2f(x)=∂x∂xT∂2f(x)=∂x12∂2f(x)∂x2∂x1∂2f(x)⋮∂xn∂x1∂2f(x)∂x1∂x2∂2f(x)∂x22∂2f(x)⋮∂xn∂x2∂2f(x)⋯⋯⋱⋯∂x1∂xn∂2f(x)∂x2∂xn∂2f(x)⋮∂xn2∂2f(x)
为函数f(x)在x处的二阶导数或Hessian矩阵。若其中的二阶偏导数均连续,则
∂xi∂xj∂2f(x)=∂xj∂xi∂2f(x)
此时Hessian矩阵为对称矩阵。
定理3.1:设D⊂Rn是非空开凸集,f(x)是定义在D上的实值函数,且f(x)在D上二阶连续可微,如果f(x)的Hessian矩阵∇2f(x)在D上是半正定的,则f(x)是D上的凸函数;如果∇2f(x)在D上是正定的,则f(x)是D上的严格凸函数。
定理3.2:若f(x)是凸函数,且f(x)一阶连续可微,则x∗是全局解的充分必要条件是其梯度等于零向量,即∇f(x∗)=0。
式(3.11)的推导思路如下:首先根据定理3.1推导出Ew^是w^的凸函数,接着根据定理3.2推导出式(3.11)。下面按照此思路进行推导。
由于式(3.10)已推导出Ew^关于w^的一阶导数,接着基于此进一步推导出二阶导数,即Hessian矩阵。推导过程如下:
∇2Ew^=∂w^T∂(∂w^∂Ew^)=∂w^T∂[2XT(Xw^−y)]=∂w^T∂(2XTXw^−2XTy)
由矩阵微分公式xT∂Ax=A可得
∇2Ew^=2XTX
如"西瓜书"中式(3.11)上方的一段话所说,假定XTX为正定矩阵,根据定理3.1可知此时Ew^是w^的严格凸函数,接着根据定理3.2可知只需令Ew^关于w^的一阶导数等于零向量,即令式(3.10)等于零向量即可求得全局最优解w^∗,具体求解过程如下:
∂w^∂Ew^=2XT(Xw^−y)=0
2XTXw^−2XTy=0
2XTXw^=2XTy
w^=(XTX)−1XTy
令其为w^∗即为式(3.11)。
由于X是由样本构成的矩阵,而样本是千变万化的,因此无法保证XTX一定是正定矩阵,极易出现非正定的情形。当XTX非正定矩阵时,除了"西瓜书"中所说的引入正则化外,也可用XTX的伪逆矩阵代入式(3.11)求解出w^∗,只是此时并不保证求解得到的w^∗一定是全局最优解。除此之外,也可用下一节将会讲到的"梯度下降法"求解,同样也不保证求得全局最优解。
3.3 对数几率回归
对数几率回归的一般使用流程如下:首先在训练集上学得模型
y=1+e−(wTx+b)1
然后对于新的测试样本xi,将其代入模型得到预测结果yi,接着自行设定阈值θ,通常设为θ=0.5,如果yi⩾θ则判xi为正例,反之判为反例。
3.3.1 式(3.27)的推导
将式(3.26)代入式(3.25)可得
ℓ(β)=i=1∑mln(yip1(x^i;β)+(1−yi)p0(x^i;β))
其中p1(x^i;β)=1+eβTx^ieβTx^i,p0(x^i;β)=1+eβTx^i1,代入上式可得
ℓ(β)=i=1∑mln(1+eβTx^iyieβTx^i+1−yi)=i=1∑m(ln(yieβTx^i+1−yi)−ln(1+eβTx^i))
由于yi=0或1,则
ℓ(β)={∑i=1m(−ln(1+eβTx^i)),∑i=1m(βTx^i−ln(1+eβTx^i)),yi=0yi=1
两式综合可得
ℓ(β)=i=1∑m(yiβTx^i−ln(1+eβTx^i))
由于此式仍为极大似然估计的似然函数,所以最大化似然函数等价于最小化似然函数的相反数,即在似然函数前添加负号即可得式(3.27)。值得一提的是,若将式(3.26)改写为p(yi∣xi;w,b)=[p1(x^i;β)]yi[p0(x^i;β)]1−yi,再代入式(3.25)可得
ℓ(β)=i=1∑mln([p1(x^i;β)]yi[p0(x^i;β)]1−yi)=i=1∑m[yiln(p1(x^i;β))+(1−yi)ln(p0(x^i;β))]=i=1∑m{yi[ln(p1(x^i;β))−ln(p0(x^i;β))]+ln(p0(x^i;β))}=i=1∑m[yiln(p0(x^i;β)p1(x^i;β))+ln(p0(x^i;β))]=i=1∑m[yiln(eβTx^i)+ln(1+eβTx^i1)]=i=1∑m(yiβTx^i−ln(1+eβTx^i))
显然,此种方式更易推导出式(3.27)。
"西瓜书"在式(3.27)下方有提到式(3.27)是关于β的凸函数,其证明过程如下:由于若干半正定矩阵的加和仍为半正定矩阵,则根据定理3.1可知,若干凸函数的加和仍为凸函数。因此,只需证明式(3.27)求和符号后的式子−yiβTx^i+ln(1+eβTx^i)(记为f(β))为凸函数即可。根据式(3.31)可知,f(β)的二阶导数,即Hessian矩阵为
x^ix^iTp1(x^i;β)(1−p1(x^i;β))
对于任意非零向量y∈Rd+1,恒有
yT⋅x^ix^iTp1(x^i;β)(1−p1(x^i;β))⋅y
yTx^ix^iTyp1(x^i;β)(1−p1(x^i;β))
(yTx^i)2p1(x^i;β)(1−p1(x^i;β))
由于p1(x^i;β)>0,因此上式恒大于等于0,根据半正定矩阵的定义可知此时f(β)的Hessian矩阵为半正定矩阵,所以f(β)是关于β的凸函数。
不同于式(3.7)可求得闭式解,式(3.27)中的β没有闭式解,因此需要借助其他工具进行求解。求解使得式(3.27)取到最小值的β属于最优化中的"无约束优化问题",在无约束优化问题中最常用的求解算法有"梯度下降法"和"牛顿法"[1],下面分别展开讲解。
梯度下降法是一种迭代求解算法,其基本思路如下:先在定义域中随机选取一个点x0,将其代入函数f(x)并判断此时f(x0)是否是最小值,如果不是的话,则找下一个点x1,且保证f(x1)<f(x0),然后接着判断f(x1)是否是最小值,如果不是的话则重复上述步骤继续迭代寻找x2、x3、......直到找到使得f(x)取到最小值的x∗。
显然,此算法要想行得通就必须解决在找到第t个点xt时,能进一步找到第t+1个点xt+1,且保证f(xt+1)<f(xt)。梯度下降法利用"梯度指向的方向是函数值增大速度最快的方向"这一特性,每次迭代时朝着梯度的反方向进行,进而实现函数值越迭代越小,下面给出完整的数学推导过程。
根据泰勒公式可知,当函数f(x)在xt处一阶可导时,在其邻域内进行一阶泰勒展开恒有
f(x)=f(xt)+∇f(xt)T(x−xt)+o(x−xt)
其中∇f(xt)是函数f(x)在点xt处的梯度,∥x−xt∥是指向量x−xt的模。若令x−xt=adt,其中a>0,dt是模长为1的单位向量,则上式可改写为
f(xt+adt)=f(xt)+a∇f(xt)Tdt+o(dt)
f(xt+adt)−f(xt)=a∇f(xt)Tdt+o(dt)
观察上式可知,如果能保证a∇f(xt)Tdt<0,则一定能保证f(xt+adt)<f(xt),此时再令xt+1=xt+adt,即可推得我们想要的f(xt+1)<f(xt)。所以,此时问题转化为了求解能使得a∇f(xt)Tdt<0的dt,且a∇f(xt)Tdt比0越小,相应地f(xt+1)也会比f(xt)越小,也更接近最小值。
根据向量的内积公式可知
a∇f(xt)Tdt=a×∥∇f(xt)∥×∥dt∥×cosθt
其中θt是向量∇f(xt)与向量dt之间的夹角。观察上式易知,此时∥∇f(xt)∥是固定常量,∥dt∥=1,所以当a也固定时,取θt=π,即向量dt与向量∇f(xt)的方向刚好相反时,上式取到最小值。通常为了精简计算步骤,可直接令dt=−∇f(xt),因此便得到了第t+1个点xt+1的迭代公式
xt+1=xt−a∇f(xt)
其中a也称为"步长"或"学习率",是需要自行设定的参数,且每次迭代时可取不同值。
除了需要解决如何找到xt+1以外,梯度下降法通常还需要解决如何判断当前点是否使得函数取到了最小值,否则的话迭代过程便可能会无休止进行。常用的做法是预先设定一个极小的阈值ϵ,当某次迭代造成的函数值波动已经小于ϵ时,即∣f(xt+1)−f(xt)∣<ϵ,我们便近似地认为此时f(xt+1)取到了最小值。
3.3.3 牛顿法
同梯度下降法,牛顿法也是一种迭代求解算法,其基本思路和梯度下降法一致,只是在选取第t+1个点xt+1时所采用的策略有所不同,即迭代公式不同。梯度下降法每次选取xt+1时,只要求通过泰勒公式在xt的邻域内找到一个函数值比其更小的点即可,而牛顿法则期望在此基础之上,xt+1还必须是xt的邻域内的极小值点。
类似一元函数取到极值点的必要条件是一阶导数等于0,多元函数取到极值点的必要条件是其梯度等于零向量0,为了能求解出xt的邻域内梯度等于0的点,需要进行二阶泰勒展开,其展开式如下
f(x)=f(xt)+∇f(xt)T(x−xt)+21(x−xt)T∇2f(xt)(x−xt)+o(x−xt)
为了后续计算方便,我们取其近似形式
f(x)≈f(xt)+∇f(xt)T(x−xt)+21(x−xt)T∇2f(xt)(x−xt)
首先对上式求导
∂x∂f(x)=∂x∂f(xt)+∂x∂∇f(xt)T(x−xt)+21∂x∂(x−xt)T∇2f(xt)(x−xt)=0+∇f(xt)+21(∇2f(xt)+∇2f(xt)T)(x−xt)
假设函数f(x)在xt处二阶可导,且偏导数连续,则∇2f(xt)是对称矩阵,上式可写为
∂x∂f(x)=0+∇f(xt)+21×2×∇2f(xt)(x−xt)=∇f(xt)+∇2f(xt)(x−xt)
令上式等于0
∇f(xt)+∇2f(xt)(x−xt)=0
当∇2f(xt)是可逆矩阵时,解得
x=xt−[∇2f(xt)]−1∇f(xt)
令上式为xt+1即可得到牛顿法的迭代公式
xt+1=xt−[∇2f(xt)]−1∇f(xt)
通过上述推导可知,牛顿法每次迭代时需要求解Hessian矩阵的逆矩阵,该步骤计算量通常较大,因此有人基于牛顿法,将其中求Hessian矩阵的逆矩阵改为求计算量更低的近似逆矩阵,我们称此类算法为"拟牛顿法"。
牛顿法虽然期望在每次迭代时能取到极小值点,但是通过上述推导可知,迭代公式是根据极值点的必要条件推导而得,因此并不保证一定是极小值点。
无论是梯度下降法还是牛顿法,根据其终止迭代的条件可知,其都是近似求解算法,即使f(x)是凸函数,也并不一定保证最终求得的是全局最优解,仅能保证其接近全局最优解。不过在解决实际问题时,并不一定苛求解得全局最优解,在能接近全局最优甚至局部最优时通常也能很好地解决问题。
3.3.4 式(3.29)的解释
根据上述牛顿法的迭代公式可知,此式为式(3.27)应用牛顿法时的迭代公式。
3.3.5 式(3.30)的推导
∂β∂ℓ(β)=∂β∂∑i=1m(−yiβTx^i+ln(1+eβTx^i))=i=1∑m∂β∂(−yiβTx^i)+∂β∂ln(1+eβTx^i)=i=1∑m(−yix^i+1+eβTx^i1⋅x^ieβTx^i)=−i=1∑mx^i(yi−1+eβTx^ieβTx^i)=−i=1∑mx^i(yi−p1(x^i;β))
此式也可以进行向量化,令p1(x^i;β)=y^i,代入上式得
∂β∂ℓ(β)=−i=1∑mx^i(yi−y^i)=i=1∑mx^i(y^i−yi)=XT(y^−y)
其中y^=(y^1;y^2;...;y^m),y=(y1;y2;...;ym)。
3.3.6 式(3.31)的推导
继续对上述式(3.30)中倒数第二个等号的结果求导
∂β∂βT∂2ℓ(β)=−∂βT∂∑i=1mx^i(yi−1+eTx^ieβTx^i)=−i=1∑mx^i∂βT∂(yi−1+eβTx^ieβTx^i)=−i=1∑mx^i∂βT∂yi−∂βT∂(1+eβTx^ieβTx^i)=i=1∑mx^i⋅∂βT∂(1+eβTx^ieβTx^i)
根据矩阵微分公式∂xT∂aTx=∂xT∂xTa=aT,其中
∂βT∂(1+eβTx^ieβTx^i)=(1+eβTx^i)2∂βT∂eβTx^i⋅(1+eβTx^i)−eβTx^i⋅∂βT∂(1+eβTx^i)=(1+eβTx^i)2x^iTeβTx^i⋅(1+eβTx^i)−eβTx^i⋅x^iTeβTx^i=x^iTeβTx^i⋅(1+eβTx^i)2(1+eβTx^i)−eβTx^i=x^iTeβTx^i⋅(1+eβTx^i)21=x^iT⋅1+eβTx^ieβTx^i⋅1+eβTx^i1
所以
∂β∂βT∂2ℓ(β)=i=1∑mx^i⋅x^iT⋅1+eβTx^ieβTx^i⋅1+eβTx^i1=i=1∑mx^ix^iTp1(x^i;β)(1−p1(x^i;β))
3.4 线性判别分析
线性判别分析的一般使用流程如下:首先在训练集上学得模型
y=wTx
由向量内积的几何意义可知,y可以看作是x在w上的投影,因此在训练集上学得的模型能够保证训练集中的同类样本在w上的投影y很相近,而异类样本在w上的投影y很疏远。然后对于新的测试样本xi,将其代入模型得到它在w上的投影yi,然后判别这个投影yi与哪一类投影更近,则将其判为该类。
最后,线性判别分析也是一种降维方法,但不同于第10章介绍的无监督降维方法,线性判别分析是一种监督降维方法,即降维过程中需要用到样本类别标记信息。
3.4.1 式(3.32)的推导
式(3.32)中∥wTμ0−wTμ1∥22右下角的"2"表示求"2范数",向量的2范数即为模,右上角的"2"表示求平方数,基于此,下面推导式(3.32)。
J=wT(Σ0+Σ1)w∥wTμ0−wTμ1∥22=wT(Σ0+Σ1)w∥(wTμ0−wTμ1)T∥22=wT(Σ0+Σ1)w∥(μ0−μ1)Tw∥22=wT(Σ0+Σ1)w[(μ0−μ1)Tw]T(μ0−μ1)Tw=wT(Σ0+Σ1)wwT(μ0−μ1)(μ0−μ1)Tw
3.4.2 式(3.37)到式(3.39)的推导
由式(3.36),可定义拉格朗日函数为
L(w,λ)=−wTSbw+λ(wTSww−1)
对w求偏导可得
∂w∂L(w,λ)=−∂w∂(wTSbw)+λ∂w∂(wTSww−1)=−(Sb+SbT)w+λ(Sw+SwT)w
由于Sb=SbT,Sw=SwT,所以
∂w∂L(w,λ)=−2Sbw+2λSww
令上式等于0即可得
−2Sbw+2λSww=0
Sbw=λSww
(μ0−μ1)(μ0−μ1)Tw=λSww
若令(μ0−μ1)Tw=γ,则有
γ(μ0−μ1)=λSww
w=λγSw−1(μ0−μ1)
由于最终要求解的w不关心其大小,只关心其方向,所以其大小可以任意取值。又因为μ0和μ1的大小是固定的,所以γ的大小只受w的大小影响,因此可以通过调整w的大小使得γ=λ,西瓜书中所说的"不妨令Sbw=λ(μ0−μ1)"也可等价理解为令γ=λ,因此,此时λγ=1,求解出的w即为式(3.39)。
3.4.3 式(3.43)的推导
由式(3.40)、式(3.41)、式(3.42)可得
Sb=St−Sw=i=1∑m(xi−μ)(xi−μ)T−i=1∑Nx∈Xi∑(x−μi)(x−μi)T=i=1∑N(x∈Xi∑((x−μ)(x−μ)T−(x−μi)(x−μi)T))=i=1∑N(x∈Xi∑((x−μ)(xT−μT)−(x−μi)(xT−μiT)))=i=1∑N(x∈Xi∑(xxT−xμT−μxT+μμT−xxT+xμiT+μixT−μiμiT))=i=1∑N(x∈Xi∑(−xμT−μxT+μμT+xμiT+μixT−μiμiT))=i=1∑N(−x∈Xi∑xμT−x∈Xi∑μxT+x∈Xi∑μμT+x∈Xi∑xμiT+x∈Xi∑μixT−x∈Xi∑μiμiT)=i=1∑N(−miμiμT−miμμiT+miμμT+miμiμiT+miμiμiT−miμiμiT)=i=1∑N(−miμiμT−miμμiT+miμμT+miμiμiT)=i=1∑Nmi(−μiμT−μμiT+μμT+μiμiT)=i=1∑Nmi(μi−μ)(μi−μ)T
3.4.4 式(3.44)的推导
此式是式(3.35)的推广形式,证明如下。
设W=(w1,w2,...,wi,...,wN−1)∈Rd×(N−1),其中wi∈Rd×1为d行1列的列向量,则
⎩⎨⎧tr(WTSbW)tr(WTSwW)=i=1∑N−1wiTSbwi=i=1∑N−1wiTSwwi
所以式(3.44)可变形为
Wmax∑i=1N−1wiTSwwi∑i=1N−1wiTSbwi
对比式(3.35)易知,上式即式(3.35)的推广形式。
除了式(3.35)以外,还有一种常见的优化目标形式如下
Wmax∏i=1N−1wiTSwwi∏i=1N−1wiTSbwi=Wmaxi=1∏N−1wiTSwwiwiTSbwi
无论是采用何种优化目标形式,其优化目标只要满足"同类样例的投影点尽可能接近,异类样例的投影点尽可能远离"即可。
3.4.5 式(3.45)的推导
同式(3.35),此处也固定式(3.44)的分母为1,那么式(3.44)此时等价于如下优化问题
wmin s.t. −tr(WTSbW)tr(WTSwW)=1
根据拉格朗日乘子法,可定义上述优化问题的拉格朗日函数
L(W,λ)=−tr(WTSbW)+λ(tr(WTSwW)−1)
根据矩阵微分公式∂X∂ tr (XTBX)=(B+BT)X对上式关于W求偏导可得
∂W∂L(W,λ)=−∂W∂(tr(WTSbW))+λ∂W∂(tr(WTSwW)−1)=−(Sb+SbT)W+λ(Sw+SwT)W
由于Sb=SbT,Sw=SwT,所以
∂W∂L(W,λ)=−2SbW+2λSwW
令上式等于0即可得
−2SbW+2λSwW=0
SbW=λSwW
此即为式(3.45),但是此式在解释为何要取N−1个最大广义特征值所对应的特征向量来构成W时不够直观。因此,我们换一种更为直观的方式求解式(3.44),只需换一种方式构造拉格朗日函数即可。
重新定义上述优化问题的拉格朗日函数
L(W,Λ)=−tr(WTSbW)+tr(Λ(WTSwW−I))
其中,I∈R(N−1)×(N−1)为单位矩阵,Λ=diag(λ1,λ2,...,λN−1)∈R(N−1)×(N−1)是由N−1个拉格朗日乘子构成的对角矩阵。根据矩阵微分公式∂X∂tr(XTAX)=(A+AT)X,∂X∂tr(XAXTB)=∂X∂tr(AXTBX)=BTXAT+BXA,对上式关于W求偏导可得
∂W∂L(W,Λ)=−∂W∂(tr(WTSbW))+∂W∂(tr(ΛWTSwW−ΛI))=−(Sb+SbT)W+(SwTWΛT+SwWΛ)
由于Sb=SbT,Sw=SwT,ΛT=Λ,所以
∂W∂L(W,Λ)=−2SbW+2SwWΛ
令上式等于0即可得
−2SbW+2SwWΛ=0
SbW=SwWΛ
将W和Λ展开可得
Sbwi=λiSwwi,i=1,2,...,N−1
此时便得到了N−1个广义特征值问题。进一步地,将其代入优化问题的目标函数可得
Wmin−tr(WTSbW)=Wmaxtr(WTSbW)=Wmaxi=1∑N−1wiTSbwi=Wmaxi=1∑N−1λiwiTSwwi
由于存在约束tr(WTSwW)=i=1∑N−1wiTSwwi=1,所以欲使上式取到最大值,只需取N−1个最大的λi即可。根据Sbwi=λiSwwi可知,λi对应的便是广义特征值,wi是λi所对应的特征向量。(广义特征值的定义和常用求解方法可查阅[3])
对于N分类问题,一定要求出N−1个wi吗?其实不然。之所以将W定义为d×(N−1)维的矩阵是因为当d>(N−1)时,实对称矩阵Sw−1Sb的秩至多为N−1,所以理论上至多能解出N−1个非零特征值λi及其对应的特征向量wi。但是Sw−1Sb的秩是受当前训练集中的数据分布所影响的,因此并不一定为N−1。此外,当数据分布本身就足够理想时,即使能求解出多个wi,但是实际可能只需要求解出1个wi便可将同类样本聚集,异类样本完全分离。
当d>(N−1)时,实对称矩阵Sw−1Sb的秩至多为N−1的证明过程如下:由于μ=N1i=1∑Nmiμi,所以μ1−μ一定可以由μ和μ2,...,μN线性表示,因此矩阵Sb中至多有μ2−μ,...,μN−μ共N−1个线性无关的向量,由于此时d>(N−1),所以Sb的秩r(Sb)至多为N−1。同时假设矩阵Sw满秩,即r(Sw)=r(Sw−1)=d,则根据矩阵秩的性质r(AB)⩽min{r(A),r(B)}可知,Sw−1Sb的秩也至多为N−1。
3.5 多分类学习
3.5.1 图3.5的解释
图3.5中所说的"海明距离"是指两个码对应位置不相同的个数,"欧式距离"则是指两个向量之间的欧氏距离,例如图3.5(a)中第1行的编码可以视作为向量(−1,+1,−1,+1,+1),测试示例的编码则为(−1,−1,+1,−1,+1),其中第2个、第3个、第4个元素不相同,所以它们的海明距离为3,欧氏距离为(−1−(−1))2+(1−(−1))2+(−1−1)2+(1−(−1))2+(1−1)2=0+4+4+4+0=23。需要注意的是,在计算海明距离时,与"停用类"不同算作0.5,例如图3.5(b)中第2行的海明距离计算公式为0.5+0.5+0.5+0.5=2。
3.6 类别不平衡问题
对于类别不平衡问题,"西瓜书"2.3.1节中的"精度"通常无法满足该特殊任务的需求,例如"西瓜书"在本节第一段的举例:有998个反例和2个正例,若机器学习算法返回一个永远将新样本预测为反例的学习器则能达到99.8%的精度,显然虚高,因此在类别不平衡时常采用2.3节中的查准率、查全率和F1来度量学习器的性能。
参考文献
[1] 王燕军. 最优化基础理论与方法. 复旦大学出版社, 2011.
[2] Wikipedia contributors. Matrix calculus, 2022.
[3] 张贤达. 矩阵分析与应用. 第 2 版. 清华大学出版社, 2013.