【菜菜的sklearn课堂笔记】逻辑回归与评分卡-名为“回归”的分类器

视频作者:菜菜TsaiTsai
链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili

逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,线性回归是机器学习中最简单的的回归算法,它的方程是
z = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n z=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\cdots +\theta_{n}x_{n} z=θ0+θ1x1+θ2x2++θnxn
θ \theta θ被统称为模型的参数,其中 θ 0 \theta_{0} θ0被称为截距, θ 1 , θ 2 , ⋯ θ n \theta_{1},\theta_{2},\cdots \theta_{n} θ1,θ2,θn被称为系数,这个表达式可以使用矩阵来表示这个方程,其中 x x x θ \theta θ都可以被看做一个列矩阵
z = ( θ 0 θ 1 θ 2 ⋯ θ n ) ( x 0 x 1 x 2 ⋮ x n ) = θ T x ( x 0 = 1 ) z=\begin{pmatrix}\theta_{0} & \theta_{1} & \theta_{2} & \cdots & \theta_{n}\end{pmatrix}\begin{pmatrix}x_{0} \\ x_{1} \\ x_{2} \\ \vdots \\ \\ \\ x_{n}\end{pmatrix}=\theta^{T}x \quad (x_{0}=1) z=(θ0θ1θ2θn)x0x1x2xn=θTx(x0=1)
线性回归的任务,就是构造一个预测函数 z z z来映射输入的特征矩阵 x x x和标签值 y y y的线性关系,而构造预测函数的核心就是找出模型的参数: θ T \theta^{T} θT θ 0 \theta_{0} θ0,著名的最小二乘法就是用求解线性回归中参数的数学方法
通过函数 z z z线性回归使用输入的特征矩阵 X X X来输出一组连续型的标签值 y p r e d y_{pred} ypred,以完成各种预测连续型变量的任务(比如预测产品销量,预测股价等等)
如果我们的标签是离散型变量,尤其是,如果是满足0-1分布的离散型变量,通过引入联系函数,将线性回归方程 z z z变换为 g ( z ) g(z) g(z),并且令 g ( z ) g(z) g(z)的值分布在(0,1)之间,且 g ( z ) g(z) g(z)接近0时样本的标签为类别0,当 g ( z ) g(z) g(z)接近1时样本的标签为类别1,这样就得到了一个分类模型。而这个联系函数对于逻辑回归来说,就是Sigmoid函数:
g ( z ) = 1 1 + e − x g(z)=\frac{1}{1+e^{-x}} g(z)=1+ex1
【菜菜的sklearn课堂笔记】逻辑回归与评分卡-名为“回归”的分类器_第1张图片

Sigmoid函数的公式和性质
Sigmoid函数是一个S型的函数,当自变量z趋近正无穷时,因变量 g ( z ) g(z) g(z)趋近于1,而当z趋近负无穷时, g ( z ) g(z) g(z)趋近于0,它能够将任何实数映射到(0,1)区间,使其可用于将任意值函数转换为更适合二分类的函数
因为这个性质,Sigmoid函数也被当作是归一化的一种方法,与我们之前学过的MinMaxSclaer同理,是属于数据预处理中的“缩放”功能,可以将数据压缩到 [ 0 , 1 ] [0,1] [0,1]之内。区别在于,MinMaxScaler归一化之后,是可以取到0和1的(最大值归一化后就是1,最小值归一化后就是0),但Sigmoid函数只是无限趋近于0和1。

MinMaxScaler的公式
x ∗ = x − min ⁡ ( x ) max ⁡ ( x ) − min ⁡ ( x ) x^{*}=\frac{x-\min (x)}{\max (x)-\min (x)} x=max(x)min(x)xmin(x)
从公式里能明显看出为什么MinMaxScaler归一化之后,可以取到0和1

