机器学习-线性模型

线性模型是机器学习中最基础的模型,在中学学过的最小二乘法其实就是机器学习中的一种线性模型。我们先来回忆一下最小二乘法是什么

最小二乘法与基本线性回归

假设有如下所示的5个数据

图1.1

似乎这5个数据是在这条绿线上下浮动,我们的目的就是找到这条绿线的函数表达式。我们先假设这条绿线的函数表达式是
y ^ = a x + b \hat y=ax+b y^=ax+b
现在我们的问题就转换成了找到 a a a b b b的值。我们希望数据点尽可能多地落在函数图像上,即数据的误差和拟合直线的误差越小越好。由此得到以下式子
( a , b ) = a r g m i n ∑ i = 1 5 ∣ y i − y ^ ∣ (a,b)=argmin\sum_{i=1}^{5}|y_i-\hat y| (a,b)=argmini=15yiy^
其中 ∑ i = 1 5 ∣ y i − y ^ ∣ \sum_{i=1}^{5}|y_i-\hat y| i=15yiy^被称为代价函数(cost function)

由于计算机处理绝对值很麻烦,我们常常将这类问题转换成
( a , b ) = a r g m i n ∑ i = 1 5 ( y i − y ^ ) 2 (a,b)=argmin\sum_{i=1}^{5}(y_i-\hat y)^2 (a,b)=argmini=15(yiy^)2
在中学阶段,我们通过猜测来推断出 a a a b b b的值,而到了大学阶段,我们很容易地看出这是一个二元函数求极值的问题。

在机器学习中,我们遇到的问题常常有多个维度,于是我们要拟合的函数表达式就变成了
f ( x ) = w 1 x 1 + w 2 x 2 + . . . w d x d + b f(x)=w_1x_1+w_2x_2+...w_dx_d+b f(x)=w1x1+w2x2+...wdxd+b
写成向量形式
f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b
*注意:之后的式子若无特别说明均为向量形式

为了方便,我们把 b b b w w w写成一个向量
w ^ = ( w ; b ) \hat w=(w;b) w^=(w;b)
相应的,在 x x x最后一列恒置1( b b b被吸收后空出的)
X = [ x 11 x 12 ⋯ x 1 d 1 x 21 x 22 ⋯ x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m d 1 ] X= \begin{bmatrix} x_{11}& x_{12}& \cdots & x_{1d} & 1\\ x_{21}& x_{22}& \cdots & x_{2d} & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m1}& x_{m2}& \cdots & x_{md} & 1 \end{bmatrix} X=x11x21xm1x12x22xm2x1dx2dxmd111
于是整个式子就变成了
f ( x ) = X w ^ f(x)=X\hat w f(x)=Xw^
根据上面最小二乘法的思路,我们的问题也就转换成了
w ^ ∗ = a r g m i n w ^ ( y − X w ^ ) 2 \hat w^*=\underset{\hat w}{argmin}(y-X\hat w)^2 w^=w^argmin(yXw^)2
在线性代数中,矩阵的平方常常表示成该矩阵的转置与其相乘的形式,于是 ( 9 ) (9) (9)式就变成了
w ^ ∗ = a r g m i n w ^ ( y − X w ^ ) T ( y − X w ^ ) \hat w^*=\underset{\hat w}{argmin}(y-X\hat w)^T(y-X\hat w) w^=w^argmin(yXw^)T(yXw^)
按照常规思路,令 w ^ = ( y − X w ^ ) T ( y − X w ^ ) \hat w=(y-X\hat w)^T(y-X\hat w) w^=(yXw^)T(yXw^),对 w ^ \hat w w^进行求导得
∂ w ^ ∂ w ^ = 2 ( X w ^ − y ) X \frac{\partial \hat w}{\partial \hat w} =2(X\hat w-y)X w^w^=2(Xw^y)X
与西瓜书上不同是因为书上采用的是分母布局,本质是一个式子。将上式等于0,求解 w ^ ∗ \hat w^* w^带入 ( 8 ) (8) (8)式,即可得出结果

