前言

本文首要对逻辑回归中的数学原理进行介绍,将不触及或很少触及代码实现,阅读前请保证已了解根本的机器学习相关内容和数学基础。

文章概述

逻辑回归:一种名为 “回归” 的线性分类器,其实质是由线性回归改变而来的,是一种广泛运用于分类问题中的广义回归算法。

提出问题:本文将会依据以下问题来对逻辑回归进行展开讨论和介绍:

  • 为什么需求掌握逻辑回归?
  • sigmoid函数是怎样来的?
  • 穿插熵丢失函数是怎样来的?
  • 怎样运用梯度下降对逻辑回归进行求解?
  • 逻辑回归经过什么办法削减过拟合程度?
  • 逻辑回归怎样完结多分类使命?

注:

  • 若不特别阐明则向量默以为列向量
  • 加粗的符号表明为向量,如w\bold{w}

为什么需求逻辑回归

逻辑回归依据线性回归,对数据的质量要求相对严格,且原理相对需求更多的数学基础,在一些相关书本中也很少被介绍,但它依然是一个受工业商业热爱,运用广泛的模型,有着不行替代的优点,包含但不限于:

  • 逻辑回归对线性联系的拟合作用十分好:关于特征与标签之间线性联系极强的数据,例如金融领域中的信誉卡诈骗、评分卡制作,电商中的营销猜测等数据,都是逻辑回归的强项。尽管现在有了许多作用更好的更为先进的模型,但逻辑回归在金融领域,特别是银行业中的操控地位依然不行动摇;相对的,逻辑回归在非线性数据的作用许多时分比随机模型还要差。
  • 核算速度很快:关于线性数据,逻辑回归的拟合和核算都十分快,核算功率优于SVM和随机森林,在大型数据上特别能够看得出区别。
  • 分类成果为类概率数值:能够把逻辑回归返回的成果当成接连型数据来运用。例如在评分卡制作时,咱们不只需求判别客户是否会违约,还需求给出相应的”信誉分”,因而咱们能够依据模型输出的后验概率来评定信誉分。

当然,在许多东西或库中,例如决议计划树、随机森林这样的模型也可依据相关算法输出相应概率,上面介绍的各个优点在许多情况下也不是逻辑回归特有的。

逻辑回归是一个在线性数据上体现优异的分类器,首要被运用在金融领域,福布斯杂志曾在讨论逻辑回归时说过:”技术上来说,最佳模型的AUC面积低于0.8时,逻辑回归的功能显着优于树模型”。此外,逻辑回归在小数据集上体现更好,而关于大型的数据集,树模型的作用往往更好。逻辑回归在当下依然是一个重要模型,不只仅关于一些与之紧密相关的运用场景,关于之后更深化的学习它也是不行或缺的一部分。

逻辑回归根本原理

在这儿,本文会对逻辑回归的根本原理做全方位的数学解说阐明,以二元逻辑回归为例介绍逻辑回归的由来以及相关公式推导,包含其根本办法、sigmoid函数以及其丢失函数和依据梯度下降算法的求解。

从线性回归到逻辑回归

线性回归:简略对线性回归相关常识进行回忆,模型如下:

y=[w0w1⋯wn][x0x1⋮xn]=wTx(x0=1)y = \begin{bmatrix} w_0 & w_1 & \cdots & w_n \end{bmatrix}\begin{bmatrix} x_0 \\ x_1 \\ \vdots \\ x_n \end{bmatrix} = \bold{w}^T\bold{x}(x_0=1)

咱们也常运用如下办法来表明线性回归:

y=wTx+w0y = \bold{w}^T\bold{x} + w_0
  • 其间向量 w,x\bold{w,x} 中的第一个元素别离为 w1,x1w_1, x_1.

线性回归的使命,便是结构一个猜测函数来映射输入的特征矩阵 xx 和标签值 yy 的线性联系,而结构猜测函数的中心便是找出模型的各个权重系数[w1⋯wn]\begin{bmatrix}w_1 & \cdots & w_n\end{bmatrix} 和截距 w0w_0

提出问题:经过上方函数,线性回归运用输入的特征矩阵 XX 来输出一组接连型变量 ypredy_{pred},以完结各种猜测接连型变量的使命;若咱们的标签是离散型变量,例如对满意0-1分布的离散型变量进行猜测,该怎样办呢?

根本思路:线性回归将输入的特征矩阵映射为一组接连型变量,这组接连型变量的取值规模是没有限制的,若咱们想要从回归猜测转到二分类使命上,最简略且直接的思路无非便是将输出的这组接连型变量映射到一个新的0-1分布的空间,同样最粗犷的办法便是将本来的回归猜测的规模限制在 0 ~ 1 之间,这样模型回归猜测的成果只能在预先界说的规模中,也便是 0 ~ 1 之间。

联络函数(link function):咱们设一个相应的、契合咱们根本思路的联络函数 g(z)g(z),其间 zz 为原线性回归模型的输出值,令 g(z)g(z) 的值分布在区间 (0,1) 中,当 g(z)g(z) 趋近于0时,标签为0,当 g(z)g(z) 趋近于1时,标签为1,这样就得到了一个分类模型;其间在逻辑回归中,这个函数便是Sigmoid函数。

g(z)=sigmoid(z)=11+e−zg(z) = sigmoid(z) = \frac{1}{1+e^{-z}}
【机器学习】LogisticRegression-逻辑回归中的数学原理

上图触及的相关绘图代码以供参阅(可疏忽并折叠):

import numpy as np
import matplotlib.pyplot as plt
sigmoid = lambda z: 1 / (1 + np.e ** (-z))
x = np.arange(-10, 10, 0.1)
plt.figure(figsize=(8,4))
plt.scatter(0, 0.5, s=50, c='red', alpha=0.7, edgecolor='white',linewidth=1)
plt.plot(x, sigmoid(x), color = 'blue', alpha=0.7)
plt.plot([0, 0, -10], [0, 0.5, 0.5], linestyle=':', color='red', alpha=0.6)
plt.text(0.45, 0.45, '(0, 0.5)', color='red', alpha=0.7)
plt.yticks([0, 0.2, 0.4, 0.5, 0.6, 0.8, 1])
plt.xlabel('z')
plt.ylabel('g(z)')
plt.show()

Sigmoid函数:如上图所示,该函数是一个S型的函数,当自变量 zz 趋近正无量时,因变量g(z)趋近于1,而当 zz 趋近负无量时,g(z)g(z) 趋近于0;该函数能将任何实数映射到(0,1)区间,因而可用于将输出为任意值的函数转化为合适二分类的函数。因为该性质,Sigmoid函数也被当作归一化的一种办法,可将数据紧缩到区间 [0,1] 中。

  • 留意:sigmoid函数中只能无限趋近于0和1,即取值规模两头都为开区间。

