对数几率回归(逻辑回归)

这回我们还是从回归问题说起,提到回归问题一般是对连续性因变量进行预测的建模方法,那么假如现在的因变量为 离散的2分类,例如预测明天是否会下雨,预测比赛是否会赢这一类的问题,回归的方法是否可行呢?答案是当然的了,但是要改变一下方式。 思考一下,现在要做的事情是通过某种模型,要对一系列的值进行转化, 输出0或者1 ,代表 成功或者失败,很直观的想法是分别计算这一系列的值 为0和为1的概率 ,较大的概率自然也就是预测的结果了。 所谓“ 逻辑回归 ”的叫法其实是不准确的,是 一种不准确的普遍叫法 ,一般叫做“ 逻辑斯特回归 ”(音译),或者为“对数几率回归 ”(个人认为这种叫法更合理一些,下文论证为什么)

对数几率回归

按照惯例数据集为 \( D = {(x^{(1)}, y^{(1)}), (x^{(2)},y^{(2)})...(x^{(N)}, y^{(N)})}\) ,其中 \( x^{(i)}\in R^n\) ,要构造的函数为 \( H_\theta(X)\) 。一般简单的线性回归模型 \( H_\theta(X) = \theta^TX\) 假定的是 \( X\) 与真实的 \( Y\) (因变量)呈 线性关系 ,但是前面也提到了,现在要做2分类问题的话可以把因变量转化成概率的形式来处理,所以这里对数几率回归则是假定 \( X\)\( Y\)几率 的对数 呈线性关系, 也就是与2分类的 二者的发生几率然后取对数 呈线性关系,写出来即是

$$ ln\frac{P(Y=1)}{P(Y=0)}=\theta^TX\\ $$

这里 \( P(Y=0)= 1 - P(Y=1)\) ,然后做下面的公式转换

$$ \frac{P(Y=1)}{1-P(Y=1)} = exp(\theta^TX)\\ $$
$$ P(Y=1) = \frac{exp(\theta^TX)}{1+exp(\theta^TX)}\\ $$

这里上下同时乘 \( exp(-\theta^TX)\) ,即得到

$$ P(Y=1)=H_\theta(X)= \frac{1}{1+exp(-\theta^TX)}\\ $$

上面的公式即是 对数几率回归 的模型,也可以看出其实就是在线性模型 \(\theta^TX\) 的基础上做了特殊的变换得来的,函数曲线画出来就更直观一些

通过函数曲线可以更直观的看出,对数几率回归实际上是在线性回归的基础上,通过一个函数把值映射到0-1之间,从而解决2分类的问题,这个函数叫做sigmoid函数

损失函数

接下来就是要构造损失函数 \( J(\theta)\) ,普通线性回归中我们用 \(H_\theta(X)\)\( Y\)差的平方和 来作为损失函数,这里也可以同理通过计算概率的形式来计算出最大的概率构造损失函数,可以理解为: 让正确分类的部分(这里既然是2分类的概率的形式,显然是呈二项分布的 )的概率累乘尽量大,那么拟合出来的 \( \theta\) 即为更好

$$ J(\theta) = -\frac{1}{N}[\prod_{i=1}^{N}\sum_{j=0}^{1}{1(y^{(i)}=j)}\times P(y^{(i)}=j)]\\ $$
$$ J(\theta) =-\frac{1}{N}[\sum_{i=1}^{N}\sum_{j=0}^{1}{1(y^{(i)}=j)}\times lnP(y^{(i)}=j)]\\ $$
$$ J(\theta) = -\frac{1}{N}\sum_{i=1}^{N}(y^{(i)}\times ln(H_\theta(x^{(i)})) + (1-y^{(i)})\times ln(1-H_\theta(x^{(i)})))\\ $$

上面的公式有几点需要解释一下:

  • 负号 :损失函数一般为越小越好,所以这里取相反数
  • 1 :此为 Indicator函数 ,即计算预测正确的内部分的概率
  • j :代表2分类中其中的1个分类
  • ln :因为是概率相乘,而概率都是小于1的数,所以为了计算方便,会把累乘通过取对数变成累加

梯度下降

有了损失函数,就可以用梯度下降来迭代求解了,首先要计算偏导 \( \frac{\partial J(\theta)}{\partial \theta_j}\) ,这里为了书写简便去掉 \( (i)\) 角标

$$ \frac{\partial J(\theta)}{\partial \theta_j}=-\frac{1}{N}\sum_{i=1}^{N}{ \frac{y}{H_\theta(x)}\times \frac{\partial H_\theta(x)}{\partial \theta_j}}+\frac{1-y}{1-H_\theta(x)}\times \frac{\partial (1-H_\theta(x))}{\partial \theta_j}\\ $$

其中这里

$$ \frac{\partial H_\theta(x)}{\partial \theta_j}=\frac{\partial}{\partial \theta_j} \frac{1}{1+exp(-\theta^Tx)}=H_\theta(x)\times (1-H_\theta(x))\times x_j\\ $$

同理得

$$ \frac{\partial (1-H_\theta(x))}{\partial \theta_j}=-H_\theta(x)\times (1-H_\theta(x))\times x_j $$

组合公式化简即得

$$ \frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{N}\sum_{i=1}^{N}{(y^{(i)}-H_\theta(x^{(i)})) x_j} $$

有了偏导就可以迭代更新求解 \( \theta_j \Leftarrow \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}\)

对数几率回归的特点

  1. 对数几率回归 是广义线性模型的一种,本质上是对线性模型通过 sigmoid函数 的映射,所以模型清晰,可解释性较强,这也是为什么对数几率回归虽然模型简单但是仍然流行在各种实际场景中,比如 CTR 点击率预估
  2. 因为本质上还是线性回归,所以有这和线性回归一样的局限性,比如多 重共线性问题
  3. 也是由于本质上是线性回归,所以也可以应用 L1L2正则化 来处理 过拟合多重共线性 的问题

😛

about me