二分类任务的定义:

假设存在一个数据集合 D = { ( x 1 , y 1 ) , ( x 1 , y 1 ) , … , ( x N , y N ) } D=\{(x_1,y_1),(x_1,y_1),…,(x_N,y_N)\} D={(x1​,y1​),(x1​,y1​),…,(xN​,yN​)} ,其中 x i x_i xi​ 为特征空间 X X X的一个点, x i ∈ X = R n x_i\in X=R^n xi​∈X=Rn , y i y_i yi​ 为对应样本的标签,即对样本在 X X X中的分类标签,二分类任务则对应 y i y_i yi​只能取两个值,有一些算法,如PLA: y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi​∈{−1,1},而有一些算法,如逻辑回归: y i ∈ { 0 , 1 } y_i\in\{0,1\} yi​∈{0,1}。下文的论述也将根据不同的算法适应到不同的标签取值。

现在我们定义了一个只存在两个种类的数据集,现在我们需要找到一个方法,把这两类数据在其的样本空间中给切割开来,并且这个方法可以对它还没有见过的数据有非常强的适应性,那可能就再好不过了。

我们从最简单,直观的想法来验证这个方法。把两类数据给切割开来?那最简单直接的方法来说就是找到一条直线,让 y i = − 1 y_i=-1 yi​=−1的数据在直线的一边,让 y i = 1 y_i=1 yi​=1的数据在直线的另一边。而PLA算法就是为了完成这样的目的而被提出的。(这里用到的直线的概念其实并不是相当的准确,直线可以把两类数据分开是仅针对二维空间说的,而在高维空间中应当使用超平面这个概念来切割数据。)接下来,我们先了解一下什么是PLA。


Perceptron Linear Algorithm(PLA,感知机)算法:

