CS229第二课——分类与逻辑回归

分类与逻辑回归

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

1 逻辑回归

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

2 感知器算法

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值