将线性回归函数代入sigmoid函数后得到二元逻辑回归模型的一般办法:

g(z)=11+e−z=11+e−(wTx+w0)g(z) = \frac{1}{1+e^{-z}} = \frac{1}{1 + e^{-(\bold{w}^T\bold{x}+w_0)}}

至此,咱们现已得到了二元逻辑回归模型的一般办法。

sigmoid函数的由来

关于sigmoid函数的介绍咱们却在上方一笔带过,接下来,咱们将会重点介绍sigmoid函数是怎样推导出来的。

在此本文会先介绍线性判别函数,这是一个很原始的二分类判别器,本文将介绍它的原理和不足之处,以此引出sigmoid函数以及其相关于线性判别函数处理的问题。关于线性判别函数的原理不影响下文sigmoid函数推导的原理阅读,若不感兴趣则可越过线性判别函数部分。

线性判别函数

决议计划鸿沟:关于分类问题,不管什么模型,实质上都是其依据练习数据在对应特征空间中推导出了不同分类间的决议计划鸿沟,模型依靠确定的决议计划鸿沟对新的特征向量进行分类猜测。

关于决议计划鸿沟的确定也有着不同办法以及对应的不同模型(例如朴素贝叶斯依靠概率密度来进行决议计划),但最直观一起也是最粗犷的办法为对该决议计划鸿沟直接进行估量,在这儿咱们引进线性判别函数。

线性判别函数(Linear Discriminant Function):统计模式识别中用以对模式进行分类的一种最简略的判别函数称为线性判别函数。

【机器学习】LogisticRegression-逻辑回归中的数学原理

上图中咱们假定赤色三角为类 C1C_1,蓝色圆圈为类 C2C_2;咱们先别离得到这两类数据对应的两个线性回归模型 g1(x)g_1(x)g2(x)g_2(x)

g1(x)=[w11w12][x11x12]+w10=w1Tx+w10g2(x)=[w21w22][x21x22]+w20=w2Tx+w20g_1(x) = \begin{bmatrix} w_{11} & w_{12} \end{bmatrix}\begin{bmatrix} x_{11} \\ x_{12} \end{bmatrix} + w_{10} = \bold{w_1}^T\bold{x} + w_{10} \\ g_2(x) = \begin{bmatrix} w_{21} & w_{22} \end{bmatrix}\begin{bmatrix} x_{21} \\ x_{22} \end{bmatrix} + w_{20} = \bold{w_2}^T\bold{x} + w_{20}
  • 其间 w11w_{11} 中的下标指的是类别1中的第一个权重系数,其它参数同理

关于这两个模型,有以下界说:

  • g1(x)>g2(x)g_1(x) > g_2(x),则为类 C1C_1
  • g1(x)≤g2(x)g_1(x) \le g_2(x),则为类 C2C_2

咱们当然不能直接以为若 g1(x)>g2(x)g_1(x) > g_2(x),则为类 C1C_1,这儿不能将 g1(x)g_1(x)g2(x)g_2(x) 当成两个独立的模型来看,咱们最终要将两模型的输出值进行比较以进行决议计划,因为规定当 g1(x)>g2(x)g_1(x) > g_2(x) 时,则为类 C1C_1,因而模型会在拟合练习数据后趋于契合咱们的界说,终究确定出一条决议计划鸿沟(如上图中的蓝色线条)。

依据咱们上方的两个界说,为了寻找对应决议计划鸿沟,咱们能够进行如下简略的改换:

C1:g1(x)>g2(x)→g1(x)−g2(x)>0C2:g1(x)≤g2(x)→g1(x)−g2(x)≤0C_1:g_1(x) > g_2(x) \rightarrow g_1(x) – g_2(x) > 0 \\ C_2:g_1(x) \le g_2(x) \rightarrow g_1(x) – g_2(x) \le 0

能够看到左边式子是相同的,则有:

g(x)=g1(x)−g2(x)=(w1Tx+w10)−(w2Tx+w20)=(w1−w2)Tx+(w10−w20)\begin{align} g(x) &= g_1(x) – g_2(x) \\ &= (\bold{w_1}^T\bold{x} + w_{10}) – (\bold{w_2}^T\bold{x} + w_{20}) \\ &= (\bold{w_1} – \bold{w_2})^T\bold{x} + (w_{10} – w_{20}) \\ \end{align}

调查易得 w1−w2\bold{w_1} – \bold{w_2} 仍是一个向量,w10−w20w_{10}-w_{20} 也仍是一个常数,则有:

