Datawhale-初级算法梳理-Day2-逻辑回归算法梳理

1.逻辑回归与线性回归的联系与区别

a) 概念

线性回归主要用来解决连续值预测的问题,逻辑回归用来解决分类的问题,输出的属于某个类别的概率。

b) 原理

线性回归中使用的是最小化平方误差损失函数,对偏离真实值越远的数据惩罚越严重。

逻辑回归使用对数似然函数进行参数估计,使用交叉熵作为损失函数,对预测错误的惩罚是随着输出的增大,逐渐逼近一个常数

虽然逻辑回归能够用于分类,不过其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。

这主要是由于线性回归在整个实数域内敏感度一致,而分类范围,需要在[0,1]之内。而逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型。

逻辑回归在线性回归的实数范围输出值上施加sigmoid函数将值收敛到0~1范围, 其目标函数也因此从差平方和函数变为对数损失函数, 以提供最优化所需导数(sigmoid函数是softmax函数的二元特例,其导数均为函数值的f*(1-f)形式,若要求多元分类,就要把sigmoid换成softmax了。)。

2.逻辑回归的原理

Logistic 回归是二分类任务的首选方法。它输出一个 0 到 1 之间的离散二值结果。简单来说,它的结果不是 1 就是 0

Logistic 回归通过使用其固有的 logistic 函数估计概率,来衡量因变量(我们想要预测的标签)与一个或多个自变量(特征)之间的关系。

然后这些概率必须二值化才能真地进行预测。这就是 logistic 函数的任务,也称为 Sigmoid 函数。Sigmoid 函数是一个 S 形曲线,它可以将任意实数值映射到介于 0 和 1 之间的值,但并不能取到 0或1。然后使用阈值分类器将 0 和 1 之间的值转换为 0 或 1。

a) 构建模型

逻辑回归模型的假设是:
hθ(x)=g(θTX){h_\theta(x)=g(\theta^TX)}

其中X表示特征向量,g代表逻辑函数,一个常用的逻辑函数为 S 形函数,公式为:g(z)=11+ez{g(z)=\frac{1}{1+e^{-z}}}
该函数的图像为:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
hθ(x){h_\theta(x)}的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1 的可能性,即hθ(x)=P(y=1x;θ){h_\theta(x)=P(y=1|x;\theta)}

在逻辑回归中,我们预测:

hθ(x){h_\theta(x)}>= 0.5时,预测 ???? = 1。
hθ(x){h_\theta(x)}< 0.5时,预测 ???? = 0 。

b) 构造损失函数

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们
也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将hθ(x)=11+eθTX{h_\theta(x)=\frac{1}{1+e^{-\theta^TX}}}带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convexfunction)。
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。

我们重新定义逻辑回归的代价函数为:
J(θ)=1mi=1mCost(hθ(x(i),y(i))){J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)},y^{(i)}))}

其中:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
hθ(x){h_\theta(x)}Cost(hθ(x,y)){Cost(h_\theta(x,y))}之间的关系如下图所示:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
将构建的 Cost(hθ(x,y)){Cost(h_\theta(x,y))}简化如下:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
带入代价函数得到:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理

c) 参数估计

在得到代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
求导后得到:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
求导过程:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理

d) 多项逻辑回归模型

上面介绍的逻辑回归模型是二项分类模型,用于二类分类,可以将其推广为多项逻辑回归模型,用于多类分类,假设离散型随机变量Y的取值集合是{1,2,…,K},那么多项回归模型是P(Y=kx)=exp(wkx)1+k=1K1exp(wkx),k=1,2,&ThinSpace;,K1 P(Y=k | x)=\frac{\exp \left(w_{k} \cdot x\right)}{1+\sum_{k=1}^{K-1} \exp \left(w_{k} \cdot x\right)}, \quad k=1,2, \cdots, K-1

P(Y=Kx)=11+k=1K1exp(wkx) P(Y=K | x)=\frac{1}{1+\sum_{k=1}^{K-1} \exp \left(w_{k} \cdot x\right)}
这里,xRn+1,wkRn+1x \in \mathbf{R}^{n+1}, w_{k} \in \mathbf{R}^{n+1}
二项逻辑回归模型的参数估计法也可以推广到多项逻辑回归模型
参考:

  1. 【算法】逻辑回归(Logistic Regression) 模型
  2. 机器学习之逻辑回归
  3. 逻辑回归
  4. 从原理到应用:简述Logistics回归算法

3.逻辑回归损失函数推导及优化

  • 损失函数推导见2-b内容
  • 损失函数优化
    共轭梯度法 BFGS ( 变尺度法) , L-BFGS (限制变尺度法) ,局部优化法,有限内存局部优化法等

