本系列文章允许转载,转载请保留全文!

【请先阅读】【说明&总目录】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) —— 线性回归与逻辑回归的更多相关文章

  1. 吴恩达Machine Learning学习笔记(三)--逻辑回归+正则化

    分类任务 原始方法:通过将线性回归的输出映射到0-1,设定阈值来实现分类任务 改进方法:原始方法的效果在实际应用中表现不好,因为分类任务通常不是线性函数,因此提出了逻辑回归 逻辑回归 假设表示--引入 ...

  2. [Machine Learning]学习笔记-Logistic Regression

    [Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...

  3. Machine Learning 学习笔记

    点击标题可转到相关博客. 博客专栏:机器学习 PDF 文档下载地址:Machine Learning 学习笔记 机器学习 scikit-learn 图谱 人脸表情识别常用的几个数据库 机器学习 F1- ...

  4. Coursera 机器学习 第6章(上) Advice for Applying Machine Learning 学习笔记

    这章的内容对于设计分析假设性能有很大的帮助,如果运用的好,将会节省实验者大量时间. Machine Learning System Design6.1 Evaluating a Learning Al ...

  5. Machine Learning 学习笔记 (4) —— 广义线性模型

    本系列文章允许转载,转载请保留全文! [请先阅读][说明&总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 指数分布族简介 之前的文章分 ...

  6. Machine Learning 学习笔记1 - 基本概念以及各分类

    What is machine learning? 并没有广泛认可的定义来准确定义机器学习.以下定义均为译文,若以后有时间,将补充原英文...... 定义1.来自Arthur Samuel(上世纪50 ...

  7. [Python & Machine Learning] 学习笔记之scikit-learn机器学习库

    1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...

  8. Machine Learning 学习笔记 (3) —— 泊松回归与Softmax回归

    本系列文章允许转载,转载请保留全文! [请先阅读][说明&总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 泊松回归 (Poisson ...

  9. PytorchZerotoAll学习笔记(五)--逻辑回归

    逻辑回归: 本章内容主要讲述简单的逻辑回归:这个可以归纳为二分类的问题. 逻辑,非假即真.两种可能,我们可以联想一下在继电器控制的电信号(0 or 1) 举个栗子:比如说你花了好几个星期复习的考试(通 ...

随机推荐

  1. C# (GDI+相关) 图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)

    C#图像处理   (各种旋转.改变大小.柔化.锐化.雾化.底片.浮雕.黑白.滤镜效果)     一.各种旋转.改变大小   注意:先要添加画图相关的using引用.   //向右旋转图像90°代码如下 ...

  2. JS常用的设计模式(14)—— 备忘录模式

    备忘录模式在js中经常用于数据缓存. 比如一个分页控件, 从服务器获得某一页的数据后可以存入缓存.以后再翻回这一页的时候,可以直接使用缓存里的数据而无需再次请求服务器. 实现比较简单,伪代码: var ...

  3. 移植DNS服务bind

    移植DNS服务bind 标签: makefile工作linuxbuildgcc工具 先写用于DNS的bind. 一. 移植环境 1 .硬件环境: Host : X86 PC Target : MPC8 ...

  4. ASP.NET MVC5 高级编程 第3章 视图

    参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...

  5. 第一部分 CLR基础:第1章 CLR的执行模型

    1.1将源代码编译成托管模块

  6. 基于HTML5 的人脸识别活体认证

    近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术 ...

  7. linux expect初识

    写个命令,让ssh服务器便捷点 #!/usr/bin/expect set type [lindex $argv 0] if {$type == "server"} { set i ...

  8. Delphi XE5 for android 调用Java类库必看的文件

    C:\Program Files\Embarcadero\RAD Studio\12.0\source\rtl\android 的目录 Androidapi.AppGlue.pasAndroidapi ...

  9. does not match bootstrap parameter

    问题描述: DBD::mysql object version 2.0419 does not match bootstrap parameter 2.0902 at /usr/libdata/per ...

  10. 13.python中的字典

    字典其实和之前的元祖和列表功能相似,都是用来储存一系列对象的.也就是一种可变容器,或者是我所比喻的革新派的菜单. 但也不是完全相同,我在之前曾经将字典称为特殊的'序列',是字典拥有序列的部分特性,但是 ...