线性回归模型_线性回归模型原理及推导

今天我们来看一个最常见的机器学习模型——线性回归(linear regression)模型。先举个例子让你明白什么是线性回归。

现在我们有房屋面积和价格的一些数据,如下图:

2c8cd11ddcd561f35c78e055c68a92bb.png

现在我们想知道的是,如果给一个新的房屋面积130m²,能否根据已知的数据来预测新的面积对应的价格是多少呢?这时,线性回归模型就派上用场了。

我们先画出已知数据的散点图:

af84893983494198efda4d64e3018dff.png

那线性回归要做什么呢?它是模拟出一条直线,让已知的数据点尽量落在直线上或直线周围。效果如下图红线所示:

3ee6f49bd06842d8bcec316755017063.png

用公式表示的话,这个线性模型就是一条直线:

f(x) = wx + b (1)

其中,w为系数,b为截距。

当我们的模型确定后,如果给定一个新数据x‘,只需把x‘带入(1)式,求得的y就是预测的价格了。

在谈如何确定w和b之前,我们先来思考一个问题:假如房屋价格不仅仅受面积因素影响呢?比如还有厕所数量、房屋高度、房屋楼层数等等因素,这时我们又该如何构建我们的线性模型呢?

其实跟(1)式一样,我们添加系数和输入即可:

85552a493b0363e20bca5528982ba2ea.png

假设我们有n个影响房屋价格的因素,对应的就是n个系数w。(2)式就是我们新的线性模型。那模型既然出来了,该怎么求w和b呢?在求解之前,我们应该了解到,模型预测的结果f(x)是和实际的结果y有一定出入的。也就是说,模型在对原始数据进行训练时,数据点并不一定都落在该模型上。这样就会产生误差,不同的w和b对应不同的线性模型,我们要找的就是误差最小的那个模型所对应的w、b的值。

首先第一步,我们要找一个代价函数(cost function),用它来衡量我们预测的误差,一般用平方和函数来表示:

577ff334bc54b662e7d4f90771eee0d6.png

其中,J就是我们的代价函数,f(x)是我们的预测值,y是训练集数据的实际值,m代表数据的个数。代价函数描述的其实是预测值和实际值差的平方和的均值,那我们在前面为什么要加个1/2呢?这纯粹是为了以后求导方便,而且并不影响我们对代价函数的优化。

然后,我们将预测函数f(x)做一个变形,写成向量乘积的形式。

057b9caca345fe208e3690b0a3948056.png

则(2)式可改写为:

407f08499333940c7475c343d4c0b763.png

不难看出,f(x)可以写作wx两个向量的乘积:

8a8106f28d24d965f0f059550977507f.png

进一步缩写为:

dbd78bef144db16bf21764b8e47917b0.png

其中,wx均为n+1维列向量。再将(4)式代入(3)式,可得:

43d681d0fe42facbdfaaafe06cf289e1.png

由f(x)可知,乘积项的求和可以写为两个向量乘积的形式。要想写成向量形式,我们需要将J(w)做一个变形:

58f3fd38420675c30d97257e8b8b1af8.png

展开,得到:

1bcabdfd979af69d73fcde201aff1ae5.png

其中,X 为m*(n+1)维矩阵,m是数据的样本个数,n是每一个数据的特征。w为参数向量,y为实际值向量。

OK,现在我们已经把代价函数化简完成了,但别忘了我们的目标是求当J(w)取最小值时,所对应w的值。可以证明J(w)为凸函数(证明过程暂略),所以当我们对J(w)求导时,令导数为0,J(w)即可取最小值,相应可求得w。(注意w为向量)

在求导之前,我们先记住几个结论,一会就直接用了:

6439fdafeb283b57bf027bc03bfa6ab4.png

随后,我们令k=Xw-y,则J(w)可写为

d374d9fe118d0d5b1c3665dff84f2196.png

对其求导,应用结论1,得

be0bc18d6e1c2b30e5764d876c858d91.png

我们先求k',运用结论3,可得

cbe3f251f32cf4a29c77bda852e63a29.png

运用结论5,将其改写为

72fca1e7e6d08c00bc54fb553c933543.png

运用结论2,继续求导可得

f6f7ee673fb0ad2d3b585e823eda28f1.png

运用结论4、5,并化简

92a60352ee20ed82d699e8cbdbb9aacc.png

k=Xw-y代入并展开,可得

b860451321b76d51cb8b5a80044342f2.png

到此为止,我们的求导过程就完成了。接下来,令导数为0,求得w的值即可。令J'(w)=0,可得

b9c343728da94dd00eab643be26c5485.png

一般情况下,矩阵

c8647a4ff1f43241884b12f0704c51ce.png

为可逆矩阵(不可逆的情况我们以后会讨论),即可求得w的解为

db15a84ddc61edcc301eebf3a84f3e29.png

Bingo!(5)式就是我们在代价函数取最小值时,求得的参数向量w。在实际应用中,计算机会帮我们对(5)式求解,得到w的值。但当我们的数据量非常大时,可能会拖慢运行速度。这时,另一种对J(w)优化的算法——“梯度下降法”就该上场了,我们下篇再对它进行介绍。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值