线性回归即相关知识(保姆级教学)

线性回归

概念:线性回归是一种研究 ‘自变量’ 和 ‘因变量’ 之间数量关系的一种分析方法

--------------------------------------------------------手动分割线----------------------------------------------------------

在讲线性回归之前,我们先讲一下‘最小二乘法’

最小二乘法

我们中学时都学过最小二乘法y=bx+a,给你一些真实的数据,通过给定公式,计算出b值和a值

下图即为一个最小二乘法(这里的图有点错误,图中的函数应该为y=bx+a,而不是y=ax+b)

在中学时我们常会用下图的公式来求得a与b的值

求出这个函数y=bx+a的目的即是达到一个拟合的效果,通过输入某个‘x值’,则能得到预测的‘y值’,这个具有拟合效果的函数,在机器学习中我们把它叫为‘拟合函数’

在机器学习中,我们也会用类似的方法,通过给定的已知数据,求得一个‘拟合函数’

当然我们求得的拟合函数有很多种,很多个

拟合函数可以是线性的eg.y=kx和y=bx+a...

也可以是非线性的eg.y=ax^2+bx+c+,y=x^3......

接下来我们通过一道例题来帮助大家理解拟合函数具体是做什么的。

--------------------------------------------------------手动分割线----------------------------------------------------------

例题

大学毕业的铁柱,在社会里摸爬滚打了一年,用在学校里获得的知识,最终成为了千万富翁,千万富翁铁柱想买下一大片豪宅,作为自己的养老之地,但铁柱确实没有什么买房经验,这时,铁柱找到了自己的好朋友狗蛋,狗蛋根据下图对房价进行了严密的分析。

(房价可以受地段,构造风格,小区环境等因素的影响,在这里我们假设房价只受房子的面积大小的影响,即,房子的面积越大,房价就越高)上图一个个点即为真实数据,以横轴为‘x’,纵轴为‘y’,每一个红点都有一个(x,y)坐标,我们将图上的黑点依次标为(x_{1},y_{1}),(x_{2},y_{2}),(x_{3},y_{3})......(x_{n},y_{n})

y_{1},y_{2}......y_{n}等值是我们已知的,通过读图可以得出,我们把这些y值称为‘真实值’,不妨把它们写作  ‘y_{i}’(i=1,2,3.....n)

线性函数拟合起来比非线性函数容易,而在线性函数中最简单的就是y=kx,在这道题我先用y=kx来拟合一遍,再用y=bx+a来为大家拟合一遍,来帮助大家理解。

我们先用y=kx来拟合一遍。

--------------------------------------------------------手动分割线----------------------------------------------------------

拟合函数为线性时的情况

铁柱想让狗蛋帮忙预测某一套占地65平方米的三层大豪宅大概需要多少钱。

狗蛋通过图上的点随便画了一条y=kx直线,当x=65时,狗蛋推断y值大概等于300 

不断地输入x值,通过我们得到的拟合函数求出来对应的y值,我们将这些y值称为‘预测值’,我们不妨将其写作'\hat{y}_{i}'(i=1,2,3.....n)

预测值\hat{y}_{i}(i=1,2,3.....n)和实际值 ‘y_{i}’(i=1,2,3.....n)之间难免有一定的误差。

我们将‘预测值’和‘实际值’做差,取其平方,再求平均值,最后除以2,

写作\frac{1}{2n}\sum_{1}^{n}(\hat{y}_{i}-y_{i})^{2},这个东东就是我们的代价函数,通又写作J=\frac{1}{2n}\sum_{1}^{n}(\hat{y}_{i}-y_{i})^{2}

当然J值越小,证明预测值和实际值的误差越小,我们得到的拟合函数就越准确。

这里为什么将预测值和实际值的差要加上一个平方呢?

我将给出我的个人理解(个人理解仅供参考,不喜勿喷,若有错误欢迎私信)

({\hat{y}}_{i}-y_{i})的值为0.1,0.01,-0.03等绝对值很小的数,将其平方过后他的绝对值会更小,在平方之前,误差本身就很小,平方后缩小其误差也无伤大雅;若({\hat{y}}_{i}-y_{i})的值为1.2,-4.6,9.8等绝对值大于1的数,平方过后他的绝对值会更大,起到一个放大误差的作用,这里放大误差起到的效果,比缩小误差的效果更强,从而我们更能根据J值的大小来判断我们得到的拟合函数是否准确。

狗蛋很随意地做出了拟合函数y=kx,估计出65平方米的大豪宅大概需要300块,这时候铁柱发出了疑问:‘狗蛋,你这价格...保证吗?可不要卖我生瓜蛋子!’在拟合函数的形式固定为y=kx的情况下,怎么知道狗蛋给出的拟合函数是否合理,又是否最好呢?我们还是要用我们上面求出来的代价函数J=\frac{1}{2n}\sum_{1}^{n}(\hat{y}_{i}-y_{i})^{2}

我们将\hat{y}_{1}=k\hat{x}_{1},\hat{y}_{2}=k\hat{x}_{2}....\hat{y}_{n}=k\hat{x}_{n}y_{1},y_{2}......y_{n}等值带入代价函数J再通过化简,即可得到一个关于k和J的一个函数,化简过程具体如下。

当k取抛物线的顶点处时,函数最准确,误差最小。

铁柱在csdn上学习,利用了上述的方法,找到了最佳的拟合函数(在拟合函数的形式固定为y=kx的情况下),最终以最低价买到了自己心仪的豪宅。 

y=kx的情况结束,我们用较短的篇幅来为大家分析一下当拟合函数的形式固定为y=bx+a的情况,看看又会是怎样。

