李宏毅机器学习-----Regression回归

李宏毅机器学习-----Regression

Regression 的一些应用:

  1. 预测股票市场走向
    找到一个function,input = 过去十年的股票资料,output = 可以预测明天股票指数

  2. 自动驾驶
    找到一个function,Input = 无人车感测周围物体和人,output=方向盘的角度

  3. 推荐系统
    找到一个function,Input=使用者A看某个商品B ,output= A买B的可能性

宝可梦的战斗力值预测

简单介绍一下,我们希望预测到宝可梦的CP值,这样就可以知道这只宝可梦是否值得去进化,如果不值得,就拿去”喂“了吧,哈哈哈!我们会创建一个function,这只宝可梦的属性是输入,进化后的CP值是输出, X c p X_{cp} Xcp代表这只宝可梦的进化前的CP值, X s X_{s} Xs代表种类,例如这只妙蛙种子, X w X_{w} Xw代表重量, X h X_{h} Xh代表身高。这里我们使用下标来表示component

在这里插入图片描述

Step 1:建立模型

第一步就是建立model,我们要选择合理的model,因为宝可梦进化是提升战斗力的,所以显然f3就不是一个合理的model function。选择好一个function后,我们输入一些属性值 x i x_{i} xi,因为不同的属性可能对个体的影响不一样,所以每个属性值带有权重 w i w_{i} wi,bias是一个偏差值。这是一个线性的模型。
在这里插入图片描述

Step2:函数的评估标准

在这里插入图片描述
有了function set之后,我们要判断哪个function才是最适合拿去预测,即选择最优的function。我们这里使用上标表示一个object,如 y ^ 1 \widehat{y}^ {1} y 1。这里的output是个标量,所以我们使用widehat,即 y ^ \widehat{y} y ,如果涉及到structured learning,那么output的object可能会是structure,所以要表示清楚。
在这里插入图片描述
这里有10个真实的数据,每个点代表其宝可梦的CP值和进化后的CP值。有了这些training data后,我们可以判断一个function的好坏。在这里我们需要定义一个loss function(损失函数),它的input是我们的model function,output是一个数值,告诉我们这个model function有多不好。
loss function可以很复杂,这里我们用比较直观的loss function,就是用真实值 y ^ \widehat{y} y 减去预测的数值,再取平方,这个就是估测的误差,把所有object的误差都加起来,就得到这个loss function的结果

在这里插入图片描述
下图使用等高线图表示哪些function表现得更好,颜色代表好坏的程度,红色说明很糟糕(误差大),深蓝色是最优的(误差小)。
在这里插入图片描述

Step3:最优函数

我们要从这个function set中挑选最好的函数出来,找一个function让L(f)最小,那就是最优函数,同理,就是找出w和b可以使得loss function计算出来的值最小,那就是最优的w和b值。
符号arg min解释:代表求当后面这个函数达到最小值时,w和b的取值
在这里插入图片描述
求最优解问题有两个思路:一个是解析解,一个是使用梯度下降,这里李宏毅老师介绍了梯度下降法。其实是使用了微分的数学原理。
微分是指函数图像在某一点处的切线在横坐标取得增量Δx以后,纵坐标取得的增量,一般表示为dy。
导数是函数图像在某一点处的斜率,也就是纵坐标增量(Δy)和横坐标增量(Δx)在Δx–>0时的比值。
导数和微分的区别是,导数的结果是比值,微分是纵坐标的增量。

梯度下降法

首先随机选取一个·初始点 w 0 w_{0} w0,计算 w 0 w_{0} w0对Loss function的微分,如果求出来是负的,线就是左边高右边低,因为我们要找loss比较低的function,所以要增大w值;如果是正的,线就是左边低右边高,显然就是减小w。
而w的变化取决于两个条件,第一个是现在的微分值有多大,如果微分值越大,即线越陡峭,移动距离就越大;第二个是事先定好的learning rate的值,如果 η \eta η数值越大,学习速率就会很快
在这里插入图片描述
为什么是用 w 0 w_{0} w0减去 η \eta η乘以w对L的微分,因为w算出来是正的,就要减少它,如果是负的就要增加它。重复这个步骤,直到最低值。Local optimal 局部的最优点,还有个global optimal全局最优,但是对于线性回归来说,不存在这个问题 ,因为它只有一个最高点。
在这里插入图片描述
如果不止一个参数呢?推广到多个参数,其中 ∇ L \nabla L L指代的是梯度函数。下图只是分别对w和b进行偏微分。下图有个错误,就是最后两条公式,应该是w=w1,b=b1
在这里插入图片描述
在这里插入图片描述
上图是这个过程的可视化,颜色代表Loss function的数值,第一个红色点是随机抽取的值,接下来就是计算在红色点的w和b对L的偏微分,其实就是找等高线的法线方向。

