机器学习笔记-线性回归

1 - 线性回归问题

1.1 - 问题的提出

在银行发放信用卡时,我们希望算法可以给出针对用户信用卡额度的预测,即当我们收集到用户的一些信息(如下),那么我们如何决定发放给该用户的信用额度呢?

keyvalue
age23
annual salaryNTD 1,000,000
year in job0.5 year
current debt200,000

1.2 - 线性回归

这个问题要求我们的模型可以给出实数范围内的预测结果。同样的从最简单的假设出发,对于每一个用户, x = ( x 0 , x 1 , x 2 , ⋯   , x d ) x = (x_0 , x_1, x_2, \cdots, x_d) x=(x0,x1,x2,,xd),利用特征的加权和估计额度。我们希望在已经观测到的资料上用户特征的加权和可以很好的拟合用户的额度。
y = ∑ i = 0 d w i x i y = \sum_{i=0}^dw_ix_i y=i=0dwixi
这样得到了线性回归的假设函数为: h ( x ) = w T x h(x) = w^Tx h(x)=wTx

和之前用于分类的一点点不同在于加权和不需要再进行一个sign运算来决定是+1还是-1。加权的结果直接就是我们给出的预测值。

1.3 - 线性假设的直观认识

这里写图片描述

如果 x x x是一维的,就是要找出一条直线来最好的拟合平面上的点;如果 x x x是二维的,就是要找三维空间的一个平面来最好的拟合这些空间中的数据点。所谓最好的拟合, 就是要使得图中的所有的红线(误差 r e s i d u a l s residuals residuals,拟合之后还时存在的差异)的总长最小。

linear regression: find lines/hyperplanes with small residuals. \text{linear regression: find lines/hyperplanes with small residuals.} linear regression find lines/hyperplanes with small residuals.

1.4 - 损失函数

为了达到最好的拟合效果,我们就需要给定一个衡量residuals大小的方法,最常用的衡量错误的方法是平方误差 e r r ( y ^ , y ) = ( y ^ − y ) 2 err(\hat{y}, y) = (\hat{y} - y)^2 err(y^,y)=(y^y)2
E i n ( w ) = 1 N ∑ n = 1 N ( h ( x n ) − y n ) 2 (1) E_{in}(w) = \frac1N\sum_{n=1}^N(h(x_n)-y_n)^2 \tag 1 Ein(w)=N1n=1N(h(xn)yn)2(1)

损失函数越小,就代表模型拟合的越好(暂时认为这么说是对的)。 **现在我们的目标就是要最小化 E i n ( w ) E_{in}(w) Ein(w) **

2 - 线性回归算法

通过上一小节的分析,我们现在的目标就是要把 E i n E_{in} Ein做的越小越好,也就是要求一个好的 w w w来使得 E i n E_{in} Ein变小。
为了计算和表示的方便,我们将 E i n ( w ) E_{in}(w) Ein(w)的计算公式 ( 1 ) (1) (1)表示为向量的形式。
E i n ( w ) = 1 N ∑ n = 1 N ( w T x n − y n ) 2 = 1 N ∑ n = 1 N ( x n T w − y n ) 2 = 1 N ∥ x 1 T w − y 1 x 2 T w − y 2 ⋯ x N T w − y N ∥ 2 = 1 N ∥ [ x 1 T x 2 T ⋯ x N T ] w − [ y 1 y 2 ⋯ y N ] ∥ 2 = 1 N ∣ ∣ X ⏟ N × ( d + 1 ) w ⏟ ( d + 1 ) × 1 − y ⏟ N × 1 ∣ ∣ 2 \begin{aligned} & E_{in}(w) = \frac1N\sum_{n=1}^N(w^Tx_n-y_n)^2 = \frac1N\sum_{n=1}^N(x_n^Tw-y_n)^2 \\ & = \frac1N \begin{Vmatrix} x_1^Tw-y_1 \\ x_2^Tw-y_2 \\ \cdots \\ x_N^Tw-y_N \\ \end{Vmatrix} ^2 \\ & = \frac1N \begin{Vmatrix} \left[ \begin{array}{c} x_1^T \\ x_2^T \\ \cdots \\ x_N^T \\ \end{array} \right] w- \left[ \begin{array}{c} y_1 \\ y_2 \\ \cdots \\ y_N \\ \end{array} \right] \end{Vmatrix} ^2 \\ & = \frac{1}{N} ||\underbrace{X}_{N\times{(d+1)}} \underbrace{w}_{(d+1)\times1} - \underbrace{y}_{N\times1}||^2 \end{aligned} Ein(w)=N1n=1N(wTxnyn)2=N1n=1N(xnTwyn)2=N1x1Twy1x2Twy2xNTwyN2=N1x1Tx2TxNTwy1y2yN2=N1N×(d+1) X(d+1)×1 wN×1 y2
现在我们的目标变为求最优的 w w w最小化 E i n E_{in} Ein

