机器学习入门 9-1 什么是逻辑回归

2020-02-17 15:51:06 浏览数 (1)

前言

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍什么是逻辑回归算法以及将实数域范围映射到[0, 1]区间概率值的Sigmoid函数。

a

什 么 是 逻 辑 回 归

这一章介绍一个全新的机器学习算法~逻辑回归算法。

▲2017年Kaggle统计

上图是著名的人工智能和数据科学相关的竞赛网站Kaggle在2017年统计的各类机器学习算法在实际工作中使用情况。在这个统计中逻辑回归算法在各个领域使用非常普遍(除了军事和安全领域),比第二名的决策树算法高出了20个百分点。可见逻辑回归算法本身虽然并不难,但是却非常的有用,以后要对逻辑回归算法多多的关注。

这个从侧面说明了,对于一个机器学习算法来说,并不见得算法越复杂越好,要根据实际的使用场景来选择最合适的算法。前面也提到过免费的午餐定理(No Free Lunch Theorem),并没有某一种算法比另外一种算法要好,任何模型在所有问题上的性能都是相同的(核心前提:每种问题出现的概率是均等的,每个模型用于解决所有问题时,在其平均意义上的性能是一样的)。

通过统计结果也可以看到现在大红大紫的深度学习算法,比如Neural Network(神经网络)、CNNs(卷积神经网络)和RNNs(循环神经网络),它们的排名相对比较靠后,这是由于深度学习属于表示学习的模型,其特征通过样本数据集在训练任务的时候自动学习,因此训练深度学习算法对数据集的要求非常高,需要大量高质量的数据集,与此同时,处理大的数据集对计算能力的要求也会变得非常高。在这种情况下,尤其已有的数据量并不是特别大的时候,这些所谓简单的机器学习算法使用好,也会非常有效。在这个课程中,深度学习算法以及贝叶斯相关的算法不会涉及,对于深度学习算法来说是一个庞大的体系,而对于贝叶斯相关算法而言,背后涉及非常复杂的数学运算。

那什么是逻辑回归算法呢?

▲逻辑回归解决分类问题

逻辑回归听名字好像是一个回归算法,但是实际上逻辑回归算法解决的是分类问题。刚接触的时候肯定会很奇怪,回归算法是怎样解决分类问题的?实际上逻辑回归的原理是将样本特征x与事件A发生的概率联系起来,此时输出预测的是对于这个样本特征x来说事件A发生的概率是多少(即概率p(A | x)),由于概率值是一个属于[0, 1]范围的标量值,所以可以把逻辑回归算法称为一个回归问题。

机器学习算法的本质其实就是求出一个函数f,如果有一个样本x经过这个f函数运算之后会得到一个预测值,我们通常记为y。

▲逻辑回归只能解决二分类问题

无论是之前介绍的线性回归还是多项式回归,这个y值实际上就是我们关心的指标。比如对于波士顿房产价格预测来说,这个y值就是房价;对于学生成绩预测来说,这个y值就是成绩。但是在逻辑回归中,得到的y值本质上是一个概率值(用p来表示),也就是说对于逻辑回归来说,得到一个f函数,此时来了一个样本x,将这个x放进f函数中计算得到的一个概率值p,之后根据这个概率值p进行分类。

  1. 如果概率值p大于等于0.5,表示在输入样本x情况下某个事件A有50%以上的概率发生,此时将y值设置为1;
  2. 如果概率值p小于等于0.5,表示在输入样本x情况下某个事件A不足50%的概率发生,事件1 - p(A)(A bar)发生的概率大,此时将y值设置为0;

对于事件A的含义,在实际问题中可能会有不同的意思。比如对于预测病人有无恶性肿瘤来说,事件A表示恶性肿瘤患者,事件A bar表示良性肿瘤患者,也就是说1代表恶性肿瘤患者,0代表良性肿瘤患者;而对于银行评判客户信用风险的来说,事件A表示银行发给客户信用卡有风险,事件A bar表示银行发给客户信用卡没有风险,也就是1代表银行发给客户信用卡有风险,0代表银行发给客户信用卡没有风险……

总之,预测得到这个概率值之后,多进行一步判断操作,得到的0,1结果就是最终的分类结果。因此逻辑回归既可以看作是一个回归算法,也可以看作是一个分类算法。如果我们不进行最后根据p值进行分类操作的话,那么逻辑回归是一个只能输出[0, 1]范围概率值的回归算法。

我们计算出的是通过样本特征来拟合计算出一个事件发生的概率。比如给一个病人信息,计算他患有恶性肿瘤的概率;给一个客户信息,计算出银行发给信用卡产生风险的概率,最后对这些概率值进一步进行分类操作。通常情况下,使用逻辑回归算法解决分类问题,通过上面介绍的分类例子也可以看出,逻辑回归算法本身只能解决二分类问题。如果对于多分类的问题,逻辑回归算法本身是不支持的,当然我们可以使用一些其他的技巧进行改进,使得逻辑回归算法能够解决多分类问题,关于这个话题,在这一章的最后还会介绍。前面提到过使用kNN算法解决分类问题,kNN算法与逻辑回归算法非常不同的地方就在于对于kNN算法来说,它是天生就可以解决多分类问题的。

b

Sigmoid 函 数