X T X X^TX XTX为满佚矩阵时
w ^ ∗ = ( X T X ) − 1 X T y \hat w^*=(X^TX)^{-1}X^Ty w^=(XTX)1XTy

对数几率回归(logistic回归)

对于一个线性回归问题,上面的方法可以很好地解决。但是对于分类问题,一个直线就很难拟合数据的分布特点,下面我们以二分类问题为例,研究logistics回归。

对于一个二分类问题,最好的拟合函数是“单位阶跃函数”
y = { 0 , z < 0 ; 0.5 , z = 0 ; 1 , z > 0 y=\left\{\begin{matrix} 0,&z<0; \\ 0.5,&z=0; \\ 1,&z>0 \end{matrix}\right. y=0,0.5,1,z<0;z=0;z>0
但是这个函数不可导,难以以最小二乘法的思想求拟合曲线,我们可以另选一个函数。希望 z < 0 z<0 z<0时函数尽量为0, z > 0 z>0 z>0时函数尽量为1。sigmoid函数就是这么一个函数
y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1
图像如下

Rw3ygf.png

现在看来这个图像并不好,但当我们把 z z z之前的系数变成-100的时候图像如下Rw83ZQ.png

这样看来图像就像是我们所需要的样子了。事实上 z z z完全可以作为一个隐函数,这样我们的目标就变成了找到一个合适的函数 z z z,就可以使用上面最小二乘法的思路了。根据上面的思路,式 ( 14 ) (14) (14)变成了
y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e(wTx+b)1
如果我们在按照上面的思路MSE(均方误差,mean square error),由于加了一个sigmoid函数,使得整个函数变成非凸函数,可能有多个导数为0的点,很容易落入局部最优中。我们可以从概率的角度来推导logistic回归的代价函数。(说实话,我挺不喜欢这种方法的,但是我又不会其他方法ヽ(ー_ー)ノ)


P ( y = 0 ∣ x ) = 1 1 + e − ( w T x + b ) P(y=0|x)=\frac{1}{1+e^{-(w^Tx+b)}} P(y=0x)=1+e(wTx+b)1
相应的
P ( y ∣ x ) = { 1 1 + e − ( w T x + b ) , y = 0 e − ( w T x + b ) 1 + e − ( w T x + b ) , y = 1 P(y|x)=\left\{\begin{matrix} \frac{1}{1+e^{-(w^Tx+b)}}, & y=0 \\ \frac{e^{-(w^Tx+b)}}{1+e^{-(w^Tx+b)}}, & y=1\end{matrix}\right. P(yx)={1+ewTx+b1,1+ewTx+bewTx+b,y=0y=1
将上式融合为一个式子
P ( y i ∣ x i ) = p y i ( 1 − p ) ( 1 − y i ) P(y_i|x_i)=p^{y_i}(1-p)^{(1-y_i)} P(yixi)=pyi(1p)(1yi)
其中
p = e w T x + b 1 + e w T x + b p=\frac{e^{w^Tx+b}}{1+e^{w^Tx+b}} p=1+ewTx+bewTx+b
根据最大似然估计,最大似然函数为
P ( y i ∣ x i ; w , b ) = ∏ i = 1 m p y i ( 1 − p ) ( 1 − y i ) = ∑ i = 1 m ln ⁡ p y i ( 1 − p ) ( 1 − y i ) = ∑ n = 1 N ( y n ln ⁡ ( p ) + ( 1 − y n ) ln ⁡ ( 1 − p ) ) P(y_i|x_i;w,b)=\prod_{i=1}^{m}p^{y_i}(1-p)^{(1-y_i)}=\sum_{i=1}^{m} \ln p^{y_i}(1-p)^{(1-y_i)}=\sum_{n=1}^{N}\left(y_{n} \ln (p)+\left(1-y_{n}\right) \ln (1-p)\right) P(yixi;w,b)=i=1mpyi(1p)(1yi)=i=1mlnpyi(1p)(1yi)=n=1N(ynln(p)+(1yn)ln(1p))
由于代价函数一般是求最小值,所以需要在上面式子中添加一个负号,最终的式子为
( w ∗ , b ∗ ) = a r g m i n w , b { − ∑ n = 1 N ( y n ln ⁡ ( p ) + ( 1 − y n ) ln ⁡ ( 1 − p ) ) } (w^*,b^*)=\underset{w,b}{argmin}\left\{ -\sum_{n=1}^{N}\left(y_{n} \ln (p)+\left(1-y_{n}\right) \ln (1-p)\right) \right\} (w,b)=w,bargmin{n=1N(ynln(p)+(1yn)ln(1p))}
使用梯度下降法或牛顿法即可求得最优解。

线性判别分析

线性判别分析(LDA,linear discriminant analysis)和降维中的PCA非常像。LDA的基本思想是给定训练集,将这样样例投影到一个直线上,使相同样例的投影尽可能近,不同样例的投影点尽可能远离,其实就是“高内聚,低耦合”的思想。

我们假设直线 w w w,且 ∣ ∣ w ∣ ∣ = 1 ||w||=1 w=1,给定数据集 D = ( x i , y i ) i = 1 m , y i ∈ { 0 , 1 } D={(x_i,y_i)}^m_{i=1},y_i∈\{0,1\} D=(xi,yi)i=1m,yi{0,1},易知数据在 w w w上的投影为 w T x i w^Tx_i wTxi z ˉ y i \bar{z}_{y_i} zˉyi为投影的均值,即
z ˉ y i = 1 N i ∑ i = 1 N i w T x i \bar{z}_{y_i}=\frac{1}{N_i}\sum^{N_i}_{i=1}w^Tx_i zˉyi=Ni1i=1NiwTxi
μ i \mu_i μi为数据的均值向量,即
μ i = 1 N i ∑ i = 1 N i x i \mu_i=\frac{1}{N_i}\sum^{N_i}_{i=1}x_i μi=Ni1i=1Nixi
S y i S_{y_i} Syi为投影方差,即
S y i = 1 N i ∑ i = 1 N i ( w T x i − z ˉ i ) ( w T x i − z ˉ i ) T S_{y_i}=\frac{1}{N_i}\sum^{N_i}_{i=1}(w^Tx_i-\bar{z}_i)(w^Tx_i-\bar{z}_i)^T Syi=Ni1i=1Ni(wTxizˉi)(wTxizˉi)T
其实 S i S_i Si是个标量,我这么写其实是为了方便看。根据LDA的基本思想,我们便很容易的找到了目标函数。
J = ( z ˉ 1 − z ˉ 2 ) 2 S 1 + S 2 J=\frac{(\bar{z}_1-\bar{z}_2)^2}{S_1+S_2} J=S1+S2(zˉ1zˉ2)2
我们的目标就是找到一个 w w w使分子尽量大,分母尽量小,即函数 J J J取得最大值,即
w ∗ = a r g m a x ( z ˉ 1 − z ˉ 2 ) 2 S 1 + S 2 w^*=argmax\frac{(\bar{z}_1-\bar{z}_2)^2}{S_1+S_2} w=argmaxS1+S2(zˉ1zˉ2)2

设类间散度矩阵
S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_b=(\mu_1-\mu_2)(\mu_1-\mu_2)^T Sb=(μ1μ2)(μ1μ2)T

设类内方差矩阵
S c 1 = 1 N 1 ∑ i = 1 N 1 [ ( x i − μ 1 ) ( x i − μ 1 ) T ] S_{c1}=\frac{1}{N_{1}} \sum_{i=1}^{N_{1}}\left[\left(x_{i}-{\mu_1}\right)\left(x_{i}-{\mu_1}\right)^{T}\right] Sc1=N11i=1N1[(xiμ1)(xiμ1)T]

S c 2 = 1 N 2 ∑ i = 1 N 2 [ ( x i − μ 2 ) ( x i − μ 2 ) T ] S_{c2}=\frac{1}{N_{2}} \sum_{i=1}^{N_{2}}\left[\left(x_{i}-{\mu_2}\right)\left(x_{i}-{\mu_2}\right)^{T}\right] Sc2=N21i=1N2[(xiμ2)(xiμ2)T]

首先看分子
( z ˉ 1 − z ˉ 2 ) 2 = ( 1 N 1 ∑ i = 1 N 1 w T x 1 − 1 N 2 ∑ i = 1 N 2 w T x 2 ) 2 = ( w T ( μ 1 − μ 2 ) ) 2 = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w = w T S b w (\bar{z}_1-\bar{z}_2)^2 =(\frac{1}{N_1}\sum^{N_1}_{i=1}w^Tx_1-\frac{1}{N_2}\sum^{N_2}_{i=1}w^Tx_2)^2 =(w^T(\mu_1-\mu_2))^2 =w^T(\mu_1-\mu_2)(\mu_1-\mu_2)^Tw\\ =w^TS_bw (zˉ1zˉ2)2=(N11i=1N1wTx1N21i=1N2wTx2)2=(wT(μ1μ2))2=wT(μ1μ2)(μ1μ2)Tw=wTSbw
在看分母
S 1 + S 2 = 1 N 1 ∑ i = 1 N 1 ( w T x i − z ˉ 1 ) ( w T x i − z ˉ 1 ) T + 1 N 2 ∑ i = 1 N 2 ( w T x i − z ˉ 2 ) ( w T x i − z ˉ 2 ) T = 1 N 1 ∑ i = 1 N 1 ( w T x i − 1 N 1 ∑ i = 1 N 1 w T x i ) ( w T x i − 1 N 1 ∑ i = 1 N 1 w T x i ) T + 1 N 2 ∑ i = 1 N 2 ( w T x i − 1 N 2 ∑ i = 1 N 2 w T x i ) ( w T x i − 1 N 2 ∑ i = 1 N 2 w T x i ) T = w T 1 N 1 ∑ i = 1 N 1 [ ( x i − μ 1 ) ( x i − μ 1 ) T ] w + w T 1 N 2 ∑ i = 1 N 2 [ ( x i − μ 2 ) ( x i − μ 2 ) T ] w = w T ( S c 1 + S c 2 ) w S_1+S_2=\frac{1}{N_1}\sum^{N_1}_{i=1}(w^Tx_i-\bar{z}_1)(w^Tx_i-\bar{z}_1)^T+\frac{1}{N_2}\sum^{N_2}_{i=1}(w^Tx_i-\bar{z}_2)(w^Tx_i-\bar{z}_2)^T\\ =\frac{1}{N_1}\sum^{N_1}_{i=1}(w^Tx_i-\frac{1}{N_1}\sum^{N_1}_{i=1}w^Tx_i)(w^Tx_i-\frac{1}{N_1}\sum^{N_1}_{i=1}w^Tx_i)^T+\frac{1}{N_2}\sum^{N_2}_{i=1}(w^Tx_i-\frac{1}{N_2}\sum^{N_2}_{i=1}w^Tx_i)(w^Tx_i-\frac{1}{N_2}\sum^{N_2}_{i=1}w^Tx_i)^T\\ =w^{T} \frac{1}{N_{1}} \sum_{i=1}^{N_{1}}\left[\left(x_{i}-{\mu_1}\right)\left(x_{i}-{\mu_1}\right)^{T}\right] w+w^{T} \frac{1}{N_{2}} \sum_{i=1}^{N_{2}}\left[\left(x_{i}-{\mu_2}\right)\left(x_{i}-{\mu_2}\right)^{T}\right]w\\ =w^T(S_{c1}+S_{c2})w S1+S2=N11i=1N1(wTxizˉ1)(wTxizˉ1)T+N21i=1N2(wTxizˉ2)(wTxizˉ2)T=N11i=1N1(wTxiN11i=1N1wTxi)(wTxiN11i=1N1wTxi)T+N21i=1N2(wTxiN21i=1N2wTxi)(wTxiN21i=1N2wTxi)T=wTN11i=1N1[(xiμ1)(xiμ1)T]w+wTN21i=1N2[(xiμ2)(xiμ2)T]w=wT(Sc1+Sc2)w

S w = S c 1 + S c 2 S_w=S_{c1}+S_{c2} Sw=Sc1+Sc2

由以上式子可得
J = w T S b w w T S w w J=\frac{w^TS_bw}{w^TS_ww} J=wTSwwwTSbw
对上式求导,并令导数为0
∂ J ( w ) ∂ w = 2 S b w ⋅ ( w T S w w ) − 1 + ( w T S b w ) ⋅ ( − 1 ) ( w T S w w ) − 2 ⋅ 2 S w w = 0 S b w − ( w T S b w ) ⋅ ( w T S w w ) − 1 ⋅ S w w = 0 S b w = w T S b w w T S w w S w w w = w T S w w w T S b w S w − 1 S b w \begin{aligned} \frac{\partial J(w)}{\partial w}=2 S_{b} w \cdot\left(w^{T} S_{w} w\right)^{-1}+\left(w^{T} S_{b} w\right) \cdot(-1)\left(w^{T} S_{w} w\right)^{-2} \cdot 2 S_{w} w &=0 \\ S_{b} w-\left(w^{T} S_{b} w\right) \cdot\left(w^{T} S_{w} w\right)^{-1} \cdot S_{w} w &=0 \\ S_{b} w &=\frac{w^{T} S_{b} w}{w^{T} S_{w} w} S_{w} w \\ w &=\frac{w^{T} S_{w} w}{w^{T} S_{b} w} S_{w}^{-1} S_{b} w \end{aligned} wJ(w)=2Sbw(wTSww)1+(wTSbw)(1)(wTSww)22SwwSbw(wTSbw)(wTSww)1SwwSbww=0=0=wTSwwwTSbwSww=wTSbwwTSwwSw1Sbw
其中,易知 w T S w w w T S b w \frac{w^{T} S_{w} w}{w^{T} S_{b} w} wTSbwwTSww为标量, S b w = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w S_{b} w=(\mu_1-\mu_2)(\mu_1-\mu_2)^Tw Sbw=(μ1μ2)(μ1μ2)Tw中的 ( μ 1 − μ 2 ) T w (\mu_1-\mu_2)^Tw (μ1μ2)Tw也是标量,所以可以得出
w ∝ S w − 1 ( μ 1 − μ 2 ) w\propto S_{w}^{-1}(\mu_1-\mu_2) wSw1(μ1μ2)
由于我们要求的是一个直线,所以不必在乎结果的大小,而只要关注方向即可,所以 S w − 1 ( μ 1 − μ 2 ) S_{w}^{-1}(\mu_1-\mu_2) Sw1(μ1μ2)的方向即我们所要求的直线的方向。

改LaTeX的代码真是酸爽┭┮﹏┭┮

多分类学习

多分类学习的基本思想是把多分类任务拆解成多个二分类任务,拆解方法有“一对一”(OvO),“一对其余”(OvR),“多对多”(MvM)

OvO将数据集中的所有数据两两配对,产生 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2个分类任务,为每一个任务训练一个分类器,测试时将测试样本提交给所有分类器,由所有分类器投票,票数最多的类别作为最终分类结果。

OvR将一个类别作为正例,其余类别作为反例训练分类器,由此产生 N N N个分类器,测试时将测试样本提交给所有分类器,结果为正的则作为最终分类结果,若有过个分类器结果均为正,则选择分类器置信度最大的那个作为最终分类结果。

MvM是将若干类作为正类,其他类作为反类。其中最常用的是“纠错输出码”(error correcting output codes,ECOC)。

编码阶段:对 N N N个类别做 M M M次划分,每次划分将一部分化为正类,另一部分为反类。可以训练除M个分类器。

解码阶段:将测试样本提交给所有分类器,将分类器返回的结果组成编码,与每个类别各自的编码进行比较,其中距离(汉明距离或欧氏距离)最小的类别最为最终分类结果。

书上还有一个类别不平衡问题,其实就是个加权,没什么数学推导,我认为没必要写。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值