机器学习入门学习笔记:(2.3)对数几率回归推导
理论推导 在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型。 将线性回归模型简写为:y=ωTx+by = \omega^Tx+b; 对数线性回归模型可以写成:ln(y)=ωT+bln(y) = \omega^T + b;本质上仍然是线性回归,只不过拟合的是非线性的ln函数了。 更一般地,考虑单调可微函数g(.)g(.),令
理论推导
在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型。
将线性回归模型简写为: y=ωTx+b <script type="math/tex" id="MathJax-Element-1505">y = \omega^Tx+b</script>;
对数线性回归模型可以写成: ln(y)=ωT+b <script type="math/tex" id="MathJax-Element-1506">ln(y) = \omega^T + b</script>;本质上仍然是线性回归,只不过拟合的是非线性的ln函数了。
更一般地,考虑单调可微函数 g(.) <script type="math/tex" id="MathJax-Element-1507">g(.)</script>,令 y=g−1(ωTx+b) <script type="math/tex" id="MathJax-Element-1508">y = g^{-1}(\omega^T x + b)</script>;这个模型就叫做广义线性回归模型。(直接抄书的,实在不擅长背定义QAQ)
对于二分类任务,输出标记为 y∈{0,1} <script type="math/tex" id="MathJax-Element-1509">y\in\lbrace0, 1\rbrace</script>,而线性回归的预测结果 h(x)=ωTx+b <script type="math/tex" id="MathJax-Element-1510">h(x) = \omega^T x + b</script>,很明显是一个连续值,所以需要将其转换为 0/1 <script type="math/tex" id="MathJax-Element-1511">0 / 1</script>值。
所以要用到单位阶越函数:
即,若预测值大于0,就判为正例;若预测值小于0,就判为负例;临界值处,任意判别。
我们都知道,阶跃函数不可导,不连续,而 g−1(.) <script type="math/tex" id="MathJax-Element-1513">g^{-1}(.)</script>必须是一个可微的函数,所以阶跃函数不能用作 g−1(.) <script type="math/tex" id="MathJax-Element-1514">g^{-1}(.)</script>,还需要找一个连续函数代替阶跃函数。
我们常用 对数几率函数(logistic function)来进行替代:
画出图形会看到它形似S,所以也是一种sigmoid函数。
把对数几率函数作为 g−1(.) <script type="math/tex" id="MathJax-Element-1516">g^{-1}(.)</script>,代入到广义线性回归的公式中:
做一些化简,可以得到:
其中,y是正例的可能性,(1-y)是负例的可能性。
那么,这个 ln(y1−y) <script type="math/tex" id="MathJax-Element-1519">\ln(\frac{y}{1-y})</script>其实就是“对数几率”,等式右边的是什么不用说了吧。可以看出,对数几率回归实质上就是使用线性回归模型( ωTx+b <script type="math/tex" id="MathJax-Element-1520">\omega^Tx+b</script>)来逼近这个对数几率( ln(y1−y) <script type="math/tex" id="MathJax-Element-1521">\ln(\frac{y}{1-y})</script>)。
好的,那么问题来了。如何求解出这个模型中的未知参数 ω <script type="math/tex" id="MathJax-Element-1522">\omega</script>和 b <script type="math/tex" id="MathJax-Element-1523">b</script>呢?
只考虑二分类的情况下,将y换成后验概率
则有:
解得:
通过极大似然法来估计 ω <script type="math/tex" id="MathJax-Element-1528">\omega</script>和 b <script type="math/tex" id="MathJax-Element-1529">b</script>:
为表述方便,使用一个新矩阵 β <script type="math/tex" id="MathJax-Element-1531">\beta</script>来表示 ω <script type="math/tex" id="MathJax-Element-1532">\omega</script>和 b <script type="math/tex" id="MathJax-Element-1533">b</script>,令
同时也要给x矩阵补上一列1,令 x′={x1} <script type="math/tex" id="MathJax-Element-1535">x^{'} = \left\{\begin{matrix} x & 1\end{matrix}\right\}</script>。因为要对应参数b,补上1,保证结果不变。
那么, ωTx+b=βTx′ <script type="math/tex" id="MathJax-Element-1536">\omega^Tx+b = \beta^Tx^{'}</script>。
由于是二分类,即只有 y=0 <script type="math/tex" id="MathJax-Element-1537">y=0</script>和 y=1 <script type="math/tex" id="MathJax-Element-1538">y=1</script>的情况,那么可以将似然项重写为 y=0 <script type="math/tex" id="MathJax-Element-1539">y=0</script>和 y=1 <script type="math/tex" id="MathJax-Element-1540">y=1</script>的情况相加:
”西瓜书“上是这么写的,当然这样也不难理解。其实为了后面推导方便和容易理解,我们可以换成对数几率的形式来表示,原理依然是一样的,无非是加了个对数:
将上式代入到前面极大似然的公式中: L(β)=∑mi=1ln(P(yi|xi;β)) <script type="math/tex" id="MathJax-Element-1543">L(\beta) = \sum_{i=1}^m\ln(P(y_i|xi;\beta))</script>
联立前面推出的后验概率的结果:
得到最后的结果:
由于是极大似然,我们需要求出其极大值,所以有:
求出使 L(β) <script type="math/tex" id="MathJax-Element-1547">L(\beta)</script>最大的最优解等价于求出使 −L(β) <script type="math/tex" id="MathJax-Element-1548">-L(\beta)</script>最小的解,所以有:
最后可以通过凸优化中的梯度下降法、牛顿法等方法来求出 L(β) <script type="math/tex" id="MathJax-Element-1550">L(\beta)</script>函数的最优解 β∗ <script type="math/tex" id="MathJax-Element-1551">\beta^*</script>。
以上仅是个人学习笔记分享用,也留作我自己以后温习。
(>.<)
更多推荐
所有评论(0)