Andrew Ng机器学习公开课笔记 -- Logistic Regression

网易公开课,第3,4课 
notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf

前面讨论了线性回归问题, 
符合高斯分布,使用最小二乘来作为损失函数

下面继续讨论分类问题,分类问题和回归问题不同在于Y的取值是离散的 
我们先讨论最简单的binary classification,即Y的取值只有0和1 
分类问题一般不会使用回归模型,因为回归模型是输出是连续的,而分类问题需要的输出是离散的

但是一定要用也不是不可以,比如这里继续使用线性回归模型,但是不是非常适合 
原因如下, 
首先线性模型的Y取值是连续,且没有限制的,而二元分类的取值为[0,1],对于线性回归模型,参考下图,可以以0.5为分界线,大于则取1,小于则取0,也可以转化为离散的结果 
再者,其实只有在分界线周围的样本点对分类模型会有比较大的影响,而比较远的样本点其实对模型没啥影响 
但对于线性模型而言,增加任何样本点都会对模型产生相同的影响

 
所以提出logistic回归模型,这种回归模型可以比较好的解决二元分类问题 
从本质上你仍然可以把他理解为线性模型, 
你可以看下面给出的H函数,只是在线性回归外面加上logistic函数进行转换,可以理解成把上图的直线转化为那条sigmoid曲线,使其更加符合二元分类的需求 
但是本质上可以看成仍然是用那条直线进行划分 
参考,对线性回归,logistic回归和一般回归的认识

 

Logistic function(Sigmoid function) 
下面给出H函数 
 
由这个函数生成的曲线称为Sigmoid曲线,这个曲线很有说道,参考http://t.cn/8st3jG1 
 
先不从数学上说为什么这个模型中二元分类上比线性模型好,单纯从图形上看就可以得到直观的结论 
首先Y值域在[0,1],其次图形中中间陡峭而两边平缓,符合二元分类的样本点特性

确定了模型,下面要做的是fit最优的θ,仍然是采用最大似然法,即找出对训练数据可能性最大的那个θ

前面对于线性回归问题,符合高斯分布(连续回归问题往往符合高斯分布),最终我们由最大似然推导出最小二乘回归 
但是对于二元分类,符合伯努利分布(the Bernoulli distribution, 又称两点分布,0-1分布),因为二元分类的输出一定是0或1,典型的伯努利实验 
by the way,二项分布是n次独立的伯努利实验形成的概率分布,当n=1时,就是伯努利分布 
同样,如果离散输出是多个值,就是符合多项分布 

看看由最大似然可以推导出什么 
首先给出伯努利分布 
 
是否好理解,给定x;θ,y=1的概率等于h的值,看看图中,当然是h的值越大越可能为1,越小越可能为0 
那么这个式子可以合并写成,比较tricky的写法,Y为0或1,总有一项为1 
 
那么θ的似然函数定义为,θ的可能性取决于模型对训练集拟合的好坏 
  
同样为了数学计算方便,定义log likelihood, 

很显然,对于伯努利分布,这里无法推导出最小二乘呵呵 
下面要做的是找到θ使得ℓ(θ)最大,由于这里是找最大值而非最小值,所以使用梯度上升(gradient ascent),道理是一样的 
首先计算梯度,计算过程参考原文 
 
所以最终随机梯度上升rule写成, 
 
这个梯度公式,奇迹般的和线性回归中的梯度公式表面上看是一样的,可以仔细比较一样的 
之所以说表面上,是因为其中的 是不同的,这里是logitics函数

 

Perceptron Learning Algorithm(感知机算法) 
这里谈感知机,好像有些离题,但是你看下感知机的函数 
   
单纯从直观图形的角度,似乎是逻辑函数的简化形式 
逻辑函数是连续的在[0,1]区间上,而感知机直接非0则1,参考下图红线 
  
同样使用梯度下降的感知机算法也是和上面相同的形式 
 
同样不同的仅仅是h(x) 
1960s,感知机被看作是大脑工作中独立神经元的粗糙的模型,由于简单,会用作后面介绍的学习算法的起点 
虽然直观看上去感知机和之前看到的logistic回归或最小二乘回归很像,但是其实是非常不一样的算法 
因为,对于感知机,很难赋予一种有意义的概率解释(probabilistic interpretations),或使用最大似然估计算法来推导感知机算法 
而对于最小二乘或logistic都可以给出像高斯分布或伯努利分布的概率解释,并可以使用最大似然进行推导

 

牛顿算法(Newton’s method) 
前面我们说道使用梯度上升法来求解maximizing ℓ(θ) 
现在介绍另外一种收敛速度更快的算法来求解,称为牛顿法 
也很简单,看下面的图

对于梯度下降,每次只是在梯度方向(导数,切线)下降一小步(取决于学习速度参数) 
而牛顿法是一直下降到导数(切线)和θ轴交界的那个θ,直观上可以看出这个下降速度确实很快 
而其中θ下降了图中红线部分,通过三角计算很容易算出 
故牛顿法的rule为,最终找到f(θ) = 0的点 

好,现在看我们的问题,解逻辑回归就是要找到max(ℓ ),即ℓ′(θ)=0的点 
 
代入牛顿法,即f(θ) = ℓ′(θ) 
所以逻辑回归的牛顿法的rule公式,写为 

但这里我们只是考虑一个θ的情况,实际情况下参数会有多个,即θ其实是一个向量 
那么对于θ向量,牛顿法的公式会变成怎样? 
 
