斯坦福CS229机器学习课程笔记一:线性回归与梯度下降算法

应该是去年的这个时候,我开始接触机器学习的相关知识,当时的入门书籍是《数据挖掘导论》。囫囵吞枣般看完了各个知名的分类器:决策树、朴素贝叶斯、SVM、神经网络、随机森林等等;另外较为认真地复习了统计学,学习了线性回归,也得以通过orange、spss、R做一些分类预测工作。可是对外说自己是搞机器学习的还是不太自信,毕竟和科班出身的各位大牛相比自己对这些模型、算法的理解只能算是“知其然而不知其所以然”,用起来总感觉哪里不对劲。

因此,去年早早地就把网易公开课上Andrew大神的斯坦福CS229课程以及相应的讲义下载了下来,但每次一想学,看到每集1个多小时的内容就望而生却,感觉没有足够的整块的时间来学习。好在过年回家期间,实在没有其他借口不学了,于是才能有这篇学习笔记……截止今天下午,刚好学完了前四课,听Andrew Ng讲完了GLM广义线性模型的相关内容。真的是感觉相见恨晚。我要向所有看到本文的同学推荐这个课程(虽然是07年的)。

机器学习三要素

机器学习的三要素为:模型、策略、算法。
这些知识来自于李航写的《统计学习方法》。“外国的老师善于形象化地举例,中国的老师善于总结归纳”这句话还是很有道理的,适当的归纳有助于理清我们的思路,不知大家是否有和我类似的疑惑:“线性回归是模型还是算法?”,“SVM是模型还是算法?”接下来我会结合自己的思考,从模型、策略、算法的角度整理学习笔记。

Linear Regression线性回归

1.三要素

模型:就是所要学习的条件概率分布或决策函数。
相信线性回归模型大家都很熟悉(高三时就学过):

策略:按照什么样的准则学习或选择最优的模型。
学过线性回归的同学应该记得最小化均方误差,即所谓的least-squares(在spss里线性回归对应的模块就叫OLS即Ordinary Least Squares):

算法:基于训练数据集,根据学习策略,选择最优模型的计算方法。
确定模型中每个θi取值的计算方法,往往归结为最优化问题。对于线性回归,我们知道它是有解析解的,即The normal equations:

因为我不是做科研的,所以解析解的推导没有细看。(我猜很多人可能就是在第二集中段看到这么复杂的推导而放弃继续学习的。)在推导解析解之前,NG还介绍了一个很重要的算法:

2.gradient descent algorithm 梯度下降算法

课程中的比喻很形象,将用最快的速度最小化损失函数,比作如何最快地下山,也就是每一步都应该往坡度最陡的方向往下走,而坡度最陡的方向就是损失函数相应的偏导数,因此算法迭代的规则是:

其中α是算法的参数learning rate,α越大每一步下降的幅度越大速度也会越快,但过大有可能导致算法不准确。
另外对于线性规划问题,通常J函数(误差平方和)是碗状的,所以往往只会有一个全局最优解,不用过多担心算法收敛到局部最优解。

当训练集的样本量大于1时,有两种算法:
batch gradient descent 批量梯度下降

stochastic gradient descent (incremental gradient descent) 随机梯度下降

当训练样本量很大时,batch gradient descent的每一步都要遍历整个训练集,开销极大;而stochastic gradient descent则只选取其中的一个样本,因此后者的速度要快于前者。另外,虽然stochastic gradient descent可能不会收敛,但是实践当中大多数情况下得到的结果都是真实最小值的一个足够好的近似。

3.为什么在选择策略时,我们使用的是误差平方和,而不是绝对值或其他损失函数?

首先我们得复习一下线性回归的模型及假设:

ε(i) ∼ N(0, σ2),随机误差ε服从正态分布(高斯分布)
ε(i) are distributed IID,随机误差ε是独立同分布的
于是可以获得目标变量的条件概率分布:

整个训练集的似然函数,与对数似然函数分别为:

因此,最大化对数似然函数,也就相当于最小化

4.Locally weighted linear regression (LOESS)

LOESS与线性回归的区别

加权函数w的一个选择是

|x(i) − x|越小,权重w(i)越接近1;越大,则权重越小
τ被称为bandwidth参数,控制权重下降的快慢,τ越大下降速度越慢

  • LOESS是一个非参数算法:对于不同的输入变量,需要利用训练集临时重新拟合参数。
  • 线性回归是一个参数算法:参数个数是有限的,拟合完参数后就可以不考虑训练集,直接进行预测。
  • LOESS可以缓解特征选择的需求(是否为一个特征添加高次项)

总结

本来想一口气写完前四节课的笔记,但发现量还是太大了还是分开写吧。总结一下收获:

    1. 记住了机器学习三要素,不会再把模型和算法搞混了
    2. 了解了梯度下降算法,包括批量梯度下降与随机梯度下降
    3. 从最大化似然函数的角度明白为什么线性回归使用误差平方和作为损失函数是一个好的选择
    4. 了解一个非参数算法,局部加权线性回归
时间: 2024-08-24 19:31:41

斯坦福CS229机器学习课程笔记一:线性回归与梯度下降算法的相关文章

斯坦福CS229机器学习课程笔记六:学习理论、模型选择与正则化