假设输入空间,即特征空间是 X = R n X=R^n X=Rn,输出空间是为 Y ∈ { − 1 , 1 } Y\in\{-1,1\} Y∈{−1,1} 。那么输入到PLA中的 x ∈ X x\in X x∈X,PLA算法应当能够输出 x x x对应的类别 y y y。现在定义输入空间到输出空间的函数:
f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w\cdot x+b) f(x)=sign(w⋅x+b)
其中, w w w和 b b b都感知机模型的参数, s i g n sign sign函数是符号函数,即
s i g n ( x ) = { 1 x ≥ 0 − 1 x < 0 sign(x)= \begin{cases} 1& x\geq 0\\ -1& x<0 \end{cases} sign(x)={1−1​x≥0x<0​
我们可以从 f ( x ) f(x) f(x)观察到其实PLA的表达式和我们从小学的线性方程 y = a x + b y=ax+b y=ax+b非常的相似,也确实如此,PLA就是一种线性分类模型,就如同前文所说的直觉的想法一致。PLA模型的所有选择(假设空间)就是特征空间中我们可以做出的多种直线(超平面)。

如果我们可以从PLA模型的假设空间中选择出最优的那个超平面来作为我们的最终结果,那么其所取得的效果应当是最好的.这里我们用了一个比较模糊的概念来形容效果最好的事情。什么是最优的超平面呢?应该是对于我们选择的那一条直线在数据集 D D D中对样本分类正确的数量最多。换句话说,就是对于数据集 D D D中的每一个元素分错的点数是最少。但是对于分错的点的总数这样的概念在算法的优化过程中因为其是一个离散的概念,这使得算法不易于优化。所以PLA算法将这一概念转化为了所有分错的点到当前选择的超平面的距离的总和。我们可以想象一下,当这个距离等于0的时候,是不是也意味着当前的所选择的超平面将所有的样本都分对了呢?

首先我们来算算,一个样本点到超平面的距离等于什么呢?

假设存在一个样本点 x x x和一个超平面 w T x + b w^Tx+b wTx+b。首先,我们对 x x x 对超平面 w T x + b w^Tx+b wTx+b做投影,设该投影与超平面 w T x + b w^Tx+b wTx+b的交点为 P P P。那么点 x x x和 P P P就是我们要求的点到超平面的距离,我们进一步把它设为 s s s, s s s应当与超平面垂直,所以我们有:
x = P + s ∗ ( 超 平 面 的 单 位 法 向 量 ) x=P+s*(超平面的单位法向量) x=P+s∗(超平面的单位法向量)
首先我们来算一算超平面的单位法向量应当等于什么。

假设在该超平面中有两个点 x 1 , x 2 x_1,x_2 x1​,x2​,因为两点在超平面上,则有:
KaTeX parse error: No such environment: eqnarray* at position 8: \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲*̲}̲ w^Tx_1+b=0\tag…
(1)式-(2)式:
w T ( x 1 − x 2 ) = 0 (3) w^T(x_1-x_2)=0\tag{3}\\ wT(x1​−x2​)=0(3)
高中数学知识告诉我们两个向量的乘积为0表示这两个向量互相垂直,而 x 1 − x 2 x_1-x_2 x1​−x2​ 为超平面中的一条直线,因此 w w w是超平面的法向量,我们在进一步除以它的模,把它给归一化,那么
x = P + s ∗ w ∣ ∣ w ∣ ∣ x=P+s*\frac{w}{||w||} x=P+s∗∣∣w∣∣w​
接下来的目标就是把 s s s给求出来!我们对上式同时左乘 w w w,得到:
w T x = w T P + s ∗ w T w ∣ ∣ w ∣ ∣ w T w = ∣ ∣ w ∣ ∣ 2 w^Tx=w^TP+s*\frac{w^Tw}{||w||} \\ w^Tw=||w||^2 wTx=wTP+s∗∣∣w∣∣wTw​wTw=∣∣w∣∣2
由于 P P P在超平面上,因此
w T P + b = 0 w T P = − b w^TP+b=0\\ w^TP=-b wTP+b=0wTP=−b
所以
w T x = − b + ∣ ∣ w ∣ ∣ ∗ s w^Tx=-b+||w||*s wTx=−b+∣∣w∣∣∗s
整理得:
s = − w T x + b ∣ ∣ w ∣ ∣ s=-\frac{w^Tx+b}{||w||} s=−∣∣w∣∣wTx+b​
由于 s s s一定表示的是点到超平面的距离,因此我们应该取正数,而舍去向量所携带的符号,因此 s s s最终得,
s = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ s=\frac{|w^Tx+b|}{||w||} s=∣∣w∣∣∣wTx+b∣​
现在我们求出了点到超平面的距离,不要忘记我们的最终任务,是让我们所选择的这个超平面对输入的数据集中的所有点到该超平面的距离最小,所有点到超平面的距离等于
∑ x i ∈ D s i = ∑ x i ∈ D ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ \sum_{x_i\in D}s_i= \sum_{x_i\in D}\frac{|w^Tx_i+b|}{||w||} xi​∈D∑​si​=xi​∈D∑​∣∣w∣∣∣wTxi​+b∣​
通过观察可以发现,对于每一个点的距离是都取了绝对值,这是因为超平面把特征空间分成了两部分,一部点落在超平面 w T x + b > 0 w^Tx+b>0 wTx+b>0的一边(这里我们回想一下PLA算法的公式是什么, f ( x ) = s i g n ( w T x + b ) f(x)=sign(w^Tx+b) f(x)=sign(wTx+b) ,因此 f ( x ) = 1 f(x)=1 f(x)=1),一部分落在 w T x + b < 0 w^Tx+b<0 wTx+b<0的一边( f ( x ) = − 1 f(x)=-1 f(x)=−1)。而对于误分类点 ( x i , y i ) (x_i,y_i) (xi​,yi​)来说,该点的标签被标记为 y = 1 y=1 y=1的,PLA算法的输出确是 f ( x ) = − 1 f(x)=-1 f(x)=−1,相反的被标记为 y = − 1 y=-1 y=−1的点, f ( x ) = 1 f(x)=1 f(x)=1。 可以得到:
y i ∗ ( w T x i + b ) < 0 y_i*(w^Tx_i+b)<0 yi​∗(wTxi​+b)<0
则有:
− y i ∗ ( w T x i + b ) > 0 -y_i*(w^Tx_i+b)>0 −yi​∗(wTxi​+b)>0
因此对于误分类的点 ( x i , y i ) (x_i,y_i) (xi​,yi​)到超平面的距离就等于
− y i ∣ ∣ w ∣ ∣ ( w T x i + b ) -\frac{y_i}{||w||}(w^Tx_i+b) −∣∣w∣∣yi​​(wTxi​+b)
终于!我们得到了最终目标,PLA就是期望能够把所有误分类的点到超平面的距离尽量的缩小,我们现在假设超平面的误分类点的集合为 M M M,那么误分类点到超平面的总距离为
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w T x i + b ) -\frac{1}{||w||}\sum_{x_i \in M}y_i(w^Tx_i+b) −∣∣w∣∣1​xi​∈M∑​yi​(wTxi​+b)
由于 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1​是一个必为正的常数,我们PLA算法在寻找最优超平面的过程,该数字可被略去。因此!PLA学习的损失函数为
L ( w , b ) = − ∑ x i ∈ M y i ( w T x i + b ) L(w,b)=-\sum_{x_i \in M}y_i(w^Tx_i+b) L(w,b)=−xi​∈M∑​yi​(wTxi​+b)
PLA的学习策略就是在其模型的假设空间中选择上述损失函数最小的模型参数 w , b w,b w,b,以此作为感知机的模型。


