机器学习---监督学习之线性回归

分类和回归的区别:
分类,我们预测一个状态,
回归,我们预测一个值。

线性回归是:通过已有的数据,拟合出一条符合它的直线,用来预测其他可能出现的值。
如何拟合一条好的直线呢?

就是是如何使一条直线更加的靠近一个点呢?

技巧方法

  1. 绝对值技巧:
    先随机生成一条直线 y = w 1 x + w 2 y=w1x+w2 y=w1x+w2,w1是斜率,w2是截距,我们通过调整这两个参数来使这条直线逐渐靠近一个原始的点(p,q)。
    如何慢慢调整这两个参数呢?
    我们把 w 1 + p w1+p w1+p, w 2 + 1 w2+1 w2+1(特定的一种调整手段),直线调整方程为: y = ( w 1 + ) x + ( w 2 + 1 ) y=(w1+)x+(w2+1) y=(w1+)x+(w2+1)后来发现这样改变直线移动的幅度还是很大,我们想到设置一个 α \alpha α变量控制w1和w2的变化,就是:
    把原来的w1变为: w 1 + p α w1+p\alpha w1+pα,
    把原来的w2变为: w 2 + 1 α w2+1\alpha w2+1α
    直线调整方程为: y = ( w 1 + p α ) x + ( w 2 + 1 α ) y=(w1+p\alpha)x+(w2+1\alpha) y=(w1+pα)x+(w2+1α),这样直线的变化幅度就会变小很多。

这里的p就是坐标值的p,我们改变直线斜率的时候可以不用考虑正负问题,因为p的正负决定了斜率的正负。 α \alpha α我们给他起了个名字,叫学习率。

  1. 平方技巧:
    上面讲的绝对值技巧只涉及到p也就是一个点的横坐标,如果把纵坐标的变化也加进去会移动的更加精确.
    点到直线的纵坐标距离为: q − y q-y qy
    把原来的w1变为: w 1 + p α ( q − y ) w1+p\alpha(q-y) w1+pα(qy),
    把原来的w2变为: w 2 + 1 α ( q − y ) w2+1\alpha(q-y) w2+1α(qy)
    直线调整方程为: y = ( w 1 + p α ( q − y ) ) x + ( w 2 + 1 α ( q − y ) ) y=(w1+p\alpha(q-y))x+(w2+1\alpha(q-y)) y=(w1+pα(qy))x+(w2+1α(qy)),这样直线的变化就会更加精确。

最小化函数值方法

  1. 梯度下降
    我们想继续寻找一条最合适的直线来拟合很多个点,这里会有另一个问题,衡量直线好坏的标准(误差越小。拟合的越好)。我们用所有点到直线的误差和(第4和第5个知识点)表示(误差函数)。
    那梯度下降又是干啥用的?
    我们可以把它理解为一种方法,这个方法可以帮助我们找到一个函数的最值。
    我们找谁的最值呢?
    找误差函数的最值,而且是最小值。我们使用梯度下降的方法不断的求误差函数值,直到误差函数达到最小值。
    误差值函数如下图所示:
    在这里插入图片描述
    我们选择下降最快的方向调整绿色线的曲率,也就是 w i − > w i − ∂ ∂ w i e r r o r wi->wi-\frac{\partial}{\partial w_i}error wi>wiwierror。进行此操作直到error取值到达最小值附近。

逐个地在每个数据点应用平方(或绝对)误差,并重复这一流程很多次。叫做随机梯度下降法。
同时在每个数据点应用平方(或绝对)误差,并重复这一流程很多次。叫做批量梯度下降法。

  1. 平均绝对误差
    所有点到直线垂直距离和是: ∑ i = 1 m ∣ y − y ^ ∣ \sum_{i=1}^{m}|y-\hat y| i=1myy^,
    除以点的个数m,就是平均绝对误差了: e r r o r = 1 m ∑ i = 1 m ∣ y − y ^ ∣ error=\frac 1m\sum_{i=1}^{m}|y-\hat y| error=m1i=1myy^
    这个公式就是我们上图的误差函数的一个具体表示,我们可以使用梯度下降的方法求得这个公式的最小值。

  2. 平方误差
    为了不计算绝对值,我们采取对距离求平方的方法,使得误差函数依然能够衡量误差大小且不用求绝对值
    那么所有点到直线垂直距离和误差就被改成了: ( y − y ^ ) 2 {(y-\hat y)}^2 (yy^)2,
    这时除以的个数就被改为2m了(这里为什么是2m?求导所得,至于为什么求导看第6点),均方误差就为: e r r o r = 1 2 m ∑ i = 1 m ( y − y ^ ) 2 error=\frac 1{2m}\sum_{i=1}^{m}{(y-\hat y)}^2 error=2m1i=1m(yy^)2
    我们依然可以使用梯度下降的方法求得这个公式的最小值。

  3. 最小化误差函数
    如果看具体的例子,我们就能发现,上面讲的两个技巧方法就是平均绝对误差和均方误差的一个特例。他们讲的是同一个东西。具体推到过程可以自己尝试。

  4. 绝对值误差 VS 平方误差
    有时候只用一种误差计算方法是判断不出来误差好坏的,如下图所示

在这里插入图片描述
这幅图的平均绝对误差ABC三条直线都一样,但是计算其平方误差时,发现B的平方误差较小。因为均方误差是个2次函数。
在这里插入图片描述

  1. 高纬度
    当输入的数据有两个,输出结果为一个时,我们在进行预测的时候就不是直线的关系了,绘出图来就是三维的,两个输入一个输出,预测的方程也由直线方程变为了平面方程。有三个可变参数。
    同理,更高维的输入输出我们或许用图形表示不了,但依然可以用公式表示。

  2. 解方程
    知道方程之后,我们就可以用对方程求偏导的方式求得最值了。
    此时使用方程求解依旧会出现相关问题,当方程个数很多时,求解就会变慢。
    我们甚至需要用矩阵来求解。

  3. 线性回归注意事项

  • 有些训练的数据不是线性关系,不适合线性回归
    在这里插入图片描述
  • 如果数据集中存在异常值,最终的结果会有偏差
    在这里插入图片描述
  1. 对于明显不是直线的数据集,我们可以用多项式来拟合。
    在这里插入图片描述

  2. 正则化
    现在我们看另外一种状况,下图是两种拟合线,一种是线性拟合线,一种是多项式拟合。
    第一种有错误,第二种没错误,也就是第二种的误差更小。
    但是,如果按照划分来看,第二种明显是过拟合,不可取。
    如何在误差函数中体现过拟合呢?
    我们可以看到,第一种的参数很小,第二种的参数很多很大,所有把参数的的复杂度也算作是误差,这样简单的模型就会比复杂的模型更好了。
    在这里插入图片描述
    又如果,我们需要手动调节模型的复杂程度,这该怎么办呢?
    设置一个 λ \lambda λ乘以参数的值, λ \lambda λ越小惩罚力度越小,越又可能是复杂的模型。
    这叫正则化。

  3. 神经网络回归
    假设我们使用分段函数来拟合数据集
    在这里插入图片描述
    就可以类比于神经网络的例子了。
    在这里插入图片描述
    此神经网络最后的Sigmoid是把原来的值转换到0到1之间使之达到分类的效果,如果不使用Sigmoid函数,就是预测值的作用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值