m i n w E i n ( w ) = 1 N ∣ ∣ X w − y ∣ ∣ 2 \mathop {min} \limits_{w} \quad E_{in}(w) = \frac1N||Xw-y ||^2 wminEin(w)=N1Xwy2

关于这个 E i n ( w ) E_{in}(w) Ein(w)

  • E i n ( w ) E_{in}(w) Ein(w): 连续,可微分,凸函数(函数的曲线像山谷一样)。
  • 凸函数在函数的最低点(谷底,函数取最小值的地方)的梯度(沿各个变量的方向的导数都)为 0 0 0

这里写图片描述

来自维基百科

如果要求得 E i n E_{in} Ein的最小值, 就要满足 ▽ E i n ( w ) = 0 \bigtriangledown E_{in}(w) = 0 Ein(w)=0,这是一个我们能求得最小值的方法。

task:find  w L I N  such that  ▽ E i n ( w ) = 0 \text{task:find } w_{LIN} \text{ such that } \bigtriangledown E_{in}(w) = 0 taskfind wLIN such that Ein(w)=0

也就是说能使得 E i n ( w ) E_{in}(w) Ein(w)的梯度为 0 0 0 w w w就是我们模型的最佳的参数 w L I N w_{LIN} wLIN(在这个点上 E i n E_{in} Ein沿各个方向上的偏微分都是0)

▽ E i n ( w ) = [ α E i n α w 0 ( w ) α E i n α w 1 ( w ) ⋯ α E i n α w d ( w ) ] = [ 0 0 ⋯ 0 ] \begin{aligned} \bigtriangledown E_{in}(w)= \left[ \begin{array}{c} \frac {\alpha E_{in}}{\alpha w_0}(w) \\ \frac {\alpha E_{in}}{\alpha w_1}(w) \\ \cdots \\ \frac {\alpha E_{in}}{\alpha w_d}(w) \\ \end{array} \right] =\left[ \begin{array}{c} 0 \\ 0 \\ \cdots \\ 0 \\ \end{array} \right] \end{aligned} Ein(w)=αw0αEin(w)αw1αEin(w)αwdαEin(w)=000

所以现在的目标是要求解一个 w l i n w_{lin} wlin使得 ▽ E i n ( w l i n ) = 0 \bigtriangledown E_{in}(w_{lin})=0 Ein(wlin)=0

2.1 - 求梯度

要找使得 E i n E_{in} Ein梯度为 0 0 0 w l i n w_{lin} wlin,那么第一步我们要考虑的是如何求梯度。
E i n ( w ) = 1 N ∣ ∣ X w − y ∣ ∣ 2 = 1 N ( w T X T X ⏟ a w − 2 w T X T y ⏟ b + y T y ⏟ c ) E_{in}(w) = \frac1N||Xw-y||^2=\frac1N(w^T\underbrace{X^TX}_{a}w - 2w^T\underbrace{X^Ty}_{b}+\underbrace{y^Ty}_{c}) Ein(w)=N1Xwy2=N1(wTa XTXw2wTb XTy+c yTy)
如何求 ▽ E i n ( w ) \triangledown E_{in}(w) Ein(w)

  • w w w一维的时候:
    E i n ( w ) = 1 N ( a w 2 − 2 b w + c ) E_{in}(w) = \frac{1}{N}(aw^2-2bw+c) Ein(w)=N1(aw22bw+c) ⟶ \longrightarrow ▽ E i n ( w ) = 1 N ( 2 a w − 2 b ) \triangledown E_{in}(w)=\frac1N(2aw-2b) Ein(w)=N1(2aw2b)
  • w w w向量的时候:
    E i n ( w ) = 1 N ( w T A w − 2 w T b + c ) E_{in}(w) = \frac{1}{N}(w^TAw-2w^Tb+c) Ein(w)=N1(wTAw2wTb+c) ⟶ \longrightarrow ▽ E i n ( w ) = 1 N ( 2 A w − 2 b ) \triangledown E_{in}(w)=\frac1N(2Aw-2b) Ein(w)=N1(2Aw2b)

这样我们就得到了线性回归的损失函数 E i n E_{in} Ein的梯度是:

▽ E i n ( w ) = 2 N ( X T X w − X T y ) \triangledown E_{in}(w)=\frac2N(X^TXw-X^Ty) Ein(w)=N2(XTXwXTy)

2.2 - 得到最佳的权重

现在我们已经求出了梯度的表达式,接下来要做的就是求得使得梯度为0的 w l i n w_{lin} wlin

