机器学习回归理论推导——以线性回归为例

1. 概述

机器学习一共有两大主要任务,一类是讲实例数据划分到合适的分类中,也就是分类问题;另一类是用于预测数值型数据,也就是回归问题。
我们应该都建构回归的例子——数据拟合曲线:通过给定数据拟合出最优的曲线。
拟合曲线也就是使得所有数据点的结果(真实的y) 和 曲线拟合出的结果(拟合出的y)差距 的总和最小,在回归中最经典的方法就是最小二乘法,本文以拟合线性回归数据为例, 利用最小二乘法来推导这一回归过程。

2. 回归推导

2.1 单变量线性回归简单示例

现在有数据如下:(x_{1},y_{1} ), (x_{2},y_{2} )...... (x_{m},y_{m} )一共m个数据, 我们的目的是拟合一条曲线,使得所有数据到这条曲线的距离和最小;
假设我们的拟合曲线为 f(x) = wx + b ,                                                                                                          (1)

 那么 此时的代价函数(cost function,也就是拟合出的y 和 真实的y 的总差距)为

J(x) = \frac{1}{2}\sum_{i=1}^{m}\left ( f(x_{i}) -y_{i}\right )^{2}             即                  J(w, b) = \frac{1}{2}\sum_{i=1}^{m}\left ( wx_{i} + b -y_{i}\right )^{2}                                       (2)

这里解释一下这个代价函数的原理

因为f(x_{i}) -y_{i}就是拟合值和实际值的差值,要计算总和,所以全部相加,但是因为f(x_{i}) -y_{i}有正有负,所以需要加绝对值,结果如下J(x) = \frac{1}{2}\sum_{i=1}^{m}\left | \left ( f(x_{i}) -y_{i}\right )\right |,但是涉及到绝对值的计算都相当的复杂,所以把差值f(x_{i}) -y_{i}加上平方可以极大的减少计算量并且不影响最终结果。这就是上面公式的原理。

因此代价函数表示的是拟合值f(x)与实际值y之间的差值的平方。它对应了欧几里得距离即“欧氏距离”。

基于均方误差最小化来求解模型的方法我们叫做“最小二乘法”。在线性回归中,最小二乘法实质上就是找到一条直线,使所有样本数据到该直线的欧式距离之和最小,即误差最小。 

求解代价函数的最小值,直接分别对其求\large w\large b的偏导,使其等于0,求解方程,解出\large w\large b的值,对应的曲线也就出来了。

分别对\large w\large b求偏导可得:

\frac{\partial J(w, b))}{\partial w} =\sum_{i=1}^{m}(wx_{i}^2 +(b-y_{i})x_{i})    J(w, b)w求偏导                                                                                 (3)

\frac{\partial J(w, b))}{\partial b} =\sum_{i=1}^{m}(wx_{i} +b-y_{i}) = mb + \sum_{i=1}^{m}(wx_{i} -y_{i})    J(w, b)b求偏导                                                    (4)

令(3)和(4)分别等于零,求得出\large w\large b的值如下:

b = \overline{y} - w\overline{x} = \tfrac{1}{m}\sum_{i=1}^{m}y_{i} - w\tfrac{1}{m}\sum_{i=1}^{m}x_{i}                                                                                                                (5)

\LARGE w =\tfrac{\sum_{i=1}^{m}y_{i}(x_{i}-\overline{x})}{\sum_{i=1}^{m}x_{i}^2-(\overline{x})^2} = \tfrac{\sum_{i=1}^{m}y_{i}(x_{i}-\tfrac{1}{m}\sum_{i=1}^{m}x_{i})}{\sum_{i=1}^{m}x_{i}^2-(\tfrac{1}{m}\sum_{i=1}^{m}x_{i})^2}                                                                   (6)

令(3)和(4)分别等于零,解出式(5)和(6),中间过程涉及到统计学知识,本文暂不赘述。

这样\large w\large b的辨得出结果了,相应的曲线也求出来了。

2.2 推广到一般情况

假设数据集有m个样本,每个样本有n个特征,用\large X矩阵表示样本和特征,\large X是一个 mxn 的矩阵:

\large X = \begin{bmatrix} x_{11} & x_{12} & ... & x_{1n} \\ x_{21}&x_{22} & ... & x_{2n} \\ \vdots & \vdots &\vdots &\vdots \\ x_{m1} & x_{m2} & ...& x_{mn} \\ \end{bmatrix}

用矩阵\large Y表示标签,是一个m×1的矩阵:

\large Y = \begin{bmatrix} y_{1} & y_{2} &...& y_{m} \\ \end{bmatrix}^T

假设参数为\large \Theta矩阵,是一个n×1的矩阵:

\large \Theta = \begin{bmatrix} \theta_{1} & \theta_{2} &...& \theta_{n} \\ \end{bmatrix}^T

(在实际计算中我们会加一个偏差(bias)也就是\large \theta_{0}, 也就是相当于单变量中的 b ,但是这里为了推导方便所以没加,但是不管加还是不加,推导的结果都是一样的)。

此时的线性模型如下:

\large h_{\theta}(x) = X\Theta                                                                                                                                                     (7)

 \large h表示假设,即hypothesis。通过矩阵乘法,\large X\Theta结果是一个m×1的矩阵。 

跟前面推导的单变量的线性回归模型是一样的,列出代价函数如下:

\large J(\theta) = \tfrac{1}{2}(h(\theta)-Y)^2 = \tfrac{1}{2}(X\theta-Y)^2                                                                                                      (8)

式(8)中1/2并实际意义,只是为了求导时能将参数正好消掉而加上的,不加上也不会影响最终结果。 
代价函数代表了误差,我们希望它尽可能地小,所以同样对它求偏导并令偏导数为0,求解方程,解出\large \Theta,即可得拟合曲线。 

首先对代价函数做一些处理,特别注意,因为(8)中我们的\large (X\theta-Y)^2实际上是要\large X\theta-Y中每一个元素的平方的总和;同时\large X\theta-Y计算后是一个mx1的矩阵,因此\large (X\theta-Y)^2可以化为\large (X\theta-Y)^T(X\theta-Y), 最终得到\large X\theta-Y中每一个元素的平方的总和值。因此式(8)可化为:

J(\theta) = \tfrac{1}{2}(X\theta-Y)^T(X\theta-Y) = \tfrac{1}{2}(\theta^TX^TX\theta - \theta^TX^TY - Y^TX\theta + Y^TY)                                                   (9)

现在对J(\theta)求导,在求导之前先给出矩阵求导的公式

\large \tfrac{\partial AB}{\partial B} = A^T                    \large \tfrac{\partial A^TB}{\partial A} = B                    \large \tfrac{\partial X^TAX}{\partial X} = 2AX

矩阵求导原理我会在另一篇博文中写出,有兴趣的可以点击看一看;

对代价函数(9)求关于\large \theta的偏导,并令其等于0;

\tfrac{\partial J(\theta)}{\partial \theta} = \tfrac{1}{2}(2X^TX\theta - X^TY-X^TY) = X^TX\theta - X^TY                                                                                   (10)

令式(10)等于0,得出\large \theta

\large \theta = (X^TX)^{-1}X^TY

由此便可得出拟合曲线;

到此整个推导过程就算是完成了。

3. 小结

文章主要就回归问题得原理进行了推导,相信看完后对回归问题有进一步了了解,同时这也是解释在机器学习中,多数回归问题采用梯度下降方法而不是直接求导的重要前提,有了这一推导过程才能够很好的去解释这一问题。

最后本博文大部分内容来源于一位前辈,感谢!

 

机器学习中,线性回归有多种模型可以使用。其中包括传统的线性回归模型和Lasso模型。 传统的线性回归模型是一种非常经典的方法,它通过拟合一个线性函数来预测因变量和自变量之间的关系。这个模型的数学原理可以通过最小二乘法来推导和求解。最小二乘法的目标是最小化预测值与实际观测值之间的残差平方和,从而得到最优的模型参数。\[1\] Lasso模型是一种用于处理多重共线性问题的算法。它通过对系数进行L1正则化来实现特征选择。L1正则化是指将系数的绝对值乘以一个正则化系数,使得一些特征的系数变为零,从而自动丢弃这些特征。Lasso模型在sklearn库中有相应的实现。\[2\] 线性回归回归分析中最常用的方法之一,因为它比非线性模型更容易拟合,并且估计的统计特性也更容易确定。线性回归模型可以使用最小二乘法来求解,通过最小化残差平方和来得到最优的模型参数。\[3\] 综上所述,机器学习线性回归有多种模型可供选择,包括传统的线性回归模型和Lasso模型。这些模型可以通过最小二乘法和L1正则化来求解。 #### 引用[.reference_title] - *1* [机器学习——线性回归模型及python代码实现](https://blog.csdn.net/qq_43045620/article/details/123079305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【机器学习线性回归】多元线性回归模型的搭建+Lasso回归的特征提取](https://blog.csdn.net/qq_43018832/article/details/128103389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [机器学习常用模型-线性回归模型详解(简单易懂)](https://blog.csdn.net/weixin_43308610/article/details/123346498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhangpaopao0609

看星空看日落不如看我的眼眸

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

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

打赏作者

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

抵扣说明:

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

余额充值