导读
逻辑回归,千万不要被它的名字欺骗了,其实它通常被用来执行分类任务。逻辑回归是在线性回归的基础之上加上了Logistic分布函数,便摇身一变,由回归转成了分类。这其中的原理是什么?它在回归什么?让我们一起揭秘!
线性回归
介绍逻辑回归之前,绕不开线性回归,我们在这里就简单说一下线性回归。
给定一个数据集:
f
e
a
t
u
r
e
s
=
(
x
1
1
,
x
1
2
)
,
(
x
2
1
,
x
2
2
)
,
.
.
.
,
(
x
n
1
,
x
n
2
)
\begin{aligned} features = &{(x_{1}^{1}, x_{1}^{2}), (x_{2}^{1}, x_{2}^{2}), ... , (x_{n}^{1}, x_{n}^{2})}\\ \end{aligned}
features=(x11,x12),(x21,x22),...,(xn1,xn2)
l
a
b
e
l
=
y
1
,
y
2
,
.
.
.
,
y
n
\begin{aligned} label = &{y_1, y_2, ... , y_n} \\ \end{aligned}
label=y1,y2,...,yn
线性回归要做的就是要拟合一个函数
y
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
y = \theta_0+ \theta_1 x_1+\theta_2 x_2
y=θ0+θ1x1+θ2x2,函数
y
y
y可以较为完美的经过所有的数据点
x
x
x,而且除了
f
e
a
t
u
r
e
s
features
features里给定的数据点,同一分布的
f
e
a
t
u
r
e
s
features
features 之外的数据点也能够经过(即函数
y
y
y 是拟合了
f
e
a
t
u
r
e
s
features
features 的数据分布)。注意,这里线性回归拟合的是连续变量的分布,比如常见的应用场景:房价预测,天气预测…
以上说的是回归连续值,那能不能对线性回归改进一下,让它能够完成离散值预测(分类)的任务呢?答案是可以的,这时候Logistic就该登场了。
Logistic分布函数
咱们来看一下逻辑回归的关键Logistic分布函数是什么。
L
o
g
i
s
t
i
c
(
x
)
=
1
1
+
e
−
(
x
−
μ
)
/
γ
\begin{aligned} Logistic(x) = & \frac{1}{1+e^{-(x - μ)/γ}} \\ \end{aligned}
Logistic(x)=1+e−(x−μ)/γ1
其中μ是位置参数,γ是形状参数。从logistic的定义式可以看出logistic分布是由其位置和尺度参数定义的连续分布。Logistic 分布的形状与正态分布的形状相似,但是 Logistic 分布的尾部更长,所以我们可以使用 Logistic 分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的 Sigmoid 函数就是μ = 0,γ = 1的特殊形式。 除此之外,Logistic 的分布函数的值域是(0, 1),这正好可以用来表示概率的大小。
我们试着在上述线性回归的基础上加上logistic函数,看会发生什么化学反应。
g
(
X
)
=
1
1
+
e
−
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
)
\begin{aligned} g(X) = & \frac{1}{1+e^{-(\theta_0+ \theta_1 x_1+\theta_2 x_2)}} \\ \end{aligned}
g(X)=1+e−(θ0+θ1x1+θ2x2)1
逻辑回归概率建模
既然加上logistic函数之后可以表示概率,那么分类任务就可以进行了。拿二分类举例,函数或者模型预测出一个0-1的值,我们设置一个阈值,高于阈值判定标签为“1”,反之判定标签为“0”。即我们找到了分类概率p(y = 1)与输入特征 x 之间的对应关系 —>>> p ( y = 1 ∣ x ) p(y = 1 | x) p(y=1∣x),然后通过概率值进行类别判定。
我们说了,上边函数
g
(
X
)
g(X)
g(X) 表示给定
X
X
X 的条件下,标签预测为
y
=
1
y = 1
y=1 的概率,即
p
(
y
=
1
∣
x
)
p(y = 1 | x)
p(y=1∣x) 。这时候发挥数学功底,我们对
g
(
X
)
g(X)
g(X) 做一下变形,得到:
θ
0
+
θ
1
x
1
+
θ
2
x
2
=
l
n
g
(
X
)
1
−
g
(
X
)
\begin{aligned} \theta_0+ \theta_1 x_1+\theta_2 x_2 = ln\frac{g(X)}{1 - g(X)}\\ \end{aligned}
θ0+θ1x1+θ2x2=ln1−g(X)g(X)
从这个式子来看就比较明了了,左边是线性回归的方式,右边是什么呢?右边是一个对数形式,指数部分的分子是 p ( y = 1 ∣ x ) p(y = 1 | x) p(y=1∣x),分母为1减去分子,那表达的意义就是 p ( y = 0 ∣ x ) p(y = 0 | x) p(y=0∣x),分子与分母的比值叫做几率(odd),取对数就是对数几率。所以现在我们找到了我们想要的答案:
逻辑回归,其实回归的是给定数据和真实标签的对数几率。
我们把上边公式转换一下,将 g ( X ) g(X) g(X)视作给定 X X X 预测为 y = 1 y = 1 y=1 的条件概率,得到:
θ 0 + θ 1 x 1 + θ 2 x 2 = l n p ( y = 1 ∣ X ) 1 − p ( y = 1 ∣ X ) \begin{aligned} \theta_0+ \theta_1 x_1+\theta_2 x_2 = ln\frac{p(y = 1 | X)}{1 - p(y = 1 | X)}\\ \end{aligned} θ0+θ1x1+θ2x2=ln1−p(y=1∣X)p(y=1∣X)
虽然知道了逻辑回归的原理,但是至于为什么这么做呢?这么做有什么优点?
- 直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题(区别于生成式模型),这是机器学习的通用问题,总是先假设,但通常没那么理想;
- 不仅可预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用;
- 对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。
损失函数
上边我们对逻辑回归进行推导,建立了数学模型。模型确定之后,便是要估计模型中的参数,使得模型最贴合我们给定的数据集分布。通常在数学中,参数估计还是极大似然估计法,yyds。即找到一组参数,使得在这组参数下,基于我们的数据,得到的似然度最大。
前边推导的时候提到:
p ( y = 1 ∣ X ) = p ( X ) p ( y = 0 ∣ X ) = 1 − p ( X ) \begin{aligned} p(y = 1 | X) = p(X)\\ p(y = 0 | X) = 1 - p(X)\\ \end{aligned} p(y=1∣X)=p(X)p(y=0∣X)=1−p(X)
那么基于给定的数据,我们的似然函数可以写为:
L
(
θ
)
=
∏
i
=
1
n
p
(
x
i
)
y
i
∗
(
1
−
p
(
x
i
)
)
1
−
y
i
)
\begin{aligned} L(\theta) = \prod_{i = 1}^{n}p(x_i)^{y_i} *(1 - p(x_i))^{1 - y_i}) \end{aligned}
L(θ)=i=1∏np(xi)yi∗(1−p(xi))1−yi)
注意一下,这里的
p
(
x
i
)
=
1
1
+
e
−
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
)
p(x_i) = \frac{1}{1+e^{-(\theta_0+ \theta_1 x_1+\theta_2 x_2)}}
p(xi)=1+e−(θ0+θ1x1+θ2x2)1,
y
i
y_i
yi = {0, 1} .
人和计算机不一样,计算的时候还是觉得加减运算比较简单,所以我们对上边的
L
(
θ
)
L(\theta)
L(θ) 取个对数,得到:
l
n
L
(
θ
)
=
1
n
∗
∑
i
=
1
n
(
y
i
p
(
x
i
)
+
(
1
−
y
i
)
(
1
−
p
(
x
i
)
)
)
\begin{aligned} ln L(\theta) =\frac{1}{n} * \sum_{i = 1}^{n} (y_{i} p(x_i) + (1 - y_i)(1 - p(x_i))) \end{aligned}
lnL(θ)=n1∗i=1∑n(yip(xi)+(1−yi)(1−p(xi)))
按照正常人的思维,我们是希望损失函数降到最低的时候,模型的性能越好。但由于在此处我们使用的是最大似然估计法,我们要使得上述式子取最大值,所以干脆在它前边加个负号,这样就可以心安理得的把它当作损失函数了。
l
n
L
(
θ
)
=
−
1
n
∗
∑
i
=
1
n
(
y
i
p
(
x
i
)
+
(
1
−
y
i
)
(
1
−
p
(
x
i
)
)
)
\begin{aligned} ln L(\theta) =-\frac{1}{n} * \sum_{i = 1}^{n} (y_{i} p(x_i) + (1 - y_i)(1 - p(x_i))) \end{aligned}
lnL(θ)=−n1∗i=1∑n(yip(xi)+(1−yi)(1−p(xi)))
如果你害怕模型过拟合的话,可以在后边加上L1正则化和L2正则化,以前的文章有介绍过这两种方法,可参考:你的模型又过拟合了?不如试试L1、L2正则化
模型优化就使用常规的随机梯度下降(SGD)就好了,也可以尝试其他的优化方法:梯度优化方法大全
总结
这篇文章从模型推理、损失函数等方面对逻辑回归(LR)进行了深度剖析,清楚了逻辑回归的建模过程以及其背后的数学原理和物理意义。希望大家看过之后都能变得更通透一些。逻辑回归虽然是机器学习的入门级算法,但是它其中的细枝末节真的很多,需要值得深挖。所以希望大家能够评论区讨论交流,碰撞火花,共同进步。喜欢的话留个赞再走叭~ 也可以收藏慢慢看哦~