稍微了解有监督机器学习的人都会知道,我们先通过训练集训练出模型,然后在测试集上测试模型效果,最后在未知的数据集上部署算法.然而,我们的目标是希望算法在未知的数据集上有很好的分类效果(即最低的泛化误差),为什么训练误差最小的模型对控制泛化误差也会有效呢?这一节关于学习理论的知识就是让大家知其然也知其所以然. 学习理论 1.empirical risk minimization(经验风险最小化) 假设有m个样本的训练集,并且每个样本都是相互独立地从概率分布D中生成的.对于假设h,定义training

斯坦福CS229机器学习课程笔记二:GLM广义线性模型与Logistic回归

一直听闻Logistic Regression逻辑回归的大名,比如吴军博士在<数学之美>中提到,Google是利用逻辑回归预测搜索广告的点击率.因为自己一直对个性化广告感兴趣,于是疯狂google过逻辑回归的资料,但没有一个网页资料能很好地讲清到底逻辑回归是什么.幸好,在CS229第三节课介绍了逻辑回归,第四节课介绍了广义线性模型,综合起来总算让我对逻辑回归有了一定的理解.与课程的顺序相反,我认为应该先了解广义线性模型再来看逻辑回归,也许这也是为什么讲逻辑回归的网页资料总让人感觉云里雾里的原因

斯坦福CS229机器学习课程笔记七:算法诊断、误差分析以及如何开始一个机器学习问题

这一节是Andrew对应用机器学习给出的建议,虽然没有数学公式,但却是十分重要的一课. Debugging Learning Algorithms 假设要做一个垃圾邮件分类的模型,已经从海量的词汇表中选出一个较小的词汇子集(100个单词)作为特征. 用梯度上升算法实现了贝叶斯逻辑回归,但测试集的错误率达到了20%,这显然太高了. 如何解决这个问题? 收集更多的训练样本 进一步减少特征数 增加特征数 改变特征(考虑邮件标题/正文) 将梯度上升多运行几个迭代 尝试牛顿方法 使用不同的λ 改用SVM

斯坦福CS229机器学习课程笔记三:感知机、Softmax回归

为了给课程的前四讲画上一个句号,这里补充两个前四讲中Andrew大神提到过的模型. The perceptron learning algorithm 感知机 模型:从模型上来看感知机与逻辑回归十分相似,只不过逻辑回归的g函数是逻辑函数(又称sigmoid函数),它是一条从y值0到1的连续曲线.当z→∞,g(z)→1:当z → −∞,g(z)→0.g(z) = 1/(1+e-z)而感知机的g函数是分段函数,只输出0和1.虽然和逻辑回归形式上相近,但是很难为感知机的预测加上概率解释,也很难说感知机

斯坦福CS229机器学习课程笔记五:支持向量机 Support Vector Machines

SVM被许多人认为是有监督学习中最好的算法,去年的这个时候我就在尝试学习.不过,面对长长的公式和拗口的中文翻译最终放弃了.时隔一年,看到Andrew讲解SVM,总算对它有了较为完整的认识,总体思路是这样的:1.介绍间隔的概念并重新定义符号:2.分别介绍functional margins与geometric margins:3.由此引出最大间隔分类器,同时将最优化问题转化为凸函数的优化问题:4.补充了拉格朗日对偶性的知识:5.利用拉格朗日对偶性,推导最大间隔分类器最优化的对偶问题,即SVM的最优

斯坦福CS229机器学习课程笔记四:GDA、朴素贝叶斯、多项事件模型

生成学习与判别学习 像逻辑回归,用hθ(x) = g(θTx) 直接地来建模 p(y|x; θ) :或者像感知机,直接从输入空间映射到输出空间(0或1),它们都被称作判别学习(discriminative learning).与之相对的是生成学习(generative learning),先对 p(x|y) 与 p(y) 建模,然后通过贝叶斯法则导出后验条件概率分布分母的计算规则为全概率公式:p(x) = p(x|y = 1)p(y = 1) + p(x|y =0)p(y = 0).这一节介绍的

斯坦福大学机器学习课程笔记: 逻辑回归以及梯度下降

斯坦福大学机器学习课程原始讲义(含公开课视频) (转载)

http://blog.csdn.net/v_july_v/article/details/7624837 斯坦福大学机器学习课程原始讲义 本资源为斯坦福大学机器学习课程原始讲义,为Andrew Ng 所讲,共计20个PDF,基本涵盖了机器学习中一些重要的模型.算法.概念,此次一并压缩上传分享给大家,朋友们可以直接点击右边下载:斯坦福大学机器学习课程原始讲义.zip. 斯坦福大学机器学习公开课视频 与之配套的则是斯坦福大学的机器学习公开课的视频: 1. 网易翻译的公开课视频:http://v.1

Stanford机器学习课程笔记——单变量线性回归和梯度下降法

Stanford机器学习课程笔记--单变量线性回归和梯度下降法 1. 问题引入 单变量线性回归就是我们通常说的线性模型,而且其中只有一个自变量x,一个因变量y的那种最简单直接的模型.模型的数学表达式为y=ax+b那种,形式上比较简单.Stanford的机器学习课程引入这个问题也想让我们亲近一下machine learning这个领域吧~吴恩达大神通过一个房屋交易的问题背景,带领我们理解Linear regression with one variable.如下: 不要看这个问题简答,大神就是大神