对数几率回归
从 \(y = \theta ^T x + b\) 出发
一般线性模型的假设:\(y = \theta ^T x + b\),广义线性模型的假设:\(g(y) = \theta ^T x + b\),其中 \(g( \cdot )\) 是单调可微函数。运用于分类问题,我们为线性回归的输出值划定一个阈值,当线性回归输出值大于这个阈值的时候为正类,否则反类。自然而然地,我们想到了取 0 作为阈值。
是否可以取其他值作为阈值?
可以取任何值作为阈值,比如 100。如果取 100 作为阈值,那么在训练阶段,对数几率模型内嵌的线性回归就要迫使正例样本的输出值大于 100,反例样本小于 100。
角度一:利用一个函数,能良好地将线性回归值映射到 \((0, 1)\) 区间上,作为 \(P(y=1|x)\)
最自然的函数自当是跃阶函数:
但是这个函数对求导很不友好,所以采用了另一种函数作为替代:
角度二:对数几率回归的输出值 \(\hat{y}\) 代表样本 \(x\) 为正例的概率
\(\frac{y}{1 - y}\) 的含义就是样本为正例的概率相对于为反例的可能性。在这个相对可能性外层套一个对数运算即可得到对数几率回归模型:
这个模型的含义就是利用线性回归去拟合相对可能性的对数。至于为何能用一个线性模型去拟合非线性分布的数据,尚待考虑。
角度三:输入层加激活层直接映射到输出层的神经网络
从神经网络的角度来看,没有隐含层的神经网络就可以看做是一种对数几率回归模型。
上述两种角度都可以最终得到对数几率回归的模型假设,试述之。
模型假设
对数几率回归的模型假设是在线性回归的基础上加了一个激活层:
如此我们就可以将线性回归值映射到 \((0, 1)\) 上。关于这个模型输出值,我们可以这么理解 \(P(y = 1| x ) = h (x)\)。为什么不是 \(P(y = 0 | x)\)?其实可以如此,这取决于我们在训练过程中损失函数的设计。若当 $ y = 0, \ h (x) \rightarrow 1$ 时损失函数增大,则我们是认为 \(P(y= 1| x) = h (x)\)的;反之若减小,则我们认为 \(P(y = 0| x ) = h (x)\)。
损失函数
对于 cost function 的设计,也有两种思考角度
角度一:交叉熵
我们希望当 \(h (x) \rightarrow 1, \ y = 0\) 时损失函数尽可能大,反之尽可能小。当 \(y = 1\) 时为 $ -log(h (x))$;当 \(y = 0\) 时为 $ -log(1-h (x))$ 。将这两种情况合并起来,单样本损失函数如下:
角度二:对数似然函数
从概率的角度,我们可以利用极大似然估计的方法。我们希望 \(P(y = 1 \vert x^+), \ P(y=0 \vert x^-)\) 这两个概率越大越好。所以我们得出初步优化目标:
经过一系列操作:
\(\ \ \ \ \ \prod P(y \vert x; \theta, b)\)
\(\Leftrightarrow \prod P(y=1 \vert x; \theta, b)^y \cdot P(y=0 \vert x; \theta, b)^{(1-y)}\)
\(\Leftrightarrow \sum y \cdot lnP(y=1 \vert x; \theta, b) + (1-y) \cdot lnP(y=0 \vert x; \theta , b)\)
\(\Leftrightarrow \sum y \cdot ln(h) + (1-y) \cdot ln(1-h)\)
然后得到对于单个样本的损失函数如下:
上述两种角度最终都可得到模型的 cost function:
求导
\(\frac{\partial l}{\partial \theta}= -\frac{y }{h} \cdot h \cdot (1 - h) \cdot x + \frac{1-y}{1-h} \cdot h \cdot (1-h) \cdot x =x \cdot (h - y)\)
\(\frac{\partial J}{\partial \theta} = \frac{1}{n} \sum_{i=1}^n x \cdot (h - y)\)
我们可以发现,其导数为 feature · error 的形式。

浙公网安备 33010602011771号