PLA的学习策略

PLA算法是通过随机梯度下降算法来进行优化的,为了不模糊重点,这里不对梯度下降的有效性进行论述,仅直接描述使用梯度下降算法对PLA优化的过程。**首先我们要强调PLA是由误分类的点来驱动的,即当PLA当前遍历的那一个点为误分类点时,它才进行梯度更新,旨在将这一个误分类的点给判断正确。**对损失函数 L ( w , b ) L(w,b) L(w,b)的各自的参数进行求导:

假设误分类点集 M M M是固定的,那么损失函数的梯度为
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_wL(w,b)=-\sum_{x_i \in M}y_ix_i\\ \nabla_bL(w,b)=-\sum_{x_i \in M}y_i ∇w​L(w,b)=−xi​∈M∑​yi​xi​∇b​L(w,b)=−xi​∈M∑​yi​
PLA算法的优化过程为:

随机选择一个误分类点 ( x i , y i ) (x_i,y_i) (xi​,yi​),对 w , b w,b w,b进行更新:
w ← w + η y i x i b ← b + η y i w\leftarrow w+\eta y_ix_i\\ b\leftarrow b+\eta y_i w←w+ηyi​xi​b←b+ηyi​
始终 η \eta η为学习率,就这样一直迭代,使得损失函数逐渐下降为0。若特征空间是线性可分的,PLA一定会得到一个超平面使得不存在判错的点;若不是线性可分的,我们需要自行设置迭代次数以使得算法可被停止。


线性回归

以上是针对一个二分类任务,按照一个最直觉的方式所设计出来的方法。我们看到了在做分类任务的过程中PLA在设计时最本质的思想,降低误分类点的个数,遇到了一个非常糟糕的情况,非连续不可导的一个底层思想。虽然我们很巧妙的将其转换成为了缩小误分类点到超平面距离,但是在算法的运行过程中,只能一个一个误分类点去找,这对于大数据量场景是非常不利的。接下来,我们首先看看,是否存在一种更高效的方法来解决这一问题呢~?

在说明这个问题之前,我们再来了解一下线性回归问题

