回归分析
:指研究两组相互依赖的随机变量 Y 1 , Y 2 , . . . Y n \pmb{Y}_1,\pmb{Y}_2,...\pmb{Y}_n YYY1,YYY2,...YYYn(常称为因变量
) 和 X 1 , X 2 , . . . X m \pmb{X}_1,\pmb{X}_2,...\pmb{X}_m XXX1,XXX2,...XXXm(常称为自变量
)之间关系的统计分析方法
一元回归
和多元回归
简单回归
和多重回归
线性回归
和非线性回归
拟合函数/估值函数
:给定来自真实分布的一批样本,拟合后得到的函数损失函数
和 目标函数
:做函数拟合时,常将其转化为一个优化问题,认为和数据匹配越好的函数越优,这时需要一个指示拟合程度的指标来指导优化方向。给定训练样本,该指标是从模型参数到拟合程度的映射,称之为损失函数或目标函数。损失函数越小/目标函数越大,拟合得就越好
注:能列出损失函数/目标函数,就意味着模型形式(函数参数数量,线性关系还是二次关系…)已经确定
残差
:针对某个样本而言, 拟合值与真实值的差。通常把关于的单个样本残差推广到整个训练集来构造损失函数或目标函数,有以下选择
残差和
: 指所有训练样本拟合值与真实值的差值的和,有正有负会存在抵消的情况,不能反应真实误差残差绝对值和
:这可以解决残差和有正有负的问题,但是绝对值在后续的求导会异常麻烦残差的平方和
:这可以避免上述两个问题,运用广泛,它再取个均值就是机器学习中常用的 MSE 最小均方损失。其问题在于对异常值非常敏感,会被脏数据影响
最优化问题
:指给定目标函数/损失函数时,通过决定某些可选择的变量应该取何值,使所给定目标函数最大化/损失函数最小化的问题。根据有无约束条件,又分为 无约束最优化问题
和 约束最优化问题
最优化方法
:指解决最优化问题的方法最小二乘法/最小平方法
:一种最优化方法,在模型给定的情况下,使用样本残差的平方和作为损失函数,通过令偏导数为 0 直接求解无约束最优化问题,得到最优模型参数的解析解。最小二乘法可用于曲线拟合,也能通过最小化能量或最大化熵来表达其他一些优化问题先从最常见的多元简单回归角度给出形式化描述:给定样本集
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } \mathcal{D} = \{(\pmb{x}_1,y_1),(\pmb{x}_2,y_2),...,(\pmb{x}_n,y_n)\} D={(xxx1,y1),(xxx2,y2),...,(xxxn,yn)}设模型为 f f f,样本特征向量 x i = [ 1 , x i 1 , x i 1 , . . . , x i m ] ⊤ \pmb{x}_i = [1,x_{i1},x_{i1},...,x_{im}]^\top xxxi=[1,xi1,xi1,...,xim]⊤,参数向量 w = [ w 0 , w 1 , w 2 , . . . , w m ] ⊤ \pmb{w} = [w_0,w_1,w_2,...,w_m]^\top www=[w0,w1,w2,...,wm]⊤,为表示简便,设 p = m + 1 , x i ∈ R p , y i ∈ R p=m+1,\pmb{x}_i\in\mathbb{R}^p,y_i\in \mathbb{R} p=m+1,xxxi∈Rp,yi∈R,样本集 X n × p = [ x 1 ⊤ , x 2 ⊤ , . . . , x n ⊤ ] ⊤ \pmb{X}_{n\times p}=[\pmb{x}_1^\top,\pmb{x}_2^\top,...,\pmb{x}_n^\top]^\top XXXn×p=[xxx1⊤,xxx2⊤,...,xxxn⊤]⊤,标记集 y = [ y 1 , y 2 , . . . , y n ] ⊤ \pmb{y} = [y_1,y_2,...,y_n]^\top yyy=[y1,y2,...,yn]⊤,模型对于样本 x i \pmb{x}_i xxxi 给出预测 y ^ i = f ( x i , w ) = x i ⊤ w \hat{y}_i = f(\pmb{x}_i,\pmb{w})= \pmb{x_i^\top w} y^i=f(xxxi,www)=xi⊤wxi⊤wxi⊤w,对整个样本集有
X w = [ x 1 ⊤ x 2 ⊤ ⋮ x n ⊤ ] w = [ y ^ 1 y ^ 2 ⋮ y ^ n ] = y ^ \pmb{Xw} = \begin{bmatrix} \pmb{x}_1^\top \\ \pmb{x}_2^\top \\ \vdots \\ \pmb{x}_n^\top \\ \end{bmatrix} \pmb{w} = \begin{bmatrix} \hat{y}_1 \\ \hat{y}_2 \\ \vdots \\ \hat{y}_n \\ \end{bmatrix} = \pmb{\hat{y}} XwXwXw=⎣⎢⎢⎢⎡xxx1⊤xxx2⊤⋮xxxn⊤⎦⎥⎥⎥⎤www=⎣⎢⎢⎢⎡y^1y^2⋮y^n⎦⎥⎥⎥⎤=y^y^y^ 使用残差平方和作为损失函数,即 l ( w ) = ∑ i = 1 n ( f ( x i , w ) − y i ) 2 \mathcal{l}(\pmb{w})=\sum_{i=1}^n(f(\pmb{x}_i,\pmb{w})-y_i)^2 l(www)=∑i=1n(f(xxxi,www)−yi)2,求以下最优化问题
arg min w l ( w ) = arg min w ∑ i = 1 n ( f ( x i , w ) − y i ) 2 = arg min w ( X w − y ) ⊤ ( X w − y ) \argmin_{\mathbf{w}}\mathcal{l}(\pmb{w}) = \argmin_{\mathbf{w}}\sum_{i=1}^n(f(\pmb{x}_i,\pmb{w})-y_i)^2 = \argmin_{\mathbf{w}} (\pmb{X}\pmb{w}-\pmb{y})^\top(\pmb{X}\pmb{w}-\pmb{y}) wargminl(www)=wargmini=1∑n(f(xxxi,www)−yi)2=wargmin(XXXwww−yyy)⊤(XXXwww−yyy) 求解时,通过令偏导数为 0 直接计算,即令 ∂ l ( w ) ∂ w i = 0 \frac{\partial\mathcal{l}(\mathbf{w})}{\partial{w_i}}=0 ∂wi∂l(w)=0 直接解出参数 w i w_i wi
我们可以对每个参数令偏导数为 0 来求解,但是这样计算量太大了,所以直接对参数向量求导。首先展开目标函数
( X w − y ) ⊤ ( X w − y ) = ( w ⊤ X ⊤ − y ⊤ ) ( X w − y ) = w ⊤ X ⊤ X w − w ⊤ X ⊤ y − y ⊤ X w + y ⊤ y = w ⊤ X ⊤ X w − 2 w ⊤ X ⊤ y + y ⊤ y (1) \begin{aligned} (\pmb{X}\pmb{w}-\pmb{y})^\top(\pmb{X}\pmb{w}-\pmb{y}) &= (\pmb{w^\top X^\top -y^\top})(\pmb{X}\pmb{w-y}) \\ &= \pmb{w^\top X^\top X w}-\pmb{w^\top X^\top y} - \pmb{y^\top X w} +\pmb{y^\top y} \\ &= \pmb{w^\top X^\top X w}-2\pmb{w^\top X^\top y} +\pmb{y^\top y} \\ \end{aligned} \tag{1} (XXXwww−yyy)⊤(XXXwww−yyy)=(w⊤X⊤−y⊤w⊤X⊤−y⊤w⊤X⊤−y⊤)(XXXw−yw−yw−y)=w⊤X⊤Xww⊤X⊤Xww⊤X⊤Xw−w⊤X⊤yw⊤X⊤yw⊤X⊤y−y⊤Xwy⊤Xwy⊤Xw+y⊤yy⊤yy⊤y=w⊤X⊤Xww⊤X⊤Xww⊤X⊤Xw−2w⊤X⊤yw⊤X⊤yw⊤X⊤y+y⊤yy⊤yy⊤y(1) 注意这里 w ⊤ X ⊤ y \pmb{w^\top X^\top y} w⊤X⊤yw⊤X⊤yw⊤X⊤y 和 y ⊤ X w \pmb{y^\top}\pmb{X}\pmb{w} y⊤y⊤y⊤XXXwww 两项都是 1 × 1 1\times 1 1×1 的常数,可以合并。接下来求偏导数
∂ ( w ⊤ X ⊤ X w − 2 w ⊤ X ⊤ y + y ⊤ y ) ∂ w = ∂ ( w ⊤ X ⊤ X w − 2 w ⊤ X ⊤ y ) ∂ w = ∂ ( w ⊤ X ⊤ X w ) ∂ w − 2 ∂ ( w ⊤ X ⊤ y ) ∂ w (2) \begin{aligned} \frac{\partial(\pmb{w^\top X^\top X w}-2\pmb{w^\top X^\top y} +\pmb{y^\top y})}{\partial \pmb{w}} &= \frac{\partial(\pmb{w^\top X^\top X w}-2\pmb{w^\top X^\top y})}{\partial \pmb{w}} \\ &= \frac{\partial(\pmb{w^\top X^\top X w})}{\partial \pmb{w}} -2\frac{\partial(\pmb{w^\top X^\top y})}{\partial \pmb{w}} \end{aligned} \tag{2} ∂www∂(w⊤X⊤Xww⊤X⊤Xww⊤X⊤Xw−2w⊤X⊤yw⊤X⊤yw⊤X⊤y+y⊤yy⊤yy⊤y)=∂www∂(w⊤X⊤Xww⊤X⊤Xww⊤X⊤Xw−2w⊤X⊤yw⊤X⊤yw⊤X⊤y)=∂www∂(w⊤X⊤Xww⊤X⊤Xww⊤X⊤Xw)−2∂www∂(w⊤X⊤yw⊤X⊤yw⊤X⊤y)(2) 这里用到向量内积对列向量求导公式 ∂ f ( u ⊤ v ) ∂ x = ∂ f ( u ⊤ ) ∂ x v + ∂ f ( v ⊤ ) ∂ x u \frac{\partial f(\mathbf{u^\top v})}{\partial\mathbf{x}} = \frac{\partial f(\mathbf{u^\top})}{\partial\mathbf{x}}\pmb{v}+\frac{\partial f(\mathbf{v^\top})}{\partial\mathbf{x}}\pmb{u} ∂x∂f(u⊤v)=∂x∂f(u⊤)vvv+∂x∂f(v⊤)uuu,其中 u , v \mathbf{u,v} u,v 是向量,根据这个变形有
利用这两个结论展开公式2,得到
∂ ( w ⊤ X ⊤ X w ) ∂ w − 2 ∂ ( w ⊤ X ⊤ y ) ∂ w = ( X ⊤ X + X ⊤ X ) w − 2 X ⊤ y = 2 ( X ⊤ X w − X ⊤ y ) (3) \begin{aligned} \frac{\partial(\pmb{w^\top X^\top X w})}{\partial \pmb{w}} -2\frac{\partial(\pmb{w^\top X^\top y})}{\partial \pmb{w}} &= (\pmb{X^\top X}+\pmb{X^\top X})\pmb{w} - 2\pmb{X^\top y} \\ &= 2(\pmb{X^\top}\pmb{X}\pmb{w} - \pmb{X^\top y} ) \end{aligned} \tag{3} ∂www∂(w⊤X⊤Xww⊤X⊤Xww⊤X⊤Xw)−2∂www∂(w⊤X⊤yw⊤X⊤yw⊤X⊤y)=(X⊤XX⊤XX⊤X+X⊤XX⊤XX⊤X)www−2X⊤yX⊤yX⊤y=2(X⊤X⊤X⊤XXXwww−X⊤yX⊤yX⊤y)(3) 令公式 3 为 0,有
X ⊤ X w ^ = X ⊤ y ⇒ w ^ = ( X ⊤ X ) − 1 X ⊤ y (4) \pmb{X^\top}\pmb{X}\pmb{\hat{w}} = \pmb{X^\top y} \Rightarrow \pmb{\hat{w}} = (\pmb{X^\top}\pmb{X})^{-1} \pmb{X^\top y} \tag{4} X⊤X⊤X⊤XXXw^w^w^=X⊤yX⊤yX⊤y⇒w^w^w^=(X⊤X⊤X⊤XXX)−1X⊤yX⊤yX⊤y(4) 这就是最小二乘法得到的解,其中 ( X ⊤ X ) − 1 X ⊤ (\pmb{X^\top}\pmb{X})^{-1}\pmb{X^\top} (X⊤X⊤X⊤XXX)−1X⊤X⊤X⊤ 是 X \pmb{X} XXX 的 Moore-Penrose 广义逆,也叫伪逆,记为 X † \pmb{X}^\dagger XXX†
常数函数模型
:对于最简单的情况,试想我们要测量一根铅笔的长度,为了保证精准,使用五把不同的尺子多次测量。这种情况下模型为常数函数 f ( x , w ) = w 0 f(\pmb{x,w}) = w_0 f(x,wx,wx,w)=w0 拟合函数 y = w 0 y=w_0 y=w0 是一条平行于 x x x 轴的直线,给定五个样本,各样本误差如下图绿色线所示所示简单线性模型
:当真实分布是一条直线时,对于线性模型 f ( x , w ) = w 0 + w 1 x f(\pmb{x,w}) = w_0+w_1x f(x,wx,wx,w)=w0+w1x 拟合函数 y = w 0 + w 1 x y= w_0+w_1x y=w0+w1x 是一条直线,给定五个样本,如下图所示多项式函数
:对于更复杂数据分布情况,可以考虑做多项式回归,使用多项式模型 f ( x , w ) = w 0 + w 1 x + w 2 x 2 + . . . + w m x m f(\pmb{x,w}) = w_0+w_1x+w_2x^2 + ... + w_mx^m f(x,wx,wx,w)=w0+w1x+w2x2+...+wmxm 在做最小二乘计算前,先做数据预处理把 x x x 的各次方都算出来,这样就回到线性模型,另外通过选择不同的多项式函数(模型),能得到不同的拟合结果任意函数
:从理论上讲,最小二乘法可以拟合任何函数,因为我们可以通过泰勒展开,使用多项式函数逼近将任何函数曲线。泰勒展开式如下
- 上一节中 “常数函数模型” 这个示例中,未知数个数 p = 1 p=1 p=1,由于每一个测量结果都有微小误差,除非 n n n 个观测中有 n − p = n − 1 n-p=n-1 n−p=n−1 个都无效,否则把他们联立起来就会出现冲突导致无解,反之有解就意味着所有测量结果一模一样
- 上一节中 “简单线性模型” 这个示例中,未知数有 w 0 , w 1 w_0,w_1 w0,w1 两个, p = 2 p=2 p=2,只需要两个观测样本就能确定一条直线,而把这 n = 5 n=5 n=5 个样本联立在一起就无解(找不到一条可以通过全部五个样本点的直线),除非其中 5 − 2 = 3 5-2=3 5−2=3 个样本无效(有四个样本共线)
综上所述,面对方程组 A x = b \pmb{Ax} = \pmb{b} AxAxAx=bbb 我们如下处理
可见计算时要求方阵 A ⊤ A \pmb{A^\top A} A⊤AA⊤AA⊤A 必须可逆。本节说明以下结论
若 A \pmb{A} AAA 的列向量线性无关,则 A ⊤ A \pmb{A^\top A} A⊤AA⊤AA⊤A 可逆
证明需要用到结论:对于任意矩阵 A \pmb{A} AAA, A \pmb{A} AAA 列向量线性无关 ⇔ \Leftrightarrow ⇔ A x = 0 \pmb{Ax} = \pmb{0} AxAxAx=000 只有零解。这个等价可从两个角度理解
证明流程
注意这里 A \pmb{A} AAA 放在回归任务的语境下就是上面的 X \pmb{X} XXX,其每一行是一个样本的特征向量,每一列对应一个特征, A \pmb{A} AAA 的列向量不是线性无关说明特征设计有问题,出现了冗余特征
若不可逆,可以通过对样本数据进行整理,去掉冗余特征,使其变为可逆矩阵