【Nan's 吴恩达机器学习笔记】第一、二章 引言&单变量线性回归
前言与提示
不同类型的学习算法。主要的两种类型被我们称之为:
监督学习(Supervised learning):我们将教计算机如何去完成任务;
无监督学习(Unsupervised learning):我们打算让计算机自己进行学习。
其他术语,诸如强化学习(Reinforcement learning)和推荐系统(recommender systems)等各种术语
1.3 监督学习
重点提醒
对于监督学习里的每条数据,我们已经清楚地知道,训练集对应的正确答案。
实例引入
-
预测房价
监督学习:给学习算法一个数据集。数据集由“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价。
学习算法的目的就是:算出更多的正确答案。
用术语来讲,房价预测是回归问题(Regression)——预测连续的输出值,即房价。 -
乳腺癌肿瘤判断
用术语来讲,肿瘤判断是个分类问题(Classification)——预测离散的输出值:0或1,或者可以多于两个值,每个值代表一个种类。
一般用不同的符号来表示这些数据,○和×。
若特征不止一个,可能无数个,以后会讲一个算法,叫支持向量机,里面的数学技巧,能让计算机处理无限多个特征。
1.4 无监督学习
重点提醒
所有的数据都没有任何的标签。它是学习策略,交给算法大量的数据,并让算法为我们从数据中找出某种结构。
无监督学习算法可能会把一个数据集中的这些数据,分成两个不同的簇。所以叫做聚类算法(Clustering algorithm)。
实例引入
- 鸡尾酒会
分离一个有两种重叠声音的音频,成为两个独立的音频。
当你使用正确的编程环境,许多学习算法是相当短的程序,Octave/Matlab编程环境:
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’);
奇异值分解(SVD)是内置的线性代数常规函数。
现在Python变主流了!
2 单变量线性回归(Univariable Linear Regression)
2.1 模型表示
在监督学习中我们有一个数据集,这个数据集被称训练集(training set)。
对于房价预测的这个回归问题,相关标记notation如下:
标记 | 含义 |
---|---|
m | 训练集中实例的数量/训练样本数量 |
x | 代表 特征 features/ 输入变量 |
y | 代表目标变量target / 输出变量 |
(x,y) | 代表训练集中的实例 |
( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)) | 第i 个训练实例,上标只是索引 |
h | 学习算法的解决方案或函数,也称为假设(hypothesis),h 是一个从x 到 y 的函数映射 |
一种可能的表达方式为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_θ (x)=θ_0+θ_1 x
hθ(x)=θ0+θ1x
因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
2.2 代价函数(Cost Function)
我们需要为模型选择合适的参数(parameters) θ 0 , θ 1 θ_0 ,θ_1 θ0,θ1,
选择的参数决定了得到的直线相对于我们的训练集的准确程度。
模型所预测的值h(x)与训练集中实际值y之间的差距(下图中蓝线所指)就是建模误差(modeling error)。
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。
即使得代价函数最小:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
J(θ_0,θ_1 )=\frac{1}{2m}∑_{i=1}^m(h_θ (x^{i})-y^{i})^2
J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)2
1/2 是为了方便梯度求导消除2。
1/m 是为了使cost function不依赖训练集中元素的个数。
代价函数也被称作平方误差函数。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段。
梯度下降算法(Gradient Descent Algorithm)
这是一种算法,能够自动地找出能使代价函数J最小化的参数
θ
0
θ_0
θ0和
θ
1
θ_1
θ1的值。
公式
梯度下降算法的公式为:
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
θ_j:=θ_j-α \frac{∂}{∂θ_j } J(θ)
θj:=θj−α∂θj∂J(θ)
在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数,多个参数是同时更新的。
学习率α
公式中的α是学习率(learning rate),它决定我们以多大的幅度更新这个参数θ。
- 如果a太小,它会一点点挪动,它会需要很多步才能到达全局最低点;
- 如果a太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛。
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小。
梯度下降将自动采取较小的幅度,实际上没有必要再另外减小α。
线性回归的梯度下降算法
批量梯度下降 Batch
指的是在梯度下降的每一步中,我们都用到了所有的训练样本。