线性回归算法

源码传送门

3.1 线性回归基本概念

3.1.1 线性模型

机器学习将一个形如
h w , b ( x ) = < x , y > + b (3.1) h_{w,b}(x) = <x,y>+b \tag{3.1} hw,b(x)=<x,y>+b(3.1)
R n → R \mathbb{R^n}\to\mathbb{R} RnR 的函数称为一个线性模型,上式中 w , b ∈ R n w,b\in\mathbb{R^n} w,bRn 均为 n n n 维向量, b ∈ R b\in\mathbb{R} bR 为偏置项。 < w , x > <w,x> <w,x>表示 w w w x x x的内积。当 n = 1 n=1 n=1时,线性模型表示一条直线; n = 2 n=2 n=2时,线性模型表示个超平面;当 n ≥ 3 n\geq3 n3时,表示 n n n维空间的超平面。
一般情况下,线性回归算法实际上是一个经验损失最小化算法

线性回归算法
样本空间 X ⊆ R n X\subseteq\mathbb{R^n} XRn
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出:线性模型 h w ∗ , b ∗ ( x ) = < w ∗ , x > + b ∗ h_{w^*,b^*}(x)=<w^*,x>+b^* hw,b(x)=<w,x>+b,使得 w ∗ 、 b ∗ w^*、b^* wb为优化问题
m i n w ∈ R , b ∈ R 1 m ∑ i = 1 m ( < w , x ( i ) > + b − y ( i ) ) 2 \underset{w\in \mathbb{R},b\in \mathbb{R}}{min}{1\over m}\sum_{i=1}^m(<w,x^{(i)}>+b-y^{(i)})^2 wR,bRminm1i=1m(<w,x(i)>+by(i))2
的最优解

3.1.2 均方误差

均方误差:将线性回归目标函数
m i n w ∈ R , b ∈ R 1 m ∑ i = 1 m ( < w , x ( i ) > + b − y ( i ) ) 2 (3.2) \underset{w\in \mathbb{R},b\in \mathbb{R}}{min}{1\over m}\sum_{i=1}^m(<w,x^{(i)}>+b-y^{(i)})^2 \tag{3.2} wR,bRminm1i=1m(<w,x(i)>+by(i))2(3.2)
称为均方误差
下面是均方误差线性模型的结果:
在这里插入图片描述

首先解释以下均方误差的几何意义,在几何学中将一点 P P P与直线 L L L之间纵向距离 d d d的平方称为直线 L L L P P P点的拟合误差。 P P P L L L的纵向距离为 P P P L L L上沿纵轴方向的投影点 Q Q Q P P P之间的距离。(文字看不懂直接看图doge)
在这里插入图片描述
这里可能就会产生疑问,为什么要加平方?
因为误差有正负,不平方会相互抵消掉。
那为什么不使用绝对值的和作为误差,其实完全可以使用绝对值,形式如下:
m i n w ∈ R , b ∈ R 1 m ∑ i = 1 m ∣ < w , x ( i ) > + b − y ( i ) ∣ \underset{w\in \mathbb{R},b\in \mathbb{R}}{min}{1\over m}\sum_{i=1}^m|<w,x^{(i)}>+b-y^{(i)}| wR,bRminm1i=1m<w,x(i)>+by(i)
不采用上面形式的原因我知道的是,绝对值函数不是处处可微,在迭代计算梯度时需要消耗额外的资源开销

3.1.3 似然函数