我们首先要说清楚分类回归的概念。首先分类回归都是预测目标值的过程,但是分类预测的是离散值,而回归预测的是连续值,就预测一组数据判断其性别,男性女性这样的属性是离散的,所以是分类问题。而根据年龄和体重来预测身高,身高是一个数值,是连续的,因此是回归问题。因此,最直观的判断就是从标签来判断,离散问题的标签就是离散的如上述的 Y ∈ { − 1 , 1 } Y\in \{-1,1\} Y∈{−1,1},连续问题就是一段连续的值 Y ∈ { − ∞ , + ∞ } Y\in \{-\infty,+\infty\} Y∈{−∞,+∞}。

现在我们定义一下线性回归模型:

假设输入空间,即特征空间是 X = R n X=R^n X=Rn,输出空间是为 Y ∈ { − ∞ , + ∞ } Y\in \{-\infty,+\infty\} Y∈{−∞,+∞}。那么输入到PLA中的 x ∈ X x\in X x∈X,线性回顾模型应当能够输出 x x x的预测值 y y y。现在定义输入空间到输出空间的函数:
f ( x ) = w ⋅ x + b f(x)=w\cdot x+b f(x)=w⋅x+b
这个我们完完全全小时候看到的线性方程了。现在我们也是同时得在线性回归模型的假设空间中选择一个最优的超平面,使得超平面在输入特征空间的各个点所得到的预测值与各点的真实值 y y y的差最小。那么我们就能够选择那一个最优的超平面作为我们的最优的线性回归模型了。

有了直觉的思想,那么我们又可以像PLA一样设计一个能够表达我们思想的损失函数了。首先表示距离,我们可以写成:
∣ f ( x i ) − y i ∣ |f(x_i)-y_i| ∣f(xi​)−yi​∣
简直完美,我们只需要拿模型的预测值减去真实值,然后取其的绝对值就可以表示我们优化的目标距离了。但是!这样子的方法又会使得我们陷入与PLA相似的困境中,因为绝对值函数在0点是不可导的。因此,我们可以将其代换成为:
( f ( x i ) − y i ) 2 (f(x_i)-y_i)^2 (f(xi​)−yi​)2
用平方的方式计算二者距离并且能够消除二者之间的符号,其与距离的形式所要表达的意思相近。最重要的是!这还是一个连续,可导的凸函数,这意味着这个函数一定存在唯一的最优解。找到这一个最优解就等于找到了对应特征空间中最优的超平面。

所以,我们可以把损失函数写成同时我们也把它成为均方误差(Mean-Squared Loss, L2 Loss)
L ( w , b ) = 1 2 n ∑ i = 1 n ( ( w T x i + b ) − y i ) 2 L(w,b)=\frac{1}{2n}\sum_{i=1}^{n}((w^Tx_i+b)-y_i)^2 L(w,b)=2n1​i=1∑n​((wTxi​+b)−yi​)2
其中 1 n \frac{1}{n} n1​是损失函数的归一化的系数, 1 2 \frac{1}{2} 21​只是为了后面求导时优雅的结果加的系数,大家可以忽略它。


线性回归模型的学习策略

这里要强调一下,由于我们聚焦在优化方法的提出以及最终的logistic分类的引出,因此在这里我们没有展开介绍线性回归的最小二乘法求最优解的过程,相关内容读者可以自行去了解一下。并且,上述有关于线性回归的MSE LOSS 的引入只是通过直觉和规避基本的问题来展开的,但是它其实有非常优雅的论述过程。这里只简单的文字概括一下:

首先假设我们的特征空间在数量足够大,根据中心极限定理,样本之间相互独立同分布,则样本满足正态分布。那么我们用一个超平面拟合现有数据时,会存在一定的误差。在这个基础上,再继续假设这个误差满足均值为0,方差为平方的正态分布,根据最大似然估计,即可推导出缩小线性回归误差所需要的损失函数就是MSE LOSS。

