B站吴恩达深度学习视频笔记(6)——逻辑回归

时间:2024-04-12 13:40:16

前言

逻辑回归是机器学习非常重要的一种模型,在机器学习的某些场景下,甚至出现了“一个LR打天下”的情况,可以说这个模型是机器学习必须精通的模型。在这之前,你肯定接触过线性回归,但是逻辑回归和线性回归存在不小的差异,我需要先帮你弄清线性回归和逻辑回归是什么,他们有什么区别,再通过吴恩达老师的视频,详细地讲一下逻辑回归。

什么是线性回归(Linear regression)

首先我们要了解,什么是回归?
我们认为所有的特定组数据是相关的,符合一定的分布规律(可以想象成各种曲线),而回归就是来确定这个曲线的参数从而确定这个曲线(曲线可以用数学函数来表示)。
继而我们可以根据确定的函数和要预测的一组x值,来计算新的数据的结果,这个结果就是我们要预测的x值对应的y值。
简单来说,回归是一种拟合数据的方法。
第二步,我们了解线性回归是什么。我们学习代数的时候会看到下面这样的式子:
B站吴恩达深度学习视频笔记(6)——逻辑回归就是一堆x1,x2……的变量乘以他们对应的权重w1,w2…… ,得到最后的结果。
而线性回归就是已经知道图上的一些数据点,用一根曲线去拟合的过程。简单来说,就是确定w1,w2这些参数的值。
知道这些参数值后,再有新的x值,我们就可以计算(预测)出y值。这是我们的目的。

B站吴恩达深度学习视频笔记(6)——逻辑回归

什么是逻辑回归( Logistic Regression)

上面说了线性回归,它很简单也很好理解,但线性回归有很多缺点,最明显的是两个:

  • 一是线性回归是输入到输出的线性变换,拟合能力有限。
  • 二是线性回归的目标值是(−∞,+∞),而很多时候我们希望输出的值是(0,1)(比如广告领域在做CTR预估的时候)。

所以出现了逻辑回归。逻辑回归是机器学习中的一种分类模型,在线性回归的基础上,套用了一个逻辑函数,用于估计某种事物的可能性。

在工业界,逻辑回归被广泛运用,某些场景下甚至有“一个LR打天下”的情况出现,可以说这个模型是机器学习必须精通的模型。

这里需要注意两个点:

  • 一是逻辑回归解决的是分类问题,而不是回归问题,虽然它名字里有回归俩字;
  • 二是这里的可能性,不是数学上的概率,这里的可能性是特征值得加权求和,不是直接相乘。

和线性回归一样,我们会拿到一堆的x1,x2……,然后想办法确定模型的各种参数,我们的目标是知道当一组x输入时,结果是0还是1。怎么才能达到输出0,1的目标呢?

  1. 第一步,我们得引入sigmoid函数:

B站吴恩达深度学习视频笔记(6)——逻辑回归其中x 是我们的输入,theta 为我们要求取的参数
B站吴恩达深度学习视频笔记(6)——逻辑回归因为函数的特性,不管输入什么x值,y值都会是在(0,1)的范围内。

  1. 第二步,就是对于得到的y值,大于某个阈值(通常是0.5)就输出1,小于就输出0。

到具体场景里就是,一个妹子在浏览电商网站,我们通过app上报的数据了解到:

  • x1(现在用的手机是iphon),
  • x2(用4g上网),
  • x3(23岁),
  • x4(女性)
  • x5 (买了一个新iPhone)
  • 还有一些其他的信息……

那么问题来了,她会不会买个手机壳?

我们把这一堆x输入到模型中,经过与模型参数的各种计算,得到一个y值。
当y大于0.5时,我们就输出1,认为她会买。如果小于等于0.5,系统就输出0,认为她不会买。

他们的区别是什么

经过上面的介绍,相信大家已经知道了他们的区别:

  • 1 线性回归是计算出具体的值,是解决回归问题;逻辑回归是给出是和否,解决的是分类问题。
  • 2 逻辑回归引入了sigmoid函数,把y值从线性回归的(−∞,+∞)限制到了(0,1)的范围。
  • 3 逻辑回归通过阈值判断的方式,引入了非线性因素,可以处理分类问题。

