机器学习算法-线性回归

什么是回归

从大量的函数结果和自变量反推回函数表达式的过程就是回归。线性回归是利用数理统计中回归分析来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。

一元线性回归:

只包括一个自变量(x1)和一个因变量(y1),且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。公式:y=w0+w1x1

多元线性回归:

如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。公式:y=w0+w1x1+w2x2+w3x3+w4x4.....+wn-1xn-1+wnxn

对于一元线性回归公式来说,如果给定两组x,y的值,就可以求得w0和w1的值。例如:给定两组x,y的值x=3,y=5和x=6,y=8,那么可知如下:

 可以求得w0=2,w1=1。两点确定一条直线,可以确定和的值。我们可以叫做w0一元线性回归公式的截距,可以叫做w1一元线性回归公式的斜率

假设某个医院住院人数与医院的床位个数呈线性关系,即:

          住院人数y  = w0+w1*医院床位数

在这里,如果想求得住院的人数,就要知道,w0 w1的值,wo这里的叫做截距,w1叫做权重,“医院床位数”可以理解成影响住院人数的一个维度。通过给出两组数据,就可以得到截距和权重的值。

对于一元线性回归来说,如果现在有很多呈线性关系离散的点,假设现在需要找到一个线性回归公式来表示这些点自变量和因变量的关系,每两个点之间都能确定一条直线,如何找到一条直线来表示这些点的关系呢?

如何确定这条直线?

每一个离散的点在自变量Xi处得到的的值记为Yi,对应的,需要找到的这条直线在自变量Xi处得到的的值记为,当所有的到对应的的距离差平方累加起来最小,我们就可以认为这条直线比较完美。也就是当平均误差公式:

 

这个公式也叫做最小二乘法误差公式。error的值如果是0说明确定的这条直线穿过了所有的点,对于离散分散的一组点,error的值不可能为0。

确定权重的值(确定模型)

当误差公式:

 取得最小值时,能确定一条完美的直线,也就是确定一组Θ 值与自变量Xi的关系,拟合出来的一条直线能尽可能的通过更多的点。确定了error的最小值,也就有可能确定一组值。

如何确定error的最小值?

如果将error函数看成自变量Θ关于error的函数,那么可以转换为:

如果将一组权重Θ看成一列向量,Xi表示一列维度组成的向量,就是Θ这组向量的转置,

,那么现在的问题就是如何找到一组Θ,使得error的值最小。

 如何理解导数的概念 ? - 知乎先交代教育背景,非211大一工科在读,蹭了一学期数学专业的数分课。关于导数,我有以下问题: 1…https://www.zhihu.com/question/28684811

我们可以看出error函数的关系图像大概是一个开口向上的图像,那么当error的导数为0时,此时能得到一组Θ的值对应的error的值最小。

通过求导的方式,理论上可以确定error的最小值,但是由于Θ是一组数据,无法确定error最小下对应的这一组权重Θ 。

正向的求导不能得到一组Θ权重值,就不能确定线性回归的公式。那么可以根据数据集来穷举法反向的试,来确定线性回归的公式:

如何反向穷举求得线性回归的公式(训练线性回归模型)?

已知有线性回归关系的训练数据

已知线性回归的公式:

已知误差函数公式:

要求得在error最小下的一组Θ 权重值,以便确定线性回归的公式。我们要确定的这组Θ 就是要确定一个模型。确定模型就是确定一组参数,就是确定这组Θ 的值。 

穷举之前,会有一个初始模型,一般是随机数,假设w0=1,w1=1,w2=1…,有了初始模型那么针对每一条训练数据都能求得一个真实y值与模型评估值的平方差,也就是针对一组测试数据,能得到在这组初始模型下error误差函数的值。那么得到的error值是不是最小值?需要不断调节初始模型参数,需要在训练模型时,指定调节初始模型w0,w1,w2…的调节步长step(也叫学习率),迭代去求出每次调节模型后的error值,由于error的值不可能绝对的达到0(如果达到0说明训练出来的模型对应的线性回归公式完全的将所有训练数据集的点穿过),在训练模型之前指定一个最小error值,即:当迭代求出模型的error误差值小于指定的error值就停止迭代,那么当前这组值就是确定好的模型。

如果每次迭代求得模型对应的error大于指定的最小error值,要继续调节这组值,一直迭代到模型的error值小于指定的error值。

 

  • 第五节:线性回归案例

  1.  梯度下降法调节参数

假设Θ和error的函数关系中,Θ中只有一个维度,那么这个关系其实就是w0和error的关系,反应图上就是一维平面关系,如果Θ中有两个维度w0和w1,那么这个反映到图上就是个三维空间关系,以此类推。

如果Θ中只有一个维度,如下图: 

图中①,②,③,④,⑤,⑥,⑦都是图像的切线(斜率),在切点处可以求得对应的error值,如何调节模型得到一组 Θ值可以使得到的error值更小,如图,沿着①->②->③方向调节和沿着④->⑤->⑥方向调节,可以使error值更小,这种沿着斜率绝对值减少的方向,沿着梯度的负方向每次迭代调节的方法就叫做梯度下降法

梯度下降是迭代法的一种,可以用于求解最小二乘问题,在求解error函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的error函数和模型参数值

每次按照步长(学习率)来调节Θ值,迭代求出error的最小值,这里的error不可能有一个固定的最小值,只会向着最小值的方向收敛。

判断模型error误差值收敛,也就是停止迭代的两种方式:

  1. 指定一个error值,当迭代处理过程中得到的error值小于指定的值时,停止迭代。
  2. 设置迭代次数,当迭代次数达到设置的次数时,停止迭代。

迭代周期:从调整参数开始到计算出error值判断是否大于用户指定的error是一个迭代周期。

当步长比较小时,迭代次数多,训练模型的时间比较长,当步长比较大时,有可能迭代的次数也比较多,训练模型的时间也会相对比较长,需要找到一个合适的步长

2.模型过拟合

训练模型都会将数据集分为两部分,一般会将0.8比例的数据集作为训练集,将0.2比例的数据集作为测试集,来训练模型。模型过拟合就是训练出来的模型在训练集上表现很好,但是在测试集上表现较差的一种现象,也就是模型对已有的训练集数据拟合的非常好(误差值等于0),对于测试集数据拟合的非常差,模型的泛化能力比较差。

如何判断模型发生过拟合?

训练出模型后,可以在训练集中测试下模型的正确率,在测试集中测试下模型的正确率,如果两者差别很大(测试集正确率小,训练集正确率大),那么模型就有可能发生了过拟合。

  1. Spark Mllib 线性回归案例

基础知识: Spark Mllib 数据类型

spark 机器学习基础 数据类型 - 走看看

1.本地向量(Local Vector)

2.带类标签的特征向量(Labeled point)

3.本地矩阵(Local matrix)

4.分布式矩阵(Distributed matrix)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值