令{w=w1−w2w0=w10−w20,即:g(x)=wTx+w0令\begin{cases}\bold{w} = \bold{w_1}- \bold{w_2} \\ w_0 = w_{10}-w_{20} \end{cases},即:g(x) = \bold{w}^T\bold{x} + w_0

终究得到的 g(x)g(x) 便是咱们的线性判别函数的表达式。

【机器学习】LogisticRegression-逻辑回归中的数学原理

如上图所示,易得该函数契合以下界说:

label={C1,g(x)>0C2,otherwiselabel = \begin{cases} C_1, \quad g(x) > 0 \\ C_2, \quad otherwise \end{cases}

这儿是以二维数据为例,但不管关于几维数据,线性判别函数 g(x)g(x) 实质上是在其特征空间中界说了一个超平面(Hyperplane),将该特征空间分为两个半空间,以该超平面作为决议计划鸿沟来对数据进行二分类。

例如关于咱们上方的二维特征空间,图中的蓝色线条便是超平面。

关于咱们上方推导得到的函数 g(x)g(x),这便是一个很原始的线性分类器,能够做根本的二分类作业,但其自身也有着很大的局限性。

【机器学习】LogisticRegression-逻辑回归中的数学原理

上图触及的相关绘图代码以供参阅(可疏忽并折叠):

import numpy as np
import matplotlib.pyplot as plt
g_func = np.vectorize(lambda x: 1 if x > 0 else 0)
x = np.arange(-10, 10, 0.1)
plt.figure(figsize=(8,4))
plt.plot(x, g_func(x), color = 'red', alpha=0.6)
plt.xlabel('x')
plt.ylabel('g(x)')
plt.show()

模型坏处:如上图所示,咱们求得的线性判别函数 g(x)g(x) 关于二分类的决议计划战略为 “非此即彼”,这会形成很大的问题,例如当输入某个特征矩阵后,若 g(x)=0.00001g(x)=0.00001,模型的输出成果为1,但其实模型自身并没有多大把握,因为差一点点模型就会输出0;此外,假设输入某特征向量后,模型输出1,尽管咱们知道它归于类1,可是咱们却不知道它在多大程度上归于1,也便是这个模型得到这个分类成果的可信度无法经过这个模型得知。

sigmoid函数推导

:sigmoid函数在网上也有着依据不同视点的不同的推导办法,办法不只有,不必局限于本文办法。

设某概率模型,已知特征向量 x\bold{x},则模型输出为 C1C_1C2C_2 的后验概率别离为:

已知P(C1∣x)=z,则P(C2∣x)=1−z已知P(C_1|{\bold{x}}) = z,则P(C_2|{\bold{x}}) = 1-z

则有以下决议计划战略:

label={C1,z>0.5C2,Otherwiselabel=\begin{cases} C_1, \quad z > 0.5 \\ C_2, \quad Otherwise \end{cases}

不难发现,能够推出以下公式:

z>0.5→z1−z>1→logz1−z>0z > 0.5 \quad \rightarrow \quad \frac{z}{1-z} > 1 \quad \rightarrow \quad log\frac{z}{1-z} > 0

对数函数的底数设为 ee,不难看出,令 y=logz1−zy = log\frac{z}{1-z},当 y>0y>0时,laebl=C1laebl=C_1,反之 label=C2label=C_2,关于函数 y=logz1−zy=log\frac{z}{1-z},咱们求其反函数:

z=lny1−y→ez=y1−y→y=ez−ezy→y=ez1+ez=11+e−z⏟sigmoidz = ln\frac{y}{1-y} \quad \rightarrow \quad e^z = \frac{y}{1-y} \quad \rightarrow \quad y = e^z – e^zy \quad \rightarrow \quad y= \frac{e^z}{1+e^z} = \underbrace{\frac{1}{1+e^{-z}}}_{sigmoid}

至此能够看出函数 logz1−zlog\frac{z}{1-z} 的反函数便是sigmoid函数。

回忆一下反函数的界说:一般来说,设函数 y=f(x)(x∈A)y=f(x)(x∈A) 的值域是 CC,若找得到一个函数 g(y)g(y) 在每一处 g(y)g(y) 都等于对应的 xx,这样的函数 x=g(y)(y∈C)x=g(y)(y∈C) 叫做函数 y=f(x)(x∈A)y=f(x)(x∈A) 的反函数,记作 x=f−1(y)x=f^{-1}(y) 。反函数 x=f−1(y)x=f^{-1}(y) 的界说域、值域别离是函数 y=f(x)y=f(x) 的值域、界说域。

求反函数的原因:原函数中自变量为后验概率,因变量为一个规模为(−∞,∞)(-\infty, \infty)的接连型变量,这与咱们的意图恰恰相反,咱们想让线性回归模型的输出值(接连型变量)作为自变量,而用于二分类的后验概率作为因变量。

关于原函数 y=logz1−zy = log\frac{z}{1-z},其间自变量 zz 为后验概率,因变量 yy 用于判别(y∈(−∞,+∞)y\in (-\infty, +\infty));参阅反函数的界说,则其反函数,也便是sigmoid函数中的因变量 yy 相当于原函数中的后验概率zz;而自变量 zz 则相当于原函数中的 yy

  • 关于原函数,若z>0.5z > 0.5,则y>0y>0,为 C1C_1,若 z<0.5z<0.5, 则y<0y<0,为 C2C_2.
  • 关于反函数(sigmoid函数),若 z>0z>0,则y>0.5y>0.5,为 C1C_1;若 z<0z<0,则y<0.5y<0.5,为C2C_2.

线性回归输出值作为sigmoid的输入值的原因:关于原函数 y=lnz1−zy=ln\frac{z}{1-z},假定线性回归模型的输出成果作为sigmoid函数的输入,sigmoid函数的输出值为后验概率 zz,则有:

y=ln(z1−z)=ln(sigmoid(wTx)1−sigmoid(wTx))=ln(11+e−wTxe−wTx1+e−wTx)=ln(1e−wTx)=ln(ewTx)=wTx\begin{align} y=ln(\frac{z}{1-z}) = ln(\frac{sigmoid(\bold{w}^T\bold{x})}{1-sigmoid(\bold{w}^T\bold{x})}) = ln(\frac{\frac{1}{1+e^{-\bold{w}^T\bold{x}}}}{\frac{e^{-\bold{w}^T\bold{x}}}{1+e^{-\bold{w}^T\bold{x}}}}) = ln(\frac{1}{e^{-\bold{w}^T\bold{x}}}) = ln(e^{\bold{w}^T\bold{x}}) = \bold{w}^T\bold{x} \end{align}

由此可见在原函数中咱们的因变量 yy 其实便是线性回归的输出值,则sigmoid函数中的自变量 zz 其实也便是线性回归的输出值,即 wTx\bold{w}^T\bold{x}

从咱们推导的进程来看,关于sigmoid函数,输入值 zz 是一个取值规模为 (−∞,+∞)(-\infty, +\infty) 的接连变量,也便是将线性回归的输出值作为其输入值;而输出值 yy 其实便是后验概率,因为输出值为一个概率,因而咱们能够依据输出值来判别该样本多大程度上归于该类别。

  • 例:输入某特征向量后输出 0.650.65,则咱们能够说该样本归于类别1的概率为0.65,归于类别0的概率为0.35.

LOSS:穿插熵丢失函数

穿插熵丢失的直观了解

关于给定的输入 x\bold{x},模型输出为标签 C2C_2 的概率为 p(C1∣x)p(C_1|\bold{x}),输出为标签 C2C_2 的概率为 p(C2∣x)p(C_2|\bold{x}),易得两概率事情对应的信息量别离为 −logp(C1∣x)-logp(C_1|\bold{x})−logp(C2∣x)-log p(C_2|\bold{x})

关于信息量公式的推导,能够参阅:信息熵(香农熵)-CSDN博客

将输入样本对应特征向量,输出正确标签看作一个概率事情,概率越小的事情发生的信息量越大,而概率越大的事情发生的信息量越小;代入到逻辑回归模型中,则模型输出对应正确标签的概率越大,则对应信息量越小,反之则对应信息量越大,正好契合丢失函数的性质。

【机器学习】LogisticRegression-逻辑回归中的数学原理

上图触及的相关绘图代码以供参阅(可疏忽并折叠):

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('seaborn')
mpl.rcParams.update({'mathtext.fontset': 'stix'})
x_1 = np.arange(1, 2, 0.01)
x_2 = np.arange(0.01, 1, 0.01)
plt.figure(figsize=(6,4))
plt.plot(x_1, -np.log(x_1), color='blue', alpha=0.6, linestyle='--')
plt.plot(x_2, -np.log(x_2), color='blue', alpha=0.6)
plt.text(1.9, -0.220, '→', fontsize=33, color='red', alpha=1)
plt.text(-0.06, 4.4, '↑', fontsize=36, color='red', alpha=1)
plt.axvline(0, color='red', alpha=1)
plt.axhline(0, color='red', alpha=1)
plt.axvline(1, color='red', alpha=0.6, linestyle=':')
plt.xlabel('$x$')
plt.ylabel('$-log(x)$')
plt.xticks([*range(0,3)])
plt.yticks([*range(0, 5, 1)])
plt.show()

概率在0-1之内,由该函数的性质可得,当输出概率越小的时分,丢失成指数级别添加,当概率趋于1时,丢失趋于0,因而当输出概率违背实在值越大时,丢失添加地十分快,这也会在一定程度上添加模型迭代速率。

以数值0、1别离表明二分类中的两类,当实在标签为1时,模型猜测某特征向量的标签为1的概率为 pp,对应丢失便是模型猜测正确发生的信息量,有:

loss={−log(p),label=1−log(1−p),label=0loss= \begin{cases} -log(p), \quad label=1\\ -log(1-p), \quad label=0 \\ \end{cases}

转化为一个公式,则有:

loss=−(y∗log(p)+(1−y)∗log(1−p))loss= -(y*log(p) + (1-y)*log(1-p))
  • yy:当时特征向量对应的实在标签

调查得知,若实在标签为1,则对应loss为 −log(p)-log(p),若实在标签为0,则对应loss为 −log(1−p)-log(1-p);关于整个数据集,设某数据会集含有 n 个样本,即 n 个对应特征向量,因而有如下丢失函数:

LOSS=−∑i=1n(yi∗log(pi)+(1−yi)∗log(1−pi))LOSS = -\sum^n_{i=1}(y_i*log(p_i) + (1-y_i)*log(1-p_i))
  • nn:某数据集下的样本个数
  • yiy_i:数据会集第 i 个样本对应的标签(0 or 1)
  • pip_i:数据会集第 i 个样本模型猜测为标签 1 的概率

上方函数便是穿插熵丢失函数;即模型每次迭代中的每个样本核算对应 loss 后进行累加得到每次迭代的丢失。

依据极大似然估量法推导穿插熵丢失

在直观了解中,咱们经过拆分穿插熵丢失的核算公式能够看出其实能够解说为不同概率事情发生时发生的信息量,并经过调查函数图画能够了解到该丢失的一些性质,例如跟着猜测值与实在值的偏差增大,丢失呈指数添加等,可是上方对丢失函数自身推导的解说是相对含糊的,因而在接下来咱们依据极大似然估量法来对穿插熵丢失函数进行推导。

二元逻辑回归的标签服从伯努利分布(即0-1分布),因而咱们能够将一个特征向量为 xi\bold{x_i} 的样本 i,模型参数为 w\bold{w} 的猜测情况体现为如下办法:

  • 样本 i 被猜测为 1 的概率为:P1=P(yi=1∣xi,w)=yw(xi)P_1=P(\hat{y_i}=1|\bold{x_i}, \bold{w})=y_{\bold{w}}(\bold{x_i})
  • 样本 i 被猜测为 0 的概率为:P0=P(yi=0∣xi,w)=1−yw(xi)P_0=P(\hat{y_i}=0|\bold{x_i}, \bold{w})=1-y_{\bold{w}}(\bold{x_i})

将这两个概率整合,咱们能够界说如下等式:

P(yi∣xi,w)=P1yi∗P01−yiP(\hat{y_i}|\bold{x_i}, \bold{w}) = P_1^{y_i} * P_0^{1-y_i}
  • yiy_i:样本 i 的实在标签
  • yi\hat{y_i}:模型关于样本 i 的猜测标签

整合之后,咱们能够用上述式子来表明本来的两种情况:

  • 当实在标签为 0 时,P(yi∣xi,w)=P10∗P01−0=P0P(\hat{y_i}|\bold{x_i}, \bold{w}) = P_1^{0} * P_0^{1-0}=P_0
  • 当实在标签为 1 时,P(yi∣xi,w)=P11∗P01−1=P1P(\hat{y_i}|\bold{x_i}, \bold{w}) = P_1^{1} * P_0^{1-1}=P_1

关于函数 P(yi∣xi,w)P(\hat{y_i}|\bold{x_i},\bold{w}),不管实在标签为什么,咱们都期望该函数的取值最大化,这也就将最小化丢失的问题转化为了对该函数求极值的问题。

关于某练习集的 n 个样本,咱们能够得到以下似然函数,咱们能够界说如下等式来表达一切样本在模型猜测函数中输出的一切或许的 y\hat{y} 对应的概率:

P=∏i=0nP(yi∣xi,w)=∏i=1n(P1yi∗P01−yi)=∏i=1n(yw(xi)yi∗(1−yw(xi))1−yi)\begin{align} P &= \prod^n_{i=0}P(\hat{y_i}|\bold{x_i}, \bold{w}) \\ &= \prod^n_{i=1}(P_1^{y_i} * P_0^{1-y_i}) \\ &= \prod^n_{i=1}(y_{\bold{w}}(\bold{x_i})^{y_i} * (1-y_{\bold{w}}(\bold{x_i}))^{1-y_i}) \end{align}

这就得到了在某数据集下一切样本猜测都正确的概率 PP,咱们的方针是最大化这个概率 PP,但现在如上方公式所示,该公式是将每个样本的特征向量进行累乘,若将 (yw(xi)yi∗(1−yw(xi))1−yi)(y_{\bold{w}}(\bold{x_i})^{y_i} * (1-y_{\bold{w}}(\bold{x_i}))^{1-y_i}) 作为每个样本的丢失的话,则需求对每个样本的丢失进行累乘来核算某组样本下的总丢失,但实际上总丢失应该等于各样本特征向量对应丢失的累加,因而咱们在等式两头别离取对数,则有:

logP=log∏i=1n(yw(xi)yi∗(1−yw(xi))1−yi)=∑i=1nlog(yw(xi)yi∗(1−yw(xi))1−yi)=∑i=1n(log(yw(xi)yi)+log(1−yw(xi))1−yi)=∑i=1n(yi∗log(yw(xi))+(1−yi)∗log(1−yw(xi)))\begin{align} logP &= log \prod^n_{i=1}(y_{\bold{w}}(\bold{x_i})^{y_i} * (1-y_{\bold{w}}(\bold{x_i}))^{1-y_i}) \\ &= \sum^{n}_{i=1}log(y_{\bold{w}}(\bold{x_i})^{y_i} * (1-y_{\bold{w}}(\bold{x_i}))^{1-y_i}) \\ &= \sum^{n}_{i=1}(log(y_{\bold{w}}(\bold{x_i})^{y_i}) + log(1-y_{\bold{w}}(\bold{x_i}))^{1-y_i}) \\ &= \sum^{n}_{i=1}(y_i*log(y_{\bold{w}}(\bold{x_i})) + (1-y_i)*log(1-y_{\bold{w}}(\bold{x_i}))) \end{align}

因为取对数不改动原函数的单调性,因而之前咱们需求最大化 PP,取对数后则为最大化 logPlogP,但为了更好地界说”丢失”的意义,咱们期望将极大值问题转化为极小值问题,因而取 −logP-logP,得到咱们的穿插熵丢失函数:

CrossEntropyLoss=−∑i=1n(yi∗log(yw(xi))+(1−yi)∗log(1−yw(xi)))Cross\space Entropy \space Loss = -\sum^{n}_{i=1}(y_i*log(y_{\bold{w}}(\bold{x_i})) + (1-y_i)*log(1-y_{\bold{w}}(\bold{x_i})))
  • nn:模型的参数总数
  • yiy_i:样本 i 对应的实在标签(0 or 1)
  • yw(x1)y_{\bold{w}}(\bold{x_1}):模型猜测样本为标签1的概率

到此为止,就得到了穿插熵丢失函数,一起也能够看出依据极大似然估量法的推导进程仍是相对比较深入浅出的;此外,咱们一般会取均值,也便是在上面的公式基础上再乘以 1n\frac{1}{n}

梯度下降法求解逻辑回归

为了让模型最优化,得到使得丢失函数最小的参数值,关于二元逻辑回归来说,有多种办法能够用来求解参数,最常见的有梯度下降法(Gradient Descent)、坐标下降法(Coordinate Descent)、牛顿法(Newton-Raphson method)等,其间以梯度下降法最为闻名,每种办法都触及较为复杂的数学原理,但这些核算在执行的使命其实是类似的,本文首要对梯度下降的求解来进行首要阐明。

梯度下降:梯度下降法也相对很简单了解,当只有一个参数时,所谓的梯度不过便是丢失函数图画中某一点的斜率,当该点在最优解右侧时,斜率为正值,当该点在最优解左边时,斜率为负值,一起因为丢失函数为凸函数,因而当时位置离最优值越远,相应的斜率也就越大;咱们将斜率乘以一个咱们自己界说的超参数,将其称为步长,每次迭代中让参数值减去步长就能到达逐步逼近最优解的作用;关于多个参数也同理,咱们对每个参数别离求丢失函数的偏导数再将各个参数进行别离更新即可。

梯度下降求解逻辑回归进程

易得有如下改换:

log(yw(xi))=log(11+e−(wTxi+w0))=−log(1+e−(wTxi+w0))log(1−yw(xi))=log(1−11+e−(wTxi+w0))=log(e−(wTxi+w0)1+e−(wTxi+w0))=log(e−(wTxi+w0))−log(1+e−(wTxi+w0))=−(wTxi+w0)−log(1+e−(wTxi+w0))\begin{align} log(y_{\bold{w}(\bold{x_i})}) &= log(\frac{1}{1+e^{-{(\bold{w}^T\bold{x_i}+w_0)}}}) = -log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)}) \\ log(1-y_{\bold{w}}(\bold{x_i})) &= log (1-\frac{1}{1+e^{-{(\bold{w}^T\bold{x_i}+w_0)}}}) = log (\frac{e^{-(\bold{w}^T\bold{x_i}+w_0)}}{1+e^{-{(\bold{w}^T\bold{x_i}+w_0)}}}) \\ &= log(e^{-(\bold{w}^T\bold{x_i}+w_0)}) -log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)}) \\ &= -(\bold{w}^T\bold{x_i}+w_0) – log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)}) \end{align}
  • yw(xi)y_{\bold{w}}(\bold{x_i}):模型关于第 i 个样本输出为对应实在标签的概率
  • yiy_i:第 i 个样本对应的实在标签(0 or 1)
  • w\bold{w}:参数向量
  • xi\bold{x_i}:第 i 个样本对应的特征向量

