首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性回归和梯度下降模型

线性回归和梯度下降模型

作者头像
用户1631416
发布2018-04-12 13:46:38
9110
发布2018-04-12 13:46:38
举报
文章被收录于专栏:玄魂工作室玄魂工作室

线性回归和梯度下降模型

概要

本文主要讲解线性回归模型的原理,并以python和paddlepaddle为例讲解怎么实现一个线性回归模型,并用matplotlib画出训练后的效果。

线性回归

机器学习中的分类和回归是两种有监督学习的方法,分类是指区分出类别,比如分辨哪些是猫,区分男人女人。而回归问题是指根据输入,给出的输出是一个具体的数值;比如房价预测,比如天气预测等。

而线性回归,是指训练出来的模型是一个线性模型(一条直线)。如y= ax + b,如图1-1所示。

1-1

一般的模型训练,一般分为几个过程:模型的选择,定义损失函数,参数初始化,模型训练。下面的文章中会根据这几项展开讲解。

模型训练

1)模型选择

线性回归中,我们定义我们的模型为Y = WX + b;说明:如果我们的训练数据属性是多维的(比如人有身高,体重等),那么W就是多维数组;

2)损失函数

线性回归中用到的损失函数是估计值和真实值直接的方差

其中h(x)=

是我们估计的值,m是训练集的个数。我们的目标是让损失函数尽量的小,损失函数越小,证明训练的模型越能拟合训练数据。为什么线性回归要选择平方差做损失函数呢?从几何意义上说,满足预测值和真实值之间的最小距离,并且这个损失函数是凸函数,存在全局最优解,可以用梯度下降求解。具体解释见:https://blog.csdn.net/saltriver/article/details/57544704

3)梯度下降

怎么能让损失函数尽量的小呢,一般有采用梯度下降来求解参数,使得损失函数达到最小。

什么是梯度下降呢?其实是按照参数的导数方向,一点点下降,直到下降到函数的最小值点,就是需要求解的参数。

图2

)

其中a是每次下降的步长,w和b沿着导数方向,每次下降一步,去尝试找损失函数的最小值,下面用房价预测的例子,来进行说明。

房价预测实例-python

现在我们用房价预测的实例在解释说明下线性回归模型。

在房价模型中,我们用房子面积来预测房价,因为就一个面积的纬度,那么我们的模型函数是:

模型: h(w,b) = w*x + b

损失函数:

梯度:dW = dJ(W,b)/dW =

db = dJ(W,b)/db =

数据集:data.txt

python代码:fangjia.py

1) 参数初始化

有两个需要做参数初始化,一个是w,一个是b;还有一个learning_rate需要设定;如果w和b设定不好,训练出来的数据就达不到好的效果;如果learning_rat设置的过大,cost函数就会一会大一会小,在本文中w初始=10,b初始=-1,learning_rat=0.000005。大家可以设置下learning_rat=0.005,就可以看到cost就是忽高忽低的状态。初始化代码如下:

2)参数训练

图3

代码主要在fangjia.py中,上图是计算模型的核心部分,主要计算dw和db,代码中用python的numpy实现了求导计算的过程。

然后执行fangjia.py,可以看到cost下降的过程,如图4,并且最后训练300次后,得出的训练结果 w=6.4,b=-1.04;把这个训练结果放入到plot_data.py中可以看到最终的训练结果。

图4

图5

全部代码:

房价预测实例-paddlepaddle

下面是使用百度paddlepaddle的实现结果,具体代码就不介绍了,有机会我们单独讨论。

paddlepaddle的运行结果为:

w = 7.1 b=-61,结果如图6

图6

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线性回归和梯度下降模型
    • 概要
      • 线性回归
        • 模型训练
        • 房价预测实例-python
        • 房价预测实例-paddlepaddle
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档