线性回归与最小二乘法
最小二乘法是我们经常用到的求解模型的回归方法,是一种优化方法,对于一个线性模型
Xθ=y X θ = y
X X 为
m m 行
n n 列的矩阵,代表
m m 个样本,每个样本有
n n 个变量,即有
m m 个等式,未知数
n n 个,
m>n m > n ,
θ θ 和
y y 为一维向量,该方程没有解,但可以选择适合的
θ θ 使等式尽可能接近,如果以残差平方和评价,代价函数为
loss=||Xθ−y||2 l o s s = | | X θ − y | | 2
如何使代价最小是一个优化问题,可以通过梯度下降法求解,也可以通过最小二乘求解,最小二乘解为
θ^=(XTX)−1XTy θ ^ = ( X T X ) − 1 X T y
最小二乘解是未知变量的无偏估计,但当X不是列满秩或某些列之间的线性相关性比较大时,
XTX X T X 的这些行相同或线性相关性也比较大,使行列式接近于0,即
XTX X T X 接近于奇异,此时
XTX X T X 条件数很大,计算
(XTX)−1 ( X T X ) − 1 时的误差会很大,其解缺乏稳定性和可靠性。X矩阵中不同列之间具有完全或高度相关关系叫做多重共线性,这种情况下用最小二乘求得的解释不可靠的,一言蔽之,模型无偏,方差大,解决办法有:
- 找到引起多重共线性的变量,将其排除;
- 使用逐步回归法,逐步添加和排除变量,使最终使用的变量集合最优;(最常用,最有效)
- 通过加入扰动(正则项),增加解的稳定性,即岭回归。
- 通过主成分分析得到新的变量集合。
可以用最小二乘法求解的线性回归模型为
y=Xθ+b y = X θ + b
对于y的取值为{0,1}或在[0,1]区间的问题,可以用逻辑回归模型建模
y=σ(Xθ+b) y = σ ( X θ + b )
其中
σ σ 是sigmoid函数
岭回归
岭回归(ridge regression),是线性模型一种有偏回归方法,相比最小二乘法增加了偏差,减小了方差,将最小二乘法中的 loss l o s s 增加l2正则项(二范数的平方 ||θ||22 | | θ | | 2 2 ,向量内积 <θ,θ> < θ , θ > ,向量所有元素的平方和 ∑ni=1θ2i ∑ i = 1 n θ i 2 ),损失函数为
loss=||Xθ−y||2+α∑i=1nθ2i l o s s = | | X θ − y | | 2 + α ∑ i = 1 n θ i 2
岭回归的解为
θ(α)=(XTX+αI)−1XTy θ ( α ) = ( X T X + α I ) − 1 X T y
其中
I I 为单位矩阵,随着
α α 的增大,
θ θ 的各项相对于正确值的偏差越来越大,
α α 无穷大时,
θ θ 趋近于0,可以取多组不同的
α α ,画出每个
θ θ 分量的变化轨迹,也叫岭迹图,借助岭迹图可以确定最佳
α α 。
Lasso回归:(Least Absolute Shrinkage and Selection Operator),在最小二乘法的损失函数中添加l1正则项(一范数 ||θ||1 | | θ | | 1 ,向量所有元素的绝对值之和 ∑ni=1|θi| ∑ i = 1 n | θ i | ),损失函数为
loss=||Xθ−y||2+α∑i=1n|θi| l o s s = | | X θ − y | | 2 + α ∑ i = 1 n | θ i |
Lasso回归的特点,具有特征选择性,对于不重要的特征,对应的
θ θ 容易收缩为0,比岭回归更快速。lasso回归的解法主要有坐标轴下降法和最小角回归法。
坐标轴下降法是一种非梯度优化方法,与梯度下降法沿一个特定方向迭代不同,在每次迭代过程中按一定的次序分别沿着各个坐标轴方向搜索极小值。坐标轴下降法在稀疏矩阵上的计算速度非常快,同时也是lasso回归最快的解法。
最小角回归法是前向选择算法和前向梯度算法的折中版本,详情看 Lasso Regression,利用lasso回归也可以做特征选择。Lasso惩罚项超参数可以基于交叉验证,或者基于信息准则。
ElasticNet回归:同时包含l1和l2正则项的最小二乘法,损失函数为
loss=||Xθ−y||2+α∑i=1n|θi|+β∑i=1nθ2i l o s s = | | X θ − y | | 2 + α ∑ i = 1 n | θ i | + β ∑ i = 1 n θ i 2
另外,可以将ridge,lasso和elasticNet表示成带约束的优化问题
min||Xθ−y||2,st.∑i=1nθ2i≤s min | | X θ − y | | 2 , s t . ∑ i = 1 n θ i 2 ≤ s
min||Xθ−y||2,st.∑i=1n|θi|≤s min | | X θ − y | | 2 , s t . ∑ i = 1 n | θ i | ≤ s
min||Xθ−y||2,st.∑i=1n|θi|≤s1 and ∑i=1nθ2i≤s2 min | | X θ − y | | 2 , s t . ∑ i = 1 n | θ i | ≤ s 1 a n d ∑ i = 1 n θ i 2 ≤ s 2
R线性相关系数:描述两个变量相对于各自均值同增减/浮沉的关系,接近1或-1代表强烈的正/负相关关系,接近0表示基本没有相关关系,或者说是独立的。
R=Cov(X,Y)Var(X)−−−−−−√Var(Y)−−−−−−√ R = C o v ( X , Y ) V a r ( X ) V a r ( Y )
R2可决系数(coefficient of determination):也叫判定系数或拟合优度,如果只有一个自变量,是自变量与因变量的相关系数的平方,总平方和TSS (total sum of squares)
SStot=∑i(yi−y¯)2 S S t o t = ∑ i ( y i − y ¯ ) 2
回归平方和RSS (regression sum of squares)
SSreg=∑i(fi−y¯)2 S S r e g = ∑ i ( f i − y ¯ ) 2
残差平方和ESS (error sum of squares)
SSres=∑i(yi−fi)2 S S r e s = ∑ i ( y i − f i ) 2
RSS在TSS中所占的比重称为可决系数,可决系数可以作为综合度量回归模型对样本观测值拟合优度的度量指标。可决系数越大,说明在总平方和中由模型作出了解释的部分占的比重越大,模型拟合优度越好。反之可决系数小,说明模型对样本观测值的拟合程度越差。R2可决系数最好的效果是1,也可能是过拟合。
R2=RSSTSS=1−ESSTSS R 2 = R S S T S S = 1 − E S S T S S
主成分分析
主成分分析(Pricipal Component Analysis)是一种数据降维方法,作用是去除噪声和冗余。PCA将原来的特征通过正交线性变换形成新的特征,使得新特征的第一大方差在第一坐标上(第一主成分),第二大方差在第二坐标上(第二主成分),以此类推。PCA变换会损失了一部分信息,但主成分上方差大的特性使样本点尽可能分散,以此保留更多的信息。其计算过程如下:
- 去中心化,减去均值 X←X−Xmean X ← X − X m e a n , X X 为 m m 行 n n 列的矩阵
- 求原始数据协方差矩阵 Cov=1m−1(XTX) C o v = 1 m − 1 ( X T X )
- 计算协方差矩阵的特征值 λi λ i 和特征向量 wi w i
- 取最大的 N N 个特征值,其对应的特征向量形成标准正交基 W=(w1,w2,...,wN) W = ( w 1 , w 2 , . . . , w N ) , n n 行 N N 列,每列一个特征向量
- 进行线性变换 Y=XW Y = X W
通过以上过程, n n 维的 X X 变成了 N N 维 Y Y ( N<n N < n ), N N 的取值可以固定,一般使 N N 个特征值的和与所有特征值的和之比超过一定阈值 t(t<1.0) t ( t < 1.0 ) ,如 t=0.85 t = 0.85 ,t越大,保留的信息越多。
PCA原理推导(为什么要用协方差矩阵的特征值和特征向量)
PCA的目标是求一种正交变换 Y=XW Y = X W ,使变换后各个维度的方差和最大,满足 WTW=I W T W = I ,这是一个优化问题
maxtr(WTXTXW),st.WTW=I max t r ( W T X T X W ) , s t . W T W = I
因为
XTX X T X 是半正定对称矩阵,所以用拉格朗日乘子法求解
L=tr(WTXTXW)+λ(I−WTW) L = t r ( W T X T X W ) + λ ( I − W T W )
取极值的条件是一阶导数等于0,而且该问题是凸函数,极值就是最值。
∂L∂W=2XTXW−2λW=0 ∂ L ∂ W = 2 X T X W − 2 λ W = 0
因此
λ λ 是
XTX X T X 的特征值,
W W 是
XTX X T X 的特征向量,另外,由于
tr(WTXTXW)=tr(WTdiag(λ1,λ2,...,λn)W)=∑ni=1λi t r ( W T X T X W ) = t r ( W T d i a g ( λ 1 , λ 2 , . . . , λ n ) W ) = ∑ i = 1 n λ i ,因此特征值
λ λ 越大,该特征的方差越大。推导过程用到了迹的求导公式
d(tr(AXBXT))=AXB+ATXBT d ( t r ( A X B X T ) ) = A X B + A T X B T
其中
A=XTX,B=I A = X T X , B = I
矩阵的迹及其求导公式
矩阵的迹trace是矩阵对角线元素的和
tr(A)=∑i=1nAii t r ( A ) = ∑ i = 1 n A i i
矩阵的迹及其导数有以下性质,以下
d(tr(expr)) d ( t r ( e x p r ) ) 表示对表达式中的
X X 求导
-
a∈R, tr(a)=a a ∈ R , t r ( a ) = a
-
tr(A)=tr(AT) t r ( A ) = t r ( A T )
-
tr(AB)=tr(BA) t r ( A B ) = t r ( B A )
-
tr(ABC)=tr(CAB)=tr(BCA) t r ( A B C ) = t r ( C A B ) = t r ( B C A )
-
d(tr(X))=I d ( t r ( X ) ) = I
-
d(tr(XB))=d(tr(BX))=BT d ( t r ( X B ) ) = d ( t r ( B X ) ) = B T
-
d(tr(XTB))=d(tr(BXT))=B d ( t r ( X T B ) ) = d ( t r ( B X T ) ) = B
-
d(tr(AXB))=ATBT d ( t r ( A X B ) ) = A T B T
-
d(tr(AXTB))=BA d ( t r ( A X T B ) ) = B A
-
d(tr(AXBXT))=AXB+ATXBT d ( t r ( A X B X T ) ) = A X B + A T X B T
-
d(tr(AXBX))=BXA+AXB=ATXTBT+BTXTAT d ( t r ( A X B X ) ) = B X A + A X B = A T X T B T + B T X T A T
注意:标量对矩阵求导的结果是矩阵,比如雅克比矩阵
如何证明上述定理,最好理解的办法是将迹展开成求和形式,例如,求该式的导数
f=tr(AXBXCT)=∑i∑j∑k∑l∑mAijXjkBklXlmCim f = t r ( A X B X C T ) = ∑ i ∑ j ∑ k ∑ l ∑ m A i j X j k B k l X l m C i m
第一种证明,按角标求:
∂f∂Xjk=∑i∑l∑mAijBklXlmCim=[BXCTA]kj ∂ f ∂ X j k = ∑ i ∑ l ∑ m A i j B k l X l m C i m = [ B X C T A ] k j
∂f∂Xlm=∑i∑j∑kAijXjkBklCim=[CTAXB]ml ∂ f ∂ X l m = ∑ i ∑ j ∑ k A i j X j k B k l C i m = [ C T A X B ] m l
∂tr(AXBXCT)∂X=ATCXTBT+BTXTATC ∂ t r ( A X B X C T ) ∂ X = A T C X T B T + B T X T A T C
第二种证明,利用微分乘法法则 + 迹的基本求导公式:
∂tr(AXBXCT)∂X=∂tr(AXD)∂X+∂tr(EXCT)∂X=ATDT+ETC ∂ t r ( A X B X C T ) ∂ X = ∂ t r ( A X D ) ∂ X + ∂ t r ( E X C T ) ∂ X = A T D T + E T C
其中
D=BXCT,E=AXB D = B X C T , E = A X B ,该方法十分方便例如求下式关于X的导数,对于复杂的算式,依次将每个
X X 拆分成
AXB A X B 或
AXTB A X T B 的形式,运用相应的求导公式,将结果相加即可:
f=tr(AXXTBCXTXC) f = t r ( A X X T B C X T X C )
方差的无偏估计
在PCA求协方差时,前面的系数是 1m−1 1 m − 1 而非 1m 1 m ,实际上用的是方差的修正公式,而我们熟知的方差计算公式是有偏的,符号说明:随机变量 X X , n n 个样本,各样本为 xi x i ,总体均值 μ μ ,总体方差 σ2 σ 2 ,样本均值 X¯ X ¯ ,样本方差 s2 s 2 ,具体推导如下
s2E[s2]=1n∑i=1n(xi−X¯)2=1n∑i=1n((xi−μ)+(μ−X¯))2=1n∑i=1n(xi−μ)2+2n∑i=1n(xi−μ)(μ−X¯)+1n∑i=1n(μ−X¯)2=1n∑i=1n(xi−μ)2−(X¯−μ)2≤1n∑i=1n(xi−μ)2=E[1n∑i=1n(xi−μ)2]−E[(X¯−μ)2]=D[X]−D[X¯]=σ2−1nσ2=n−1nσ2 s 2 = 1 n ∑ i = 1 n ( x i − X ¯ ) 2 = 1 n ∑ i = 1 n ( ( x i − μ ) + ( μ − X ¯ ) ) 2 = 1 n ∑ i = 1 n ( x i − μ ) 2 + 2 n ∑ i = 1 n ( x i − μ ) ( μ − X ¯ ) + 1 n ∑ i = 1 n ( μ − X ¯ ) 2 = 1 n ∑ i = 1 n ( x i − μ ) 2 − ( X ¯ − μ ) 2 ≤ 1 n ∑ i = 1 n ( x i − μ ) 2 E [ s 2 ] = E [ 1 n ∑ i = 1 n ( x i − μ ) 2 ] − E [ ( X ¯ − μ ) 2 ] = D [ X ] − D [ X ¯ ] = σ 2 − 1 n σ 2 = n − 1 n σ 2
化简过程中
X¯ X ¯ 和
μ μ 与索引i无关,而且
D[X¯]=D[1n∑i=1nxi]=1n2D[∑i=1nxi]=1n2nD[X]=1nD[X] D [ X ¯ ] = D [ 1 n ∑ i = 1 n x i ] = 1 n 2 D [ ∑ i = 1 n x i ] = 1 n 2 n D [ X ] = 1 n D [ X ]
从上面可以看出,通过样本均值直接计算得到的样本方差的期望比总体方差小,只要样本均值不等于总体均值,我们总会低估总体的方差,因为样本均值就是使样本方差最小的那个值,为了使方差的估计无偏,就要使用修正后的方差公式
s2=1n−1∑i=1n(xi−X¯)2 s 2 = 1 n − 1 ∑ i = 1 n ( x i − X ¯ ) 2
参考链接:
岭回归(ridge regression)
Lasso Regression
【机器学习】汇总详解:矩阵的迹以及迹对矩阵求导
机器学习中对矩阵的迹(trace)求导的一些操作
为什么样本方差里面要除以(n-1)而不是n?
彻底理解样本方差为何除以n-1