Andrew Ng Machine Learning 专题【Logistic Regression & Regularization】
此文是斯坦福大学,机器学习界 superstar — Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记。
力求简洁,仅代表本人观点,不足之处希望大家探讨。
课程网址:https://www.coursera.org/learn/machine-learning/home/welcome
Week 2:Linear Regression with Multiple Variables笔记:http://blog.csdn.net/ironyoung/article/details/47129523
Week 3:Logistic Regression & Regularization
Logistic Regression
- 对于分类问题而言。非常easy想到利用线性回归方法。拟合之后的h θ (x)>0.5 则为True。其余为False.
- 可是线性回归有一个问题,拟合出的值都是离散的。范围不确定。
为了方便分析。我们希望将拟合出的值限制在0~1之间。
因此,出现了逻辑回归。
- 逻辑回归的模型是一个非线性模型:sigmoid函数,又称逻辑回归函数。但它本质上又是一个线性回归模型,由于除去sigmoid映射函数关系。其它的步骤,算法都是线性回归的。
- sigmoid函数(或,逻辑回归函数):g(z)=1/(1+e −z ) 。其函数图像为:
这个函数的特征非常明显- 函数值一直在0~1范围内;
- 经过(0,0.5) 点。这个非常easy作为区分0,1类的分界线。
- 逻辑回归中。对于原本线性回归中拟合而成的hypothesis函数,须要经过sigmoid函数的修饰:h θ (x)=θ T x⇛h θ (x)=g(θ T x)
此时,h θ (x) 的含义发生了变化,h θ (x)=P(y=1|x;θ) 。成为
- ”the probability that y=1, given x, parameterized by θ ”
- 因此有。P(y=0|x;θ)+P(y=1|x;θ)=1
- Decision Boundary。
表示的是 hypothesis 函数确定之后,划分数据分类的界限。并不一定能够百分百区分数据集,仅仅是函数的属性之中的一个。下图蓝色曲线即为某个 Desicision Boundary。
Cost Function
回顾线性回归的 cost function,我们在当中插入 cost 函数的概念:J(θ 0 ,θ 1 )=12m ∑ i=1 m (h θ (x (i) )−y (i) ) 2 =1m ∑ i=1 m cost(h θ (x (i) ),y (i) )=1m ∑ i=1 m cost(h θ (x),y)
全然照搬线性回归的 cost function 到逻辑回归中,由于sigmoid函数的非线性,会造成J(θ) 取值的不断震荡。导致其是一个非凸形函数(non-convex)。表示在“J(θ)—θ ”二维图中例如以下:
- 我们须要构造一种新的 cost 函数。出发点为:
- 当y=1 时,若hypothesis函数拟合结果为0,即为“重大失误”。cost 趋于无穷大;
- 当y=0 时,若hypothesis函数拟合结果为1。即为“重大失误”,cost 趋于无穷大;
构造的新 cost 函数:
cost(h θ (x),y)={−log(h θ (x)),y=1−log(1−h θ (x)),y=0假设进一步合并,能够得到终于逻辑回归的cost函数。
而且值得指出的是。代入这个cost函数通过梯度下降法得到的 θ 更新函数依旧成立:
cost(h θ (x),y)=−ylog(h θ (x))−(1−y)log(1−h θ (x))
θ j :=θ j −α1m ∑ i=1 m [(h θ (x (i) )−y (i) )x (i) j ]
梯度下降法的优化
- 对于梯度下降法的优化有非常多,可是都须要J(θ) 与∂J(θ)∂θ j 的代码。
- 以此为基础的对于梯度下降法的优化(视频中都没有详细介绍,有兴趣的同学能够点击链接)有:
- 共轭梯度法:https://en.wikipedia.org/wiki/Conjugate_gradient_method
- BFGS:
title=Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm&redirect=no">https://en.wikipedia.org/w/index.php?title=Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm&redirect=no
- L-BFGS:https://en.wikipedia.org/wiki/Limited-memory_BFGS
- 这些优化方法的特点也非常一致:
- 不须要人为选择 α 。自适应性
- 更复杂。更慢
- 这里提到了两个MATLAB的非线性优化函数:
- optimset:创建或编辑一个最优化參数选项。
详细调用在MATLAB中 help optimset 命令查看。
- fminunc:最小值优化。详细调用在MATLAB中 help fminunc 命令查看。
- optimset:创建或编辑一个最优化參数选项。
- 个人建议:Ng在优化这一部分讲的过于简略,基本等于什么都没说……还是要依据这几个方法名称在使用时搜索很多其它。
one vs. all (one vs. rest)
- 假设须要进行多类的分类,须要一种精妙的修改,使得两类的分类问题得以适用于多类的分类。
- 现已知有n类样本须要区分开(1。2。3,……);
- 以原1类为新1类,剩余的原2,3,……作为新2类。
原本的多类问题变成了二类问题。h (1) θ (x)=P(y=1|x;θ) ;
- 以原2类为新1类。剩余的原1,3。……作为新2类。再分类,h (2) θ (x)=P(y=2|x;θ) 。
- ……h (i) θ (x)=P(y=i|x;θ) ;
- 对于随意一个 x 而言,怎样分辨是哪一类呢?于是,求出全部的h (1) θ (x)。h (2) θ (x),h (3) θ (x)。……,h (n) θ (x) ,值最大相应的i (表示y=i 的概率最大)即为x 的所属分类
- 假设须要进行多类的分类,须要一种精妙的修改,使得两类的分类问题得以适用于多类的分类。
Regularization(正则化)
- 拟合会产生三种情况:
- underfitting(欠拟合)=high bias,大部分训练样本无法拟合
- overfitting(过拟合)=high variance,为了拟合差点儿每个训练样本。
导致拟合函数极为复杂。易产生波动,泛化(generalize)能力差,尽管训练样本差点儿百分百拟合,可是測试样本非常可能由于极大波动而极少拟合成功
- just right,对于训练样本,拟合得不多不少刚刚好,而且泛化到測试样本拟合效果相同较好
- 欠拟合,比較好解决,创造并引入很多其它的特征就可以。比如:对于x,y 而言,能够引入x 2 ,y 2 ,xy 等等新的特征
- 过拟合,则比較复杂。
可用的方法有两个:
- Reduce number of features,降维(PCA?)
- Regularization,正则化。保持全部的特征数量不变。而去改变特征前的度量单位 θ j (若 θ j 趋于0,则此特征可视为无影响)
- 解决过拟合的正则化方法,因此须要引入全新的优化目标到 cost function 中。原先的 cost function 仅仅是希望适合拟合更为接近,如今还须要使得特征前的度量单位 θ j 的最小。因此有:
J(θ 0 ,θ 1 )=12m [∑ i=1 m (h θ (x (i) )−y (i) ) 2 +λ∑ i=1 m θ 2 j ]
正则化方法处理之后。∂J(θ)∂θ j 发生相应变化,因此我们有:
θ j :=θ j −α[(1m ∑ i=1 m (h θ (x (i) )−y (i) )x (i) j )+λm θ j ]:=θ j (1−αλm )−α1m ∑ i=1 m (h θ (x (i) )−y (i) )x (i) j
若λ 非常大(比如10 10 ),则正则化方法会导致结果 underfitting。这也非常好理解,由于优化目标中有使得 λ∑ i=1 m θ 2 j 尽可能小,这样会导致 θ 全部趋于 0。一般来说,α,λ,m>0 ,所以(1−αλm )<1 。常见使其取值0.99 左右
- 拟合会产生三种情况:
Regularization for Normal Equation
- 课程视频中缺少证明。因此我们仅需掌握结论使用就可以
对于 Week 2 中的Normal Equation方法,原本须要求解的方程 θ=(x T x) −1 x T y 做一个小小的修改:
θ=(x T x+λ⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ 00⋮0 01⋮0 ……⋱… 00⋮1 ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ) −1 x T y
若样本拥有n个特征。则⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ 00⋮0 01⋮0 ……⋱… 00⋮1 ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ 表示的是(n+1) * (n+1)维的对角矩阵。除了(0, 0)取值为 0,其余对角位置取 1。
- non-invertibility:非不可逆性……好拗口。意思就是对于原本的(x T x) 矩阵可能会出现不可逆的情况。可是,对于正则化之后的矩阵 (x T x+λ⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ 00⋮0 01⋮0 ……⋱… 00⋮1 ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ) 一定是可逆的(未提供证明)。
Andrew Ng Machine Learning 专题【Logistic Regression & Regularization】的更多相关文章
- Andrew Ng Machine Learning 专题【Linear Regression】
此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探 ...
- [C2P2] Andrew Ng - Machine Learning
##Linear Regression with One Variable Linear regression predicts a real-valued output based on an in ...
- [C2P3] Andrew Ng - Machine Learning
##Advice for Applying Machine Learning Applying machine learning in practice is not always straightf ...
- CheeseZH: Stanford University: Machine Learning Ex2:Logistic Regression
1. Sigmoid Function In Logisttic Regression, the hypothesis is defined as: where function g is the s ...
- Andrew Ng机器学习 二: Logistic Regression
一:逻辑回归(Logistic Regression) 背景:假设你是一所大学招生办的领导,你依据学生的成绩,给与他入学的资格.现在有这样一组以前的数据集ex2data1.txt,第一列表示第一次测验 ...
- machine learning 之 logistic regression
整理自Adrew Ng 的 machine learning课程week3 目录: 二分类问题 模型表示 decision boundary 损失函数 多分类问题 过拟合问题和正则化 什么是过拟合 如 ...
- Andrew Ng Machine learning Introduction
1. 机器学习的定义:Machine learning is programming computers to optimize a performance criterion(优化性能标准) usi ...
- [C2P1] Andrew Ng - Machine Learning
About this Course Machine learning is the science of getting computers to act without being explicit ...
- Andrew Ng机器学习编程作业:Logistic Regression
编程作业文件: machine-learning-ex2 1. Logistic Regression (逻辑回归) 有之前学生的数据,建立逻辑回归模型预测,根据两次考试结果预测一个学生是否有资格被大 ...
随机推荐
- 2.1 Vue组件
Vue组件 全局组件和局部组件 父子组件通讯-数据传递 父->子:通过Props传递 子->父:不允许,但vue通过子组件触发Emit来提交给子组件进行触发 Slot import Cou ...
- MySQL主从复制之Mycat简单配置和高可用
什么是Mycat 1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等.因此,Mycat本身并不存储 ...
- 并发,three
引言 很久没有跟大家再聊聊并发了,今天LZ闲来无事,跟大家再聊聊并发.由于时间过去的有点久,因此LZ就不按照常理出牌了,只是把自己的理解记录在此,如果各位猿友觉得有所收获,就点个推荐或者留言激励下LZ ...
- Javascript和jquery事件--事件监听器
之前看完了js和jq的冒泡捕获和事件对象event,这里看看同时使用js和jq后我最容易混淆的监听器的绑定. (1) js的监听器绑定解绑 绑定监听器有两种方式: a.on-事件type,比如oncl ...
- change_names
DC在储存网表时,有时会采用特殊的字符 比如表示总线BUS[7]-BUS[0] 会表示成\BUS[7] \BUS[6]...... 在compile命令之后,write命令之前 加上:chan ...
- 安装orabbix
须知: (1). orabbix使用root用户安装. (2). orabbix安装在zabbix server端,而不是安装在Oracle端. 1.下载 Orabbix 2. 解压软件 un ...
- 源码笔记---MBProgressHUD
前言 作为初学者,想要快速提高自己的水平,阅读一些优秀的第三方源代码是一个非常好的途径.通过看别人的代码,可以学习不一样的编程思路,了解一些没有接触过的类和方法. MBProgressHUD是一个非常 ...
- cmake配置c++可调用的文件路径参数
一.目的 在程序中使用一个路径配置,因为在svn服务器的测试数据,测试数据成为了本地路径,在程序中使用了绝对路径来处理文件的输入,这个令人头疼啊. 每次下完代码,我得挨个地方去找,谁在用本地路径,有点 ...
- Linux环境编程之共享内存区(一):共享内存区简单介绍
共享内存区是可用IPC形式中最快的.一旦内存区映射到共享它的进程的地址空间,进程间数据的传递就不再涉及内核.然而往该共享内存区存放信息或从中取走信息的进程间通常须要某种形式的同步.不再涉及内核是指:进 ...
- php中模拟多继承如何实现
php中模拟多继承如何实现 一.总结 一句话总结:其实你继承别人也是想调用别人类里面的方法和属性,所以可以这样做:这本类中创建目标类的对象,然后通过这个对象来调用方法和属性,这样比继承来的方便. 二. ...