对丢失函数进行改换以便于求导,有:

J(w)=−1n∑i=1n(yi∗log(yw(xi))+(1−yi)∗log(1−yw(xi)))=−1n∑i=1n(−yi∗log(1+e−(wTxi+w0))+(1−yi)∗(−(wTxi+w0)−log(1+e−(wTxi+w0))))=−1n∑i=1n(−yi∗log(1+e−(wTxi+w0)−(1−yi)∗log(1+e−(wTxi+w0))−(1−yi)(wTxi+w0))=1n∑i=1n((1−yi)(wTxi+w0)−log(1+e−(wTxi+w0)))\begin{align} J(\bold{w}) &= -\frac{1}{n}\sum^{n}_{i=1}(y_i*log(y_{\bold{w}}(\bold{x_i})) + (1-y_i)*log(1-y_{\bold{w}}(\bold{x_i}))) \\ &= -\frac{1}{n}\sum^n_{i=1}(-y_i * log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)}) + (1-y_i) * (-(\bold{w}^T\bold{x_i}+w_0) – log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)}))) \\ &= -\frac{1}{n}\sum^n_{i=1}(-y_i*log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)} – (1-y_i)*log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)}) – (1-y_i)(\bold{w}^T\bold{x_i}+w_0)) \\ &= \frac{1}{n}\sum^n_{i=1}((1-y_i)(\bold{w}^T\bold{x_i}+w_0) – log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)})) \end{align}
  • yw(xi)y_{\bold{w}}(\bold{x_i}):模型关于第 i 个样本输出为对应实在标签的概率
  • yiy_i:第 i 个样本对应的实在标签(0 or 1)
  • w\bold{w}:参数向量
  • xi\bold{x_i}:第 i 个样本对应的特征向量

