逻辑回归
数学模型
在线性回归模型的基础上,怎么解决分类问题。线性回归模型得到的是连续值的输出,分类问题的输出是离散型。
考虑二分类问题,分为正例和反例。对一个简单的分类问题(线性可分的?),理想的情况可以用一个单位阶跃函数(相当于存在一个阈值,线性回归的输出如果大于这个阈值,那么就划分为其中一类,若小于这个阈值就分为另一类)。但对于这样一个数学问题,单位阶跃函数不是连续的(为什么要找一个连续的函数?),所以想找到一个单调、连续的函数替代阶跃函数发挥同样的功能。就找到了下边这个sigmoid函数。
y
=
1
1
+
e
−
z
y = \frac{1}{1+e^{-z}}
y=1+e−z1
定义的时候是说y>0.5划分为正例,y<0.5划分为反例,如果从概率的角度理解,y表示样本为正例的概率,1-y是样本为反例的概率。
我们知道其中这个z应该是线性回归的输出,可以写成(没有考虑向量相乘的维度,考虑简单的情况,就是俩特征,得到二维平面上划分类别的一条直线)
z
=
ω
∗
x
=
ω
1
∗
x
1
+
ω
2
∗
x
2
z = \omega*x= \omega_{1}* x_{1}+\omega_{2}* x_{2}
z=ω∗x=ω1∗x1+ω2∗x2
得到
z
=
ln
(
y
1
−
y
)
z = \ln (\frac{y}{1-y})
z=ln(1−yy)
这里z表示“对数几率”。
模型训练
要得到好的模型,首先需要定义一个能够衡量模型好坏的指标。我是从交叉熵的角度来理解,从数值分析的角度我还不会。先把这个二分类问题的交叉熵写出来,再来理解。
l
(
ω
1
,
ω
2
)
=
−
1
m
∑
i
=
1
m
(
y
i
log
(
y
i
^
)
+
(
1
−
y
i
)
log
(
1
−
y
i
^
)
)
l(\omega_1,\omega_2) = -\frac{1}{m} \sum_{i=1}^m (y_i\log(\hat{y_i})+(1-y_i)\log(1-\hat{y_i}))
l(ω1,ω2)=−m1i=1∑m(yilog(yi^)+(1−yi)log(1−yi^))
其中
y
i
y_i
yi表示第i个样本它是正例的概率,因为这是明确的,所以如果这个样本是正例,那么yi是1,如果这个样本是反例,那么
y
i
y_i
yi是0(也就是这个样本它的类别是反例的概率为0)。其中
y
i
^
\hat{y_i}
yi^表示预测第i个样本为正例的概率。
信息量、熵、交叉熵
对随机变量 X X X,事件 X = x 1 X=x_1 X=x1的信息量为 − log ( P ( X = x 1 ) ) -\log(P(X=x_1)) −log(P(X=x1))。这个的意思是如果这个事件发生的概率为1,那么它所表达的信息量为0,因为这件事一定发生,如果这个事件发生的概率很小,那么它所表达的信息量就很大(感觉就像我们说有的八卦新闻信息量太大了的时候,就是因为这个八卦发生的可能性太小了,所以当它发生的时候信息量很大)。可以脑补以下-logx在0-1上的图像。
对于这个随机变量
X
X
X,定义熵的概念,表示它的平均信息量,表达式就是期望的公式。如下
H
(
X
)
=
−
∑
i
=
1
n
P
(
x
i
)
log
(
P
(
x
i
)
)
H(X) = -\sum_{i=1}^nP(x_i)\log(P(x_i))
H(X)=−i=1∑nP(xi)log(P(xi))
就不细究相对熵的概念,直接在了解了熵的概念基础上,去理解交叉熵公式,重复一下交叉熵的公式,也就是我们衡量逻辑回归好坏的指标
−
1
m
∑
i
=
1
m
(
y
i
log
(
y
i
^
)
+
(
1
−
y
i
)
log
(
1
−
y
i
^
)
)
-\frac{1}{m} \sum_{i=1}^m (y_i\log(\hat{y_i})+(1-y_i)\log(1-\hat{y_i}))
−m1i=1∑m(yilog(yi^)+(1−yi)log(1−yi^))下边渣渣自行解读了就,如有bug请各位大佬指出,谢谢!
如果模型完美,那么上边这个交叉熵应该为0,但模型不完美,上边这个交叉熵大于0,想办法降。另外,这个 ( y i , 1 − y i ) (y_i,1-y_i) (yi,1−yi)是 x i x_i xi的概率分布,对这个二分类问题,是一个两点分布。这个交叉熵公式相当于我在已知这个概率分布的基础上,我用模型来预测的信息量来求这个平均信息量,相对熵是求这个信息增量的,但样本真实的平均信息量是已经知道的,所以只看前部分就ok了。
就写到这里了~
底下是交叉熵求偏导的过程,用在更新参数的时候