斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素
机器学习的三要素为:模型、策略、算法。
模型:就是所要学习的条件概率分布或决策函数。
线性回归模型
策略:按照什么样的准则学习或选择最优的模型。
最小化均方误差,即所谓的 least-squares(在spss里线性回归对应的模块就叫OLS即Ordinary Least Squares):
算法:基于训练数据集,根据学习策略,选择最优模型的计算方法。
确定模型中每个θi取值的计算方法,往往归结为最优化问题。对于线性回归,我们知道它是有解析解的,即正规方程 The normal equations:
监督学习(Supervised Learning)
SupervisedLearning,Wiki
通过训练资料(包含输入和预期输出的数据集)去学习或者建立一个函数模型,并依此模型推测新的实例。函数的输出可以是一个连续的值(回归问题,Regression),或是预测一个分类标签(分类问题,Classification)。
机器学习中与之对应还有:
无监督学习(Unsupervised Learning)
强化学习(Reinforcement Learning)
在课程中定义了一些符号:
x(i):输入特征(input features)
y(i) :目标变量(target variable)
(x(i),y(i)) :训练样本(training example)
{(x(i),y(i));i=1,...,m} :训练集合(training set)
m :训练样本数量
h :假设函数(hypothesis)
线性回归(Linear Regression)
例子:房屋价格与居住面积和卧室数量的关系
在这里输入特征变成了两个x1,x2,目标变量就是价格
x1: Living area
x2: bedrooms
可以把它们称之为x的二维向量。
在实际情况中,我们需要根据你所选择的特征来进行一个项目的设计。
我们之前已经了解了监督学习,所以需要我们决定我们应该使用什么样的假设函数来进行训练参数。线性函数是最初级,最简单的选择。
所以针对例子假设函数:
其中的θ就是要训练的参数(也被成为权重),我们想要得到尽可能符合变化规律的参数,使得这个函数可以用来估计价格。
因为要训练θ,所以引入cost function(损失函数/成本函数)
对于线性规划问题,通常J函数(误差平方和)是碗状的,所以往往只会有一个全局最优解,不用过多担心算法收敛到局部最优解。
最小二乘法(LMS algorithm)
课程中的比喻很形象,将用最快的速度最小化损失函数 比作如何最快地下山。也就是每一步都应该往坡度最陡的方向往下走,而坡度最陡的方向就是损失函数相应的偏导数,因此算法迭代的规则是:
其中α是算法的参数learning rate,α越大每一步下降的幅度越大速度也会越快,但过大有可能导致算法无法收敛。
假设只有一个训练样本:(x,
更新函数为:θj:=θj+α(y(i)−hθ(x(i)))x(i)j
这就是最小二乘法(LMS, least mean squares)更新规则。
梯度下降(gradient descent)
在面对多个样本进行处理时,就需要在此基础上演变更新规则。有两种策略:
批量梯度下降 batch gradient descent
随机梯度下降 stochastic gradient descent (incremental gradient descent)
当训练样本量很大时,batch
gradient descent的每一步都要遍历整个训练集,开销极大;而stochastic gradient
descent则只选取其中的一个样本。因此训练集很大时,后者的速度要快于前者。
虽然 stochastic gradient
descent 可能最终不会收敛到最优解(代价函数等于0),大多数情况下都能得到真实最小值的一个足够好的近似。
正规方程组(normal equations)
梯度的矩阵表示
针对矩阵中的每个元素对 f 求导,将导数写在各个元素对应的位置。
矩阵的迹
一个 n×n 矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)。
对Normal Equation求解
推倒过程利用了矩阵的迹的性质。因为J(θ)是个实数,所以它的迹等于它本身。
线性模型的概率解释(Probabilistic interpretation)
为什么要在回归问题中使用最小二乘法?
首先引入误差(error term)概念,假设:
ε(i) 表示误差项,包含随机因素或未考虑因素。 假设误差满足概率分布,而且满足对应误差项彼此独立(IID, independently and identically distributed)。所以我们直接设 ε(i ) 满足Gaussian分布(正态分布)。ε(i ) ∼ N(0, σ2)
于是可以获得目标变量的条件概率分布:
再引入似然性函数(likelihood function)概念:
我们需要选择参数θ使得数据出现的可能性尽可能大,即最大化L(θ),这就是极大似然估计(maximum likelihood)。
为了数学计算上的便利,对L(θ)取对数。
因此,最大化对数似然函数,也就相当于最小化
也可以注意到 :δ2 的值不会影响我们的最终结果(因为所求的是θ,只要代价函数最小就可以确定θ的值,δ2是什么值并没有影响)。
局部加权线性回归 (Locally weighted linear regression,LWR)
在线性回归中,使用某个训练样本 x 通过评价h(x)来更新 θ 时,其余样本对更新的贡献是相同的;
在LWR中,使用某个训练样本 x 通过评价h(x)来更新 θ 时,离 x 近的点的重要性更高。
加权函数w的一个选择是指数衰减函数,是一个钟形 bell-shaped曲线,虽然长得像高斯分布,但它不是高斯分布:
|x(i) − x| 越小,距离越近,其权重w(i)越接近1; |x(i) − x|越大,则权重w(i)越小。
τ 被称为bandwidth带宽参数,控制 x(i) 的权重值随着离 x 距离大小而下降的速率。τ越大,下降速度越慢
在调整 θ 的过程中。如果x(i) 权重大,要努力进行拟合 使误差平方项最小。如果权重很小,误差平方项将被忽略。
对新的 x 进行预测时,LWR和线性回归也有区别:
- LWR是一个非参数算法 non-parametric algorithm:对每个新的 x 进行预测时,都需要利用训练集重新做拟合,代价很高(因此有课上的学生质疑这是否称得上是一个模型)。
- 线性回归是一个参数算法:参数个数是有限的,拟合完参数后就可以不考虑训练集,直接进行预测。
欠拟合与过拟合
(a)代表了欠拟合(underfitting),(c)代表了过拟合(overfitting),这也说明了在监督学习中特征的选择会对学习算法的性能产生很大的影响。
参数化与非参数化
参数学习算法 Parametric Learning algorithm
始终由固定的参数拟合数据。
如:线性回归(Linear regression)
h(x)
非参数学习算法 Non-parametric Learning algorithm
参数的数量不是恒定的,有时为了更好地实现假设,会随着训练集合数量的变化而线性变化。
如:局部加权回归(Locally weight regression)
h(x)
)
Fit θ to minimize ∑iw(i)(y(i)−θTx(i))2
Output θTx
likelihood 和 probability的区别
probability 强调 y 发生的概率
likelihood 强调给定一组x,y。找到 θ 使 x 条件下 y 发生的几率最大。
参考:
https://blog.csdn.net/TRillionZxY1/article/details/76290919
斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression的更多相关文章
- 斯坦福CS229机器学习课程笔记 part3:广义线性模型 Greneralized Linear Models (GLMs)
指数分布族 The exponential family 因为广义线性模型是围绕指数分布族的.大多数常用分布都属于指数分布族,服从指数分布族的条件是概率分布可以写成如下形式:η 被称作自然参数(nat ...
- 斯坦福CS229机器学习课程笔记 part2:分类和逻辑回归 Classificatiion and logistic regression
Logistic Regression 逻辑回归 1.模型 逻辑回归解决的是分类问题,并且是二元分类问题(binary classification),y只有0,1两个取值.对于分类问题使用线性回归不 ...
- 机器学习 (一) 单变量线性回归 Linear Regression with One Variable
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...
- Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 I 2.4 代价函数的直观理解 I ...
- TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现
此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学 ...
- [笔记]机器学习(Machine Learning) - 01.线性回归(Linear Regression)
线性回归属于回归问题.对于回归问题,解决流程为: 给定数据集中每个样本及其正确答案,选择一个模型函数h(hypothesis,假设),并为h找到适应数据的(未必是全局)最优解,即找出最优解下的h的参数 ...
- 斯坦福第四课:多变量线性回归(Linear Regression with Multiple Variables)
4.1 多维特征 4.2 多变量梯度下降 4.3 梯度下降法实践 1-特征缩放 4.4 梯度下降法实践 2-学习率 4.5 特征和多项式回归 4.6 正规方程 4.7 正规方程及不可逆性 ...
- 吴恩达机器学习(二) 单变量线性回归(Linear Regression with one variable)
一.模型表示 1.一些术语 如下图,房价预测.训练集给出了房屋面积和价格,下面介绍一些术语: x:输入变量或输入特征(input variable/features). y:输出变量或目标变量(out ...
随机推荐
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
功能需求: 分省市统计并展示全国雨量站的数目与位置. 常规做法: 分省市雨量站的数目通过统计表的形式在页面端展示,位置根据XY坐标信息将雨量站标绘在图上. 优化做法: 去掉统计图的展示方式,直接将各省 ...
- ss-libev 源码解析local篇(1): ss_local的启动,客户端连入
学习研究ss-libev的一点记录(基于版本3.0.6) ss_local主要代码在local.c中,如果作为一个库编译,可通过start_ss_local_server启动local server. ...
- ajax函数里不能用this调用
ajax函数里不能用this调用,想用的话,在ajax外面弄个变量var mythis = $(this),然后在里面用就行了 因为,在ajax方法里写$(this)指向的是最近调用它的jquery对 ...
- VS 2010 转到COFF期间失败。
可能的原因是framework 版本不匹配,我卸载4.5,装4.0后就解决了
- OSPF 配置
封装在IP层:协议号 89 hello时间是dead时间的1/4 224.0.0.5 .在点到点网络, 比如T1线路,是连接单独的一对路由器的网络, 点到点网络上的有效邻居总是可以形成邻接关系的,在这 ...
- (八)js函数二
1.变量 a)局部变量:在所有函数内部定义的变量,或者在函数内部未使用var声明的变量也属于全局变量. b)全局变量:在所有函数外部定义的变量. eg: 1) var a = 5,b = 4, ...
- 运用 jenkins 让你的项目优雅的持续化集成
0.到系统管理->系统设置 1.安装插件 Publish over SSH 2.配置 Publish over SSH 参数 1.pass 是私钥密码,此私钥文件放在安装 jenkins 的主机 ...
- test20181219 连续段的期望
题意 连续段的期望 [问题描述] 小N最近学习了位运算,她发现2个数xor之后数的大小可能变大也可能变小,and之后都不会变大,or之后不会变小.于是她想算出以下的期望值:现在有 N个数排成一排,如果 ...
- Oracle记录(二) SQLPlus命令
对于Oracle数据库操作主要使用的是命令行方式,而所有的命令都使用sqlplus完成,对于sqlplus有两种形式.就我个人而言,还是比较喜欢UNIX与Linux下的Oracle.呵呵 一种是dos ...
- ubuntu下安装ros出现“无法下载-package.ros.org中某个包-校验和不符”的解决方法
新安装的Ubuntu14.04,为了科研马上准备装ros indigo,却困难重重,一步一个坎. 比如说按照ros wiki里面一步一步来,当运行sudoapt-get update 然后出现下列情况 ...