机器学习之回归(Regression)再理解

一 前言引入

1. 回归定义及应用场景

   我们知道机器学习的过程其实就是一个找函数的过程,通过不断的训练我们最终得到一个函数映射,给定函数(网络)一个输入,函数(网络)会给出相应输出,若输出的是一个数值(scatter),我们可以将这一类机器学习的问题称为回归问题(Regression)举例如下:
在这里插入图片描述
   上图中第一个例子为股票指数预测,函数输入为今天的股票数据信息,输出为明天可能的股票指数信息;第二个例子为自动驾驶,输入为传感器获得的各种信号,输出为方向盘旋转的角度;第三个例子为自动推荐系统,输入为使用者以及正在浏览的商品类型,输出为该用户购买此商品的可能性。

   此次阐述回归问题我们采用神奇宝贝的进化CP值为例进行说明:
  如下图所示,输入为进化前妙蛙种子的基本信息,包括CP值 X c p X_{cp} Xcp、物种 X s X_{s} Xs、生命值 X h p X_{hp} Xhp、体重 X w {X_{w}} Xw、身高 X h X_{h} Xh,输出为妙蛙种子进化后的CP值。我们要做的就是找到这样的一个函数能够帮助我们根据当前神奇宝贝的各种信息预测进化后的CP值
在这里插入图片描述

2. 解决步骤

  面对回归问题,通常分三步解决,第一步:选定使用的model,即确定函数模型是一次函数 y = w ∗ x + b y = w * x + b y=wx+b,还是二次函数 y = a ∗ x 2 + b ∗ x + c y = a * x^{2} + b * x + c y=ax2+bx+c,甚至是更高的三次四次或者五次函数。第二步:确定模型的损失函数loss function。第三步:采用梯度下降,优化损失函数 (可以使用梯度下降的前提是损失函数可微分,换句话说只要损失函数是可微分的,那么就可以使用梯度下降法)。

  为了方便阐述,这里我们使用一次函数,即线性回归 Linear Regression(再次强调一下线性回归的定义: 若函数可以写成 y = b + ∑ w i ∗ x i y = b + \sum{w_i * x_i} y=b+wixi的形式,虽然自变量x的个数不止一个,但是次幂都是一次,我们就称之为线性回归),并且只考虑一个自变量 X c p X_{cp} Xcp也就是进化前的CP值,剩下的自变量暂时不考虑,对应图像如下:

在这里插入图片描述   之后确定模型的损失函数,显然损失函数是关于参数W和b的函数,不断调整W和b的值,使得损失函数的值尽可能的小。

在这里插入图片描述
  之后使用梯度下降的方式进行参数更新,更新的方程为: W i + 1 = W i − η ∗ d L d W ∣ w = w i W^{i + 1} = W^{i} - \eta* \frac{dL}{dW}|_{w = w^i} Wi+1=WiηdWdLw=wi,其中 η \eta η就是我们所说的学习率,这里插一句话,之前小编一直以为学习率决定了参数调整的步长,但是现在才注意到微分结果本身也会影响步长,若当前微分结果较大,即图像在此处越陡峭,则前进的步长会更大

在这里插入图片描述
  关于梯度下降这里再补充一些:1. 观察上面的loss图像,我们知道一开始随机取的值比较重要,若一开始我们的取的W的值接近导数为0的点,那么训练的时间就会大大减少;同时若一开始W的取值不同,最终收敛时W的值可能不一致,因为存在局部最优解 local optimal 和全局最优解 global optimal ,有时候我们得到的函数并不是最优的函数,具体的示意图如下:

在这里插入图片描述
  从上图可知,不同的出发点通过梯度下降,最终收敛时候的值不一样,那么该怎么办?我们在做线性回归问题的时候会不会遇到局部最优解的情况呢?
  答案是:若我们的回归是线性回归,则其loss函数的最优解只有一个,不存在局部最优解的情况,如上图右部所示,从任何一个地方出发,最终都会得到最优的解,所以对于线性回归问题,可以放心大胆的使用梯度下降,而对于非线性回归,就会存在局部最优解的情况,需要进一步操作

3. 过拟合和解决方法

   上一部分说明了求解回归问题的基本步骤,那么按照这样的步骤,我们假设不同的模型函数,最终得到训练好的不同函数,针对不同的函数,我们在测试集上的结果如下:

不同的模型参数
过拟合

   我们可看到,越复杂的模型在训练集上训练的结果就越优秀,但是放在测试集上测试之后,我们会发现测试的结果反而越不好,这就是过拟合现象,所以我们需要选择合适的模型。

   关于过拟合现象,常见的防止过拟合现象的手段有:L1正则、L2正则、Dropout 等,这里就不再细说。

   至此,关于回归问题的一些基本知识,我们就回顾到这里,接下来再深入说一说。

二 回归问题再理解