线性回归 z = θ T x z=\theta^{T}x z=θTx,于是我们将 z z z带入,就得到了二元逻辑回归模型的一般形式
g ( z ) = y ( x ) = 1 1 + e − θ T x g(z)=y(x)=\frac{1}{1+e^{-\theta^{T}x}} g(z)=y(x)=1+eθTx1
y ( x ) y(x) y(x)也就是逻辑回归返回的标签值。此时, y ( x ) y(x) y(x)的取值都在 [ 0 , 1 ] [0,1] [0,1]之间,因此 y ( x ) y(x) y(x) 1 − y ( x ) 1-y(x) 1y(x)相加必然为1,如果我们令 y ( x ) y(x) y(x)除以 1 − y ( x ) 1-y(x) 1y(x)可以得到形似几率的 y ( x ) 1 − y ( x ) \begin{aligned} \frac{y(x)}{1-y(x)}\end{aligned} 1y(x)y(x)

几率:事件发生的概率与该事件不发生的概率的比值。如果发生的概率是 p p p,那么该事件发生的几率是 p 1 − p \begin{aligned} \frac{p}{1-p}\end{aligned} 1pp

链接:几率_百度百科 (baidu.com)

在此基础上取对数,就很容易得到
ln ⁡ y ( x ) 1 − y ( x ) = ln ⁡ ( 1 1 + e − θ T x 1 − 1 1 + e − θ T x ) = ln ⁡ ( 1 1 + e − θ T x e − θ T x 1 + e − θ T x ) = ln ⁡ ( 1 e − θ T x ) = ln ⁡ e θ T x = θ T x \begin{aligned} \ln \frac{y(x)}{1-y(x)}&=\ln \left(\frac{\frac{1}{1+e^{-\theta^{T}x}}}{1- \frac{1}{1+e^{-\theta^{T}x}}}\right)\\ &=\ln \left(\frac{\frac{1}{1+e^{-\theta^{T}x}}}{\frac{e^{-\theta^{T}x}}{1+e^{-\theta^{T}x}}}\right)\\ &=\ln \left(\frac{1}{e^{-\theta^{T}x}}\right)\\ &=\ln e^{\theta^{T}x}\\ &=\theta^{T}x \end{aligned} ln1y(x)y(x)=ln(11+eθTx11+eθTx1)=ln1+eθTxeθTx1+eθTx1=ln(eθTx1)=lneθTx=θTx
y ( x ) y(x) y(x)的形似几率取对数的本质其实就是我们的线性回归 z z z,我们实际上是在对线性回归模型的预测结果取对数几率来让其的结果无限逼近0和1。因此,其对应的模型被称为”对数几率回归“(logistic Regression),也就是我们的逻辑回归(其实就是logistic音译成逻辑,和逻辑没有啥关系),这个名为“回归”却是用来做分类工作的分类器。
线性回归的核心任务是通过求解 θ \theta θ构建 z z z这个预测函数,并希望预测函数 z z z能够尽量拟合数据,因此逻辑回归的核心任务也是类似的:求解 θ \theta θ来构建一个能够尽量拟合数据的预测函数 y ( x ) y(x) y(x),并通过向预测函数中输入特征矩阵来获取相应的标签值 y y y