接着是最小二乘法,我们可以简单的想象成现在数据是一维的,那么就是解直线方程的过程,找到描述直线的参数,而最小二乘法就是将其拓展到多维,找到描述多维的超平面的所有参数的过程。所以在解完最小二乘法后,直接就得到了最优解,但其其存在这诸多限制,比如限制非常多,其要求计算的特征矩阵存在逆,计算量非常大等。但也不是没有解决的方案,具体许多细节需要咱们去了解的,有兴趣的读者可以查阅一下相关的资料。

线性回归模型的梯度下降:
∇ w L ( w , b ) = 1 n ∑ i = 1 n ( ( w T x i + b ) − y i ) x i ∇ b L ( w , b ) = 1 n ∑ i = 1 n ( ( w T x i + b ) − y i ) \nabla_wL(w,b)=\frac{1}{n}\sum_{i=1}^{n}((w^Tx_i+b)-y_i)x_i\\ \nabla_bL(w,b)=\frac{1}{n}\sum_{i=1}^{n}((w^Tx_i+b)-y_i) ∇w​L(w,b)=n1​i=1∑n​((wTxi​+b)−yi​)xi​∇b​L(w,b)=n1​i=1∑n​((wTxi​+b)−yi​)
线性回归算法的优化过程为:

随机梯度下降:随机选择一个点 ( x i , y i ) (x_i,y_i) (xi​,yi​),对 w , b w,b w,b进行更新:
w ← w − η 1 n ∑ i = 1 n ( ( w T x i + b ) − y i ) x i b ← b − η 1 n ∑ i = 1 n ( ( w T x i + b ) − y i ) w\leftarrow w-\eta \frac{1}{n}\sum_{i=1}^{n}((w^Tx_i+b)-y_i)x_i\\ b\leftarrow b-\eta \frac{1}{n}\sum_{i=1}^{n}((w^Tx_i+b)-y_i) w←w−ηn1​i=1∑n​((wTxi​+b)−yi​)xi​b←b−ηn1​i=1∑n​((wTxi​+b)−yi​)
线性回归的损失函数我们也可以看出其是连续可导的,我们随机梯度下降算法可以拓展到批量梯度下降甚至梯度下降,由于优化步骤每走的一步都是准确的,稳定的梯度方向下降。因此,它较于PLA算法更容易优化,并且不限于一次更新一点,不像PLA算法仅在线性可分的数据集下有效。那么,能不能用线性回归模型来直接优化线性分类的问题呢?即,直接将线性回归里的真实值直接使用 y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi​∈{−1,1}离散的属性去优化,可行吗?答案是可以的。但是这里涉及到了机器学习可行性的相关内容,具体就不继续展开了,如果有兴趣的同学可以搜一下林轩田老师的机器学习基石课程,里面有清晰详细的证明过程。接着,用线性回归是可以用来做分类的,但是MSE LOSS比PLA算法的损失函数有更宽松的边界,即说明可能会出现较大一点的误差,但是胜在效率啊~

那么问题来了,有没有一种方法,能够其损失函数的边界没有那么宽,并且!效率有不是那么慢的分类算法呢?终于,本文的主角终于要登场了,Logistic回归。


Logistic回归

乍一看,Logistic回归明明是叫的回归却干着分类的事情??? 这不是占着茅坑不拉屎吗?nope,也正好为了给大家一个合理清晰并且符合逻辑的说明,我们要就着线性回归模型,往广阔一点的草原唠一唠。首先简单的引述一下它的爸爸,广义线性模型(GLM)