1. 问题提出

   我们知道神奇宝贝进化前后CP值的变化是由一个函数控制的,我们假设为 F ^ \hat{F} F^,这个函数在编写游戏代码的时候就设定好了,现在我们要做的是收集神奇宝贝的数据,然后根据这些数据训练出一个函数,假设训练出的函数为 F ∗ F^{*} F显然 F ∗ F^* F F ^ \hat{F} F^不会完全一样,训练得到的函数想要和真实的函数完全一样是很难的,只能尽可能的接近。那么 F ∗ F^* F F ^ \hat{F} F^之间的误差来自哪里呢?答案就是来自于bias + variance,至于这里的bias和variance分别指什么呢,我们接下来讨论。
在这里插入图片描述

2. 问题解决

  现在我们多次重复实验,首先我们假设模型函数是一个一次函数: y = w ∗ x + b y = w * x + b y=wx+b,第一次实验我们抓到了10只神奇宝贝,知道了他们的进化前后的CP值(就是10组训练数据,每一组数据包含神奇宝贝进化前后的CP值),训练之后我们可以得到一个函数,假设为 y = w 1 ∗ x + b 1 y = w1 * x + b1 y=w1x+b1。之后我们进行第二次实验,实验过程和第一次实验一样抓到了另外10只神奇宝贝,训练后得到的函数为 y = w 2 ∗ x + b 2 y = w2 * x + b2 y=w2x+b2,就这样不断重复实验,每一次实验我们都可以得到一个一次函数,将所有的一次函数都在同一个坐标系上画出来。

  重新选定模型函数,假设是一个二次函数: y = a ∗ x 2 + b ∗ x + c y = a * x^2 + b * x + c y=ax2+bx+c,重复和上面一样的步骤,之后将所有的二次函数都在同一个坐标系上画出来。同理选定模型函数是三次、四次、五次等等,我们看看结果。

在这里插入图片描述
  由上图可以看出,越简单的函数,画出来的图像越集中,越复杂的函数,画出来的图像越发散。出现这样的原因是越简单的model受数据的影响就越小,以上图为例,当我们改变 X c p X_{cp} Xcp的值时,一次函数的函数值变化量相对五次函数的函数值变化量就小很多,我们考虑一种极端情况,当函数是一个常数 y = c y = c y=c 时,此是函数是最简单的形式,函数值根本不会受到自变量的影响。这里体现的是variance的大小,若variance越大,则越发散、若variance越小,则越集中

   观察了函数图像的集中和发散,我们再来看一下函数求均值后的结果,首先我们假设真实的函数 F ^ \hat{F} F^图像如下左图所示,我们对重复实验求出来的所有函数图像取平均值,然后画出平均函数 F ˉ \bar{F} Fˉ的图像。

真实的函数图像
平均函数的图像

   真实函数的图像如左图图像所示,而主要观察的是右侧的图像,右侧图像从右上角、左侧、右下角的三幅图片组成,分别对应的是一次函数、三次函数、五次函数;图像中黑色曲线是真实函数的图像 F ^ \hat{F} F^ 、红色部分是针对同一模型函数重复实验得到的所有的函数、黑色部分是对所有的函数求平均值之后得到的平均函数 F ˉ \bar{F} Fˉ。仔细观察我们发现,越复杂的函数,其平均函数和真实函数更加的接近、越简单的函数,其平均函数拟合真实函数拟合的越不好。这里拟合的好坏就是bias,bias越大则拟合的越不好、bias越小则拟合的越好。


  为了更好的理解,我们以开枪打靶为例,示意图如下:

在这里插入图片描述
   假设靶的中心就是我们的真实函数 F ^ \hat{F} F^,我们根据训练样本进行训练得到的函数是 F ∗ F^* F,多次重复实验,对每一次实验得到的 F ∗ F^* F累加然后求平均值,得到的平均函数为 F ˉ \bar{F} Fˉ F ˉ \bar{F} Fˉ F ^ \hat{F} F^之间的距离就是Bias, F ˉ \bar{F} Fˉ F ∗ F^* F之间的距离就是Variance。

   对于很复杂的函数模型而言,Bias很小,但是Variance很大;对于简单的函数模型,Bias很大,但是Variance很小。用打靶的语言来说,复杂函数模型打靶瞄的很准(bias小),但是压枪不好,打的很分散(variance很大);简单函数模型打靶瞄的不准(bias大)但是很集中(variance小)。理想的情况就是瞄的又准、打的又集中,换句话说就是bias和variance都越小越好。

  但是很多时候很难如我们所愿,我们需要的bias和variance之间做一个权衡,如下图所示:
在这里插入图片描述
  若模型太简单,则Bias很大,欠拟合 underfitting,若模型太复杂,则Variance很大,过拟合 overfitting。所以我们需要找到合适的模型。那么当我们遇到Bias或者Variance很大的时候,我们应该怎么做去减少error的出现呢?

  当bias很大的时候,这说明提出的模型欠拟合,我们需要
  1. 考虑更多的特征作为函数的一部分
  2. 更换模型,提出一个更复杂的模型

  当Variance很大的时候,模型的复杂度和学习能力是足够的,但仍存在很大的错误,因此我们要做的是
  1. 增加训练集和测试集的大小,也就是要更多的数据
  2. 正则化 Regularization,将参数作为损失函数的一部分,防止参数过大 (参数越接近0,函数图像越平滑,模型对于数据越不敏感,噪声数据对模型的影响较小)