在这里插入图片描述
Gradient decent 的缺点:如上图,随机取值会影响去哪个高峰,导数为0,无法继续迭代,停留在当前点。但是在线性回归中,损失函数凸函数,是凸面的(convex),不存在局部最优点。

线性回归对应的偏导数,如下图:
在这里插入图片描述
当我们训练出来了model出来以后,其实最关心的是它是否真的这么优秀?所以我们要看看它在测试集中的表现。
在这里插入图片描述
我们已经计算出来,在训练集中,平均误差是31.9,而在测试集中平均误差是35。表现不是特别的好,所以我们希望找到更好的函数,使得误差更小。根据泰勒公式,任何形式的函数都可以近似表示为若干个多项式函数之和。而我们现在使用的是线性函数,尝试使用多项式函数降低数据误差。

多次函数的表现与比较:

二次函数
在这里插入图片描述
三次函数
在这里插入图片描述
四次函数在这里插入图片描述
五次函数
在这里插入图片描述
从上面这5幅图中,我们可以看到当model在训练集中表现得越来越好,由折线图我们可以看出,在训练集上平均误差是一直在减小的,所以当model越复杂,包含越多的function,理论上就可以找出一个function在训练集上的error rate越来越低。
在这里插入图片描述
但是在测试集上,结果是不一样的,到了第四个函数的时候,error就暴增,
越复杂的model在训练集中表现得越好,但是并不一定在测试集表现得好,这就是Overfitting。
在这里插入图片描述

多个特征

前面我们都只是考虑pokemon进化前得CP值,可是实际上还有很多特征影响着预测结果,现在我们添加第二个特征,pokemon的种类。
在这里插入图片描述
我们需要重新设计function set,不同的物种运行不同的linear function在这里插入图片描述
这里我们使用开关函数,将他们串联在一起,起到if的作用。若种类对应则δ δ \delta δ为1反之为0。这样波波鸟就得到 y = b 1 + w 1 ⋅ x c p ​ y=b_{1}+w_{1}⋅x_{cp} ​ y=b1+w1xcp
在这里插入图片描述
然后,我们现在看一下它们在训练集和测试集中的平均误差,下图可看,都表现得挺好的。
在这里插入图片描述

会不会有更多的参数我们可以考虑呢?

在这里插入图片描述
我们尝试考虑全部特征进去,下图是老师设计的一个非常复杂的model,可以看到,又一次overfitting了。我们不知道哪个feature才是真实有用,所以无法在feature上优化,但是我们可以从其他方面入手,就是Regularization正则化,重新设计loss function。
在这里插入图片描述

正则化

在这里插入图片描述
之前我们计算loss function只考虑了真实结果减去预测结果的error,正则化就是加上一个额外的正则化项,正则化项是不会包含偏置项(指的是前面的b),因为偏置项不会改变曲线的平滑程度。

加上这个正则化项之后,参数值w比较接近零的function是比较平滑的,平滑指的是当有新的input值,output对其不太敏感。为什么会平滑呢?

假设 y = b + ∑ w i x i y = b + \sum w _ { i } x _ { i } y=b+wixi是model,然后input有变化,加上 Δ x i \Delta x _ { i } Δxi,那么output的变化就是 w i Δ x i w _ { i }\Delta x _ { i } wiΔxi,如果 w i w _ { i } wi越接近零,那么output的改变就越小

正则化公式中的λ取值越大,会使得smooth的影响力越大。这是由于λ 的值越大,在尽量使损失函数变小的前提下,就会使得w越小,w越小就会使得函数越平滑。
在这里插入图片描述
λ本质上表示的是惩罚项,惩罚项过大可能就会影响学习的效果,因为惩罚项过大,就会导致参数空间变的比较小,最终结果没什么变化。

一个平滑的函数对noise不那么敏感,但是太平滑也不行,会在test set得到糟糕的结果。

对正则化的一点详解:

正则化的意义: 在规则化参数的同时最小化误差,最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止模型过拟合我们的训练数据。

我在理解正则化的时候,一直在思考 λ \lambda λ是如何改变w的值,因为增大了 λ \lambda λ就可以减少w。为什么呢?其实我们可以先举个例子。

假设λ无限大,那么正则化后的损失函数可近似认为只有正则项,那最小化损失函数时,就是让w变小,趋近于零,而w越小,模型越平滑

添加正则项后,应用梯度下降算法迭代优化计算时,如果参数 θ \theta θ比较大,则此时的正则项数值也比较大,那么在下一次更新参数时,参数削减的也比较大。可以使拟合结果看起来更平滑,不至于过拟合。

下面是对惩罚因子 λ \lambda λ的介绍:
在这里插入图片描述
线性回归介绍:
在这里插入图片描述
我现在理解得还不算透彻,如果有新的想法,会在这里更新一下。
拓展阅读:线性回归的正则化
正则化的理解(这个解释的不错,如果不理解什么是正则化,可以看看)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值