热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习笔记—Logistic回归

前面我们介绍了线性回归,为捕获训练集中隐藏的线性模型,提高预测准确率,我们寻找最佳参数θ,使得预测值与真实值误差尽量小&#x

前面我们介绍了线性回归,为捕获训练集中隐藏的线性模型,提高预测准确率,我们寻找最佳参数 θ,使得预测值与真实值误差尽量小,也就是使均方误差最小。而经过验证,最小均方误差是符合最大似然估计理论的。

在 Logistic 回归中,我们依然要用到最大似然估计理论。

分类问题跟回归问题的区别是,预测值 y 取的是离散值。本文只讨论二分类问题,y 只能取 0 和 1 两个值。

如果不管 y 是离散值,硬要用线性回归算法来根据 x 来预测 y 值,也不是不行,但效果就很差。

理想情况下,我们希望有一个预测公式,把 y 等于 1 的 x 通过预测公式正好映射到 1,把 y 等于 0 的 x 通过预测公式正好映射到 0,这样就能把 x 空间一劈两半,一边是 1,一边是 0,当然,这是不现实的。

因此,我们只能希望当 y 等于 1 时,预测算法根据 x 值的计算结果应该尽量接近 1,当 y 等于 0 时,预测结果应尽量接近 0。尽量把属于 1 和 0 的 x 分开,少数 x 处于 1 和 0 的交界处。

这是不是让我们想起了这样一幅函数图像:

这就是 Sigmoid 函数图像。

公式是:

当 z 趋于无穷时,g(z) 趋近 1,当 z 趋于负无穷时,g(z) 趋于 0。这样 g(z) 的值就只是在 0 和 1 之间。

我们的分类模型就可以使用这个函数,让 z=θTx,可得:

这样就将 x 映射到了 hθ(x),即 y,且大部分 x 对应的 y 值不是趋近于 1 就是趋近 0,模糊地带的很少。

记得在线性回归中 hθ(x) 的定义是

而我们这里是对 θTx 做了个映射,把 θTx 映射到 0、1 区间里,因为要预测的 y 值就是 0 和 1,这样就很容易通过监督学习对参数 θ 进行优化,使 x 更容易地映射到相应的 y 值。

其实除了 Sigmoid 函数,其它从 0 到 1 平滑递增的函数也能用,但为什么我们要用 Sigmoid 函数呢?在后面一般线性模型会讲到,Sigmoid 是个很自然的选择。

Sigmoid 函数的导数有个有用的性质:

现在,有了 Logistic 回归模型,怎么找到合适的 θ 呢?在线性回归中,我们是通过最小化均方误差来寻找 θ,这里的分类就不能用均方误差,但我们知道线性回归中,在一定概率假设下,最小化军方误差其实可以从最大化似然估计中推导出来,这里我们也将在一定概率假设下,通过最大化似然估计来寻找参数。

假定:

这里把 hθ(x) 作为给定 x 和 θ 时,y=1 的概率。

这两个公式还可以更紧凑:

其中:

假设函数把 hθ(x) 就是 x 属于 y=1 的概率,即 y=1 的条件概率为 hθ(x),y=0 的条件概率为 1-hθ(x)。当我们要判别一个新来的 x 属于哪个类时,只需求 hθ(x),若大于 0.5 就是 y=1 的类,反之属于 y=0 类。

再审视下 hθ(x),发现 hθ(x) 只和 θTx 有关,θTx>0,x 就是 y=1 的类。g(z) 只不过是用来映射,真实的类别决定权还在 θTx。当 θTx 趋于正无穷时,hθ(x)=1,反之 hθ(x)=0。如果我们只从 θTx 出发,希望模型达到的目标无非就是让训练集中 y=1 的特征 θTx 远大于 0,而 y=0 的特征 θTx 远小于 0。Logistic 回归就是要学习得到 θ,使得正例的特征远大于 0,负例的特征远小于 0,强调在全部训练实例上达到这个目标。

假定 m 个训练实例是独立生成的,我们能写下参数的似然函数为:

跟之前一样,最大化 log 似然会更容易:

怎么最大化该似然函数呢?跟线性回归的求导类似,我们依然使用梯度下降,使用向量表示,θ 的更新规则是:

注意这个的更新公式里是加号,而不是减号,因为这里我们是要最大化,跟之前讲的线性回归中最小化均方误差不一样:

这里只对一个训练数据,对似然函数求导如下,将 hθ(x)=g(θTx) 代入,并利用 sigmoid 导数性质 g'(z)=g(z)(1-g(z)),得:

 

由此,随机梯度上升规则如下:

如果再往前翻下线性回归的最小均方误差的更新规则,会发现更新规则是一模一样的,但这是不同的算法,因为现在 hθ(x) 是 θTx 的非线性函数。完全不同的算法和学习问题,更新规则竟然是一样的!这是巧合吗?或者是背后有更深层的原因?后面讲一般线性模型时我们会回答这个问题。

题外话:

稍微修改下 Logistic 回归方法,使其强制输出 0 或者 1,这就需要修改 g 的定义,g 定义成一个门限函数。

然后我们使用更新规则:

这就是感知机学习算法。

在上个世纪 60 年代,感知机作为大脑工作单元的一个粗糙模型,是备受争议的。算法很简单,后面讲到学习理论时会详谈。表面上看感知机与我们讨论的其它算法很相似,它实际是一个跟 Logistic 和最小二乘回归非常不同的算法,特别是,它很难对预测做概率上的解释,或者从最大似然估计算法中推出到感知机。

题外话结束。这里不懂也没关系,只是提一下,后面会详谈。

下面介绍最大化似然函数的另一种算法,首先考虑寻找一个函数零点的牛顿方法,假定有个函数 f,想要找到一个 θ 值使得 f(θ)=0。这里 θ 是一个实数,不是向量。牛顿方法执行下面的更新:

只看这个公式还有点困惑,加上图再讲解就明白了。


 f'(θ) 是导数,导数就是斜率,斜率就是 Δf(θ)/Δθ……

所以 θ-f(θ)/f'(θ) 就是,在 θ 点 f(θ) 的切线等于 0 的点。见上图。

牛顿方法提供了一种到达 f(θ)=0 的方法,它如何用来求最大似然呢?似然函数的最大值也就是其导数为 0 时的点。所以,可得更新规则:

由于我们的 Logistic 回归的 θ 是向量,所以牛顿方法需要扩展成多维,也叫 Newton-Raphson 方法:

其中 H 是一个 n*n 的 Hessian 矩阵,其元素是:

牛顿方法收敛得比批梯度下降方法快,到最小值需要更少的迭代次数。但牛顿方法的一次迭代比梯度下降费劲多了,因为它需要寻找并转换 n*n 的 Hessian 矩阵,但只要 n 不是太大,它通常就会快得多。牛顿方法应用到最大化 Logistic 回归 Log 似然函数时,就叫做 Fisher scoring。

 

参考资料:

1、http://cs229.stanford.edu/notes/cs229-notes1.pdf

2、洪松林, 庄映辉, 李堃. 数据挖掘技术与工程实践[M]. 机械工业出版社. 2014

转:https://www.cnblogs.com/NaughtyBaby/p/5291309.html



推荐阅读
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • QBlog开源博客系统:Page_Load生命周期与参数传递优化(第四部分)
    本教程将深入探讨QBlog开源博客系统的Page_Load生命周期,并介绍一种简洁的参数传递重构方法。通过视频演示和详细讲解,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
author-avatar
风让我离开
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有