4.正则化与模型评估指标

a) 正则化

我们给逻辑回归的代价函数增加一个正则化的表达式,得到代价函数:
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理

b) 模型评估指标

  • 错误率与精度
    是分类任务中最常见的两种性能度量,既适用于二分类任务,也适用于多分类任务。错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例.对样例集D=(x1,y1),(x2,y2),...,(xi,yi){D={(x_1,y_1),(x_2,y_2),...,(x_i,y_i)}},分类错误率定义为
    E(f;D)=1mi=1mI(f(xi)!=yi){E(f;D)=\frac{1}{m}\sum_{i=1}^mI(f(x_i)!= y_i)}
    精度定义为
    acc(f;D)=1mi=1mI(f(xi)=yi)=1E(f;D){acc(f;D)=\frac{1}{m}\sum_{i=1}^mI(f(x_i)= y_i)=1-E(f;D)}
    更一般的,对于数据分布D和概率密度函数p(·),错误率与精度可分别描述为
    E(f;D)=xDI(f(xi)!=yi)p(x)dx{E(f;D)=\int_{x\sim D}I(f(x_i)!= y_i)p(x)dx}
    acc(f;D)=xDI(f(xi)=yi)p(x)dx=1E(f;D){acc(f;D)=\int_{x\sim D}I(f(x_i)= y_i)p(x)dx=1-E(f;D)}

  • 查准率、查全率与F1

错误率和精度虽常用,但并不能满足所有任务需求.以西瓜问题为例,假定瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误.但是若我们关心的是"挑出的西瓜中有多少比例是好瓜",或者"所有好瓜中有多少比例被挑了出来就不够用了’这时需要使用其他的性能度量.

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例、假正例、真反倒、假反例四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数.分类结果的"泪淆矩阵"( c o时u s i o n m a t r i x )如表2.1所示
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
查准率P与查全率R分别定义为
P=TPTP+FP{P=\frac{TP}{TP+FP}}

R=TPTP+FN{R=\frac{TP}{TP+FN}}

  • ROC与AUC
    ROC全称是“受试者工作特征”曲线,描述TPR(真正例率)和FPR(假正例率)之间的关系

TPR=TPTP+FN=R{TPR=\frac{TP}{TP+FN}=R}

FPR=FPTN+FP{FPR=\frac{FP}{TN+FP}}

TPR:和召回率相同,表示TP除以真实值为1的数

FPR:用FP除以真实值为0的
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理

  • 代价敏感错误率与代价曲线

5.逻辑回归的优缺点

a) 优点

Logistic 回归是一种被人们广泛使用的算法,因为它非常高效,不需要太大的计算量,又通俗易懂,不需要缩放输入特征,不需要任何调整,且很容易调整,并且输出校准好的预测概率。

与线性回归一样,当你去掉与输出变量无关的属性以及相似度高的属性时,logistic 回归效果确实会更好。因此特征处理在 Logistic 和线性回归的性能方面起着重要的作用。

Logistic 回归的另一个优点是它非常容易实现,且训练起来很高效。在研究中,我通常以 Logistic 回归模型作为基准,再尝试使用更复杂的算法。

由于其简单且可快速实现的原因,Logistic 回归也是一个很好的基准,你可以用它来衡量其他更复杂的算法的性能。

b) 缺点

它的一个缺点就是我们不能用 logistic 回归来解决非线性问题,因为它的决策边界是线性的。我们来看看下面的例子,两个类各有俩实例。
Datawhale-初级算法梳理-Day2-逻辑回归算法梳理
显然,我们不可能在不出错的情况下划出一条直线来区分这两个类。使用简单的决策树是个更好的选择。

Logistic 回归并非最强大的算法之一,它可以很容易地被更为复杂的算法所超越,另一个缺点是它高度依赖正确的数据表示。

这意味着逻辑回归在你已经确定了所有重要的自变量之前还不会成为一个有用的工具。由于其结果是离散的,Logistic 回归只能预测分类结果。它同时也以其容易过拟合而闻名。

6.样本不均衡问题解决办法

几个可能的解决方法

  • 扩大数据集
  • 尝试其它评价指标
  • 对数据集进行重采样
  • 尝试产生人工数据样本
  • 尝试不同的分类算法
  • 尝试对模型进行惩罚
  • 尝试一个新的角度理解问题
  • 尝试创新

参考在分类中如何处理训练集中不平衡问题

7.sklearn参数

参见

  1. 官方API
  2. LogisticRegression - 参数说明