其中∇ℓ(θ)也是个向量,是ℓ(θ)对于每个θi的偏导的结果 
其中H是个n-by-n matrix,其实一般是n + 1-by-n + 1,因为如果有n个参数θi,还会有个截距项 
H矩阵称为Hessian,矩阵中每一项定义为 
 

和梯度下降比,牛顿法会带来更快的收敛速度和更少的迭代次数 
但相应的每次迭代会需要更大的计算量,因为需要计算 
所以当θ的参数个数不是很多的时候,牛顿法会比较适合

本文章摘自博客园,原文发布日期:2014-03-28 

时间: 2025-01-02 00:07:19

Andrew Ng机器学习公开课笔记 -- Logistic Regression的相关文章

Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection

网易公开课,第10,11课  notes,http://cs229.stanford.edu/notes/cs229-notes5.pdf   Model Selection 首先需要解决的问题是,模型选择问题,如何来平衡bais和variance来自动选择模型?比如对于多项式分类,如何决定阶数k,对于locally weighted regression如何决定窗口大小,对于SVM如何决定参数C  For instance, we might be using a polynomial reg

Andrew Ng机器学习公开课笔记–Principal Components Analysis (PCA)

网易公开课,第14, 15课  notes,10 之前谈到的factor analysis,用EM算法找到潜在的因子变量,以达到降维的目的 这里介绍的是另外一种降维的方法,Principal Components Analysis (PCA), 比Factor Analysis更为直接,计算也简单些 参考,A Tutorial on Principal Component Analysis, Jonathon Shlens   主成分分析基于, 在现实中,对于高维的数据,其中有很多维都是扰动噪音

Andrew Ng机器学习公开课笔记 -- Generalized Linear Models

网易公开课,第4课  notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 前面介绍一个线性回归问题,符合高斯分布  一个分类问题,logstic回归,符合伯努利分布 也发现他们有些相似的地方,其实这些方法都是一个更广泛的模型族的特例,这个模型族称为,广义线性模型(Generalized Linear Models,GLMs) The exponential family 为了介绍GLMs,先需要介绍指数族分布(exponential fa

Andrew Ng机器学习公开课笔记 -- 支持向量机

网易公开课,第6,7,8课  notes,http://cs229.stanford.edu/notes/cs229-notes3.pdf SVM-支持向量机算法概述, 这篇讲的挺好,可以参考   先继续前面对线性分类器的讨论,  通过机器学习算法找到的线性分类的线,不是唯一的,对于一个训练集一般都会有很多线可以把两类分开,这里的问题是我们需要找到best的那条线 首先需要定义Margin,  直观上来讲,best的那条线,应该是在可以正确分类的前提下,离所有的样本点越远越好,why?  因为越

Andrew Ng机器学习公开课笔记 -- Generative Learning algorithms

网易公开课,第5课  notes,http://cs229.stanford.edu/notes/cs229-notes2.pdf 学习算法有两种,一种是前面一直看到的,直接对p(y|x; θ)进行建模,比如前面说的线性回归或逻辑回归,这种称为判别学习算法(discriminative learning algorithms) 另外一种思路,就是这里要谈的,称为生成学习算法(generative learning algorithms),区别在于不会直接对p(y|x; θ)进行建模,而是对p(x

Andrew Ng机器学习公开课笔记 -- 学习理论

网易公开课,第9,10课  notes,http://cs229.stanford.edu/notes/cs229-notes4.pdf 这章要讨论的问题是,如何去评价和选择学习算法   Bias/variance tradeoff 还是用这组图,学习算法追求的是generalization error(对未知数据的预测误差),而不是training error(只是对训练集) 最左边,underfit,我们说这种学习算法有较大的bias  Informally, we define the b

Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降

网易公开课,监督学习应用.梯度下降  notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 线性回归(Linear Regression) 先看个例子,比如,想用面积和卧室个数来预测房屋的价格  训练集如下  首先,我们假设为线性模型,那么hypotheses定义为  , 其中x1,x2表示面积和#bedrooms两个feature  那么对于线性模型,更为通用的写法为   其中把θ和X看成向量,并且x0=1,就可以表示成最后那种,两个向量

Andrew Ng机器学习公开课笔记–Reinforcement Learning and Control

网易公开课,第16课  notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么  但某些sequential decision making问题,比如下棋或直升机自动驾驶  无法确切知道,下一步怎么样是正确的,因为这是一个连续和序列化的决策,比如直到最终直升机crash或下棋输了,你才知道之前的选择是不好的,但中间那么多步决策,到底是哪部分出了问题,可见这是个比较复杂的问题 强化学习,基本思路就是,既然不知道怎样是正确的,那就随便try,然

Andrew Ng机器学习公开课笔记 – Factor Analysis

网易公开课,第13,14课  notes,9 本质上因子分析是一种降维算法  参考,http://www.douban.com/note/225942377/,浅谈主成分分析和因子分析 把大量的原始变量,浓缩成少数几个因子变量  原始变量,代表浅层的表面现象,所以一定是很多和繁杂的  而因子变量,是代表深层的本质,因,是无法直接观察到的 所以因子分析,就是拨开现象发现本质的过程...很牛逼的感觉 举个例子,观察一个学生,你可以统计到很多原始变量, 代数,几何,语文,英语各科的成绩,每天作业时间,