深入剖析逻辑斯蒂回归和最大熵模型、条件随机场,他们到底有啥关系?(一)
1. 逻辑斯蒂回归
LR模型是机器学习的入门第一课,不过很多同学一直学到很久都没有搞清楚过这个模型,懵懵懂懂,为什么这个模型是广义线性模型?为什么叫最大化后验概率?为什么这个模型又和最大熵模型扯上了关系?废话少说,开始。
1.1 线性回归
线性回归我们都十分清楚,比如用最小二乘法做线性回归,是为了尽可能地拟合数据,并对未知取值的数据进行预测,如下图是也。
这里我们就不讨论如何利用梯度下降等方法找到这条直线了,不是本文的重点,总之我们利用均方差损失函数MSE+梯度下降是可以找到一组参数来拟合这些点。
当然推广到多维也是一样的:
)
θ
\theta
θ就是要学习的参数。
1.2分类问题
然后我们发现,好像一些问题是分类的,那么我们可不可以用线性回归来拟合数据,然后设置一个阈值来进行实现分类任务呢?
)
如这样的一组数据,好像是很OK的,我们预测的值假设是大于0.5的,我们分类就判别为正类,否则负类。但是这个方法的鲁棒性不好,如果数据不乖呢,这个模型就会被拉得很偏,比如这样:
)
那想想,如果数据异常值很多,那这个模型岂不是跑偏到不知道哪里去了?所以我们考虑一下,如果异常值很大的话,我们有没有一种数学方式,可以缓和这种异常?简而言之就是,数据再偏,总得有个度吧,嘻嘻,刚好我们有这样一个函数:sigmoid!
)
这个函数即使x取到正负无穷到天涯海角,你的y都是在0到1的区间内的,那岂不是很美滋滋的嘛。
那么我们就要继续思考了,我们所谓的分类任务,其实是不是都是想要找到一个decision boundary决策边界?希望这个边界一边,函数输出一种值,边界另一边,函数输出另一种值?
)
高中数学只是,对于上面的样本点,带入直线x1+x2-3=0,大于零则在直线上方,小于零在直线下边,没问题吧?好的,那可不可以就以这个输出的大于或小于0的值作为预测结果,然后和0比较大小,来进行分类呢,不是不可以,但不够好玩,所以你猜我们会怎么做:我们在这个结果外面套了一个sigmoid函数,那么所有的预测结果,是不是都会归一化到0到1的区间内?然后我们以0.5为边界,将样本点就可以分开呀,如这个式子:
)
其中g(x) 就是sigmoid函数,而且这样的好处是,我们可以用输出的这个结果作为预测为正类的概率!直观去想:离决策边界更近的,我们对于它是哪类的信心不是很够,所以概率会在0.5附近,而离决策边界远的,我们会比较确信它是其中的一类,所以概率会趋近与0或1。
什么?你觉得太简单,是的,逻辑回归就是这么简单,下面我们看看非线性的边界如何处理:
)
我们发现这个分类可以用一个圆分开,那么样本点同样是带进去会得到大于或小于0的数,然后套上sigmoid函数,得到概率值,没有问题。
那么我们现在是否可以这样表述,我们输出的其实是给定样本特征x,然后求分类y的概率,即后验概率P(y|x)。
1.3 如何学习theta?
问题来了,说得轻松,你倒是告诉我们theta怎么得来呢?也就是说怎么选损失函数呢?可不可以考虑像线性回归的一样,用MSE来作为损失函数,即预测的值与真实的label做mse,不是不行,但是不好,因为发现得到不是一个凸函数,很难用梯度下降去做:
)
那我们就要重新选一个数学特性好的损失函数了,我们考虑如下情况:
如果真实类别是1,我们希望预测的概率h(xi)越大越好;
如果真实的类别是0,我们希望预测的概率越小越好,即1 - h(xi)越大越好。
然后考虑每个样本都要照顾到,那么就是极大似然估计了,把每个样本预测正确的概率相乘:
L
(
θ
)
=
∏
i
=
1
N
P
(
y
i
∣
x
i
;
θ
)
=
∏
[
(
h
(
x
i
)
)
y
i
(
1
−
h
(
x
i
)
)
1
−
y
i
]
L(θ)=∏_{i=1}^NP(y_i |x_i;θ)=∏[(h(x_i ))^{y_i } (1-h(x_i ))^{1-y_i } ]
L(θ)=i=1∏NP(yi∣xi;θ)=∏[(h(xi))yi(1−h(xi))1−yi]
我们一般把连乘变连加会比较好求导数,因此:
)
看到了吗,这个式子是否很熟悉,不就是二元的交叉熵损失吗?或者我们叫它对数损失,当然正则化是为了防止过拟合,就是对参数的平方和进行惩罚而已。(上面公式的左中括号应在sigma后面,是原大神作者寒小阳老师的笔误)
好了,这个思路是从线性回归的角度来推导的LR,我们从另外的一个角度来看看。
1.4 从对数几率来看LR
我们经常听说,LR就是广义的线性模型,奇了怪了,线性就线性,非线性就非线性,你来一个广义的线性,是什么意思,且听我慢慢道来。
对于一个样本来说,是正样本的概率为P,是负样本的概率为1-P,P/(1-P)叫正样本的几率,那么对正样本来说,我们肯定是希望预测为正的几率越大越好,而负样本希望这个几率越小越好。
补充一点东西,我们说这个是线性回归:
y
=
θ
T
x
y=θ^T x
y=θTx
而如果y前面加上对数,就是对数线性回归,相当于是以y的对数为目标,进行回归。
l
n
y
=
θ
T
x
lny=θ^T x
lny=θTx
好了,现在我们把y替换成几率,就成了对数几率的线性回归:
l
n
p
(
y
=
1
∣
x
)
p
(
y
=
0
∣
x
)
=
θ
T
x
ln \frac{p(y=1|x)}{p(y=0|x)}=θ^T x
lnp(y=0∣x)p(y=1∣x)=θTx
得到这个式子有什么用呢?发现简单代换之后,变成了:
p
(
y
=
1
│
x
)
=
e
θ
T
x
1
+
e
θ
T
x
p(y=1│x)= \frac{e^{θ^T x}}{1+e^{θ^Tx}}
p(y=1│x)=1+eθTxeθTx
p
(
y
=
0
│
x
)
=
1
1
+
e
θ
T
x
p(y=0│x)= \frac{1}{1+e^{θ^T x} }
p(y=0│x)=1+eθTx1
p
(
y
=
0
│
x
)
=
1
1
+
e
θ
T
x
p(y=0│x)= \frac{1}{1+e^{θ^T x} }
p(y=0│x)=1+eθTx1啊老哥!!,这个是什么玩意,不就是我们之前推导的 线性回归外面套上sigmoid吗,巧了吗不是,可能一些同学看我宛如智障一样。其实是这样的,不要小看了这个式子,这个式子可有了趣了。
欲知后事如何,且听下回分解!
2. 条件随机场
传送门!biu biu biu~~
条件随机场——深入剖析逻辑斯蒂回归和最大熵模型、条件随机场,他们到底有啥关系?(二)