--------------------------------------------------------手动分割线----------------------------------------------------------

当拟合函数的形式固定为y=bx+a时,将预测值\hat{y}_{1}=bx_{1}+a,\hat{y}_{2}=bx_{2}+a...\hat{y}_{n}=bx_{n}+a和实际值y_{1},y_{2}......y_{n}带入公式J=\frac{1}{2n}\sum_{1}^{n}(\hat{y}_{i}-y_{i})^{2}后我们将得到一个关于b,a,J三个变量的一个等式,它在三维空间表示的是一个三维曲面。(家人们可以自己去化简看看,这里运算量有点大,作者大大有亿点懒)

 我们借用一下吴恩达机器学习中的一张图,之前我们得到的是一个关于J,b,a三个变量的一个等式,在上图中,我们不妨令b为x轴,a为y轴,J为z轴,我们从上图可以看出,该曲面有一个几何最低点,当我们取最低点对应的(b,a,J)时,J最小,得到的拟合函数y=bx+a最准确。 

--------------------------------------------------------手动分割线----------------------------------------------------------

以上是拟合函数为线性函数时的情况,我们接下来分析当拟合函数为非线性函数时的情况。

拟合函数为非线性的情况

在讲之前我们先讲一下‘欠拟合’和‘过度拟合’

(忽略一下上图中的英文单词哦,家人们)

如图,我们每幅图我们都给出了5个红色的点(第一幅图我们是用线性函数来拟合的,我们之前已经讲了线性的情况,这里就不讲述了),第二幅图是用一个类似于抛物线的函数来进行你和的,第三幅图我们使用的是一个高次函数来进行拟合,通过常识我们知道,房子的占地面积越大,房子的价格越高,而第三幅图中,虽然这个高次函数非常完美的过了每一个样本点,带入公式J中所得出的误差会很小,但是在第三幅图中出现了,当占地面积增大,房价反而在减少的情况,这显然是不符合常理的,证明我们选择拟合函数的形式不正确,故我们应该选择图二中的函数来进行拟合,虽然图二的函数没有完美的过每一个样本点,但它无疑是符合常理的,是最佳的选择。

图三的拟合函数完美的过了每个点,但不是我们想要的函数,我们把这种情况称之为‘过度拟合’。

图一虽然符合了房价随房子占地面积的增加而增加,但其拟合效果相对于图二的拟合函数不算太好,我们将图一这种情况称之为‘欠拟合’。

所以无论拟合函数是线性还是非线性,都要选择正确的函数类型,不要出现‘过度拟合’和‘欠拟合’的情况。

之前我们我们讲过线性函数y=kx和y=bx+a的情况,y=kx的拟合函数是J关于k的一个二次函数,y=bx+a是一个像碗的曲面,显示了J,b,a三者的数量关系,这个碗状的曲面,有一个全局的几何最低点,取这个点的数据可以是我们的拟合函数最准确。

但当我们的拟合函数为非线性时eg.y=ax^2+bx,得出来的代价函数J的图像可能不是一个简单的碗,J,a,b三者的关系可能如下。

还是一样,我们不妨令b为x轴,a为y轴,J为z轴。

它不是像一个碗的形状一样简单,它像一座山峰一样凹凸不平,想要得到的拟合函数额误差最小,我们还是要像碗状函数一样,找到这个山峰函数的集合最低点。

由于代价函数的图像太过复杂,我们这是就需要用到‘梯度下降算法’

--------------------------------------------------------手动分割线----------------------------------------------------------

在讲梯度下降之前我们要先讲一讲导数和偏导数

我们有一个函数y=x^6+7x^3+5如果我们对它求导,我们可以得到它的导函数{y}'=6x^5+21x^2

对式子求导的情况我们是在只有x和y两个未知数的情况下进行的,那么如果一个式子有两个以上的未知数,我们应该怎么求导呢。

例如我们有一个式子,有三个未知数‘z=xy^2+x^2y’我们不对其求导,我们只能求它的偏导函数,如z=xy^2+x^2y我们求它关于x的偏导函数,我们只将x看成未知数,其他的未知数都看成常数,则z关于x的偏导函数为{z}'=y^2+2xy,z关于y的偏导函数为{z}'=2xy+x^2

--------------------------------------------------------手动分割线----------------------------------------------------------

讲完导数和偏导函数之后我们先给出梯度下降的公式,这里还要补充一个条件,

我们先讲一讲公式里一些符号的具体意思

':='这个符号的意思是复制,将符号右边的值直接赋值给左边,无论左边是什么值。如我们已知a=5,b=3,a:=b后,a=3,b=3,

'\alpha'学习率(learning rate)之后我们会细讲(学习率始终大于零)

\frac{\partial J(\theta _{0},\theta_{1})}{\partial \theta_{j} } (j=0,1):当j=0时,则求式子J(\theta_{0},\theta_{1})\theta_{0}的偏导数,同理,当j=1时,则则求式子J(\theta_{0},\theta_{1})\theta_{1}的偏导数;当J中只有J和\theta_{1}时,即\frac{\partial J(\theta_{1})}{\partial \theta_{1} }就表示求函数J(\theta _{1})\theta_{1}的偏导数,就相当于求J(\theta _{1})\theta_{1}的导数,我们以J中只有J和\theta_{1}举例,简单讲述一下梯度下降函数的作用。

第一次写博客,作者大大就先写到这里吧,如果有问题的话,欢迎大家私信,不要再评论区里开战,让我们文明surfing。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

虽然她送了我玫瑰花

谢谢老板,老板大气,身体健康

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

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

打赏作者

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

抵扣说明:

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

余额充值