Paddle线性回归

本文介绍了线性回归的基本概念,包括样本、训练集和测试集,并通过一个房价预测的例子阐述了线性回归模型。利用梯度下降法求解线性回归的权重向量,并展示了如何在PaddlePaddle框架中实现线性回归的训练和测试过程。
摘要由CSDN通过智能技术生成

样本
样本即训练数据单元,使用(x,y)来表示一对样本,比如一张图片以及图片对应的标签
x是nx纬向量,例如一张6464的彩色图像,纬度是6464*3=1288,y标签值为猫或狗(分类问题).在比如,x是某城市的一套房子的面积,户型,地址,周边配套商场数量,学校数量等数据,y的标签是这套房子的价格(预测问题).
xЄRn
训练集
由足够多的样本组成的集合.例如一系列的图片和对应的一系列的标签.用X表示.

X={x1,x2,x3,x4,…,xm}
m代表数据集中样本的数量.

由于x本身也是多维向量,所以X展开后,是一个矩阵.xi用列向量表示.

xi={xi1,xi2,xi3…,xin}T
n代表样本的纬度,T表示转置,即把行向量转化为列向量.
测试集
与训练集对应,训练集用于训练,测试集用于验证训练出来的模型

线性回归
如何理解线性回归
所谓线性,指输入和输出的关系是一条直线,比如y=a*x+b就是最简单的一维线性函数.在理想的数学模型情况下,只要知道两组(x,y)样本,就能得出a和b,因为这是唯一解.比如给出两组样本(1,1),(2,2)可以求出a=1,b=0,从而确定线性回归函数为y=x.
但在实际数学模型中,绝大多数的样本不会刚好落在这个函数上,而是分布在曲线的两侧,这时我们的目标不是求出一条曲线让所有样本都落在曲线上,而是求出一条曲线让所有样本与曲线的误差均方值最小.此时不会再有唯一解,也不一定有最优解,只能求出一个误差在接受范围内的解.如下图

在这里插入图片描述

因此,线性回归大致可理解为(非标准定义):
假定训练集和测试集中的样本与标签满足y=w*x+b的关系,通过对给定的样本进行计算,求出一个最佳的W和B,使得计算出来的值与标签的均方差最小.

y(x,w,b)=w1x1+b1+w2x2+b2+…wnxn+bn;
y是一纬向量,x,w,b是n维向量.
由于b1+b2+…bn与x无关,可以合并为一个数w0,简化为:
假定训练集和测试集中的样本与标签满足y=w
x的关系,通过对给定的样本进行计算,求出一个最佳的W,使得计算出来的值与标签的均方差最小.
y(x,w)=w0+w1x1+w2x2+…wn*xn;
xЄRn,yЄR1,wЄRn,

以房价预测举例:
比如上述的房价问题,x1代表房屋面积,w1代表面积与价格的关系,x2代表离市中心的距离,w2代表离市中心的距离与房价的关系,x3代表周边学校数量,w3代表周边学校的数量与房价的关系等等.

线性回归的局限性
我们可以理所当然的认为房价与房子面积基本是线性关系,市中心的距离与房价也基本三线性的,但并不是所有的因素都与房价是线性关系,所以,线性回归只能对房价进行大概的预测,不可能非常准确,因为确实存在一些非线性的因素.

如何求出向量w
线性回归训练阶段的目标就是根据训练集求出w.对于理想的数学公式,很容易想到通过解多次方程,即最小二乘法即可,但实际应用中,我们不是采用解方程的方法,而是采用梯度下降法.
梯度下降法的算法公式为:

在这里插入图片描述

其实就是沿着曲线的切线一步一步计算的过程.最后一项表示切线的导数乘以一个步长a,第二项表示当前在曲线上的位置.最理想的结果三最后走不动了,就好比下面的曲线最底点,曲线导数为0,公式的最后一项也为0,此时就得到了最优解.

再次以为房价为例,简化房价受三个因素影响:
{面积,到市中心距离,学位数量}
有十个样本.即:
X1={60,89,100,50,110,35,240,55,60,98} 即10套房子的面积
X2={1,5,2,20,10,6,7,0.5,25,4.2} 即10套房子到市中心的距离
X3={1,1,2,0,0,2,1,1,1,0} 即10套房子学位的个数.
Y={8,12,14,6,13,7,15,6,8,8.5,11}即10套房子的单价
梯度下降法求解过程如下:
在使用梯度下降法前,先要进行归一化操作,把X1,X2,X3,Y都归一化到0和1之间,这样作是为了方便计算.
把X1全部除以240,得到新的
X1={0.25,0.37,0.42,0.21, 0.46,0.15, 1, 0.23, 0.25, 0.41}T
X2={0.04,0.2,0.08,0.8,0.4,0.24,0.28,0.02,1,0.12}T
X3={0.5,0.5,1,0,0,1,0.5,0.5,0.5,0}T
Y={0.55,0.74,0.88,0.42,0.82,0.44,1,0.51,0.55,0.74}
Step1:首先随便选一组数作为w的初始值,这里我选w={1,1,1,1},4维向量,每个纬度的值都都是1,之所以是4个而不是3个,是因为w0代表上文中提到的b.
Step2:
w0=1-0.011/10(
((0.251+0.441+0.51-0.55)0)+
((0.37
1+0.2
1+0.51-0.74)0)+
……
((0.41
1+0.12
1+0*1-0.74)*0)

w1=1-0.011/10(
((0.251+0.441+0.51-0.55)0.25)+
((0.37
1+0.2
1+0.51-0.74)0.37)+
……
((0.41
1+0.12
1+0*1-0.74)*0.41)

w2=1-0.011/10(
((0.251+0.441+0.51-0.55)0.04)+
((0.37
1+0.2
1+0.51-0.74)0.2)+
……
((0.41
1+0.12
1+0*1-0.74)*12)

w3=1-0.011/10(
((0.251+0.441+0.51-0.55)0.5)+
((0.37
1+0.2
1+0.51-0.74)0.5)+
……
((0.41
1+0.12
1+0*1-0.74)*0)
step3:
把w0,w1,w2,w3重新带入w中,重复上面step2
多个循环后,即可求出合适的w.
在Paddle框架中,直接调用函数即可实现.

sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_loss)

使用Paddle实现线性回归案例.
paddle的训练函数:

avg_loss_value, = exe.run(main_program,
                                  feed=feeder.feed(data_train),
                                  fetch_list=
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值