似然函数:给定随变量 Y Y Y,定义
L i k e ( w ∣ y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) ) = ∏ i = 1 n p w ( Y = y ( i ) ) (3.3) Like(w|y^{(1)},y^{(2)}, \cdots ,y^{(m)})=\prod_{i=1}^np_w(Y=y^{(i)}) \tag{3.3} Like(wy(1),y(2),,y(m))=i=1npw(Y=y(i))(3.3)
Y Y Y m m m个独立采样恰为 y ( 1 ) , y ( 2 ) , . . . , y ( m ) y^{(1)},y^{(2)},...,y^{(m)} y(1),y(2),...,y(m)的概率,称其为概率分布 p w p_w pw关于 y ( 1 ) , y ( 2 ) , . . . , y ( m ) y^{(1)},y^{(2)},...,y^{(m)} y(1),y(2),...,y(m)的似然函数。
以下是概率统计中最大似然原则:如果 y ( 1 ) , y ( 2 ) , . . . , y ( m ) y^{(1)},y^{(2)},...,y^{(m)} y(1),y(2),...,y(m) Y Y Y m m m个独立采样,而 w ∗ w^* w是使得似然函数最大化的一组参数即:
w ∗ = a r g m a x w ∈ R n L i k e ( w ∣ y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) ) (3.4) w^*=\underset{w\in \mathbb{R^n}}{argmax} Like(w|y^{(1)},y^{(2)}, \cdots ,y^{(m)})\tag{3.4} w=wRnargmaxLike(wy(1),y(2),,y(m))(3.4)
则可以判定 Y Y Y的概率分布是 p w ∗ p_{w^*} pw
就是说取定一组参数 w w w可以使所有样本在这组参数下的概率之积最大
用一个例子解释:
eg:抛三枚硬币三次的结果是 正,正,反
正面朝上则 Y = 1 Y=1 Y=1;否则, Y = 0 Y=0 Y=0,其中 p w ( Y = 1 ) = w p_w(Y=1)=w pw(Y=1)=w。则似然函数为
L i k e ( w ∣ 正正反 ) = w 2 ( 1 − w ) (3.5) Like(w|正正反)=w^2(1-w)\tag{3.5} Like(w正正反)=w2(1w)(3.5)
求导容易解出 w ∗ = 2 / 3 w^*=2/3 w=2/3时似然函数取得最大值,根据似然函数判断出正面的概率为 2 / 3 2/3 2/3

3.1.4 均方误差的统计学意义

明白似然函数之后来看以下均方误差的统计意义
在线性回归中,有一个对标签分布的基本假设。也就是说,对任意样本 x x x,标签分布 D x D_x Dx都是一个正态分布。因此,如果模型 h w , b ( x ) = < w , x > + b h_{w,b}(x)=<w,x>+b hw,b(x)=<w,x>+b为标签的期望,则 D x = N ( h w , b ( x ) , σ ) D_x=N(h_{w,b}(x),\sigma) Dx=N(hw,b(x),σ),为简化记号,这里假设 σ = 1 \sigma=1 σ=1,所以标签分布属于参数化的概率分布族
P = { N ( h w , b ( x ) , 1 ) : w ∈ R n , b ∈ R } (3.6) P=\{N(h_{w,b}(x),1):w\in\mathbb{R^n},b\in\mathbb{R} \}\tag{3.6} P={N(hw,b(x),1):wRn,bR}(3.6)
根据线性模型的定义,可以得出似然函数为
L i k e ( w , b ∣ y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) ) = ∏ i = 1 n 1 2 π e − ( h w , b ( x ( i ) ) − y ( i ) ) 2 (3.7) Like(w,b|y^{(1)},y^{(2)}, \cdots ,y^{(m)})=\prod_{i=1}^n\frac{1}{\sqrt{2\pi}}e^{-(h_{w,b}(x^{(i)})-y^{(i)})^2} \tag{3.7} Like(w,by(1),y(2),,y(m))=i=1n2π 1e(hw,b(x(i))y(i))2(3.7)
上式中的似然函数与均方误差有以下关系:
a r g m a x w , b L i k e ( w , b ∣ y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) ) = a r g m i n w , b 1 m ∑ i = 1 m ( h w , b ( x ( i ) ) − y ( i ) ) 2 (3.8) \underset{w,b}{argmax}Like(w,b|y^{(1)},y^{(2)}, \cdots ,y^{(m)})=\underset{w,b}{argmin}\frac{1}{m}\sum_{i=1}^m(h_{w,b}(x^{(i)})-y^{(i)})^2 \tag{3.8} w,bargmaxLike(w,by(1),y(2),,y(m))=w,bargminm1i=1m(hw,b(x(i))y(i))2(3.8)
上式是由(3.7)式的似然函数取对数,可将乘积转化为更简单的和式

最后让 x ~ = ( 1 , x ) , w ~ = ( b , w ) \widetilde{x}=(1,x),\widetilde{w}=(b,w) x =(1,x),w =(b,w),然后还将 x ~ , w ~ \widetilde{x},\widetilde{w} x ,w 表示成 x , w x,w x,w

