逻辑回归
约定:
- 红色:对名词进行解释的重点
- 黄色:各部分总结中的重点
- 绿色:算法基本假设与解释
摘要:
- 线性结果对于对数几率的拟合推出sigmoid(sigmoid)
- 两种得到损失函数的方法(交叉熵(基于KL散度)、极大似然估计)
- 两类模型的辨析(判别模型、生成模型)
名词解释:sigmoid
、softmax
、交叉熵
、KL散度
、判别模型\生成模型
、L1正则化/L2正则化
、LASSO、岭回归
- sigmoid:本身是一种分布,分布函数类似正态分布。本身的sigmoid函数是将实数空间的输入映射到0~1之间的输出,因此被用来作为一种“概率函数”
- softmax: 一种用于处理多分类问题的“概率函数”
- 交叉熵:一种常用的分类问题中的损失函数
- KL散度:数学上衡量两个分布之间的距离的一种方法,交叉熵可以由KL散度推导出来
- 生成模型和判别模型:判别模型可以根据给定特征值直接给出预测结果,或条件概率。生成模型需要学习联合概率分布(特征和标签的联合概率分布,本质上就是数据集的分布了),所以生成模型可以学习到整个数据的分布就可以从分布中sample新数据
- L1正则化/L2正则化:两种通过修改损失函数的表达从结构上防止过拟合的正则化方法,其中的L1和L2表示了两种模型复杂度的方法
- LASSO/岭回归:应用了L1和L2正则化的逻辑回归分别叫做LASSO回归和岭回归
- 注:正则化和ridge回归,岭回归部分相对简单,放到 番外-正则化、距离与范数 详细讲述,不在这篇中详述了
原理实现: 基于梯度下降的逻辑回归
一、一句话概括
因为线性回归不能对输出是离散值的情况进行预测(只能做回归问题,不能做分类问题),所以将线性回归的输出理解成0 1之间的概率,从而让线性回归拥有了进行分类的能力。
概括总结
- 逻辑回归 = 线性回归+”概率函数“
二、概率函数
2.1 sigmoid推导过程
$$P(Y=1 \mid x)=\frac{1}{1+e^{-\left(w^{T} x+b\right)} }$$ 以上是通过sigmoid计算的条件概率,式子中的$w^{T} x+b$就是线性回归的输出值。以下是理解sigmoid函数过程
- 想让“线性回归”拟合的空间压缩到0到1,最简单的方案是分段函数$$p(y=1 \mid x)=\left{\begin{array}{ll}0, & z<0 \\ 0.5, & z=0 \\ 1, & z>0\end{array}, \quad z=w^{T} x+b\right.$$
- 上式并不好做求解,所以引入“对数几率”的概念\ 2.1 几率: 正例与反例概率的比值称为几率 \ 2.2 则对数几率:$$ln ( odds )=\ln \frac{p}{1-p}$$ 2.3 将线性回归的结果作为对 “对数几率的拟合”$$w^{T} x+b=\ln \frac{p}{1-p}$$
解释:对数几率的好处:是任阶的凸函数,有很多方式可以优化(引入了e)
- 带入$p$为后验概率$p(Y=1|X)$有$$w^{T} x+b=\ln \frac{p(Y=1|X)}{1-p(Y=1|X)}$$
- 得到披着sigmoid外衣的线性回归:$$P(Y=1 \mid x)=\frac{1}{1+e^{-\left(w^{T} x+b\right)} }$$
2.2 sigmoid求导过程
- sigmoid函数表达式 $$g(z) = \frac{1}{1+e^{-z} }=(1+e^{-z})^{-1}$$
求导得到表达式: $$g'(z)=(-1)(1+e^{-z})^{-2}e^{-z}*(-1)$$
整理得 $g'(z) = \frac{1}{(1+e^{-z})^2}*(e^{-z})$
拆出一个 $\frac{1}{1+e^{-z} }$ 得 $$g'(z)=\frac{1}{1+e^{-z} } (\frac{1}{1+e^{-z} } e^{-z}) -> g'(z)=\frac{1}{1+e^{-z} } * \frac{e^{-z} }{1+e^{-z} }$$
整理得 $$g'(z)=g(z)(1-g(z))$$ *sigmoid总结
- 逻辑回归是线性回归对于对数几率的拟合
- 选择sigmoid函数的另一个大家耳熟能详的原因是,sigmoid由于引入了e,使得导函数的形式很优雅:$f'(z) = f(z)(1-f(z))$
2.2 softmax
$$S{i}=\frac{e^{V{i} } }{\sum{j} e^{V{j} } }$$2.2.1 softmax理解过程
- 对于一个多分类的概率函数要求:可以一次得到多分类的概率:每个分类概率0-1,加和为1
- 可以使用 每个数除以其总数的方法得到,但是有两个问题:不能拉开差距,不方便求导
- 采用每个数字作为指数(拉开差距),e作为底数(方便求导)处理后,再除以其总数
- 得到结果:np.exp(xi) / np.exp(xi).sum()
2.2.2 关于soft的理解
- 给定一组数,[1,3,4,5,8,20,18,30, 35],最大的显然是35(严格最大)
- 但是在挑选时30的那个数据也可能存在更良好的基因(保留了更科学的数据规律)
- 所以通过概率的方式挑选最大,35的被挑到概率最大即可
softmax总结
- softmax中的soft是指将取最大这件事情通过概率表达出来(这样取出来的最大就不是严格意义上的最大,有一定概率取别的数字)
- softmax和sigmoid函数一样选择引入e(方便求导)
三、损失函数:以二分类为例
$$J(\mathrm{w}, \mathrm{b})=\frac{1}{\mathrm{~m} } \sum_{\mathrm{i}=1}^{\mathrm{m} }\left(-\mathrm{y^{(\mathrm{i})}log}\left(\hat{\mathrm{y} }^{(\mathrm{i})}\right)-\left(1-\mathrm{y}^{(\mathrm{i})}\right) \log \left(1-\hat{\mathrm{y} }^{(\mathrm{i})}\right)\right)$$ 以上是逻辑回归的损失函数,我们从两个角度理解一下(推导)3.1 交叉熵(基于KL散度)
- 数学上KL散度衡量了两个分布之间的距离,尤其是离散值的情况,以下是KL散度公式
$$D{K L}(p | q)=\sum{i=1}^{n} p\left(x{i}\right) \log \left(\frac{p\left(x{i}\right)}{q\left(x_{i}\right)}\right)$$
注:KL散度又称相对熵,n为事件所有可能性,散度值越小,分布p和q越接近
分母拆开得到 $$D{K L}(p | q)=\sum{i=1}^{n} p\left(x{i}\right) \log \left(p\left(x{i}\right)\right)-\sum{i=1}^{n} p\left(x{i}\right) \log \left(q\left(x_{i}\right)\right)$$
其中,第一部分$\sum{i=1}^{n} p\left(x{i}\right) \log \left(p\left(x{i}\right)\right)$就是熵,第二部分$-\sum{i=1}^{n} p\left(x{i}\right) \log \left(q\left(x{i}\right)\right)$就是交叉熵
- 将分布p看做数据集真实的分布,q看做是预测的分布。则第一部分不变,第二部分交叉熵越小越好,之后就演变成分类问题经典的损失函数
- 在二分类下代入两种分类的概率后,进行放缩(除以样本数)即得到损失函数。
交叉熵总结
- KL散度可以理解成 真实分布的熵 + 交叉熵,KL散度越小越接近,所以要最小化交叉熵
3.2 极大似然估计
- 针对一个特定的数据,概率预测如下: $$y=1: \quad p(y \mid x)=\hat{y}$$ $$y=0: \operatorname{p}(\mathrm{y} \mid \mathrm{x})=1-\hat{y}$$
- 尝试合并得到 $$p(y \mid x)=\hat{y}^{y}(1-\hat{y})^{(1-y)}$$ 解释:y=1时$\quad p(y \mid x)=\hat{y}$, y=0时,$\operatorname{p}(\mathrm{y} \mid \mathrm{x})=1-\hat{y}$
- 此时在一个独立同分布的数据中,可以连乘每个样本的概率得到似然函数 $$L(\theta)=\prod{i=1}^{m} P\left(y^{(i)} \mid x^{(i)} ; \theta\right)=\prod{i=1}^{m}\left(h{\theta}\left(x^{(i)}\right)\right)^{y^{(i)} }\left(1-h{\theta}\left(x^{(i)}\right)\right)^{1-y^{(i)} }$$
- 取对数得到对数似然 $$l(\theta)=\log L(\theta)=\sum{i=1}^{m}\left(y^{(i)} \log h{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right)$$
- 此时我们的目标就是最大化上面的表达式,如果我们乘以 $\frac{1}{m}$ 就需要最小化表达式了(损失函数)
极大似然推导总结
- 从极大似然估计的角度来看:损失函数就是负的似然函数的均值,所以最小化损失函数,等价于最大化似然函数
四、生成模型和判别模型
这两个概念一直觉得自己懂了,但又不是懂的很多,辨析在这里4.1 判别模型
- 判别模型可以直接给出$f(y|x)$ 或者 更直接给出决策结果。
- 前者比如这篇讲述的逻辑回归,后者比如K近邻。
- 判别模型对数据的假设更少,想法也更直接,所以更容易有更高的正确率,对数据的鲁棒性更好,但是就需要相对更多的数据。
- ROC曲线中要求能够得到$f(y|x)$,根据预测的概率选择不同的阈值进行描点,所以很多直接给出决策结果的算法就需要找到合理的方法进行条件概率化(如果想用ROC的话)
4.2 生成模型
- 生成模型是通过学习联合概率,然后基于联合概率得到条件概率$f(y|x)$
- 联合概率指的是 特征和标签的联合概率,也就是数据的概率(特征加标签就是完整的数据)
- 因为有了完整的数据分布,所以生成模型可以从这个分布中sample数据(生成模型名字的由来)
- 因为需要比判别模型得到更多的东西(多得到了一个联合概率)所以生成模型对数据做出了一些额外的假设(主要是为了简化计算)
- 正因为额外的假设,会导致生成模型的准确率会下降(存在不符合假设的情况)但是有了合理的假设,生成模型可以在数据量并不是很大的时候使用(可以通过假设脑补数据)
生成模型和判别模型总结
- 生成模型中的「生成」:生成模型可以学习“数据的概率”,即数据的分布,所以可以从分布中sample数据
- 速度问题:生成模型学习的是联合概率,也就是数据的概率,所以在有新数据增加时,生成模型可以更快的收敛
- 隐变量问题:生成模型对数据一般会做一些假设,这些假设一方面会导致模型准确率下降,另一方面也可以规避掉一些隐变量问题
- 生成模型和判别模型在朴素贝叶斯一篇中的高斯判别模型中会再次提到,从高斯判别模型能够推导逻辑回归的角度来看这两类模型对于数据的假设情况
五、总结
- 逻辑回归是线性回归对于对数几率的拟合