以某数据会集第 j 个参数为例,模型在某次迭代时核算得到丢失函数后,该函数对第 j 个参数求偏导,有:

∂J(w)∂wj=∂∂wj1n∑i=1n((1−yi)(wTxi+w0)−log(1+e−(wTxi+w0)))=1n∑i=1n((1−yi)∂∂wj(wTxi+w0)−∂∂wjlog(1+e−(wTxi+w0)))=1n∑i=1n(xij(1−yi)−xij∗e−(wTxi+w0)1+e−(wTxi+w0))=1n∑i=1n(xij−xij∗e−(wTxi+w0)1+e−(wTxi+w0)−yi∗xij)=1n∑i=1nxij(11+e−(wTxi+w0)−yi)=1n∑i=1nxij(yw(xi)−yi)\begin{align} \frac{\partial J(\bold{w})}{\partial w_j} &= \frac{\partial}{\partial w_j} \frac{1}{n}\sum^n_{i=1}((1-y_i)(\bold{w}^T\bold{x_i}+w_0) – log(1+e^{-(\bold{w}^T\bold{x_i}+w_0)})) \\ &= \frac{1}{n}\sum^n_{i=1}((1-y_i)\frac{\partial}{\partial w_j}(\bold{w}^T\bold{x_i}+w_0) – \frac{\partial}{\partial w_j}log(1+e^{-(\bold{w}^T\bold{x_{i}}+w_0)})) \\ &= \frac{1}{n}\sum^n_{i=1}(x_{ij}(1-y_i) – \frac{x_{ij}*e^{-(\bold{w}^T\bold{x_{i}}+w_0)}}{1+e^{-(\bold{w}^T\bold{x_{i}}+w_0)}}) \\ &= \frac{1}{n}\sum^n_{i=1}(x_{ij} – \frac{x_{ij} * e^{-(\bold{w}^T\bold{x_{i}}+w_0)}}{1+e^{-(\bold{w}^T\bold{x_{i}}+w_0)}} – y_i*x_{ij}) \\ &= \frac{1}{n}\sum^n_{i=1}x_{ij}(\frac{1}{1+e^{-(\bold{w}^T\bold{x_{i}}+w_0)}} – y_i) \\ &= \frac{1}{n}\sum^n_{i=1}x_{ij}(y_{\bold{w}}(\bold{x_i}) – y_i) \end{align}
  • yw(xi)y_{\bold{w}}(\bold{x_i}):模型关于第 i 个样本输出为对应实在标签的概率
  • yiy_i:第 i 个样本对应的实在标签(0 or 1)
  • w\bold{w}:参数向量
  • xi\bold{x_i}:第 i 个样本对应的特征向量
  • xijx_{ij}:第 i 个样本中第 j 个特征的值