线性回归算法(简化记号)
样本空间 X ⊆ R n X\subseteq\mathbb{R^n} XRn每个样本首位是1
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出:线性模型 h w ∗ , b ∗ ( x ) = < w ∗ , x > h_{w^*,b^*}(x)=<w^*,x> hw,b(x)=<w,x>,使得 w ∗ 、 b ∗ w^*、b^* wb为优化问题
m i n w ∈ R 1 m ∑ i = 1 m ( < w , x ( i ) > − y ( i ) ) 2 \underset{w\in \mathbb{R}}{min}{1\over m}\sum_{i=1}^m(<w,x^{(i)}>-y^{(i)})^2 wRminm1i=1m(<w,x(i)>y(i))2
的最优解

3.1.5 决定系数

决定系数就是用来评价模型好坏的一个指标
决定系数:设 y ‾ = 1 m ∑ i = 1 m y ( i ) \overline{y}=\frac1m\sum_{i=1}^my^{(i)} y=m1i=1my(i),定义
R 2 = 1 − ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 ∑ i = 1 m ( y ‾ − y ( i ) ) 2 (3.11) R^2=1-\frac{\sum_{i=1}^m(h(x^{(i)}) - y^{(i)})^2}{\sum_{i=1}^m(\overline{y}-y^{(i)})^2}\tag{3.11} R2=1i=1m(yy(i))2i=1m(h(x(i))y(i))2(3.11)
决定系数是将平均值模型作为标尺
R 2 R^2 R2值越接近于1拟合效果越好

3.2 线性回归优化算法

线性回归的均方误差
F ( w ) = 1 m ∑ i = 1 m ( < w , x ( i ) > − y ( i ) ) 2 (3.13) F(w)=\frac1m\sum_{i=1}^m(<w,x^{(i)}>-y^{(i)})^2 \tag{3.13} F(w)=m1i=1m(<w,x(i)>y(i))2(3.13)
这是关于 w w w的可微凸函数,所以线性回归是一个凸优化问题。
凸集的定义为: 其几何意义表示为:如果集合C中任意2个元素连线上的点也在集合C中,则C为凸集。
凸函数可以理解为函数上任意两点的连线在函数上方。
凸优化问题就上在凸集和凸函数条件下的优化问题。

3.2.1 线性回归求解

首先定义 X X X y y y为如下矩阵:
X = [ x ( 1 ) T x ( 2 ) T ⋮ x ( m ) T ] , y = [ y ( 1 ) y ( 2 ) ⋮ y ( m ) ] X=\begin{bmatrix}x^{(1)T} \\ x^{(2)T}\\ \vdots \\x^{(m)T} \end{bmatrix},\quad y=\begin{bmatrix}y^{(1)} \\ y^{(2)}\\ \vdots \\y^{(m)} \end{bmatrix} X= x(1)Tx(2)Tx(m)T ,y= y(1)y(2)y(m)
X X X是一个 m × n m\times n m×n矩阵, y y y是一个 m × 1 m\times 1 m×1矩阵, X X X称为特征矩阵, y y y称为标签向量。 n n n表示每个数据有n个特征, m m m表示有m条数据
所以线性回归的目标函数等价于:
m i n w ∈ R n F ( w ) = ∥ X w − y ∥ 2 (3.14) \underset{w\in\mathbb{R^n}}{min}F(w)=\begin{Vmatrix} Xw-y \end{Vmatrix}^2 \tag{3.14} wRnminF(w)= Xwy 2(3.14)
然后求出最优解就比较容易了,因为是凸函数,并且集合是全集,所以对(3.14)求导,导数值等于0的点就是最优解。
∇ F ( w ) = 2 X T X w − 2 X T y = 0 (3.15) \nabla F(w)=2X^TXw-2X^Ty=0 \tag{3.15} F(w)=2XTXw2XTy=0(3.15)
整理即可得出:
w ∗ = ( X T X ) − 1 X T y (3.16) w^*=(X^TX)^{-1}X^Ty \tag{3.16} w=(XTX)1XTy(3.16)
(3.15)式也成为正规方程。在 X T X X^TX XTX可逆时方程有唯一解(3.16)

3.2.2 特征标准化

例如在房价预测问题中人口数与卧室数,这两个特征分量的量级是不同的,量级较大的特征将主导模型的训练,可能忽视较小量级的特征分量。特征标准化就是把每个特征都转化到同一个量级。
在概率论中公式
x j ( i ) ← x j ( i ) − μ j σ j x_j^{(i)}\leftarrow \frac{x_j^{(i)}-\mu_j }{\sqrt{\sigma_j}} xj(i)σj xj(i)μj
x j ( i ) ∼ N ( 0 , 1 ) x_j^{(i)} \sim N(0,1) xj(i)N(0,1)这只是一种方法,在实际应用中可根据情况选择

