吴恩达机器学习:逻辑回归

上一周的课程 里,Andrew Ng 为我们介绍了什么是机器学习以及监督学习中的线性回归。对于一个监督学习,我们要确定我们的 预测函数代价函数,然后利用梯度下降算法找到 代价函数 最小时,预测函数 中的参数值。这周我们会接触监督学习中一类新的问题,称为分类问题。

点击 课程视频 你就能不间断地学习 Ng 的课程,关于课程作业的 Python 代码已经放到了 Github 上,点击 课程代码 就能去 Github 查看,代码中的错误和改进欢迎大家指出。

以下是 Ng 机器学习课程第二周的笔记。

分类问题

对于监督学习中的分类问题,通常已知一些数据并知道它们各自属于什么类别,然后希望基于这些数据来判断新数据是属于什么类别的。比如已知一些症状特征和是否患有某种疾病的数据,基于这些数据来判断新的病人是否患病。再比如根据过去的垃圾邮件数据来判断新邮件是否为垃圾邮件。

预测函数

对于 线性回归 我们的 预测函数 为:

h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = θ T x h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\dots+\theta_nx_n=\theta^Tx hθ(x)=θ0+θ1x1+θ2x2++θnxn=θTx

但这个 预测函数 的输出是个没有范围的连续值,并不适合分类问题。因此在 逻辑回归 中使用了:

h θ ( x ) = g ( θ T x ) h_\theta(x)=g(\theta^Tx) hθ(x)=g(θTx) g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1

来作 预测函数,其中 g ( z ) g(z) g(z) 被称为 Sigmoid 函数,它很好地将 预测函数 的输出值控制在 0、1 之间。( 下图为 Sigmoid 函数图像 )
这里写图片描述
这样就可以将 预测函数 解释为在给定 x x x 及参数 θ \theta θ 的情况下, y = 1 y=1 y=1 ( 属于这个分类 )的概率:

h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=P(y=1 | x;\theta) hθ(x)=P(y=1x;θ)

决策边界

对于分类问题,有一个新的概念称为 决策边界。由于最终我们必须决定输入数据是否属于某个分类,我们设定了 0.5 0.5 0.5 作为阈值,预测函数 输出大于 0.5 0.5 0.5 的就属于该分类,反之不属于。而 h θ ( x ) = 0.5 h_\theta(x) = 0.5 hθ(x)=0.5 时,对应于 θ T x = 0 \theta^Tx=0 θTx=0。我们将 θ T x = 0 \theta^Tx=0 θTx=0 对应的曲线称为决策边界( 注意这里的 x x x 并不是指训练数据,决策边界是 h θ ( x ) h_\theta(x) hθ(x) 的属性,下图为作业中的决策边界 )。
这里写图片描述

代价函数

再来说说 逻辑回归 中的代价函数。如果沿用 线性回归 中的代价函数,我们会得到类似下图的曲线( 下图为单个特征 θ 0 \theta_0 θ0 所对应的 代价函数 曲线,和 Ng 画的不太一样 ):
这里写图片描述
在这样的函数上使用梯度下降算法,最终很有可能在平坡处停止。在数学上我们已知如果一个函数是凸的,那么使用梯度下降一定能找到全局最小值。凸函数 是一个很强的限制,可以形象地理解为,在函数上任取一段都是向外凸的( 如下图,详细定义见 维基百科 )。
这里写图片描述
所以我们使用新的 代价函数 使得它满足 凸函数 的性质。

J ( θ ) = − 1 m ( y T l o g ( g ( X θ ) ) + ( 1 − y ) T l o g ( 1 − g ( X θ ) ) ) J(\theta)= -\frac{1}{m}\Big(y^Tlog\big(g\left(X\theta\right)\big)+(1-y)^Tlog\big(1-g\left(X\theta\right)\big)\Big) J(θ)=m1(yTlog(g(Xθ))+(1y)Tlog(1g(Xθ)))

梯度下降

