logistic回归

定义

logistic回归主要用于分类问题,尤其是二分类问题。方法为根据现有的样本数据建立一个回归方程,并以该回归方程输出的值为依据进行分类。如下图中,有红绿两类,我们需要对它们进行分类,首先对其进行拟合,拟合后得到了一条紫色直线,设紫线方程为\(y=0.1x+0.4\),将各样本的x值(即特征值)代入到该回归方程中,我们判定:当输出\(y\ge0.5\)时,将该样本判断为红色类,当\(y<0.5\)时,将该样本判断为绿色类,即我们应以\(x=1\)为决策边界,对于红色类的样本,其\(x\)值均大于\(1\),因此会被机器准确地判为红色类,同理绿色类也是如此。
image

界线的回归方程

对于上图中的回归方程,其容易受到一些极端样本的影响,导致拟合效果较差,如对图上的数据再添加一些样本后方程变成了\(y=0.05x+0.3\),即下图中的橙色直线,根据这条橙色直线,被圈住的两个红色类样本的\(x\)值代入到橙色直线的方程中,\(y<0.5\),会被机器判断为绿色类,显然这是错误的。因此对于决策边界的回归方程,不能使用一元和多元中的回归方程\(h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...+\theta_{n}x_{n}\)来进行拟合。另外,对于二分类而言,机器的输出应该只有\(2\)种,假设为\(0,1\),如果使用线性回归,则方程的输出值可能会有很多种,比如\(y>1\)\(y<0\)等,这是不合理的,因此考虑使用\(Sigmoid\)函数,\(Sigmoid\)函数公式为:

\[\sigma(z)=\frac{1}{1+e^{-z}} \]

\(z>0\)时,\(\sigma(z)>0.5\),反之\(\sigma(z)<0.5\),同时\(\sigma(z)\)的值域为(0,1),因此,我们可以将该函数与线性回归方程结合起来,令\(h_{\theta}(x)=\sigma(\theta^T x)=\frac{1}{1+e^{-\theta^{T}x}}\),若函数输出值\(y\ge=0.5\),则将该样本分入\(1\)类,反之分入\(0\)
image

为何加入\(\sigma(z)\)函数后会改变极端样本对线性回归方程的影响

首先,考虑一下我们是如何更新方程中的参数的 —— 是根据损失函数对各参数的偏导来更新参数的,而偏导中都会有这么一项:

\[h_{\theta}(x^{(i)})-y^{(i)} \]

其中\(y^{(i)}=0\quad or \quad y^{(i)}=1\),当极端样本为\(1\)类时,即\(y^{(i)}=1\),由于极端样本的特征值\((x值)\)远离决策边界,根据\(h_{\theta}(x)=\sigma(z)\)的图像可知,\(h_{\theta}(x)\)输出的值会离\(0.5\)较远,离\(1\)较近,因此\(h_{\theta}(x^{(i)})-y^{(i)}\)的值会较小;而离决策边界较近的样本,即\(h_{\theta}(x)\)输出接近\(0.5\),显然此时\(h_{\theta}(x^{(i)})-y^{(i)}\)的值会大很多,因此它们对决策边界的影响会更大。因此\(\sigma(z)\)可以消除特征明显的样本对决策边界的影响。

损失(代价)函数

由于回归方程为:

\[h_{\theta}(x)=\sigma(\theta^T x)=\frac{1}{1+e^{-\theta^{T}x}} \]

其中\(\theta^{T}x=\theta_{0}x_{0}+\theta_{1}x_{1}+...+\theta_{n}x_{n}\)\(x_{0}=1\)
设有\(m\)个样本,则损失函数为:

\[J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 \]

由于\(h_{\theta}(x)=\frac{1}{1+e^{-\theta^{T}x}}\)为非凸函数(可用黑塞矩阵证明),因此我们无法使用梯度下降法来求出其参数,因此需要考虑使用其他损失函数。
 
考虑函数\(h_{\theta}(x)=t\)的含义为:在样本特征值及分类(即\(y\)值)已知的情况下,将样本特征值输入到机器中后,机器认为样本类别为\(1\)的概率为\(t\)则机器认为样本类别为\(0\)的概率为\(1-t\)。令

\[P(y=1|x;\theta)=h_{\theta}(x) \]

\[P(y=0|x;\theta)=1-h_{\theta}(x) \]

将上述两个公式合并,可得

\[P(y|x;\theta)=(h_{\theta}(x))^y(1-h_{\theta}(x))^{(1-y)} \]

其含义为:找到了一组参数\(\theta\),使得输入特征值为\(x\)且类别为\(y=1(0)\)时,机器认为\(y=1(0)\)的概率为\(P(y|x;\theta)\),显然,我们希望\(P(y|x;\theta)\)越大越好,这样机器的评估效果是最好的。对\(P(y|x;\theta)\)两边取自然对数,有:

\[\ln_{}{P(y|x;\theta)}=y\ln{h_{\theta}(x)}+(1-y)\ln_{}{(1-h_{\theta}(x))} \]

\(\ln_{}{P(y|x;\theta)}\)最大时,则\(-\ln_{}{P(y|x;\theta)}\)最小,因此最大化\(\ln_{}{P(y|x;\theta)}\)等价于最小化\(-\ln_{}{P(y|x;\theta)}\),因此可令损失函数为\(J(\theta)=-\ln_{}{P(y|x;\theta)}\),若有\(m\)个样本,则

\[P(y|x;\theta)=\prod_{i=1}^{m}{h_{\theta}(x^{(i)})}^{y^{(i)}}{(1-h_{\theta}(x^{(i)}))}^{(1-y^{(i)})} \]

两边取对数并添一个负号,则

\[J(\theta)=-[\sum_{i=1}^{m}y^{(i)}\ln{h_{\theta}(x^{(i)})}+(1-y^{(i)})\ln_{}{(1-h_{\theta}(x^{(i)}))}] \]

梯度下降

首先需要对\(J(\theta)\)求偏导,偏导分为三部分,第一部分为\(ln\),第二部分为\(h_{\theta}(x)\),即\(\sigma(z)=\frac{1}{1+e^{-z}}\),第三部分为\(\theta x\)
第一部分为

\[\frac{1}{h_{\theta}(x)} \]

第二部分为

\[\sigma^{'}(z)=\sigma(z)(1-\sigma(z)) \]

第三部分为

\[\frac{\partial (\theta_{0}x_{0}+\theta_{1}x_{1}+...+\theta_{n}x_{n})}{\partial \theta_{k}}=x_{k} \]

先来看只有一个样本时的情况,

\[\frac{\partial J(\theta)}{\partial \theta_{k}}=-\frac{y^{(1)}}{\sigma(z)}\cdot \sigma(z)(1-\sigma(z))\cdot x_{k}^{(1)} \]

\[-\frac{1-y^{(1)}}{1-\sigma(z)}\cdot \sigma(z)(\sigma(z)-1)\cdot x_{k}^{(1)} \]

\[=(h_{\theta}(x^{(1)})-y^{(1)})x_{k}^{(1)} \]

因此,当有\(m\)个样本时,

\[\frac{\partial J(\theta)}{\partial \theta_{k}}=\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{k}^{(i)} \]

其中\(h_{\theta}(x^{(i)})=\sigma(\theta^Tx^{(i)})\),因此,迭代公式为

\[\theta_{k}=\theta_{k}-\alpha \frac{\partial J(\theta)}{\partial \theta_{k}} \]

posted @ 2022-07-30 22:05  kris-phl  阅读(51)  评论(0)    收藏  举报