Linear Regression总结
作者:洞庭之子
微博:洞庭之子-Bing
(2013年11月)
关于linear regression,Andrew Ng老师的课程中介绍了两种方法:gradient descent(梯度下降法)和normal equation,《机器学习实战》中直接使用的normal equation及其改进方法,本文记录对着两种方法的学习笔记。
第一部分,Gradient Descent方法
上一篇博客总结的是logistic regression(http://blog.csdn.net/dongtingzhizi/article/details/15962797),这一篇反过来总结linear regression,实际上这篇应该写在前面的。由于在上一篇中对regression问题的步骤、递归下降方法、向量化(vectorization)等都做了很详细的说明,在这一篇中将不再重复,需要的话可以回过头去看上一篇。
上一篇中介绍的regression问题的常规步骤为:1,寻找h函数(即hypothesis);2,构造J函数(损失函数);3,想办法是的J函数最小并求得回归参数(θ),下面一次看看这些步骤。
(一)h函数
每个训练样本有n个特征,例如Andrew Ng老师的课程中给的房价预测的例子,影响房价的因素有n个,如下图:
一般表示格式按如下约定,第i条样本的输入x(i):
所有训练样本的输入表示为x,输出表示为y:
θ就是我们要求的回归参数,因为是线性回归,所以为没个特征x(i)添加一个参数θ(i),所以h函数的形式如下:
为了公式表示方便,将x0设定为1,同时将所有θ表示成向量:
则有:
.
(二)J函数
linear regression中一般将J函数取成如下形式:
至于为什么取成该式,这里不进行深入的分析和推导,网上有一篇文章《Standford机器学习+线性回归CostFunction和Normal+equation的推导》进行了推导,可供参考。
(三)gradient descent
用梯度下降法求J(θ)的最小值,梯度下降法就是如下的过程(α表示学习率):
对于上面给出的J(θ),有:
所以θ的迭代公式为:
(四)其他问题
1. Feature scaling
Feature scaling可以通俗的解释为:将不同特征的取值转换到差不多的范围内。因为不同特征的取值有可能有很大的差别(几个数量级),例如下图中的x1和x2差别就非常大。这样会带来什么后果呢?从左图中可以看出,θ1-θ2的图形会是非常狭长的椭圆形,这样非常不利于梯度下降(θ1方向会非常“敏感”,或者说来回“震荡”)。进行scaling处理后,不同特征的规模相似,因此右图中的θ1-θ2图形会近似为圆形,这样更加适合梯度下降算法。
scaling也有不同的方法:
(1)例如上图中就是用特征值除以该组特征的最大值;
(2)下图中的mean normalization方法(姑且称为“均值归一化”),即用特征值先减去该组特征的平均值,然后再除以该组特征的最大值;
(3)上面两种方法显然还不是最合理的,下图的底部给出的公式x(i) = (x(i) - u(i)) / s(i),x(i)表示x的第i组特征(例如房屋面积,或者卧室数目等),u(i)表示第i组特征的均值,s(i)表示第i组特征的范围(最大值减最小值)或者标准差。
使用(3)中标准差的方法对前面的训练样本x矩阵进行归一化的代码如下:
2. vectorization
这样,不需要for循环,使用矩阵计算可以一次更新θ矩阵。
3. 关于学习率α
α的选取对于梯度下降法是非常关键的,选取合适的话J(θ)能顺利下降并最终收敛,如果选取不合适的话J(θ)可能下降非常缓慢,也有可能最终发散。
下图是J(θ)随迭代过程顺利下降的情况,图中还提到:可以声明当一次迭代后J(θ)减小的幅度小于某个阈值(如10e-10)时认为已经收敛,此时可以停止迭代过程。
下图是递归下降失败的情况,J(θ)未能随每次迭代顺利下降,说明α太大,当α充分小时,每一步迭代J(θ)都会下降的。所以,此时可以尝试减小α。
但是,当α过于小时,J(θ)会下降的非常缓慢,因此需要迭代更多次数才能达到效果,浪费计算资源。所以要选择合适的α值,太大太小都不合适。一般在训练样本时,多次尝试不同的α值,对比结果(可以绘制出J(θ)迭代的图形)后进行选择。Andrew
Ng老师在课程中也给出了α尝试的方法:先选择一个较小的α值,收敛太慢的话以3倍来增加α值。
第二部分,Normal equation方法
因为
gradient descent方法需要迭代很多次是的J(θ)达到最小值求得θ,自然而然的会有一种疑问:能不能不迭代,一次求得所需的θ呢?答案是肯定的,normal
equation就是这样一种方法。关于normal equation,Andrew ng老师的课程中介绍的非常简单,几乎是直接给出了下面的公式。《机器学习实战》中也没有讲具体的推导,也是给出了该公式(P138页)。但是,二者都提到一个基本的数学原理,那就是当J(θ)对所有θj的偏导等于0时,J(θ)取最小值(高等数学中有当导数等于0时函数达到极值)。
《机器学习实战》中(P138页)提到对矩阵(y-Xw)T(y-Xw)求导,得到XT(y-Xw),令其等于零可以解得上面的公式,这里我真心没有明白,求高手解释。
网上的一篇文章《Standford机器学习+线性回归CostFunction和Normal+equation的推导》给出了推导过程,应该是靠谱的。
此时,真心觉得自己的线性代数太弱爆了,急需恶补啊!(等补补线性代数再回过头来看看吧)
正如Andrew
ng老师所说,不管对该公式的推导过程理不理解,并不妨碍使用该公式进行Linear Regression处理。
(1)关于non-invertibility
当|XTX|=0时XTX是不可求逆矩阵的,如何使用normal
equation呢?下面是Andrew ng老师的课程中给出的:
两种可能的解决方法:1.如果存在冗余的特征(冗余特征间存在线性依赖),去掉冗余特征;2.特征数量太大(m<=n,即样本数小于特征数),应该去掉一些特征或者使用regularization。regularization是一种消除overfitting的方法,Andrew
ng老师的课程中有详细的介绍,使用了regularization的normal equation方法就不存在non-invertibility的问题了,貌似就是《机器学习实战》中介绍的局部加权线性规划方法。
《机器学习实战》中甚至介绍了更多的normal
equation改进方法:局部加权线性规划,岭回归,lasso,前向逐步回归。功力不够,还没能好好理解,得继续努力啊!
总结
对比一下上面两种方法,下图是Andrew ng老师的课程中给出的:
总结一下二者的优缺点:
(1)gradient descent需要选择一个合适的学习率α,前面讲到过,要寻找一个合适的α的过程时比较繁琐的(绘制J(θ)的收敛趋势图进行对比);
(2)gradient descent需要迭代很多次,而normal
equation只需一次计算;
(3)当n(特征数)非常大时,gradient
descent没有问题,但是normal equation的效率会非常低。解释一下:normal equation方法使用的是矩阵计算,上面公式中的(XTX)-1是计算一个(n*n)矩阵的逆,时间复杂度是O(n3),所以当n非常大时,效率会非常低。Andrew
ng老师说到,当n多大时使用gradient descent多大时使用normal equation,没有一个明确的分界线。当n较小时一般使用normal equation比较快捷方便,一般当n达到1000,000时,应该开始考虑gradient
descent;
(4)我觉得还有一点也是比较突出的差别吧,gradient
descent需要进行Feature scaling处理,而normal equation不用。
分享到:
相关推荐
线性回归是机器学习中最基础且重要的算法之一,主要用于预测连续数值型的输出。在《机器学习基石》课程中,讲师林轩田讲解了线性回归的原理和应用。线性回归模型假设输入特征和输出之间存在线性关系,通过找到最佳...
这份笔记是对斯坦福大学提供的机器学习课程视频的个人理解与总结。通过这份笔记,读者可以了解机器学习的基本概念、核心技术和实际应用场景。 ##### 1.2 机器学习是什么? 机器学习是一种人工智能领域的研究分支,...
线性回归(Linear Regression)是机器学习中最基础的模型之一,用于预测连续值输出。笔记中分别介绍了单变量线性回归和多变量线性回归,并详细解释了正规方程的使用。 逻辑回归(Logistic Regression)是分类问题中...
《机器学习学习笔记》是由Jim Liang编写的700多页的PPT教程,它为初学者提供了全面而深入的机器学习入门指导。这份资料涵盖了广泛的机器学习主题,包括基础概念、算法以及实践应用。以下是对每个主要知识点的详细...
以上所提及的机器学习笔记内容,涵盖了从基础概念到模型应用,再到算法优化的各个方面,为读者提供了一个机器学习的全景视图,无论是初学者还是有一定基础的读者,都能够从中获得有用的知识和启示。
课程笔记涵盖了从机器学习的介绍到具体模型的实现,如单变量和多变量线性回归。以下是这些知识点的详细解释: 1. **机器学习介绍** - **什么是机器学习?** 机器学习是人工智能的一个分支,它使计算机系统通过经验...
根据提供的文件信息,李弘毅的机器学习笔记内容涵盖了机器学习领域的多个核心概念和学习方法。以下是从标题、描述、标签以及部分文件内容中提炼出的知识点: ### 标题:李弘毅机器学习笔记 ### 描述:李弘毅机器...
标题中的“最牛吴恩达老师的机器学习笔记”,指向了吴恩达(Andrew Ng)教授的机器学习课程,他是机器学习和人工智能领域的权威专家,在斯坦福大学以及在在线教育平台Coursera上都有广泛的影响力。他的课程通常对...
2. 线性回归(Linear Regression) - 单变量线性回归(Linear Regression with One Variable):用于预测一个连续值输出,模型基于单个输入特征来预测结果。 - 多变量线性回归(Linear Regression with Multiple ...
### 斯坦福机器学习笔记v4.21 #### 一、引言(Introduction) ##### 1.1 欢迎 欢迎来到斯坦福大学的机器学习课程笔记。这是一份由黄海广同学整理的针对斯坦福大学2014年机器学习课程的个人笔记,版本为V4.21,最后...
标题《机器学习视频笔记》所涉及的知识点非常丰富,涵盖了机器学习领域的多个重要概念和技术,下文将对标题和描述中提及的内容进行详细解读: 1. 机器学习的基本概念 - 什么是机器学习?:机器学习是人工智能的一个...
### 斯坦福大学机器学习笔记(中文版)——核心知识点概述 #### 一、机器学习简介 **1.1 什么是机器学习?** 机器学习是计算机科学的一个分支,它研究如何让计算机从数据中自动“学习”并改进其性能。这种学习过程不...
这些笔记覆盖了机器学习中的基础理论、常用算法及其背后的数学原理,对于深入理解机器学习有着重要作用。通过吴恩达教授的课程,你可以系统地学习并掌握这些知识,提升你在机器学习领域的专业素养。
监督学习算法:线性回归(Linear Regression)逻辑回归(Logistic Regression)决策树(Decision Trees)随机森林(Random Forests)支持向量机(Support Vector Machines)朴素贝叶斯(Naive Bayes)K近邻算法(K-...
监督学习算法:线性回归(Linear Regression)逻辑回归(Logistic Regression)决策树(Decision Trees)随机森林(Random Forests)支持向量机(Support Vector Machines)朴素贝叶斯(Naive Bayes)K近邻算法(K-...
在给定的文件信息中,我们可以看到一些关于机器学习的重要知识点,这些内容是基于著名的人工智能专家Andrew NG的课程笔记。为了详细阐述这些知识点,我将依照文档内容的结构,将每一部分的重要信息进行梳理。 首先...
### 斯坦福机器学习笔记知识点总结 #### 1. 机器学习介绍 - **1.1 什么是机器学习?** - 机器学习是一种数据分析技术,它使计算机能够在不进行明确编程的情况下“学习”。其核心是构建算法,通过这些算法来解析...
上述知识点覆盖了吴恩达机器学习课程中的核心概念和算法,包括监督学习、无监督学习、线性回归、逻辑回归、正则化、神经网络、支持向量机、聚类、降维、异常检测、推荐系统以及大规模机器学习问题的解决策略等。...
3. 全英文机器学习笔记:Jim Liang创建的笔记使用英文编写,这说明文档是针对有英文基础的读者,或者希望在英文环境中学习机器学习的人群。学习笔记可能是对机器学习领域内知名算法的详细解读,并可能包含个人的理解...