Python机器学习逻辑回归与线性回归,本视频介绍了线性回归和逻辑回归之间的区别。线性回归适用于连续值预测,而逻辑回归适用于分类问题。使用线性回归无法正确处理二元分类问题,因为它返回的是连续值而不是概率。逻辑回归通过使用sigmoid函数将线性回归的输出转化为概率,从而解决了分类问题。逻辑回归的目标是建立一个模型来预测每个客户的类别以及每个样本属于某个类别的概率。模型的训练过程是通过计算成本函数来优化参数Theta,以使模型的预测结果与实际标签更接近。通过梯度下降等优化算法,可以不断调整Theta的值,直到得到满意的模型准确性。
欢迎光临,你好。在本视频中,我们将了解线性回归和逻辑回归之间的区别。我们回顾一下线性回归,看看为什么它不能正确地用于某些二元分类问题。我们还看一下 sigmoid 函数,它是逻辑回归的主要部分。开始吧。
首先,让我们回顾一下线性回归如何工作,以更好地理解逻辑回归。暂时忘记客户流失预测,假设我们的目标是预测数据集中客户的收入。这意味着我们不预测流失率(这是一个分类值),而是预测收入(这是一个连续值)。那么,我们怎样才能做到这一点呢?
让我们选择一个自变量(例如客户年龄)并预测因变量(例如收入)。通过线性回归,您可以通过数据拟合直线或多项式。我们可以通过训练模型或根据样本集进行数学计算来找到这条线。这条线有一个方程,显示为 a+bx1。现在,使用这条线来预测连续值 y。也就是说,使用这条线根据未知客户的年龄来预测他或她的收入,就完成了。
我们可以使用相同的技术来预测诸如流失之类的分类字段吗?好吧,让我们看看。
比如说,我们获得了有关客户流失的数据,这次我们的目标是根据客户的年龄来预测客户的流失。我们有一个特征,年龄表示为x1,还有一个分类特征,流失,有两个类别,流失是是,流失是否。如前所述,我们可以将yes和no映射到整数值0和1。
我们现在如何对其进行建模?好吧,从图形上来说,我们可以用散点图来表示我们的数据,但是这一次,我们只有两个y轴值。在此图中,零级用红色表示,一级用蓝色表示。我们的目标是根据现有数据建立一个模型来预测新客户是红色还是蓝色。
让我们采用与线性回归相同的技术,看看是否可以解决流失等分类属性的问题。通过线性回归,您可以再次通过数据拟合多项式,传统上显示为加bx。该多项式也可以传统地表示为Theta0加Theta1x1。该线有两个参数,用向量Theta显示,其中向量的值为Theta0和Theta1。我们还可以将这条线的方程正式表示为Theta转置x。
一般来说,我们可以将多维空间的方程表示为Theta转置x,其中Theta是二维空间中直线的参数或三维空间中平面的参数,等等。由于Theta是参数向量并且应该乘以x,因此它通常显示为转置Theta。Theta也称为方程的权重因子或置信度,这两个术语可以互换使用,X是代表客户的特征集。
无论如何,给定一个数据集,所有特征集x Theta参数都可以通过优化算法或数学计算出来,从而得到拟合线的方程。例如,这条线的参数是负一和0.1,这条线的方程是负一加0.1×1。现在,我们可以使用这条回归线来预测新客户的流失。
例如,对于我们的客户,或者说,年龄的x值等于13的数据点,我们可以将该值代入直线公式,然后计算y值并返回一个数字。例如,对于p1点,我们将Theta转置x等于负1加0.1乘以x1,等于负1加0.1乘以13,等于0.3。我们可以在图表上显示它。
现在,我们可以在这里定义一个阈值。例如,以0.5来定义类。因此,我们在这里为我们的模型编写一条规则,它允许我们将零类与一类分开。如果Theta转置x的值小于0.5,则类别为零。否则,如果Theta转置x的值大于0.5,则该类别为一类,并且由于我们的客户y值小于阈值,我们可以根据以下条件说它属于零类我们的模型。
但这里有一个问题。该客户属于零类的概率是多少?正如您所看到的,这不是解决这个问题的最佳模型。此外,还有一些其他问题证明线性回归不是解决分类问题的正确方法。
因此,如前所述,如果我们使用回归线来计算点的类别,它总是返回一个数字,例如三或负二,依此类推。然后,我们应该使用阈值(例如0.5)将该点分配给0类或1类。该阈值作为阶跃函数工作,无论输入是大还是小、正还是负,它都会输出零或一。因此,使用阈值,我们可以找到记录的类别。
请注意,在阶跃函数中,无论该值有多大,只要它大于0.5,它就等于1,反之亦然。无论y值有多小,如果它小于0.5,输出都将为零。换句话说,价值为1或1,000的客户之间没有区别。结果将是一个。
除了使用这个阶跃函数之外,如果我们有一条更平滑的线(将这些值投影在0和1之间)不是更好吗?事实上,现有的方法并没有真正给出我们客户属于某个类别的概率,这是非常理想的。我们需要一种方法来计算落入班级的概率。
那么,科学的解决办法是什么呢?好吧,如果我们不使用Theta转置x,而是使用一个名为sigmoid的特定函数,那么Theta转置x的sigmoid给我们的是一个点属于某个类的概率,而不是直接给出y的值。我将在一秒钟内解释这个sigmoid函数,但现在,请注意它可以解决问题。它不是直接计算Theta转置x的值,而是返回Theta转置x很大或很小的概率。它始终返回0到1之间的值,具体取决于Theta转置x的实际大小。
现在,我们的模型是Theta转置x的sigmoid,它表示给定x时输出为1的概率。现在的问题是,sigmoid函数是什么?让我详细解释一下sigmoid到底是什么。sigmoid函数也称为逻辑函数,类似于阶跃函数,并由逻辑回归中的以下表达式使用。
sigmoid函数乍一看有点复杂,但不用担心记住这个方程,使用它后你就会明白它的意义。请注意,在sigmoid方程中,当Theta转置x变得很大时,分数分母中的e次方减去Theta转置x几乎变为0,并且sigmoid函数的值越来越接近1。如果Theta转置x非常小,则sigmoid函数会更接近0。
从sigmoid图中可以看出,当Theta转置x变大时,sigmoid函数的值会越来越接近1,而当Theta转置x非常小时,sigmoid函数的值会越来越接近0。因此,sigmoid函数的输出始终在0和1之间,这使得将结果解释为概率是正确的。
很明显,当sigmoid函数的结果接近1时,给定x的情况下y等于1的概率会上升。相反,当sigmoid值接近0时,给定x时y等于1的概率非常小。
那么当我们使用sigmoid函数时,我们的模型的输出是什么?在逻辑回归中,我们对输入x属于默认类y等于1的概率进行建模,并且我们可以将其正式写为给定x的y等于1的概率。我们还可以写出y属于类0的概率,给定x是1减去给定x的y等于1的概率。例如,客户留在公司的概率可以表示为,给定客户的收入和年龄,流失概率等于1(例如可以为0.8),而对于给定的同一客户,流失概率为0客户的收入和年龄可以计算为1减0.8等于0.2。
因此,现在我们的工作是训练模型来设置其参数值,使我们的模型能够很好地估计给定x的y等于1的概率。事实上,这就是逻辑回归构建的良好分类器模型应该为我们做的事情。此外,如果x可以表示为1减去Theta转置x的sigmoid,那么它应该是对y属于0类概率的良好估计。
现在的问题是,我们如何才能实现这一目标?我们可以通过训练过程找到Theta。
那么,我们来看看训练过程是怎样的。
第一步,与大多数机器学习算法一样,使用随机值初始化 Theta 向量。例如,负 1 或 2。
第二步,计算模型输出,即 Theta 转置 x 的 sigmoid。例如,您的训练集中的客户。X 和 Theta 转置 x 是特征向量值。例如,客户的年龄和收入,例如2和5,Theta是信心或权重您已在上一步中设置。该方程的输出是预测值,即客户属于类别 1 的概率。
第三步,将我们模型的输出(假设为 0.7)与客户的实际标签(例如,代表流失的 1)进行比较。然后,将差异记录为该客户的模型误差,即 1 减 0.7,当然等于 0.3。这是训练集中所有客户中仅一位客户的错误。
第四步,像我们在前面的步骤中所做的那样计算所有客户的误差并将这些误差相加。总误差是模型的成本,由模型成本函数计算得出。顺便说一句,成本函数基本上表示如何计算模型的误差,即实际值与模型预测值之间的差异。因此,成本表明模型对客户标签的估计有多差。因此,成本越低,模型就越能正确估计客户标签。所以,我们要做的就是尽量减少这个成本。
第五步,但是由于 Theta 的初始值是随机选择的,因此成本函数很可能非常高,因此我们以这种方式更改 Theta 以希望降低总成本。
第六步,改变Theta的值后,我们回到第二步,然后开始另一次迭代并再次计算模型的成本。我们不断地重复这些步骤,每次都改变 Theta 的值,直到成本足够低。
所以,这提出了两个问题。首先,我们如何改变 Theta 值以降低迭代成本?其次,我们什么时候应该停止迭代?
改变 Theta 值的方法有多种,但最流行的方法之一是梯度下降。此外,有多种方法可以停止迭代,但本质上,您可以通过计算模型的准确性来停止训练,并在满意时停止训练。
Python机器学习逻辑回归与线性回归 推荐