先说一下我自己一个事后诸葛亮的理解,为什么线性回归模型对于分类问题会比PLA带来了更宽松的边界。首先我们观察一下线性回归的时候,其真实值的分布情况,比如我们从全国大学中去采样所有人的身高,那么请问他应该符合什么分布?根据中心极限定理,那么他应该是符合正态分布的。我们再掉转过头来观察一下分类问题的标签是什么样的一个分布呢?首先假设 y i ∈ { 0 , 1 } y_i\in\{0,1\} yi​∈{0,1}, y = 1 y=1 y=1出现的概率 p p p为1,那么出现 y = 0 y=0 y=0的概率为多少呢? 1 − p 1-p 1−p。因此二分类任务的标签应当服从的是伯努利分布,即
p ( Y = y , ϕ ) = ϕ y ( 1 − ϕ ) 1 − y , y = 0 , 1 p(Y=y,\phi)=\phi ^y(1-\phi)^{1-y},y=0,1 p(Y=y,ϕ)=ϕy(1−ϕ)1−y,y=0,1
好了,这里先放一放,我们继续对广义线性模型进行介绍:

广义线性模型的定义:
p ( Y ∣ η ) = b ( Y ) e η T T ( Y ) − a ( η ) , η = w T x p(Y|\eta)=b(Y)e^{\eta^TT(Y)-a(\eta)},\eta=w^Tx p(Y∣η)=b(Y)eηTT(Y)−a(η),η=wTx
其中 η \eta η为自然参数,可以是一个向量, T ( y ) T(y) T(y)是充分统计量,也可以是一个向量,一般来说 T ( y ) = y T(y)=y T(y)=y。

该分布称为指数簇分布,其中正态分布、伯努利分布、二项分布、泊松分布、多项分布等均属于指数簇分布的一种。

指数分布族构建的广义线性模型以以下三个假设为基础:

1.给定特征属性 x x x和参数 θ \theta θ后,y的条件概率 P ( y ∣ x ; θ ) P(y|x;\theta) P(y∣x;θ)服从指数分布族。

2. h ( x ) = E [ y ∣ x ] h(x)=E[y|x] h(x)=E[y∣x],即给定 x x x,目标是预测 T ( y ) T(y) T(y)的期望,即计算 E ( T ( y ) ∣ x ) E(T(y)|x) E(T(y)∣x),通常问题 T ( y ) = y T(y)=y T(y)=y

3. η \eta η与 x x x之间是线性的,即 η = θ ⋅ x \eta=\theta\cdot x η=θ⋅x

