logit回归模型_机器学习:二分类logit回归模型

1 logit回归模型的简单介绍:

  • 一种常见的机器学习算法
  • 用来解决分类问题的,通常是二分类问题,但是也可以解决多分类问题。
  • 具体应用:判断银行的客户是否会违约,判断客户是否是优质客户、判断某件产品是否会被销售出去等广泛的分类问题。

特点:具有较好的可解释性。

在logit模型中,因变量只有两个取值0或1.0表示阴性,代表事情没有发生;1表示阳性,表示事情发生了。例如,在预测信用卡是否会违约中,我们可以用0表示没有违约,1表示违约。

2. sigmoid 函数与logit模型:

我们不能采取简单的线性回归模型进行分类预测。我们需要引入一个特殊的函数:sigmoid函数。

在正式引入sigmoid函数之前,我们首先看一下采用线性回归模型存在的问题:

  • 采用线性回归模型,要求误差项服从正态分布;但是,如果因变量只能取0-1两个值的情况下,误差项实际服从的不是正态分布,而是伯努利分布。
  • 误差项也不是同方差的,而是异方差的。
  • 因变量Y的取值也不一定在0,1之间。

这需要我们引入一个特殊的函数,将函数的取值范围压缩在0,1之间,这就需要使用到了sigmoid函数了。sigmoid函数的表达式和图像如下所示:

sigmoid函数的表达式:

式-1

exp是自然指数,是一个无限不循环小数;z则是自变量。

注意我们,可以分子、分母同时除以exp(z),得到

。这个式子和上一个式子是等价的。

sigmoid函数的图像:

70373c4470566de1c63afcf80b06b519.png

函数的图像是s型的。

如果我们将sigmoid函数中的z用一个线性表达式来代替,我们就得到了logit回归模型的表达式了:

. 式-2

这里y的具体表达式如下所示:

i=1,2,3,4,5,6+……n表示的是有n个样本。例如,在信用卡客户是否会违约中,有100个客户,此时n=100

k表示的是解释变量的个数(不含常数项)。例如,在信用卡客户违约判断中,我们可以引入三个解释变量:年龄、收入水平和性别,此时解释变量的数目就是3,k的取值就是3.

这样,我们就可以得到Y取阳性的概率是,在信用卡是否会违约的例子中,就是违约的概率是式子2的表达式。

那么,Y取零值(阴性值)的概率是1-P,P为Y取1(阳性值)的概率。

式-3

式3表示的发生比,是发生的概率与不发生概率的比值。如果我们对发生比取自然对数,那么我们就可以得到对数发生比:

式-4

根据一定的数学知识,我们可以得到对数发生比(式-4)可以用y来表表示,这样,我们可以得到:

式-5

我们得到了logit模型的表达式了。我们可以发现,sigmoid函数原本是一个非线性的函数,但是我们可以通过一系列的变换,一个非线性的函数,最终变成了一个线性的函数了。在计量经济学中,logit模型通常被看做是广义线性回归模型;在机器学习中,则更多的被看做是分类问题。

3. logit模型的求解。

我们知道了logit模型的表达式了,那么我们该如何求得每个参数β的值呢?

首先,我们需要建立logit模型的成本函数。

我们,首先考虑是否可以直接采用线性回归模型的成本函数,也就是采用最小二乘法。

答案是不可以的,因为这一成本函数不是convex的。那么,我们该怎么办呢?

Y只有0、1两个取值,我们可以用如下的式子,将其统一起来:

式-6

其中,P_i(latex公式)的表达式是

当Y取1时,式-6的取值就是P;当Y取0时,式-6的取值就是(1-P)了。

一个样本的取值是如此,因为,各个样本之间是相互独立的,因此,把每一个样本的式子6连乘起来得到似然函数:

式-7

我们对式-7取对数可以得到,

式-8

式-8,是对数似然函数,我们取其最大值便可以得到每一个参数β的解。

求解这个对数似然函数,我们可以采取梯度下降的方法。但是梯度下降法,只能用于求解最小值,因此,我们需要在式-8前面加一个负号,得到logit模型的成本函数。这样,我们就由求解对数极大似然函数的最大值,变成了求解成本函数的最小值了。

采用梯度下降法,我们就可以得到每个参数的解了。具体的运算其实是不需要手算的,我们可以采用软件计算,十分方便。

我们,求得了每个参数的解,现在,我们就可以进行分类预测了。那么,我们该如何评估模型的分类结果呢?

4. 模型的评估

模型的评估手段,有多种:常见的有ROC曲线,AUC,和混淆矩阵等。我们会进行介绍。

我们首先介绍的是混淆矩阵。

e1647e1de3221d915dd072c09ce07501.png

字写得不太好,请原谅。

阳性为1,表示事情发生;阴性为0,表示事情没有发生。

如果实际结果为阳性,模型的预测结果也为阳性,我们记为TP

如果实际结果为阴性,模型的预测结果也为阴性,我们记为TN

如果实际结果为阳性,模型的预测结果却为阴性,我们记为FN

如果实际结果为阴性,模型的预测结果却为阳性,我们记为FP

有了混淆矩阵,我们可以计算三个指标:准确率(accuracy ratio),精准率(Precision ratio),召回率(Recall Ratio)和F1得分。

四个指标如下所示:

  • 第一个是正确率(accuracy ratio)=(TP+TN)/(TP+TN+FP+FN)
  • 第二个是精准率(precision ratio),指的是预测为真的样本中,实际也为真所占的比例。公式是:TP/(TP+FP)
  • 第三个是召回率(recall ratio),指的是真实为真的样本中,被预测出来的样本所占的比例。公式是:TP/(TP+FN)
  • F1 score=2/(1/(precision ratio)+1/(recall ratio))=(2∗precision ratio∗recall ratio)/(precision ratio+recall ratio)

这四个指标都是越高越好。当然了,在实际应用中,还是有一定的取舍的!

现在,我们介绍一下ROC曲线和AUC。

先介绍一下ROC曲线。中文名是接收者特征曲线。

  • ROC曲线(receiver operating curve)也是用来评估模型效果的一种方法。
  • ROC曲线的横坐标为假阳性率,纵坐标为真阳性率。
  • 假阳性率FPR=1-TN/(TN+FP)=FP/(TN+FP)
  • 真阳性率TPR=TP/(TP+FN)=recall ratio.
  • 在不同的阈值之下,假阳性率FPR与真阳性率TPR之间会存在着一一对应的关系,将这一关系连接成线,就成了ROC曲线。

我们通过一个例子来说明一下。

a4642667643f0deb99c64a90f1e87323.png

9536e39719e5e367d09b392a18913c15.png

2c96ec34bad9a6fa03e0149ce1ce7de0.png

aa5c5995dabdec6b49b1262039c95565.png

b0af3bed72569218c3739dfeeedbce56.png

好了,对logit模型,就介绍到这里了!