分类与逻辑回归

与回归问题相似,但标签数据yy不是连续值,而是离散值,我们首先考虑二分类问题,其中的标签数据yy的值为0或1。

1 逻辑回归

对于逻辑回归,因为标签数据y{0,1}y \in \{0,1\},因此对于我们预测的输出值应该位于0到1之间,如果我们直接使用之前的线性方程,无法构建一个良好的模型。为了解决这个问题,我们选择的模型为
hθ(x)=g(θTx)=11+eθTx h_{\theta}(x) = g(\theta^Tx) = \frac{1}{1+e^{-\theta^Tx}}
其中的g(z)=11+ezg(z) = \frac{1}{1+e^{-z}}称为sigmoid函数,其图像如下所示
CS229第二课——分类与逻辑回归
zz\rightarrow \infty时,g(z)g(z)的值趋近于1。通过这样的限制,hθ(x)h_{\theta}(x)输出的值位于0到1之间。
对于函数g(z)g(z)的选择,也可以使用从0平滑地增加到1的其他函数,但是有几个原因我们选择sigmoid函数(在之后的广义线性模型会进行讲解),首先先介绍关于sigmoid函数的导数特性。
g(z)=ddz11+ez=ez(1+ez)2=11+ez(111+ez)=g(z)(1g(z)) \begin{aligned} g^{'}(z) &= \frac{d}{dz}\frac{1}{1+e^{-z}} \\ &= \frac{e^z}{(1+e^{-z})^2} \\ &= \frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}}) \\ &= g(z)(1-g(z)) \end{aligned}
已经确定了模型hθ(x)h_{\theta}(x),接下来我们需要对参数θ\theta进行求解,之前我们讲解过线性回归在一系列假设下可以使得最小二乘作为最大似然估计,让我们定义分类模型一组概率假设,然后通过最大似然拟合参数。我们假设概率分布如下所示(之前的线性回归是假设为高斯分布)
P(y=1x;θ)=hθ(x)P(y=0x;θ)=1hθ(x) \begin{aligned} P(y=1|x;\theta) &= h_{\theta}(x)\\ P(y=0|x;\theta)&=1-h_{\theta}(x) \end{aligned}
我们方便描述,我们可以将其写为
p(yx;θ)=(hθ(x))y(1hθ(x))1yp(y|x;\theta)=(h_{\theta}(x))^y(1-h_{\theta}(x))^{1-y}
假设有m个独立分布的数据样本,我们将似然函数写为
L(θ)=p(YX;θ)=i=1mp(y(i)x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i) \begin{aligned} L(\theta) &= p(\mathbf{Y}|\mathbf{X};\theta) \\ &= \prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)\\ &= \prod_{i=1}^m(h_{\theta}(x^{(i)}))^{y^{(i)}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}} \end{aligned}
之后我们同样对似然函数进行对数化,得到
l(θ)=logL(θ)=i=1mlog(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)=i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))) \begin{aligned} l(\theta) &= logL(\theta)\\ &=\sum_{i=1}^mlog(h_{\theta}(x^{(i)}))^{y^{(i)}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}}\\ &=\sum_{i=1}^m(y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))) \end{aligned}
对了对上式进行最大化,我们使用梯度上升算法,考虑只有一个数据样本(x,y)(x,y)的情况下,对参数θj\theta_j进行更新,过程如下所示
θjl(θ)=y1g(θTx)θjg(θTx)(1y)11g(θTx)θjg(θTx)=y(1g(θTx))xj(1y)g(θTx)xj=yxjyxjg(θTx)xjg(θTx)+yxjg(θTx)=xj(yg(θTx))=xj(yhθ(x)) \begin{aligned} \frac{\partial}{\partial \theta_j}l(\theta) &= y\frac{1}{g(\theta^Tx)}\frac{\partial}{\partial \theta_j}g(\theta^Tx)-(1-y)\frac{1}{1-g(\theta^Tx)}\frac{\partial}{\partial \theta_j}g(\theta^Tx) \\ &=y(1-g(\theta^Tx))x_j-(1-y)g(\theta^Tx)x_j \\ &=yx_j-yx_jg(\theta^Tx)-x_jg(\theta^Tx)+yx_jg(\theta^Tx)\\ &=x_j(y-g(\theta^Tx)) \\ &=x_j(y-h_{\theta}(x)) \end{aligned}
因此
θj=θj+αxj(i)(y(i)hθ(x))\theta_j = \theta_j + \alpha x^{(i)}_j(y^{(i)}-h_{\theta}(x))

2 感知器算法

感知器算法会修改逻辑回归方法,使其“强制”输出值为0或1,因此将g的定义改为阈值函数
g(z)={1ifz00ifz<0 g(z)= \left\{ \begin{aligned} 1 & & if && z \ge 0 \\ 0 && if && z < 0 \end{aligned} \right.
hθ(x)=g(θTx)h_{\theta}(x) = g(\theta^Tx),更新的规则为θj:=θj+α(y(i)hθ(x(i)))xj(i)\theta_j := \theta_j+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x^{(i)}_j。这就是感知器算法的基本内容。

3 另一种最大化l(θ)l(\theta)的算法

我们使用牛顿法来求取函数的零点,首先考虑对于给定的函数ff:从一个实数映射到另一个实数,我们需要找到一个实数θ\theta使得f(θ)=0f(\theta)=0
该方法的解释:我们可以认为它是通过在当前θ\theta处与ff相切的线性函数近似函数f,求解该线性函数等于0的位置,然后将下一个θ\theta定义为线性函数为零的地方。
CS229第二课——分类与逻辑回归
其更新过程为
θ:=θf(θ)f(θ)\theta:=\theta-\frac{f(\theta)}{f^{'}(\theta)}
牛顿法可以获取函数f(θ)f(\theta)的零点,如果我们需要最大化损失函数l(θ)l(\theta),我们可以令其导数为0,因此令f(θ)=l(θ)f(\theta)=l^{'}(\theta),所以参数的更新定义为
θ:=θl(θ)l(θ)\theta:=\theta-\frac{l^{'}(\theta)}{l^{''}(\theta)}
当我们将牛顿法应用于多维情况时,将其扩展为
θ:=θH1θl(θ)\theta:=\theta-\mathbf{H}^{-1}\nabla_{\theta}l(\theta)
上式中的H\mathbf{H}为海森矩阵,其定义为Hij=2l(θ)θiθj\mathbf{H}_{ij}=\frac{\partial^2l(\theta)}{\partial \theta_i \partial \theta_j}
牛顿法可以实现比梯度下降算法更少的迭代次数,然而在每一次迭代中的计算量更大,因为需要计算nn节方阵的逆,因此牛顿法适用于特征数nn比较少的情况。

相关文章:

  • 2022-12-23
  • 2021-08-08
  • 2021-05-01
  • 2021-08-03
  • 2022-12-23
  • 2021-04-04
  • 2022-02-21
  • 2021-06-26
猜你喜欢
  • 2021-05-04
  • 2021-09-23
  • 2022-12-23
  • 2021-12-07
  • 2022-02-06
  • 2021-06-01
  • 2021-07-03
相关资源
相似解决方案