文中样本数为 m m m,特征数为 n n n, y ( i ) y^{(i)} y(i)为第 i i i组样本的标记值(真实值), X i X_{i} Xi为第 i i i组样本的特征值, x i x_{i} xi表示第 i i i个变量(特征),同理 x n ( m ) x_{n}^{(m)} xn(m)表示第 m m m个样本的第 n n n个特征。
第2.1章:逻辑回归
来源
本章视频
03_数据分析处理库-Pandas、04_数据可视化库-Matplotlib、08_逻辑回归算法、09_案例实战:Python实现逻辑回归与梯度下降策略、10_项目实战:交易数据异常检测
一、逻辑回归算法原理推导
1.概述
- 逻辑回归是一个经典的二分类算法,属于分类问题。
- 一般处理分类问题的基本套路:优先考虑简单一些的逻辑回归,先看看效果。然后根据结果,考虑用别的复杂一些的算法优化。再比较一下,差不多的话还是选择逻辑回归。
- 关于逻辑回归,可以用一句话来总结:逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
- 利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。
2.引入sigmoid函数
为什么要引入?
前面介绍过线性回归模型,那么在线性回归模型的基础上,是否可以实现一个预测因变量是离散数据类型的模型呢?一开始可能会想到阶跃函数: ϕ ( z ) = { 0 , if z < 0 0.5 , if z = 0 1 , if z > 0 \phi(z)=\left\{\begin{array}{ll}{0,} & {\text { if } z<0} \\ {0.5,} & {\text { if } z=0} \\ {1,} & {\text { if } z>0}\end{array}\right. ϕ(z)=⎩⎨⎧0,0.5,1, if z<0 if z=0 if z>0但由于其非凸、不光滑、不连续不可微的特点,使得算法很难对该函数进行优化。相对的,sigmoid函数: ϕ ( z ) = 1 1 + e − z \phi(z)=\frac{1}{1+e^{-z}} ϕ(z)=1+e−z1光滑、无限阶可导,以及完美的映射到概率空间,使其成为了一个更好的选择。
关于sigmiod函数
下图即为sigmoid函数的图形:
有以下几个特性:
- 中间范围内函数斜率最大,对应 ϕ ( z ) \phi(z) ϕ(z)的大部分数值变化。
- 自变量取值从负无穷到正无穷,值域为(0,1),也就是将输入映射到(0,1)的一个函数,实现了数值与概率的转化。特别地,当 Z=0 时, ϕ ( z ) \phi(z) ϕ(z)=0.5。
3.假设函数
- 为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分入1类,小于0.5即被归入0类。所以,Logistic回归也可以被看成是一种概率估计。
- 这里讨论的都是二元分类,由此,逻辑回归的假设函数为: h θ ( x ) = ϕ ( θ T X ) = 1 1 + e − ( θ T X ) ( 01 ) h_{\theta}(x)=\phi\left(\theta^{T} X\right)=\frac{1}{1+e^{-\left(\theta^{T} X\right)}} (01) hθ(x)=ϕ(θTX)=1+e−(θTX)1 (01) 其 中 θ T X = ∑ i = 0 n θ i x i = θ 0 x 0 + θ 1 x 1 + . . . . . . + θ n x n , x 0 = 1 其中\theta^{T} X=\sum_{i=0}^{n} \theta_{i} x_{i}=\theta_{0} x_{0}+\theta_{1} x_{1}+......+\theta_{n} x_{n} ,x_{0}=1 其中θTX=i=0∑nθixi=θ0x0+θ1x1+......+θnxn ,x0=1
决策边界(参数的几何意义)
- 实际使用中,我们会对所有输出结果进行排序,然后结合业务来决定出一个阈值。 假设我们得出阈值为0.5,那么: 当 h θ ( x ) ≥ 0.5 时 , 预 测 y = 1 ; 当 h θ ( x ) < 0.5 时 , 预 测 y = 0 当h_{\theta}(x)≥0.5时,预测y=1 ;当h_{\theta}(x)<0.5时,预测y=0 当hθ(x)≥0.5时,预测y=1 ;当hθ(x)<0.5时,预测y=0
- 根据上面的sigmoid函数,当 Z=0 时, ϕ ( z ) \phi(z) ϕ(z)=0.5,我们可以推出: θ T X ≥ 0 时 , 预 测 y = 1 ; θ T X < 0 时 , 预 测 y = 0 \theta^{T} X≥0时,预测y=1 ;\theta^{T} X<0时,预测y=0 θTX≥0时,预测y=1 ;θTX<0时,预测y=0
- 用个例子来表示这个推论的几何意义(参数决定决策边界的形状):
假设有下图这么一个模型, g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1,我们得出阈值为0.5,参数 θ 0 = − 3 , θ 1 = 1 , θ 2 = 1 \theta_0=-3,\theta_1=1,\theta_2=1 θ0=−3,θ1=1,θ2=1
则 − 3 + x 1 + x 2 ≥ 0 时 , 即 x 1 + x 2 ≥ 3 时 , 模 型 将 预 测 y = 1 。 于 是 我 们 可 以 绘 制 直 线 x 1 + x 2 = 3 , 这 条 线 就 是 我 们 模 型 的 分 界 线 , 将 预 测 为 1 的 区 域 和 预 测 为 0 的 区 域 分 隔 开 。 则-3+x_1+x_2≥0时,即x_1+x_2≥3时,模型将预测y=1。于是我们可以绘制直线x_1+x_2=3,这条线就是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。 则−3+x1+x2≥0时,即x1+x2≥3时,模型将预测y=1。于是我们可以绘制直线x1+x2=3,这条线就是我们模型的分界线,将预测为1的区域和预测为0的区域分隔开。
关于假设函数的意义
- 和线性回归模型类似,逻辑回归也有假设条件:
(1)假设数据服从伯努利分布
(2)假设模型的输出值是:样本为正例的概率
基于这两个假设,我们可以分别得出类别为1和0的后验概率估计: P ( y = 1 ∣ x , θ ) = h θ ( x ) , P ( y = 0 ∣ x , θ ) = 1 − h θ ( x ) \begin{array}{c}{P(y=1 | x, \theta)=h_{\theta}(x)} , {P(y=0 | x, \theta)=1-h_{\theta}(x)}\end{array} P(y=1∣x,θ)=hθ(x), P(y=0∣x,θ)=1−hθ(x)整合之后: P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y ( 02 ) P(y | x ; \theta)=\left(h_{\theta}(x)\right)^{y}\left(1-h_{\theta}(x)\right)^{1-y} (02) P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y (02) - 综上所述,假设函数求得就是:在给定了特征 x x x和参数 θ \theta θ后,真实值 y = 1 y=1 y=1的可能性,这个值是介于0到1的一个概率值。所以函数值越大,也就意味着 y = 1 y=1 y=1的概率越大,函数值越小,则 y = 0 y=0 y=0的概率越大。例如:如果对于给定的 X X X,通过已经确定的参数计算得出 h θ ( x ) = 0.7 h_{\theta}(x)=0.7 hθ(x)=0.7,则表示有70%的几率 y = 1 y=1 y=1,即正向类,相应地 y y y为负向类的几率为1-0.7=0.3。
逻辑回归也是广义线性模型
除了上面的表现形式,我们也可以用另外一种形式来表达二元逻辑回归模型。将上面模型简单地进行变化: h θ ( x ) = y = 1 1 + e − ( θ T X ) ⇒ ln ( y 1 − y ) = θ T X h_{\theta}(x)=y=\frac{1}{1+e^{-\left(\theta^{T} X\right)}} \Rightarrow \ln \left(\frac{y}{1-y}\right)=\theta^{T} X hθ(x)=y=1+e−(θTX)1⇒ln(1−yy)=θTX 根据广义线性模型的定义,逻辑回归模型是联系函数为 g ( y ) = ln ( y 1 − y ) g(y)=\ln \left(\frac{y}{1-y}\right) g(y)=ln(1−yy)的广义线性模型
- 公式中, y y y可以理解为样本 X X X为正例的概率,而 1 − y 1-y 1−y则可以理解为样本 X X X为负例时的概率。二者的比值 y / ( 1 − y ) y/(1-y) y/(1−y)被称为“odds”,即“几率”,反映了 X X X作为正例的相对可能性,对几率取对数就得到了线性回归模型了。上式其实是在用线性回归模型的预测结果去逼近真实标记的对数几率。所以该模型也被称作“对数几率回归”。
4.似然函数
- 假设函数有了之后,下面就是确定参数 θ \theta θ的值,这里采用“极大似然法”来进行估计:
给定数据集 { ( X i , y ( i ) ) } i = 1 m \left\{\left(X_{i}, y^{(i)}\right)\right\}_{i=1}^{m} { (Xi,y(i))}i=1m,我们自然希望对于每个样本,属于其真实标记的概率越大越好。结合假设函数的意义,即:样本标记为1时,对应的 h θ ( x ) h_{\theta}(x) hθ(x)越大越好;样本标记为0时,对应的 1 − h θ ( x ) 1-h_{\theta}(x) 1−hθ(x)越大越好。 - 综上所述,取似然函数: L ( θ ) = ∏ i = 1 m P ( y ( i ) ∣ X i ; θ ) = ∏ i = 1 m ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i ⇒ m a x ( 03 ) L(\theta)=\prod_{i=1}^{m} P\left(y^{(i)} | 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}} \Rightarrow max (03) L(θ)=i=1∏mP(y(i)∣Xi;θ)=i=1∏