task: find w l i n w_{lin} wlin such that 2 N ( X T X w − X T y ) = ▽ E i n ( w ) = 0 \frac2N(X^TXw-X^Ty)=\bigtriangledown E_{in}(w)=0 N2(XTXwXTy)=Ein(w)=0

▽ E i n ( w ) = 0 ⟶ 2 N ( X T X w − X T y ) = 0 ⟶ w l i n = ( X T X ) − 1 X T ⏟ X †   y ⟶ w l i n = X † y \begin{aligned} & \bigtriangledown E_{in}(w)=0 \\ & \longrightarrow \frac2N(X^TXw-X^Ty)=0 \\ & \longrightarrow w_{lin} =\underbrace{ (X^TX)^{-1}X^T}_{X^{\dagger}}\ y \\ & \longrightarrow w_{lin} = X^{\dagger}y \end{aligned} Ein(w)=0N2(XTXwXTy)=0wlin=X (XTX)1XT ywlin=Xy
其中 X † 为 X 的 p s e u d o X^{\dagger}为X的pseudo XXpseudo- i n v e r s e inverse inverse

2.3 - 线性回归模型

  1. 从数据 D D D中, 构造数据矩阵 X X X和输出向量 y y y
    X N × ( d + 1 ) = [ x 1 T x 2 T ⋯ x N T ] y = [ y 1 y 2 ⋯ y N ] \begin{aligned} X_{N\times(d+1)}=\left[ \begin{array}{c} x_1^T \\ x_2^T \\ \cdots \\ x_N^T \\ \end{array} \right] \qquad y=\left[ \begin{array}{c} y_1 \\ y_2 \\ \cdots \\ y_N \\ \end{array} \right] \end{aligned} XN×(d+1)=x1Tx2TxNTy=y1y2yN
  2. 计算伪逆 X † : ( d + 1 ) × N X^{\dagger}:(d+1)\times N X(d+1)×N
  3. 返回权重 w l i n = X † y w_{lin}=X^{\dagger}y wlin=Xy
  4. h = X X † y h = XX^{\dagger}y h=XXy

所以只要有一个很好的可以求解伪逆的算法包,我们就可以很容易的求得线性回归模型的最佳参数,从而得到一个线性回归模型 y ^ = X X † y \hat{y} = XX^{\dagger}y y^=XXy, 我们把这样求得的线性模型的参数称为 analytic solution \text{analytic solution} analytic solution或者是 closed-form solution \text{closed-form solution} closed-form solution

3 - 线性回归用于二分类

3.1 - 线性回归vs线性分类

我们了解了linear regression,现在来看看线性回归和之前我们介绍的线性分类有什么不同。

  • 线性分类
    y = { + 1 , − 1 } h ( x ) = s i g n ( w T x ) e r r ( y , y ^ ) = ∣ [ y ≠ y ^ ] ∣ \begin{aligned} y & = {\{+1, -1\}} \\ h(x) & = sign(w^Tx) \\ err(y, \hat y) & = |[y \ne \hat y]| \end{aligned} yh(x)err(y,y^)={+1,1}=sign(wTx)=[y=y^]
    想要最小化 e r r ( y , y ^ ) err(y, \hat y) err(y,y^)(划分错误的点最少)是一个 N P NP NP难问题。
  • 线性回归
    y ∈ R h ( x ) = w T x e r r ( y , y ^ ) = ( y − y ^ ) 2 \begin{aligned} y & \in R \\ h(x) & = w^Tx \\ err(y, \hat y) & = (y - \hat y)^2 \end{aligned} yh(x)err(y,y^)R=wTx=(yy^)2
    有解析解, 非常容易求解。

由于线性回归有这么容易求解的方法,而 { + 1 , − 1 } ∈ R \{+1, -1\} \in R {+1,1}R, 那么我们是不是可以使用线性回归来做分类呢?说不定线性回归算法通过一番计算,得到的线性回归模型可以在样本的label为1的时候,返回一个大于0的数; 在样本的label为-1的时候,返回一个小于0的数。
我们只需要在意识上将用于标识正例和负例的 + 1 +1 +1 − 1 -1 1当做是我们想要拟合的数值就好了。怎么从数学的角度证明这个想法的可行性呢?

3.2 - 两种损失函数的关系

