Machine Learning 学习笔记 (1) —— 线性回归与逻辑回归
本系列文章允许转载,转载请保留全文!
【请先阅读】【说明&总目录】http://www.cnblogs.com/tbcaaa8/p/4415055.html
1. 梯度下降法 (Gradient Descent)
梯度下降法是一种用来寻找函数最小值的算法。算法的思想非常简单:每次沿与当前梯度方向相反的方向走一小步,并不断重复这一过程。举例如下:
[例]使用梯度下降法,求z=0.3x2+0.4y2+2的最小值。
第一步:求解迭代格式。根据“每次沿与当前梯度方向相反的方向走一小步”的思想,可知x(k+1)=x(k)-0.6x(k), y(k+1)=y(k)-0.8y(k)
第二步:选择迭代的初始值。初始值一般可以随意选择,但恰当的初始值有助于提升收敛速度。本例中选择x(0)=1, y(0)=1
第三步:根据迭代格式和初始值进行迭代求解。迭代过程如下:
| k | x(k) | y(k) | z(x(k),y(k)) |
| 0 | 1.00 | 1.00 | 2.7000 |
| 1 | 0.40 | 0.20 | 2.0640 |
| 2 | 0.16 | 0.04 | 2.0083 |
| 3 | 0.06 | 0.01 | 2.0013 |
| 4 | 0.03 | 0.00 | 2.0002 |
| 5 | 0.01 | 0.00 | 2.0000 |
| 6 | 0.00 | 0.00 | 2.0000 |
结论:可以发现,第6次迭代后,算法收敛。所求最小值为2。
梯度下降算法如何进行收敛判定呢?一个通用的方法是判断相邻两次迭代中,目标值变化量的绝对值是否足够小。具体到上述例题,就是判断|z(x(k+1),y(k+1))-z(x(k),y(k))|<eps是否成立。eps是一个足够小的正实数,可以根据所需要的精度进行选取,本例中eps=10-4。
需要注意的是,梯度下降法有可能陷入局部最优解。可以通过多次随机选取初始值以及增加冲量项等方法加以改善,本系列后续文章中可能涉及。
2. 线性回归 (Linear Regression)
线性回归是对自变量和因变量之间关系进行建模的回归分析,回归函数满足如下形式:
我们使用表示数据组数,使用
表示数据的维数;使用
和
表示第
组数据的自变量和因变量,使用
表示第
组数据自变量的第
个分量。推导过程基于如下假设:
即每一组数据的误差项相互独立,且均服从均值为0,方差为的正态分布。进而,我们可以得到似然函数:
对数似然函数:
化简,可得:
定义损失函数:
要使似然函数最大,只需使损失函数最小。我们使用损失函数的极小值代替最小值,只需对每一个求偏导数:
最后,使用梯度下降法迭代求解:
其中,为学习率,是一个大于0的常数。学习率应当慎重选择,过大会导致算法不收敛,过小会导致收敛速度缓慢。在实际应用中,可以根据具体情况对学习率进行调节。有资料表明,当
时,上述算法收敛。由于
难以高效计算,因此往往使用
来代替。
3. 逻辑回归 (Logistic Regression)
当因变量只能在{0,1}中取值时,线性回归模型不再适合,因为极端数据的存在会使阀值的选择变得困难。我们可以使用逻辑回归对数据进行建模。回归函数满足如下形式:
其中:
sigmoid函数具有如下性质:
推导过程基于如下假设:(其实就是假设y(i)~Bernoulli(hθ(x(i))))
考虑到取值的特殊性,上述假设等价于以下形式:
进而得到似然函数:
对数似然函数:
化简,得:
定义损失函数:
要使似然函数最大,只需使损失函数最小。我们使用损失函数的极小值代替最小值,只需对每一个求偏导数:
化简,得:
最后,使用梯度下降法迭代求解:
含义同上。
Machine Learning 学习笔记 (1) —— 线性回归与逻辑回归的更多相关文章
- 吴恩达Machine Learning学习笔记(三)--逻辑回归+正则化
分类任务 原始方法:通过将线性回归的输出映射到0-1,设定阈值来实现分类任务 改进方法:原始方法的效果在实际应用中表现不好,因为分类任务通常不是线性函数,因此提出了逻辑回归 逻辑回归 假设表示--引入 ...
- [Machine Learning]学习笔记-Logistic Regression
[Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...
- Machine Learning 学习笔记
点击标题可转到相关博客. 博客专栏:机器学习 PDF 文档下载地址:Machine Learning 学习笔记 机器学习 scikit-learn 图谱 人脸表情识别常用的几个数据库 机器学习 F1- ...
- Coursera 机器学习 第6章(上) Advice for Applying Machine Learning 学习笔记
这章的内容对于设计分析假设性能有很大的帮助,如果运用的好,将会节省实验者大量时间. Machine Learning System Design6.1 Evaluating a Learning Al ...
- Machine Learning 学习笔记 (4) —— 广义线性模型
本系列文章允许转载,转载请保留全文! [请先阅读][说明&总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 指数分布族简介 之前的文章分 ...
- Machine Learning 学习笔记1 - 基本概念以及各分类
What is machine learning? 并没有广泛认可的定义来准确定义机器学习.以下定义均为译文,若以后有时间,将补充原英文...... 定义1.来自Arthur Samuel(上世纪50 ...
- [Python & Machine Learning] 学习笔记之scikit-learn机器学习库
1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...
- Machine Learning 学习笔记 (3) —— 泊松回归与Softmax回归
本系列文章允许转载,转载请保留全文! [请先阅读][说明&总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 泊松回归 (Poisson ...
- PytorchZerotoAll学习笔记(五)--逻辑回归
逻辑回归: 本章内容主要讲述简单的逻辑回归:这个可以归纳为二分类的问题. 逻辑,非假即真.两种可能,我们可以联想一下在继电器控制的电信号(0 or 1) 举个栗子:比如说你花了好几个星期复习的考试(通 ...
随机推荐
- 【MySQL】MySQL同步报错-> Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
这个报错网上搜索了一下,大部分是由于MySQL意外关闭或强制重启造成的binlog文件事务点读取异常造成的主从同步报错 Last_IO_Error: Got fatal error 1236 from ...
- 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
转自:http://blog.sina.com.cn/s/blog_48964b12010157p0.html 配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息 ...
- HTML中Meta标签大全
在网页的HTML源代码中一个重要的代码“”(即通常所说的META标签).META标签用来描述一个HTML网页文档的属性,例如作者.日期和时间.网页描述.关键词.页面刷新等. 1.META标签的keyw ...
- c#获取多个List<class>合并、并将相同条件下的值累计sum
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- luigi学习3-使用luigid
--local-scheduler的方式只适用于开发调试阶段,当你真正要把程序部署到一个产品时,我们推荐使用luigid服务. 使用luigid服务不但能提供锁服务(防止一个任务被多个进程重复执行), ...
- php时间转换unix时间戳
本文介绍了php编程中unix时间戳转换的小例子,有关php时间转换.php时间戳的实例代码,有需要的朋友参考下. 第一部分,php 时间转换unix 时间戳实现代码. 复制代码代码示例: <? ...
- thinkphp 字段静态验证$_validate中错误提醒多语言化写成{%LANGUATE}的原因
class UserModel extends Model{ protected $_validate = array( array('account', 'require', '{%LANGUAG ...
- Java实现计算20的阶乘
循环从1乘到20,要注意的就是结果可能会很大,长度超出int类型的范围,所以定义乘积的时候用long. 代码如下: public class Practice3 { public static voi ...
- 共享内存 share pool (2):BUCKET /FREE LISTS /RESERVED FREE LISTS /UNPINNED RECREATABLE CHUNKS (lru first)
相关概念 BUCKET :每个bucket上挂有一个 chunk list.同一个BUCKET中的chunk在物理地址上是不一定相邻的 FREE LISTS:按bucket划分,共有255个,buck ...
- 《高性能javascript》读书笔记:P1减少跨作用域的变量访问
前端优化,有两个意义:1.为了让用户在浏览网页时获得更好的体验 2.降低服务器端的访问压力,节省网络流量. 除了换个好主机连上个千兆网这样的硬件问题,优化部分的实现方式目前也大致两种,一种是页面级别的 ...