对于前几章学习的线性回归算法,来了一个包含若干特征的样本x,经过训练得到f(x),计算得到对应这些特征的y值。在线性回归中,f(x)函数其实就是θT乘以xb。在这里需要注意,对于线性回归来说,由于存在一个θ0,所以样本x对应的要使用xb(xb为每一个样本特征前面加一个值为1的元素),这个1和θ0相乘得到的是截距,这些在学习线性回归算法的时候都提到过。不论如何最终得到y的值域在负无穷到正无穷之间。换句话说,通过线性回归这种方式,可以求出得到任意的值。那么使用什么样的方式才能将其表示为事件发生的概率呢?

▲σ函数将值域限定到[0, 1]之间

根据概率的公理化定义可知,概率值只能在[0, 1]之间取值。如果我们直接使用线性回归的方式,因为线性回归的输出范围包含[0, 1],还是能够找到一组θ值,这组θ和和样本特征x相乘计算得到的y值来表达事件发生的概率。当然这仅仅是从应用的角度来讲,可以这样做,但是这样做不够好,就是因为概率有值域的限制,而直接使用这种线性回归方式得到的结果没有值域的限制,无论是最终拟合的直线,还是使用多项式回归拟合的曲线,此时计算得到的可信度会非常差。

解决其实非常简单,我们同样使用线性回归这种方式,依然找到一系列的θ值,这个θ值和xb进行点乘操作,只不过此时我们将这个结果作为一个特征值再传给σ函数,经过σ函数转换成一个值域在[0, 1]之间的概率值。

接下来就来看看对于逻辑回归非常关键的σ函数。

▲Sigmoid函数

通常我们会使用一个名为Sigmoid的函数,Sigmoid函数的表达式如上图所示。乍得一看会觉得这个函数表达式非常复杂,接下来尝试绘制一下这个函数,感性的看一下这个函数是什么样子的,进而理解一下为什么Sigmoid函数可以方便的将全体实数范围的值转换成[0, 1]之间的概率值。

虽然表达式看起来非常复杂,但是函数对应的图形非常简单。

接下来就仔细来分析一下这个曲线的性质。

▲Sigmoid函数

这根曲线最左端逐渐趋近于0,但是实际上是达不到0的;而最右端逐渐趋近于1,但是实际上是达不到1的。换句话说,Sigmoid函数的值域在(0, 1)之间(不包括0和1),这样就可以非常方便的将任意的实数值映射到(0, 1)作为概率值。上面是通过函数图像简单的分析,接下来通过函数表达式更加理性的分析一下。

  1. 当t取负无穷的时候,e的负t次方是一个非常大的值,也就是说1除上1加上一个非常大的值,计算得到的结果无穷分之一,最终计算的结果趋近于0;
  2. 当t取正无穷的时候,e的负t次方就无限逼近于0,此时,1除上1加上一个无限小近乎为0的数,最终计算的结果趋近于1;

因此Sigmoid函数的值域在(0, 1)之间。

下面将函数图像的坐标轴画出来。

▲Sigmoid函数

对于Sigmoid函数,当传进入的参数t大于0的时候,得到的概率值p是大于0.5的;当传进去参数t小于0的时候,得到的概率值p是小于0.5的,此时分界点就是t = 0的位置,如果把t = 0代入Sigmoid表达式中,即σ(0) = 1/2。对于Sigmoid函数来说:

  1. 传进入的参数t大于0的时候:
    1. 当t越接近0,函数计算的结果越接近0.5;
    2. 当t越远离0,得到的结果就会越大,大到一定程度会非常接近于1;
  2. 传进去的参数t小于0的时候:
    1. 当t越接近0,函数计算的结果越接近0.5;
    2. 当t越远离0,得到的结果就会越小,小到一定程度会非常接近于0;

c

逻 辑 回 归

介绍了什么是逻辑回归以及将实数范围的值压缩到(0, 1)之间概率值的SIgmoid函数。接下来具体的看一下逻辑回归。

▲逻辑回归表达式

将Sigmoid函数中的t换成线性回归表达式θT与xb点乘,用运算的结果作为事件发生的概率。当概率值大于0.5的时候,相应的分类取1;当概率值小于0.5的时候,相应的分类结果取0。

为了在整体上理解逻辑回归算法。举一个实际的例子,比如有一个病人数据,需要预测病人患有良性肿瘤还是恶性肿瘤,首先通过训练得到一组θ值,这样每来一组新的病人数据,在这组数据前面添加一个值为1的元素(需要计算截距),之后和训练求出来的θ做点乘,点乘的结果会得到一个标量值,把得到的标量值再放到Sigmoid函数中,得到的结果就是这个病人患有恶性肿瘤的概率,如果这个概率值大于0.5的话,预测这个病人很有可能是一名恶性肿瘤的患者;如果这个概率值小于等于0.5的话,预测这个病人很有可能是一名良性肿瘤患者。

现在理解了逻辑回归的算法,剩下的问题就是对于给定的样本数据集X和分类标签y,如何找到一组参数θ,可以最大程度的获得样本数据集X对应的分类输出y。这是在训练过程中要做的主要任务,也就是拟合训练样本。首先需要求出一组相应的θ值,使得通过这种方式在训练数据集上有非常好的预测结果,也就是所谓的拟合样本数据集。对于拟合训练数据集逻辑回归远远没有线性回归那么直观,因为线性回归可以非常容易的用预测结果减去真实的y值的平方和,也就是所谓的MSE,用这样的标准来判断拟合的好坏。但是对于逻辑回归来说,由于它是一个分类问题,不能使用线性回归的标准来判断拟合的好坏,在下一小节将会具体的介绍这个问题。

0 人点赞