l i n e a r   r e g r e s s i o n linear\ regression linear regression l i n e a r   c l a s s i f i c a t i o n linear\ classification linear classification最大的差别就是他们的 e r r o r   f u n c t i o n error\ function error function

  • 0/1 error function \text{0/1 error function} 0/1 error function
    e r r 0 / 1 ( y , y ^ ) = ∣ [ s i g n ( w T x ) ≠ y ] ∣ err_{0/1}(y, \hat y) = |[sign(w^Tx) \ne y]| err0/1(y,y^)=[sign(wTx)=y]
  • square error function \text{square error function} square error function
    e r r s q r ( y , y ^ ) = ( w T x − y ) 2 err_{sqr}(y, \hat y) = (w^Tx - y)^2 errsqr(y,y^)=(wTxy)2

这里写图片描述

左图是 y = 1 y=1 y=1的情况下 e r r err err作为 w T x w^Tx wTx的函数;右图是 y = − 1 y=-1 y=1的情况下 e r r err err作为 w T x w^Tx wTx的函数。从这个“图形化的证明”可以看到不管 w T x w^Tx wTx的值是什么, e r r s q r err_{sqr} errsqr都是大于 e r r 0 / 1 err_{0/1} err0/1的。也就是在同一个 w T x w^Tx wTx下, 平方的错误是大于0/1的错误的。
e r r 0 / 1 ≤ e r r s q r err_{0/1} \le err_{sqr} err0/1errsqr
这能说明什么呢?
根据VC维的理论有:

c l a s s i f i c a t i o n   E o u t ( w ) ≤ c l a s s i f i c a t i o n   E i n ( w ) + ◯ ≤ r e g r e s s i o n   E i n ( w ) + ◯ \begin{aligned} classification\ E_{out}(w) & \le classification\ E_{in}(w) + \sqrt\bigcirc \\ & \le regression\ E_{in}(w) + \sqrt\bigcirc\\ \end{aligned} classification Eout(w)classification Ein(w)+ regression Ein(w)+

通过上面的这个不等式可以看出,如果我们可以将 r e g r e s s i o n   E i n ( w ) regression\ E_{in}(w) regression Ein(w)做的很小,那么在一定的程度上保证了 c l a s s i f i c a t i o n   E o u t ( w ) classification\ E_{out}(w) classification Eout(w)也会很小。
所以这就从理论上解释了为什么线性回归可以用来做分类。**虽然对于线性分类来说线性回归只是在不断的优化(最小化)它的上限。但是优化它的上限是很容易做到的。 **
这就是 l i n e a r   r e g r e s s i o n   f o r   c l a s s i f i c a t i o n linear\ regression\ for\ classification linear regression for classification,所以当使用 l i n e a r   r e g r e s s i o n linear\ regression linear regression计算出来的权重 w w w不仅仅可以用于 r e g r e s s i o n regression regression,也可以用于 b i n a r y   c l a s s i f i c a t i o n binary\ classification binary classification。在很多情况下表现还是不错的。

具体的使用方法是

一般的做法当我们需要进行二分类的时候,我们可以使用 linear regression \text{linear regression} linear regression的结果当做是 PLA 算 法 或 者 是 \text{PLA}算法或者是 PLA\text{Pocket} 算 法 的 初 始 的 算法的初始的 w_0 。 这 样 可 能 会 加 速 。这样可能会加速 \text{PLA}算法或者 Pocket \text{Pocket} Pocket算法的速度。这是一种常见的把 linear regression \text{linear regression} linear regression使用在资料分类的方式。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习线性回归是一种常见的机器学习算法,用于预测数值型变量的值。下面是一个简单的回归例子,以展示如何使用这个算法。 首先,我们需要准备数据集。假设我们有一个房屋价格的数据集,其中包含了房屋的大小和房价。我们可以使用这个数据集来训练一个线性回归模型,以便预测房价。 在介绍算法之前,我们需要导入必要的库,如numpy和pandas。这些库将帮助我们处理和分析数据。 接下来,我们加载数据集并进行必要的数据清洗。这可能包括去除缺失值、处理异常值等。 然后,我们将数据集分为训练集和测试集。训练集将用于训练模型,而测试集将用于评估模型的性能。 在进行机器学习之前,我们需要对数据进行特征缩放。这可以确保所有特征都具有相同的重要性。 接下来,我们将使用线性回归算法来拟合我们的训练数据。这将生成一个线性模型,该模型可以用于预测房价。 我们可以使用模型的系数和截距来了解每个特征对预测的影响。系数的正负表示了特征影响的方向,而系数的绝对值表示了特征的重要性。 最后,我们可以使用测试集来评估模型的性能。我们可以使用一些常见的性能指标,如均方误差和决定系数来评估我们的模型。 总结一下,这个机器学习线性回归的例子笔记本演示了如何使用线性回归算法来预测房价。它涵盖了数据准备、模型训练、模型评估等步骤,以及一些常用的数据处理和模型评估技术。通过这个例子,我们可以更好地理解和应用机器学习线性回归算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值