引言
在线性回归中,输出是连续的。而在逻辑回归中,输出非 A 即 B,解决的是二分类的问题。比如某套房子是否适合购买,明天是否有雨等。
逻辑回归
线性回归的输出是连续的,如果要预测二分类选择问题,线性回归就不好满足了。比如预测某套房子是否适合购买,通过如下的数据如何建立模型呢?
回顾线性回归的方程:
Y 1 m = W 1 n ∗ X n m + b Y_{1m} = W_{1n} * X_{nm} + b Y1m=W1n∗Xnm+b
其中:
- n n n 表示变量维度
- m m m 表示样本个数
- X X X 表示变量矩阵
- W W W 表示权重矩阵
- b 表示偏移量
线性回归的输出 Y 是连续的,如何才能把结果改造成逻辑回归要求的非 A 即 B,非 0 即 1 呢?
首先想到的是利用阶跃函数:
u ( x ) = { 0 x<0 1 x>=0 \begin{aligned} u(x)= \begin{cases} 0& \text{x<0}\\ 1& \text{x>=0} \end{cases} \end{aligned} u(x)={ 01x<0x>=0
阶跃函数是一个分段函数,当变量小于 0 时结果为 0,当变量大于等于 0 时结果为 1。
使用阶跃函数确实可以把输出固定为 0 或 1,但运算求解就比较麻烦了,因为阶跃函数是分段函数,不是连续可导的函数。
那有没有一个既连续可导又类似阶跃函数的函数呢,还真有,就是下面这个 sigmoid 函数:
S i g m o i d ( x ) = s = 1 1 + e − x Sigmoid(x) = s = \frac 1 {1+e^{-x}} Sigmoid(x)=s=1+e−x1
可以看到,Sigmoid 函数不仅连续可导,并且随着变量的变化,在 y 轴两侧很快就趋近于 0 或 1 了。
所以我们在线性回归的基础上加上一层 Sigmoid 函数即可得到逻辑回归的方程:
Y 1 m = S i g m o i d ( W 1 n ∗ X n m + b ) Y_{1m} = Sigmoid(W_{1n} * X_{nm} + b) Y1m=Sigmoid(W1n∗Xnm+b)
逻辑回归的损失函数
和线性回归一样,我们仍然希望方程预测的值 Y ^ \hat Y Y^ 与真值 Y Y Y 差异越小越好,需要给出表示误差大小的损失函数。
逻辑回归的损失函数和线性回归中有所不同。
因为对于逻辑回归而言,线性回归损失函数的形式 1 2 ∑ i = 1 m ( y ^