思考:y(x)代表了样本为某一类标签的概率吗?
ln ⁡ y ( x ) 1 − y ( x ) \begin{aligned} \ln \frac{y(x)}{1-y(x)}\end{aligned} ln1y(x)y(x)是形似对数几率的一种变化。而几率odds的本质其实是 p 1 − p \begin{aligned} \frac{p}{1-p}\end{aligned} 1pp,其中p是事件A发生的概率,而1-p是事件A不会发生的概率,并且 p + ( 1 − p ) = 1 p+(1-p)=1 p+(1p)=1。因此,很多人在理解逻辑回归时,都对 y ( x ) y(x) y(x)做出了如下解释
我们让线性回归结果逼近0和1,此时 y ( x ) y(x) y(x) 1 − y ( x ) 1-y(x) 1y(x)之和为1,因此它们可以被我们看作是一对正反例发生的概率,即 y ( x ) y(x) y(x)是某样本i的标签被预测为1的概率,而 1 − y ( x ) 1-y(x) 1y(x) i i i的标签被预测为0的概率, y ( x ) 1 − y ( x ) \begin{aligned} \frac{y(x)}{1-y(x)}\end{aligned} 1y(x)y(x)就是样本的标签被预测为1的相对概率。基于这种理解,我们使用最大似然法和概率分布函数推导出逻辑回归的损失函数,并且把返回样本在标签取值上的概率当成是逻辑回归的性质来使用。每当我们诉求概率的时候,我们都会使用逻辑回归。
然而这种理解是正确的吗?概率是度量偶然事件发生可能性的数值,尽管逻辑回归的取值在(0,1)之间,并且 y ( x ) y(x) y(x) 1 − y ( x ) 1-y(x) 1y(x)之和的确为1,但光凭这个性质,我们不能认为 y ( x ) y(x) y(x)代表了样本x在标签上取值为1的概率。设想我们使用MaxMinScaler对特征进行归一化后,任意特征的取值也在 [ 0 , 1 ] [0,1] [0,1]之间,并且任意特征的取值 x 0 x_{0} x0 1 − x 0 1-x_{0} 1x0也能够相加为1,但我们却不会认为0-1归一化后的特征是某种概率。
但无论如何,长年以来人们都是以”返回概率“的方式来理解逻辑回归,并且这样使用它的性质。可以说,逻辑回归返回的数字,即便本质上不是概率,却也有着概率的各种性质,可以被当成是概率来看待和使用。

为什么需要逻辑回归

线性回归对数据的要求很严格,比如标签必须满足正态分布,特征之间的多重共线性需要消除等等,而现实中很多真实情景的数据无法满足这些要求,因此线性回归在很多现实情境的应用效果有限。逻辑回归是由线性回归变化而来,因此它对数据也有一些要求;逻辑回归的原理其实并不简单。一个人要理解逻辑回归,必须要有一定的数学基础,必须理解损失函数,正则化,梯度下降,海森矩阵等等这些复杂的概念,才能够对逻辑回归进行调优
但是,无论机器学习领域如何折腾,逻辑回归依然是一个受工业商业热爱,使用广泛的模型,因为它有着不可替代的优点:

  1. 逻辑回归对线性关系的拟合效果非常好。特征与标签之间的线性关系极强的数据,比如金融领域中的信用卡欺诈,评分卡制作,电商中的营销预测等等相关的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更好,也被许多数据咨询公司启用,但逻辑回归在金融领域,尤其是银行业中的统治地位依然不可动摇(相对的,逻辑回归在非线性数据的效果很多时候比瞎猜还不如,所以如果你已经知道数据之间的联系是非线性的,千万不要迷信逻辑回归)
  2. 逻辑回归计算快。对于线性数据,逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林,亲测表示在大型数据上尤其能够看得出区别
  3. 逻辑回归返回的分类结果不是固定的0,1,而是以小数形式呈现的类概率数字。我们因此可以把逻辑回归返回的结果当成连续型数据来利用。比如在评分卡制作时,我们不仅需要判断客户是否会违约,还需要给出确定的”信用分“,而这个信用分的计算就需要使用类概率计算出的对数几率,而决策树和随机森林这样的分类器,可以产出分类结果,却无法帮助我们计算分数(当然,在sklearn中,决策树也可以产生概率,使用接口predict_proba调用就好,但一般来说,正常的决策树没有这个功能)。
  4. 另外,逻辑回归还有抗噪能力强的优点。福布斯杂志在讨论逻辑回归的优点时,甚至有着“技术上来说,最佳模型的AUC面积低于0.8时,逻辑回归非常明显优于树模型”的说法。并且,逻辑回归在小数据集上表现更好,在大型的数据集上,树模型有着更好的表现。

由此,我们已经了解了逻辑回归的本质,它是一个返回对数几率的,在线性数据上表现优异的分类器。其数学目的是求解能够让模型对数据拟合程度最高的参数 θ \theta θ的值,以此构建预测函数 ,然后将特征矩阵输入预测函数来计算出逻辑回归的结果y。
虽然我们熟悉的逻辑回归通常被用于处理二分类问题,但逻辑回归也可以做多分类。

你可能感兴趣的:(菜菜的sklearn课堂,逻辑回归,sklearn,python,算法)