3.3 多项式回归

首先多项式回归和线性回归的区别如果模型中 x x x都是一次就是线性回归,大于一次就是多项式回归。下面就是多项式回归
在这里插入图片描述
多项式回归真的和线性回归没啥区别直接举个例子就能理解
eg x = ( 1 , x 1 , x 2 ) x=(1,x_1,x_2) x=(1,x1,x2),对x进行拟合就是线性模型,结果是一个平面
x x x处理一下变成 x = ( 1 , x 1 , x 2 , x 1 x 2 , x 1 2 , x 2 2 ) x=(1,x_1,x_2,x_1x_2,x_1^2,x_2^2) x=(1,x1,x2,x1x2,x12,x22),再对 x x x拟合结果就是一个曲面,

from sklearn.preprocessing import PolynomialFeatures
#这个函数可以将数据变为指定的n次多项式

3.4 线性回归的正则化算法

3.4.1 L 2 L2 L2正则化|岭回归

线性回归的 L 2 L_2 L2正则化:
m i n w ∈ R n F ( w ) = 1 m ∑ i = 1 m ∥ X w − y ∥ 2 + λ ∥ w ∥ 2 \underset{w\in\mathbb{R^n}}{min}F(w)=\frac1m\sum_{i=1}^m\begin{Vmatrix} Xw-y \end{Vmatrix}^2 +\lambda\begin{Vmatrix} w \end{Vmatrix}^2 wRnminF(w)=m1i=1m Xwy 2+λ w 2
前面有说到正规方程的解 w ∗ = ( X T X ) − 1 X T y w^*=(X^TX)^{-1}X^Ty w=(XTX)1XTy,必须要 X T X X^TX XTX可逆,当特征个数n大于训练数据数m时, X T X X^TX XTX不可逆,而当 X T X X^TX XTX不可逆时均方误差函数图像会呈现山岭状。
在这里插入图片描述
而在加入 L 2 L_2 L2正则化项之后
在这里插入图片描述
函数从凸函数变成严格凸函数,最优解变得唯一。
严格凸函数的证明可以去搜Hessian矩阵半正定。
当然这里只是说了加上正则化项的函数凸性的变化,其实加入正则化项的目的主要是减小过拟合。

3.4.2 L 2 L2 L2正则化|岭回归求解

岭回归目标函数
m i n w ∈ R n F ( w ) = 1 m ∑ i = 1 m ∥ X w − y ∥ 2 + λ ∥ w ∥ 2 \underset{w\in\mathbb{R^n}}{min}F(w)=\frac1m\sum_{i=1}^m\begin{Vmatrix} Xw-y \end{Vmatrix}^2 +\lambda\begin{Vmatrix} w \end{Vmatrix}^2 wRnminF(w)=m1i=1m Xwy 2+λ w 2
对上式求导:
∇ F ( w ) = X T ( X w ∗ − y ) + m λ w ∗ = 0 \nabla F(w)=X^T(Xw^*-y)+m\lambda w^*=0 F(w)=XT(Xwy)+w=0
最优解:
w ∗ = ( X T X + m λ I ) − 1 X T y w^*=(X^TX+m\lambda I)^{-1}X^Ty w=(XTX+I)1XTy
其中 I I I是单位阵,并且 X T X + m λ I X^TX+m\lambda I XTX+I是可逆的
在这里插入图片描述

3.4.3 L 1 L_1 L1正则化|Lasso回归,弹性网回归

Lasso回归
m i n w ∈ R n F ( w ) = 1 m ∑ i = 1 m ∥ X w − y ∥ 2 + λ ∣ w ∣ \underset{w\in\mathbb{R^n}}{min}F(w)=\frac1m\sum_{i=1}^m\begin{Vmatrix} Xw-y \end{Vmatrix}^2 +\lambda |w | wRnminF(w)=m1i=1m Xwy 2+λw
弹性网回归
m i n w ∈ R n F ( w ) = 1 m ∑ i = 1 m ∥ X w − y ∥ 2 + r λ ∥ w ∥ 2 + ( 1 − r ) λ ∣ w ∣ \underset{w\in\mathbb{R^n}}{min}F(w)=\frac1m\sum_{i=1}^m\begin{Vmatrix} Xw-y \end{Vmatrix}^2 +r\lambda\begin{Vmatrix} w \end{Vmatrix}^2 + (1-r)\lambda |w| wRnminF(w)=m1i=1m Xwy 2+rλ w 2+(1r)λw
带绝对值的优化问题在后面搜索算法中会讲到,这里就不过多的说。