即某次迭代中,关于第 j 个参数求偏导,得到的对应梯度为:

∂J(w)∂wj=1n∑i=1nxij(yw(xi)−yi)\frac{\partial J(\bold{w})}{\partial w_j} = \frac{1}{n}\sum^n_{i=1}x_{ij}(y_{\bold{w}}(\bold{x_i}) – y_i)
  • yw(xi)y_{\bold{w}}(\bold{x_i}):模型关于第 i 个样本输出为对应实在标签的概率
  • yiy_i:第 i 个样本对应的实在标签(0 or 1)
  • w\bold{w}:参数向量
  • xi\bold{x_i}:第 i 个样本对应的特征向量
  • xijx_{ij}:第 i 个样本中第 j 个特征的值

关于数据会集某次迭代中一切参数组成的参数向量对应的梯度向量,运用如下办法表明:

▽J(w)T=[∂J(w)∂w1∂J(w)∂w2⋯∂J(w)∂wm]\triangledown J(\bold{w})^T = \begin{bmatrix} \frac{\partial J(\bold{w})}{\partial w_1} & \frac{\partial J(\bold{w})}{\partial w_2} & \cdots & \frac{\partial J(\bold{w})}{\partial w_m} \end{bmatrix}

在核算得到对应梯度后,关于参数向量的第 i+1 次迭代,有:

wi+1=wi−∗▽J(wi)\begin{align} \bold{w_{i+1}} &= \bold{w_i} – \alpha * \triangledown J(\bold{w_i}) \end{align}
  • \alpha:超参数,用来操控每次迭代中步长的巨细
  • wi\bold{w_i}:迭代 i 次后的参数向量
  • ▽J(wi)\triangledown J(\bold{w_i}):迭代 i 次后的梯度向量

当超参数 \alpha 设置过大时,步长过大,简单越过最优解,且因为凸函数中离最优解越远,梯度越大的性质,或许会发生丢失跟着迭代次数的添加逐步增大的作用;同理,当步长过小时,则或许需求更长的时刻才干到达最优解。

分批核算梯度:关于用于核算梯度的丢失函数的核算,咱们也一般不会在每次迭代中让数据会集的一切样本都参加核算,折回糟蹋许多的算力资源和时刻,咱们更常将数据会集的样本分为几组(bath),每次迭代中仅选用部分数据(某个bath)进行核算和迭代。

梯度下降的了解仍是相对简单的,无非便是求出每个参数对应的梯度,然后对参数进行更新,首要便是这两步,关于判别是否收敛,咱们能够设置最大迭代次数,也能够对梯度或步长设置阈值等操作。

逻辑回归根本原理总结

逻辑回归模型中心内容在于其根本办法、丢失函数以及模型求解,已知这三个进程的原理后,其拟合进程和其它模型思路根本相同;关于二分类使命,依据梯度下降来求解逻辑回归的一般思路:

  1. 准备数据集,随机初始化参数
  2. 关于每次迭代,依据穿插熵丢失函数核算悉数(或部分)样本的丢失和每个参数对应的梯度
  3. 更新参数
  4. 若模型收敛或到达最大迭代数(或其它判定办法),则模型练习完毕

逻辑回归原理拓宽

除了逻辑回归模型的根本原理外,包含但也不限于逻辑回归等许多模型也常引进正则化项来调整模型拟合程度;此外,逻辑回归也不只只能运用于二分类使命,咱们也能够经过其他常见办法将其拓宽到多分类使命,这儿首要介绍常见的 OvR 和 MvM 两种常见办法。

正则化

正则化与正则项:正则化是用来避免模型过拟合的进程,常用的有L1正则化和L2正则化两种选项,别离经过在丢失函数后加上参数向量 w\bold{w} 的L1范式和L2范式的倍数来实现。这个添加的范式,被称为”正则项”,也被称为”惩罚项”。跟着丢失函数改动,依据丢失函数的最优化来求解的参数取值必然改动,咱们以此来调理模型拟合的程度。其间L1范式体现为参数向量中的每个参数的绝对值之和,L2范数体现为参数向量中的每个参数的平方和的开方值,如下所示:

L1=∑i=1n∣wi∣L2=∑i=1n(wi2)\begin{align} L1 &= \sum^{n}_{i=1}|w_i| \\ L2 &= \sqrt{\sum^n_{i=1}(w_i^2)} \end{align}
  • nn:某数据集下的样本数
  • wiw_i 第 i 个参数(权重系数),留意这儿 i 是从1开端取值的,不包含截距 w0w_0

设本来的丢失函数为 J(w)J(\bold{w}),则加上正则项之后的丢失函数则为:

J(w)L1=C∗J(w)+∑i=1n∣wi∣J(w)L2=C∗J(w)+∑i=1n(wi2)\begin{align} J(\bold{w})_{L1} &= C * J(\bold{w}) + \sum^{n}_{i=1}|w_i| \\ J(\bold{w})_{L2} &= C * J(\bold{w}) + \sqrt{\sum^n_{i=1}(w_i^2)} \end{align}
  • CC:超参数,用来调整正则化程度(模型拟合程度)
  • J(w)J(\bold{w}):穿插熵丢失函数
  • nn:模型的参数总数
  • wiw_i 第 i 个参数(权重系数),留意这儿 i 是从1开端取值的,不包含截距 w0w_0

