李宏毅机器学习笔记(2): Regression

Regression : output a scalar 输出一个标量

 

在机器学习基础的模型中,回归算是一个很多课程引入学习的一个模型了,它可以让我们初步的去了解机器学习的过程。

1 例子

以下是李宏毅老师提到的例子:

股票市场预测:通过输入各种股票市场参数:输出数字

无人车驾驶:输入车上传感器参数:输出方向盘角度

商品 推荐:使用者特征,商品特征:输出购买可能性

可以看出,回归问题到底是什么了,通过输入一些数字化的参量,通过回归模型去拟合新的函数,这个函数可以得到和输入参量有关的数字化的参量。拟合成线性模型就是线性回归了(y=kx+b

例子详解:预测宝可梦的CP(combat power)值:输入妙蛙种子的特性:模型求解得出进化之后的CP,如图1-1.

图1-1 样例详解

 

定义变量:xcp 当前cp值、xs种类、xhp生命值、xw重量、xh高度

y 输出进化之后cp

       显而易见的是,我们要使用上面定义的变量,去作为我们的输入参数,得到我们预测的结果。先使用大量的样本,这些样本是有结果的,去拟合我们的回归模型,在使用模型预测未知的宝可梦的进化后CP值。

2 step1:寻找模型

图2-1 第一步 模型建立

 

在这个回归问题上,首先,我们先进行模型的建立,我们需要的模型,要输入宝可梦的相关参数,输出宝可梦的CP值。模型可以选为线性模型,比如:

y=b+w×xcp  b、w是模型参数(常数),可以任何值,通过b、w不同,可以组成不同的函数。xcp为进化前的CP,y为进化后的CP,当然,我们也可以使用更多的特征。

Linear model:y=b+wixi  

可以发现,上式这种样子函数我们通常是称为线性模型。

xi:称作(feature) 特征,即样本的某一可作为分类参考的值,包括:xcp 当前cp值、xs种类、xhp生命值、xw重量、xh高度。这里说的通俗一点,其实就是我们感觉可能会对预测结果造成影响的属性,比如宝可梦的CP值,可能会和它的生命值有关啊,生命值就可以作为他的一种特征。

wi:weight 权重,不同的权重可以调节特征对样本最终值的影响,权重可为正可为负,权重越大说明影响越大,为0时说明毫无影响。

b:bias 偏差,可以对模型进行调整。

 

3 Step 2:模型优劣

图3-1 样本点

 

接下来,我们要寻找我们的模型了,由于实际上我们的样本数据可能会拟合出无数多个模型的,所以我们需要使用模型的优劣性去寻找较优的模型。

通过大量的样本,xi,每个样本实际输入,yi样本实际输出,上标代表了样本的编号。样本是供我们进行构建模型以及测试模型的,通常我们是需要大量的样本来构建模型,这个模型中,一个样本包含了这只宝可梦的进化后前CP值,进化后CP值,生命值,种类,重量等,就是我们上文提到过的特征以及需要预测的值。样本应该有我们之前提到过的特征以及需要预测的真实值(当然,这是在这类监督学习的问题中)。使用样本就可以构建模型,有了模型就可以去预测我们未知的更多宝可梦的CP值了。

图3-1就是10个样本点,这些样本的横坐标是开始的CP值,纵坐标是进化后的CP值。可以使用这些样本去拟合很多很多线性函数,这些函数我们需要寻找一个相对较好(准确来说应该是适合实际的情况)的函数供我们使用。

定义一个损失函数去解决这个问题吧:

Loss function:输入:函数

              输出:该函数对实际情况不适应性

这个loss function可以理解为输入一个函数,他会告诉我们这个函数有多不好,这里我们需要输入每个模型的b和w(权重和偏差),让他告诉我们这个模型有多不好,然后我们可以选取相对较好的那个。可以看下文:

Lf=n=110(yn-f(xcpn))2 =L(w,b)=n=110(yn-(b+w×xcpn))2

       看最后一个等号后,yn表示样本实际值,b+w×xcpn表示预测值,作差取平方,这个通常我们称为均方误差。(学过信号检测与估值我们知道其实还有很多种误差都可以使用哦)这里用的是,均方误差之和作为损失函数。

       下图,把loss function图像画出:

 

图3-2 损失函数

 

通过不同w,b的值计算loss function 得到相关图像,其中红色越深,损失函数太大,蓝色越深越小。我们直觉上得出,那我们就可以选损失函数最小的啊,接着下一步:

4 Step3:best function

而后,我们要从刚的众多函数中寻找某一个函数,使得损失函数最小。就是下图:

寻找损失函数最小的模型如果使用穷举法(把每种情况列出来)确实是一个难题,因为在很多项目中,这样太浪费资源了,所以我们会使用一些算法去实现目的,就是梯度下降。

Gradient descent:梯度下降

可以使用梯度下降的方法,去寻找损失函数最小的函数,但前提是这个函数是可微的。

图4-1 梯度下降

 

需要寻找响应的w参数来使得损失函数最小。可以看上图4-1,我们使用如下步骤去实现梯度下降:

  1. 随机选一个初值(其实有很多方法定初值,之后再提啦)
  2. 计算初值的对w偏导数(其实就是切线斜率),我们知道要寻找最小的函数,若偏导数为正则放弃,偏导数为负且越小越好。从偏导为负的方向选取下一个值。
  3. 利用当前偏导与权值计算下一个点进行求偏导,偏导为负且绝对值越大说明下降程度越大,我们就移动越多哦。(这个权值η其实就是学习率,看上图4-1可以知道是如何运算的)
  4. 偏导数为0说明达到了局部最低点(当然也有可能是驻点),看上图4-1,其实我们发现,并没有找到全局最优点。

那么我们有两个参数情况下,要使用梯度下降法:

  1. 随机选2个参数w,b
  2. 计算分别计算两个参数处的偏微分,分别对每个数分别移动看下图:

高数中我们就学过了梯度的定义,还是很好理解的。梯度:  

图4-2 梯度下降结果

 

最后的目标当求到偏导数为0时,结果可得到局部最优值。但是当抵达导数为0时(驻点),算法也会停止。我们经常会害怕没有寻找到全局最优解怎么办,但是在回归问题中其实大可不必,回归问题中的损失函数都是凸函数,是没有局部最优解的。

之后我们就找到了我们选出的最好的函数啦。

图4-3 拟合出相关函数

       这里我们现在有了我们的模型,但是我们更加关注一点,就是这个模型实际应用时它的能力到底好不好呢?这种能力我们通常叫做泛化能力(模型对新的样本的适用能力),通常我们还会用一些已知预测结果的测试样本去测试模型,得到误差叫测试误差,这类样本就是测试集,可以看图4-3。那么如何使模型会更好呢?也许我们需要引入较为复杂的模型去试试。

5使用其他非线性模型

       为了使效果更好,我们引入了二次的非线性模型进行构建,这也算是一个尝试:

图5-1 非线性结果

 

  1. 发现使用非线性拟合结果更好,于是选择更高阶模型尝试。阶数上升,模型也更复杂了,但是在更高阶的模型中,会出现了明显的过拟合。这里我们就要了解一个非常重要的概念了,很多情况下,尤其在模型越来越复杂时,会发现产生过拟合,过拟合就是指为了适合样本,使得模型过于适应样本而不适于实际情况。我们知道,复杂的模型实际上不一定是最好的。
  2. 模型过于简单会导致实际误差过大,过于发杂会导致过拟合。
  1. 收集更多的数据也是一个是模型更好的方法,通过收集更多的数据可以发现可能存在更多的隐藏因素影响(视频中这个讲的很好理解的,可以看看视频)。
  2. 使用δ函数可以进行函数的分情况处理。比如:对宝可梦进行分物种,对不同的物种,使用不同的模型进行拟合测试。δ函数(冲激函数)是信号中常用的函数。其实可以理解为分段函数的判决,如果是a种类的宝可梦,使用a样本拟合的模型,b种的使用b拟合的。
  3. 其次,使用更多的特征或许也有更好的效果,因为很多特征都会对结果产生或多或少的影响。但是较为复杂的模型可能会产生过拟合,这时我们就可以引入正则化方式。
  4. 正则化(regularization):过拟合情况处理时,可以给损失函数增加一个正则惩罚项。使L最小化的同时,使w较小,这样可以使拟合的函数较为平滑(具体为什么平滑可以看视频1小时8分左右)。曲线平滑我们认为较为符合实际,当然正则化的参数也不能太大。正则化可以用于噪声控制等一些应用。

这里我们进行参数正则化,给偏差值加上正则化,在该项目中影响不大,对函数是否平滑没有影响。

图5-2 正则化之后的结果

 

我们发现,在λ变化时,寻找最合适的模型,该模型在测试集上正则化损失函数达到最小,我们更倾向于使曲线更平滑,但不是过于平滑。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值