3.5 线性回归的特征选择算法

3.5.1 向前逐步回归|向后逐步回归

向前逐步回归
简单来说就是在引入一个特征后能显著的减小模型的均方误差,则认为该特征与标签有关联;否则认为该特征与标签无关联。

#完成文件放到最后
#向前逐步回归算法
    def forward_selection(self, X, y):
        m,n = X.shape 
        A, C = [0], [i for i in range(1,n)]#初始化,A开始只有一个特征
        for i in range(n-1):
            MSE_A = self.compute_mse(X[:,A], y)
            MSE_min, j_min = float("inf"), -1
            j_min = -1
            for j in C: #找出使均方误差下降最大的特征
                MSE_j = self.compute_mse(X[:, A+[j]], y)
                if MSE_j < MSE_min:
                    MSE_min, j_min = MSE_j, j
            if self.f_test(MSE_A, MSE_min, m):#这里是一个f检验,判断是否接受
                A.append(j_min) # 接受就在A中加入特征
                C.remove(j_min) 
            else:
                break
        self.w = self.fit(X[:, A], y)
        self.A = A

向后逐步回归
和向前逐步回归相反,首先选择所有特征,然后根据均方误差受否显著增大来剔除已选择的特征。

3.5.2 分段回归

先说以下相关系数 u , v ∈ R n u,v\in \mathbb{R^n} u,vRn定义
c o r r ( u , v ) = < u , v > ∥ u ∥ ∥ v ∥ corr(u,v)=\frac{<u,v>}{\begin{Vmatrix} u\end{Vmatrix}\begin{Vmatrix} v \end{Vmatrix}} corr(u,v)= u v <u,v>
u , v u,v u,v之间的相关系数(其实就是余弦cos)
如果相关系数的绝对值越大即越接近于1,则 u , v u,v u,v之间的相关性越强,相关系数正负,表明正相关还是负相关。
分段回归就是在每一次循环中,首先计算当前参数对应模型的误差 r = y − X w r=y-Xw r=yXw然后找出与 r r r相关系数的绝对值最高的特征 j ∗ j^* j(特征矩阵 X X X的一列),然后根据正负相关使参数 w w w的沿着特征 j ∗ j^* j w w w的第j个分量)前进一步。
下面是迭代过程中参数 w w w分量的变化。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
线性回归算法的发展历程可以追溯到19世纪末。以下是线性回归算法的发展历程: 1. 19世纪末,高尔顿和他的学生K·Pearson观察了1078对夫妇,以每对夫妇的平均身高作为自变量,取他们的一个成年儿子的身高作为因变量。他们发现父母身高和子代身高之间存在近乎一条直线的关系,即回归直线方程为:y^=33.73+0.516x。这是线性回归算法的最早应用之一。 2. 在20世纪初,统计学家卡尔·皮尔逊进一步发展了线性回归算法。他提出了最小二乘法,用于拟合回归直线并估计回归系数。最小二乘法通过最小化残差平方和来确定最佳拟合直线,使得预测值与实际观测值之间的差异最小化。 3. 在20世纪中叶,计算机的发展使得线性回归算法得以广泛应用。计算机的出现使得回归分析的计算更加高效和准确。此时,线性回归算法开始在各个领域得到广泛应用,包括经济学、社会科学、医学等。 4. 随着时间的推移,线性回归算法不断发展和改进。研究人员提出了各种改进的线性回归模型,如多元线性回归、岭回归、lasso回归等。这些改进的模型考虑了更多的因素和变量,提高了模型的预测能力和解释能力。 5. 近年来,随着机器学习和深度学习的兴起,线性回归算法也得到了进一步的发展。线性回归算法被用作其他更复杂模型的基础,如神经网络中的线性层。 总结起来,线性回归算法的发展历程可以追溯到19世纪末,经过了统计学家的研究和改进,以及计算机的发展,逐渐成为一种广泛应用的预测和分析工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喂★借个微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值