下面是吴恩达老师视频中对逻辑回归详细的介绍

对于二元分类问题来讲,给定一个输入特征向量X,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你只能称之为y^ (也就是预测值),也就是你对实际值 y 的估计。更正式地来说,你想让 y^ 表示 y 等于1的一种可能性或者是机会,前提条件是给定了输入特征X。换句话来说,如果X是我们在上个视频看到的图片,你想让 y ^ 来告诉你这是一只猫的图片的机率有多大。在之前的视频中所说的,X是一个n_x维的向量(相当于有n_x个特征的特征向量)。我们用w来表示逻辑回归的参数,这也是一个n_x维向量(因为w实际上是特征权重,维度与特征向量相同),参数里面还有b,这是一个实数(表示偏差)。所以给出输入x以及参数w和b之后,我们怎样产生输出预测值y^ , 一件你可以尝试却不知可不可行的事是让y^ =(w^T) x+b。
B站吴恩达深度学习视频笔记(6)——逻辑回归
这时候我们得到的是一个关于输入x的线性函数,实际上这是你在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法,因为你想让y^ 表示实际值y等于1的机率的话,y ^ 应该在0到1之间。这是一个需要解决的问题,因为(w^ T)x+b可能比1要大得多,或者甚至为一个负值。对于你想要的在0和1之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是^y等于由上面得到的线性函数式子作为自变量的sigmoid函数中,公式如上图最下面output所示,将线性函数转换为非线性函数(线性变成非线性函数,治这个手法要记得!也是一个重点的概念)。

Sigmoid函数

下图是sigmoid函数的图像,如果我把水平轴作为z轴,那么关于z的sigmoid函数是这样的,它是平滑地从0走向1,让我在这里标记纵轴,这是0,曲线与纵轴相交的截距是0.5,这就是关于z的sigmoid函数的图像。我们通常都使用z来表示(w^T) x+b的值。

B站吴恩达深度学习视频笔记(6)——逻辑回归

关于sigmoid函数的公式是这样的,σ(z)=1/(1+e^(-z) ),在这里z是一个实数,这里要说明一些要注意的事情,重点!仔细看了!

如果z非常大那么e^ (-z)将会接近于0,关于z的sigmoid函数将会近似等于1除以1加上某个非常接近于0的项,因为e 的指数如果是个绝对值很大的负数的话,这项将会接近于0,所以如果z很大的话那么关于z的sigmoid函数会非常接近1。相反地,如果z非常小或者说是一个绝对值很大的负数,那么关于e^(-z)这项会变成一个很大的数,你可以认为这是1除以1加上一个非常非常大的数,所以这个就接近于0。实际上你看到当z变成一个绝对值很大的负数,关于z的sigmoid函数就会非常接近于0,

因此当你实现逻辑回归时,你的工作就是去让机器学习参数w以及b这样才使得y^ 成为对y=1这一情况的概率的一个很好的估计。

B站吴恩达深度学习视频笔记(6)——逻辑回归
在继续进行下一步之前,介绍一种符号惯例,可以让参数w和参数b分开。在符号上要注意的一点是当我们对神经网络进行编程时经常会让参数w和参数b分开,在这里参数b对应的是一种偏置。在之前的机器学习课程里,你可能已经见过处理这个问题时的其他符号表示。比如在某些例子里,你定义一个额外的特征称之为x_0,并且使它等于1,那么现在X就是一个n_x加1维的变量,然后你定义y^ =σ(θ^T x)的sigmoid函数。在这个备选的符号惯例里,你有一个参数向量θ_0,θ_1,θ_2,…,θ_(n_x ),这样θ_0就充当了b,这是一个实数,而剩下的θ_1 直到θ_(n_x )充当了w,结果就是当你实现你的神经网络时,有一个比较简单的方法是保持b和w分开。但是在这节课里我们不会使用任何这类符号惯例,所以不用去担心。

现在你已经知道逻辑回归模型是什么样子了,下一步要做的是训练参数w和参数b,你需要定义一个代价函数(代价函数这个是一个重要的概念