我们对伯努利分布进行推导:
p ( Y = y , ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = e l n ϕ y ( 1 − ϕ ) 1 − y = e y l n ϕ + ( 1 − y ) ( 1 − ϕ ) = e y l e n ϕ 1 − ϕ + l n ( 1 − ϕ ) p(Y=y,\phi)\\ =\phi ^y(1-\phi)^{1-y}\\ =e^{ln\phi^y(1-\phi)^{1-y}}\\ =e^{yln\phi+(1-y)(1-\phi)}\\ =e^{ylen\frac{\phi}{1-\phi}+ln(1-\phi)} p(Y=y,ϕ)=ϕy(1−ϕ)1−y=elnϕy(1−ϕ)1−y=eylnϕ+(1−y)(1−ϕ)=eylen1−ϕϕ​+ln(1−ϕ)
对照广义线性模型
p ( Y ∣ η ) = b ( Y ) e η T T ( Y ) − a ( η ) , η = w T x p(Y|\eta)=b(Y)e^{\eta^TT(Y)-a(\eta)},\eta=w^Tx p(Y∣η)=b(Y)eηTT(Y)−a(η),η=wTx
有如下关系
b ( y ) = 1 T ( y ) = y η = l o g ( ϕ 1 − ϕ ) 上 式 等 于 : ϕ = 1 1 + e − η ⇒ ϕ = e η 1 + e η a ( η ) = − l o g ( 1 − ϕ ) = l o g ( 1 + e η ) b(y)=1\\ T(y)=y\\ \eta=log(\frac{\phi}{1-\phi})\\ 上式等于:\phi=\frac{1}{1+e^{-\eta}}\Rightarrow\phi=\frac{e^{\eta}}{1+e^{\eta}}\\ a(\eta)=-log(1-\phi)=log(1+e^\eta) b(y)=1T(y)=yη=log(1−ϕϕ​)上式等于:ϕ=1+e−η1​⇒ϕ=1+eηeη​a(η)=−log(1−ϕ)=log(1+eη)
因此有:
h ( x ) = E [ y ∣ x ; θ ] = ϕ = 1 1 + e − η = 1 1 + e − θ T x h(x)=E[y|x;\theta]\\ =\phi\\ =\frac{1}{1+e^{-\eta}}\\ =\frac{1}{1+e^{-\theta^Tx}} h(x)=E[y∣x;θ]=ϕ=1+e−η1​=1+e−θTx1​
我们可以看到那个与Logistic 回归常相伴的Sigmoid函数。这里再啰嗦一下,线性回归也可以通过将高斯分布代入广义线性模型中得到。大家,我们明白为什么Logistic为什么叫回归,但是做分类的事情了吗?接下来,我们来正式定义一下Logistic回归吧。

二项Logistic回归模型

其是一种分类模型,我们以条件概率分布 p ( Y ∣ X ) p(Y|X) p(Y∣X)表示,形式为参数化的Logist分布,这里随机变量 X X X取值为实数,随机分量 Y Y Y取值为1或0。
P ( Y = 1 ∣ x ) = e w T x + b 1 + e w T x + b P ( Y = 0 ∣ x ) = 1 1 + e w T x + b P(Y=1|x)=\frac{e^{w^Tx+b}}{1+e^{w^Tx+b}}\\ P(Y=0|x)=\frac{1}{1+e^{w^Tx+b}} P(Y=1∣x)=1+ewTx+bewTx+b​P(Y=0∣x)=1+ewTx+b1​
这里, x ∈ R n x\in R^n x∈Rn时输入, Y ∈ 0 , 1 Y \in{0,1} Y∈0,1是输出, w ∈ R n w \in R^n w∈Rn和 b ∈ R b \in R b∈R是参数

现在,我们希望Logistic回归模型能够正确估计输入的特征空间,这里使用极大似然估计法估计模型参数,根据我们假设的条件服从伯努利分布,因此有:
P ( Y = 1 ∣ x ) = π ( x ) P ( Y = 0 ∣ x ) = 1 − π ( x ) P(Y=1|x)=\pi(x)\\ P(Y=0|x)=1-\pi(x) P(Y=1∣x)=π(x)P(Y=0∣x)=1−π(x)
似然函数为:
∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod^{N}_{i=1}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} i=1∏N​[π(xi​)]yi​[1−π(xi​)]1−yi​
对数似然函数为:
L ( w ) = ∑ i − 1 N [ y i l o g π ( x ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] = ∑ i − 1 N [ y i l o g π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ] = ∑ i − 1 N [ y i ( w ⋅ x i ) − l o g ( 1 + e w ⋅ x i ) ] L(w)=\sum^{N}_{i-1}[y_ilog\pi(x)+(1-y_i)log(1-\pi(x_i))]\\ =\sum^{N}_{i-1}[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))]\\ =\sum^{N}_{i-1}[y_i(w \cdot x_i)-log(1+e^{w \cdot x_i})]\\ L(w)=i−1∑N​[yi​logπ(x)+(1−yi​)log(1−π(xi​))]=i−1∑N​[yi​log1−π(xi​)π(xi​)​+log(1−π(xi​))]=i−1∑N​[yi​(w⋅xi​)−log(1+ew⋅xi​)]
我们从 L ( w ) L(w) L(w)就可以观察到!第一行不就是交叉熵函数吗~?
L C r o s s E n t r o p y ( w ) = − y l o g ( y ^ ) − ( 1 − y ) l o g ( 1 − y ^ ) L_{CrossEntropy}(w)=-ylog(\hat{y})-(1-y)log(1-\hat{y}) LCrossEntropy​(w)=−ylog(y^​)−(1−y)log(1−y^​)
交叉熵函数存在负号是因为我们需要极大化对数似然函数才能够增大其判对的概率,而统一形式表达都是最小化,所以添加了一个符号使得凹函数转换为凸函数。本文到这里就暂时告一段落了。接下来的任务就是结合Sigmoid函数结合交叉熵损失函数一起优化Logistic,这个任务就交给各位读者自行验证了。