bias较大如何处理
variance较大如何处理

至此关于回归问题的进一步了解就结束了。

三 结束语

  1. 本文中的所有图片均来自于台湾大学李宏毅教授 2020 machine learning 课程中的PPT。
  2. 小编目前毕竟还是本科生,若文章有问题,欢迎大家在评论区中指出。
  3. 文章编写不易,若对您有帮助,希望您可以点一个小小的赞。路漫漫其修远兮,吾将上下而求索,与君共勉 !!!
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 机器学习中的逻辑回归(Logistic Regression)是一种用于分类问题的监督学习算法。它被广泛应用于各种领域,如金融、医疗、社交网络等。 逻辑回归的基本原理是利用一个线性模型,将输入特征与输出结果之间的关系进行建模。然后通过在线性模型的基础上引入一个逻辑函数(sigmoid函数),将输出结果映射到一个概率值。 具体来说,逻辑回归算法通过对训练数据进行学习,估计出模型的参数,使得模型能够对新的输入样本进行分类预测。在训练过程中,逻辑回归通过最大化似然函数的方法来估计模型的参数。常用的优化算法有梯度下降法、牛顿法等。 逻辑回归的一个重要应用是二分类问题,其中输出结果只有两个类别。通过设置一个阈值,将模型输出的概率值映射为两个类别中的一个。 逻辑回归的优点包括简单、可解释性强、计算效率高。同时,逻辑回归对于处理大规模数据集和高维数据也具有较好的适应性。然而,逻辑回归也有一些不足之处,例如无法处理非线性关系以及对异常值比较敏感。 总之,逻辑回归是一种经典的机器学习算法,既简单又有效。它在各种分类问题中得到了广泛应用,并且在实际应用中表现良好。 ### 回答2: 机器学习中的逻辑回归(Logistic Regression)是一种常用的分类算法。它通过建立一个逻辑回归模型,将输入的特征与相应的类别进行关联。 逻辑回归可以处理二分类问题,也可以通过修改为多类别问题进行处理。它的核心思想是使用逻辑函数(也称为Sigmoid函数)将线性回归模型的输出映射到[0,1]之间,从而得到样本属于某个类别的概率。 逻辑回归的训练过程主要包括两个步骤:参数初始化和优化。参数初始化就是设置模型的初始权重和偏置,然后通过最优化算法(如梯度下降法)来迭代地更新参数,使得模型的损失函数最小化。 逻辑回归的优势在于它计算速度快、实现简单,且对大规模数据集的处理效果较好。它能够处理线性可分问题,并且可以通过引入正则化技术来防止过拟合。 然而,逻辑回归也有一些限制。由于它是基于线性模型的,对于非线性关系的分类问题,逻辑回归可能无法很好地适应。此外,逻辑回归对特征的选择和预处理较为敏感,需要进行适当的特征工程。 总的来说,逻辑回归是一种简单且有效的分类算法,特别适用于二分类问题。尽管有其局限性,但在实际应用中,逻辑回归仍然被广泛使用,并且可以作为其他更复杂模型的基础。 ### 回答3: 机器学习中的逻辑回归(logistic regression)是一种用于分类问题的机器学习算法。逻辑回归被广泛应用于各个领域,如医学诊断、金融风险评估、文本分类等。 逻辑回归的基本思想是通过对输入变量和输出变量之间的关系进行建模来进行分类。它用到了一个逻辑函数(logistic function),将输入变量的线性组合映射到0和1之间的概率值。逻辑函数通常是sigmoid函数,常用的形式是1 / (1 + exp(-z)),其中z是输入变量的线性组合。 训练逻辑回归模型的过程是通过最大似然估计来拟合模型参数。最大似然估计的目标是找到能最大化观测到的样本的条件概率的参数。为了实现这一点,通常使用梯度下降法来最小化损失函数。损失函数可以是似然函数的负对数,即对数损失函数。 逻辑回归有一些优点。首先,它是一种简单而直观的模型,易于理解和实现。其次,逻辑回归模型的参数可以通过梯度下降等优化算法进行有效求解。此外,逻辑回归模型具有较好的解释性,可以通过参数的符号和大小了解自变量与因变量的关系。 然而,逻辑回归也有一些限制。首先,它通常只适用于处理线性可分的问题。其次,逻辑回归模型对于特征之间的相关性比较敏感,如果特征之间具有高度相关性,可能导致模型出现过拟合现象。此外,逻辑回归模型的输出是概率值,对于某些任务可能不够精确。 总之,逻辑回归是一种常用的机器学习算法,用于解决分类问题。其简单而直观的思想和容易求解的特点使其在实际应用中非常有用。但需要注意逻辑回归的局限性,并结合具体问题选择合适的模型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值