求解 代价函数 最值的方法还是 梯度下降 算法,所以我们需要对 J ( θ ) J(\theta) J(θ) 进行求导( 求导的计算过程能够给你一个印象,知道求导的结果是怎么来的。但是为了让大家不要淹没在计算的细节中,文章都会省略计算给出最终结果的矩阵形式 )。

∇ J ( θ ) = 1 m X T ( g ( X θ ) − y ) \nabla J(\theta)= \frac{1}{m}X^T\big(g(X\theta)-y\big) J(θ)=m1XT(g(Xθ)y)

有了 代价函数梯度 就能够自己实现梯度下降算法来求解问题了。不过在课程中 Ng 提到了几种 梯度下降 的优化算法,Conjugate descentBFGSL-BFGS。这些算法不需要指定学习率,而且能够更快地找到解,我们可以通过调用内置函数来完成学习( 在作业中由于没有 Octave 的 fminunc 函数,作为代替使用了 scipy 包中的 minimize 函数,算法用的是 BFGS )。

正则化

正则化 的引入是为了防止学习中的 过拟合现象。简单来说 过拟合现象 就是我们的学习算法将很多对问题并不重要的 细节特征甚至 噪声 都考虑了进来,认为它们是决策依据。就像对于作业 ex2_reg.py 中需要分类的数据,假设了 预测函数

g ( θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ 26 x 1 x 2 5 + + θ 27 x 2 6 ) g(\theta_0+\theta_1x_1+\theta_2x_2+\dots+\theta_{26}x_1x_2^5++\theta_{27}x_2^6) g(θ0+θ1x1+θ2x2++θ26x1x25++θ27x26)这里写图片描述
对于含有 28 个参数的 预测函数 ,可以拟合很多类型的数据,但对于作业中的数据有些特征并不需要。我们希望 J ( θ ) J(\theta) J(θ) 取得最小的同时,特征的系数 θ i \theta_i θi 尽可能小。为此对 代价函数 做一些修改变成如下形式:

J ( θ ) = − 1 m ( y T l o g ( g ( X θ ) ) + ( 1 − y ) T l o g ( 1 − g ( X θ ) ) ) + λ 2 m θ T θ J(\theta)= -\frac{1}{m}\Big(y^Tlog\big(g\left(X\theta\right)\big)+(1-y)^Tlog\big(1-g\left(X\theta\right)\big)\Big)+\frac{\lambda}{2m}\theta^T\theta J(θ)=m1(yTlog(g(Xθ))+(1y)Tlog(1g(Xθ)))+2mλθTθ

试中 λ \lambda λ 为正则化系数,用来平衡两个目标,一个是让前半部分的 代价函数 尽量小,一个是避免参数过大导致过拟合。后半部分正则化项中的 θ 0 \theta_0 θ0 取零,因为一般不对其进行约束。线性回归 同样可以使用正则化的方法,这里我们只给出正则化后的代价函数:

J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) + λ 2 m θ T θ J(\theta)=\frac{1}{2m}(X\theta-y)^T(X\theta-y)+\frac{\lambda}{2m}\theta^T\theta J(θ)=2m1(Xθy)T(Xθy)+2mλθTθ

如果使用正规方程求解的话,那么最后 θ \theta θ 的解为:

θ = ( X T X + λ [ 0 ⋯ ⋯ ⋯ 0 0 1 ⋯ ⋯ 0 ⋮ ⋮ 1 ⋯ 0 ⋮ ⋮ ⋯ ⋱ ⋮ 0 0 ⋯ ⋯ 1 ] ) − 1 X T y \theta=(X^TX+\lambda\left[\begin{array}{ccccc}0 &\cdots &\cdots &\cdots &0 \\ 0 &1 &\cdots &\cdots &0\\ \vdots & \vdots & 1 &\cdots & 0\\ \vdots &\vdots &\cdots &\ddots & \vdots \\ 0 & 0 &\cdots &\cdots &1 \end{array}\right])^{-1}X^Ty θ=(XTX+λ0001010001)1XTy

正则化 是一个蛮大的主题,在这里一时半会没法讲全,自己理解的也不透彻,等有了更好的体会时再与大家分享。

So~,第二周的内容就是这些了,谢谢大家耐心阅读。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值