超参数C操控本来穿插熵丢失的巨细,实质上是调整正则项的相对巨细,直接从公式上进行了解,不难看出所谓的正则项不过便是将各参数(权重系数)以某种办法进行累加得到的一个范式,该范式跟着各权重参数整体取值的增大而增大。

【机器学习】LogisticRegression-逻辑回归中的数学原理

上图触及的相关绘图代码以供参阅(可疏忽并折叠):

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.style.use('seaborn')
mpl.rcParams.update({
    'font.family': 'Microsoft YaHei',
    'mathtext.fontset': 'stix',
})
# 过拟合图画为手动制作,仅为左边图画制作代码
x = np.arange(0.05, 5, 0.05)
y = np.log(x)
plt.figure(figsize=(6,4))
plt.plot(x, y, color='blue', alpha=0.6)
plt.scatter(x + rng.normal(0, 0.5, len(x)), y, s=30, c='red',alpha=0.6, edgecolor='white', linewidth=1)
plt.show()

关于不包含正则项的丢失函数,只需求将穿插熵丢失最优化即可,但这样很简单形成模型过拟合,咱们想要下降模型拟合程度,因而加入正则项,模型在拟合时不只要考虑本来的穿插熵丢失,还要考虑各权重系数的巨细所形成的丢失,需求在这两个丢失之间进行权衡,以到达整体丢失最小。

从权重系数方面来看:在一次函数中便是斜率,其实在具有多个权重系数、多个自变量的线性回归中也是相同的,当权重系数增大时,拟合函数的 “斜率” 也会相应增大,模型过拟合时拟合的作用实质上也便是因为这种 “斜率” 过大,咱们经过限制各权重参数的巨细来避免 “斜率” 过大,从而到达避免过拟合的作用。

【机器学习】LogisticRegression-逻辑回归中的数学原理

从丢失函数方面来看:经过引进正则项,实质上是改动了模型优化方针的最优点,使得真实的优化方针(权衡欠拟合和过拟合后的最佳作用)作为模型优化方针。

当然不是带正则化的丢失函数都能够将方针作用设置为咱们的优化方针,这取决于超参数的挑选,当正则项对丢失奉献占比过大时,或许会越过真实的方针点,形成模型欠拟合,同理,当过小时,则或许会形成模型依然过拟合。

在网络上也常能看到依据L1范式和L2范式的其它办法的正则项,例如:

J(w)L1=J(w)+n∑i=1n∣wi∣J(w)L2=J(w)+2n∑i=1nwi2\begin{align} J(\bold{w})_{L1} &= J(\bold{w}) + \frac{\lambda}{n}\sum^{n}_{i=1}|w_i| \\ J(\bold{w})_{L2} &= J(\bold{w}) + \frac{\lambda}{2n}\sum^n_{i=1}w_i^2 \end{align}
  • \lambda:超参数,用来调整正则化强度
  • J(w)J(\bold{w}):穿插熵丢失函数
  • nn:模型的参数总数
  • wiw_i 第 i 个参数(权重系数),留意这儿 i 是从1开端取值的,不包含截距 w0w_0

这儿经过超参数 \lambda 来直接调整正则项对丢失的奉献占比,此外这儿L2范数的正则化项分母为 2n2n 是为了便于求导(有平方项,求导后正好把常数2约去,便于核算)。

不管正则项的办法怎样改变,引进的意图都是为了避免模型过拟合,将方针作用作为模型自身优化的方向,以到达更低的泛化误差。

L1正则化和L2正则化的挑选:L1正则化和L2正则化尽管都能够操控过拟合,但作用并不相同;当正则化强度逐步增大(即 CC 逐步变小或 \lambda 逐步增大), 参数(各权重系数)的取值会逐步变小,但L1正则化会更趋于将参数紧缩为0,L2正则化则趋于让参数尽量小,但不会取到0。

相对的,L2正则化在加强的进程中,会尽量让每个特征对模型都有一些小的奉献,但带着信息少,对模型奉献不大的特征的参数会十分接近于0。通常来说,假如咱们的首要意图仅仅为了避免过拟合,挑选L2正则化就足够了。但 是假如挑选L2正则化后仍是过拟合,模型在未知数据集上的作用体现很差,就能够考虑L1正则化。

特征挑选:因为L1正则化和L2正则化在作用上的不同,在L1正则化在逐步加强的进程中,带着信息量小的、对模型奉献不大的特征的参数,会比带着大量信息的、对模型有巨大奉献的特征的参数更快地变成0,因而L1正则化实质便是一个特征挑选的进程,一定程度上影响了参数的”稀疏性”。L1正则化越强,参数向量中就含有越多的0,参数就越稀疏,选出来的特征就越少,以此来避免过拟合。因而,若特征量很大,数据维度很高,咱们会倾向于运用L1正则化,反之则一般选用L2正则化;因为L1正则化的这个性质,在对逻辑回归依据嵌入法进行特征挑选时,一般运用引进L1正则项的逻辑回归。

多分类的逻辑回归

OvR:One vs Rest

【机器学习】LogisticRegression-逻辑回归中的数学原理

根本思想:One(一个)-Vs-Rest(其余部分)的思想是把一个多分类的问题变成一个二分类问题;改变的思路就如同办法称号描绘的那样,挑选其间一个类别为正类(Positive),使其他一切类别为负类(Negative);例如咱们能够将三角形所代表的类别视为正类,其他类别悉数视为负类。

因为咱们将其间一个类别作为正类,其它一切类别作为负类,因而要想处理多分类问题的话,假定有 nn 个类别,那就需求有 nn 个以不同类别作为正类的分类器,练习完毕后对模型输入某样本对应特征向量,这 nn 个分类器别离输出各自对应正类的概率,最终挑选概率最大的作为咱们的分类成果输出。

依据OvR这种思想很简单能够把咱们的逻辑回归从二分类拓宽到多分类问题上,但缺陷也较为显着,关于每个分类器,咱们挑选数据会集其间一个类别作为正类,其它一切的类别都作为负类,当类别较多时,这很简单形成样本不均衡的问题,即很简单呈现负类样本远高于正样本数量的问题,咱们当然也能够采取一些例如上采样的办法来处理这个问题,但作用必定没有相同分布下的均衡数据集的作用要好,一次你运用这种办法时能够事先检查一下样本不均衡是否严峻,然后再决定是否挑选该办法。

MvM:Multinomial

回忆上边sigmoid函数推导进程中,有:

y=ln(z1−z)=ln(p(yi=1)p(yi=0))=wTx\begin{align} y=ln(\frac{z}{1-z}) = ln(\frac{p(y_i=1)}{p(y_i=0)}) = \bold{w}^T\bold{x} \end{align}

关于一切 K 个或许的分类成果,咱们运行 K−1 个独立二元逻辑回归模型,在运行进程中把其间一个类别看成是主类别,然后将其它K−1个类别和咱们所挑选的主类别别离进行回归;经过这样的办法,例如这儿挑选成果 K 作为主类别,关于第 i 个样本对应的特征向量,咱们能够得到如下公式:

{logp(yi=1)p(yi=K)=w1Txilogp(yi=2)p(yi=K)=w2Txi⋮logp(yi=K−1)p(yi=K)=wK−1Txi⟶{p(yi=1)=p(yi=K)ew1Txip(yi=2)=p(yi=K)ew2Txi⋮p(yi=K−1)=p(yi=K)ewK−1Txi\begin{cases} log\frac{p(y_i=1)}{p(y_i=K)} = \bold{w_1}^T\bold{x_i} \\ log\frac{p(y_i=2)}{p(y_i=K)} = \bold{w_2}^T\bold{x_i} \\ \quad \quad \vdots \\ log\frac{p(y_i=K-1)}{p(y_i=K)} = \bold{w_{K-1}}^T\bold{x_i} \\ \end{cases} \longrightarrow \begin{cases} p(y_i=1) = p(y_i=K)e^{\bold{w_1}^T\bold{x_i}} \\ p(y_i=2) = p(y_i=K)e^{\bold{w_2}^T\bold{x_i}} \\ \quad \quad \vdots \\ p(y_i=K-1) = p(y_i=K)e^{\bold{w_{K-1}}^T\bold{x_i}} \\ \end{cases}

因为一切或许的成果对应的概率相加为1,则有:

∑i=1Kp(yi=i)=p(yi=K)+∑i=1K−1p(yi=i)=p(yi=K)+∑i=1K−1p(yi=K)ewiTxi\begin{align} \sum^{K}_{i=1} p(y_i=i) &= p(y_i=K) + \sum^{K-1}_{i=1}p(y_i=i) \\ &= p(y_i=K) + \sum^{K-1}_{i=1}p(y_i=K)e^{\bold{w_i}^T\bold{x_i}} \\ \end{align}

概率悉数相加为1,咱们能够运用该等式解出 p(yi=k)p(y_i=k),即:

p(yi=K)+∑i=1K−1p(yi=K)ewiTxi=1p(yi=K)+p(yi=K)∑i=1K−1ewiTxi=1(1+∑i=1K−1ewiTxi)p(yi=L)=1p(yi=K)=(1+∑i=1K−1ewiTxi)−1\begin{align} p(y_i=K) + \sum^{K-1}_{i=1}p(y_i=K)e^{\bold{w_i}^T\bold{x_i}} &= 1 \\ p(y_i=K) + p(y_i=K)\sum^{K-1}_{i=1}e^{\bold{w_i}^T\bold{x_i}} &= 1 \\ (1 + \sum^{K-1}_{i=1}e^{\bold{w_i}^T\bold{x_i}})p(y_i=L) &= 1 \\ p(y_i = K) &= (1 + \sum^{K-1}_{i=1}e^{\bold{w_i}^T\bold{x_i}})^{-1} \end{align}

咱们再把该式子代入到本来的 K-1 个式子中得到:

p(yi=K)=(1+∑i=1K−1ewiTxi)−1⟶{p(yi=1)=ew1Txi1+∑i=1K−1ewiTxip(yi=2)=ew2Txi1+∑i=1K−1ewiTxi⋮p(yi=K−1)=ewK−1Txi1+∑i=K−1K−1ewiTxip(y_i = K) = (1 + \sum^{K-1}_{i=1}e^{\bold{w_i}^T\bold{x_i}})^{-1} \longrightarrow \begin{cases} p(y_i=1) = \frac{e^{\bold{w_1}^T\bold{x_i}}}{1 + \sum^{K-1}_{i=1}e^{\bold{w_i}^T\bold{x_i}}} \\ p(y_i=2) = \frac{e^{\bold{w_2}^T\bold{x_i}}}{1 + \sum^{K-1}_{i=1}e^{\bold{w_i}^T\bold{x_i}}} \\ \quad \quad \vdots \\ p(y_i=K-1) = \frac{e^{\bold{w_{K-1}}^T\bold{x_i}}}{1 + \sum^{K-1}_{i=K-1}e^{\bold{w_i}^T\bold{x_i}}} \\ \end{cases}

至此,咱们就有了依据K-1个独立的二元逻辑回归模型下关于每一个类别的猜测概率,接下来的过程就和sigmoid函数推导部分中介绍的相同了,也便是对每一个类别所对应的式子别离求其反函数后能够得到每一类别与各个 wiTx\bold{w_i}^T\bold{x} 的联系,也便是能够依据这K-1个独立的模型推出每一类别的概率,之后关于每个独立模型别离核算丢失和进行梯度下降即可。

总结

关于本文在最开端提出的问题,依据本文内容在此做扼要总结:

  • 为什么需求掌握逻辑回归?
    • 逻辑回归如今在金融领域运用的依然许多,此外,它也是后续学习中必不行少的基础。
  • sigmoid函数是怎样来的?
    • 依据概率常识进行推导,此外,sigmoid在很大程度上处理了线性判别函数所存在的问题。
  • 穿插熵丢失函数是怎样来的?
    • 依据极大似然估量法进行推导,当然也不只限于这一个推导或解说办法。
  • 怎样运用梯度下降对逻辑回归进行求解?
    • 关于每次迭代,依据丢失函数求每个参数的偏导数,经过屡次迭代来更新参数以寻找全局最优解。
  • 逻辑回归经过什么办法削减过拟合程度?
    • 正则化,能够引进l1、l2正则化来调整模型拟合程度,此外,因为l1正则化自身的性质,其也能够用来进行特征挑选。
  • 逻辑回归怎样完结多分类使命?
    • 常用的包含但不限于OvR和MvM这两种办法,这两种办法都经过建立多个模型将本来的二元逻辑回归拓宽到了多分类使命上,但一般情况下MvM有着更严谨的理论推导和模型作用。

Reference

  • 信息熵(香农熵)-CSDN博客
  • 穿插熵丢失函数的求导(Logistic回归) – 知乎 (zhihu.com)
  • [机器学习-原理与实践]逻辑回归(LogisticRegression)多分类(OvR, OvO, MvM)_logisticregression函数 ovr-CSDN博客
  • sklearn中的logisticregression怎样处理多分类?作为西瓜书的弥补吧 – 知乎 (zhihu.com)
  • 菜菜的机器学习