从最直觉的分类回归到Logistic相关推荐

  1. 使用聚类算法(Kmeans)进行数据降维并作为分类算法逻辑回归(logistic Regression)的数据预处理步骤实战

    使用聚类算法(Kmeans)进行数据降维并作为分类算法逻辑回归(logistic Regression)的数据预处理步骤实战 目录

  2. 广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合、优缺点

    广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合.优缺点 ...

  3. 逻辑回归二分类算法python_多分类逻辑回归 (Multinomial Logistic Regression)

    前言 分类从结果的数量上可以简单的划分为: 二分类(Binary Classification) 多分类(Multinomial Classification). 其中二分类是最常见且使用最多的分类场 ...

  4. 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...

  5. [机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等.主要学习资料来自Standford Andrew N ...

  6. 逻辑回归模型(Logistic Regression, LR)基础

    逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函数, ...

  7. 【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  8. 逻辑回归模型(Logistic Regression, LR)基础 - 文赛平

     逻辑回归模型(Logistic Regression, LR)基础 - 文赛平 时间 2013-11-25 11:56:00 博客园精华区 原文  http://www.cnblogs.com/ ...

  9. Python机器学习算法 — 逻辑回归(Logistic Regression)

    逻辑回归--简介 逻辑回归(Logistic Regression)就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型 ...

最新文章

  1. OpenCV cv :: UMat与DirectX11曲面的互操作性的实例(附完整代码)
  2. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车红外遥控实验
  3. 求1+2+3+...(信息学奥赛一本通-T1158)
  4. FPGA跨时钟域处理方法FIFO
  5. 企业级备份方案系列PART3:SCDPM 2012备份/恢复Exchange2010
  6. 魔方机器人设计中的问题
  7. java代码生成器,springboot代码生成器—增加生成添加信息,导出excel功能(持续更新)
  8. Sublime 中文命名乱码(显示为方框)
  9. UFS的Command Queue
  10. 网站根目录与服务器根目录,根目录在哪里_网站的根目录在哪?急急!!!
  11. 搜狗推送代码之搜狗百万蜘蛛实现
  12. 2019华为网络精英挑战赛参赛体验
  13. ISP错误、ISV错误
  14. AI助力黑客,下一代防火墙将力不从心
  15. 脏读、幻读、不可重复读,傻傻分不清楚
  16. dell服务器怎么加入pe系统,Dell台式机如何进入PE
  17. 【战国策】之《齐策·张仪为秦连横说齐王曰》
  18. 常见的端口号以及协议
  19. npm i运行报错-4048
  20. GetMessage() 函数用法

热门文章

  1. wifi显示请求服务器超时,wifi服务器链接超时怎么回事啊
  2. java获取芝麻信用授权_支付宝授权获取芝麻信用分数
  3. 疫情、失业,2022,我们高喊着摆烂和躺平!
  4. HDFS文件的健康检查
  5. jPlayer的一些用法[转]
  6. 《迷失岛2》游戏开发框架开发日记:场景切换和淡入淡出效果
  7. #今日论文推荐# 死蜘蛛转世成为机械臂:人们求之不得的微型气动抓手来了
  8. 浙江 二本 计算机 招聘,在浙江招收二本的外省好学校
  9. 大学四年生活总结_一个词总结你的大学生活,听听这些毕业生怎么说……
  10. 微信小程序:电影选票系统 (简易版) 可以选择场次座位并生成订单