单变量线性回归
Model representaion模型描述
线性回归算法:了解监督学习过程完整的流程
它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题。回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是0/1离散输出的问题。更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集。
假使我们回归问题的训练集(Training Set)如下表所示:
我们将要用来描述这个回归问题的标记如下:
m
m
m 代表训练集中实例的数量
x
x
x 代表特征/输入变量
y
y
y 代表目标变量/输出变量
(
x
,
y
)
\left( x,y \right)
(x,y) 代表训练集中的实例
(
x
(
i
)
,
y
(
i
)
)
({{x}^{(i)}},{{y}^{(i)}})
(x(i),y(i)) 代表第
i
i
i 个观察实例/训练样本
h
h
h 代表学习算法的解决方案或函数也称为假设(hypothesis)
监督算法的工作流程:
我们的训练集里房屋价格,我们把它喂给我们的学习算法,学习算法工作然后输出一个函数,通常表示为
h
h
h 表示。
h
h
h 代表hypothesis(假设),
h
h
h表示一个函数,输入是房屋尺寸大小即
x
x
x,因此
h
h
h 根据输入的
x
x
x值来得出
y
y
y 值,
y
y
y 值对应房子的价格 因此,
h
h
h 是一个从
x
x
x 到
y
y
y 的函数映射,
y
y
y是关于
x
x
x的线性函数。
表达方式为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta \left( x \right)=\theta_{0} + \theta_{1}x
hθ(x)=θ0+θ1x,因为只含有一个特征/输入变量,
y
y
y是关于
x
x
x的线性函数,因此这样的问题叫作单变量线性回归或一元线性回归问题。
Cost funcion代价函数
如何把最有可能的直线与我们的数据相拟合
在线性回归中我们有一个像这样的训练集,
m
m
m代表了训练样本的数量,比如
m
=
47
m = 47
m=47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta \left( x \right)=\theta_{0}+\theta_{1}x
hθ(x)=θ0+θ1x。
接下来为我们的模型选择合适的参数(parameters)
θ
0
\theta_{0}
θ0 和
θ
1
\theta_{1}
θ1,不同的参数产生不同的假设函数。
我们要做的就是得出
θ
0
\theta_{0}
θ0 和
θ
1
\theta_{1}
θ1这两个参数的值,来让假设函数表示的直线,尽量好的拟合数据。
思想:对于我们的训练集
(
x
,
y
)
\left( x,y \right)
(x,y) ,选择
θ
0
\theta_{0}
θ0 和
θ
1
\theta_{1}
θ1使得假设函数
h
h
h尽量贴近
y
y
y。
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2我们称之为代价函数,是解决线性规划最常用的方法。
Cost funcion intuition I 代价函数直观理解I
θ
0
\theta_{0}
θ0=0
不同的
θ
\theta
θ值产生不同的假设函数,由此产生不同的代价函数值。
我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(上图中蓝线所指)就是建模误差(modeling error)。
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2最小。
上图最低点时
θ
\theta
θ=1所对应的假设函数最好的拟合了数据。
Cost funcion intuition II 代价函数直观理解II
此时的参数为
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1
不同的
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1取值,可以得出不同的代价函数曲线
J
(
θ
0
,
θ
1
)
J(\theta_{0}, \theta_{1})
J(θ0,θ1)
我们绘制一个关于
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1 和
J
(
θ
0
,
θ
1
)
J(\theta_{0}, \theta_{1})
J(θ0,θ1)的三维图形,曲线的高度为
J
(
θ
0
,
θ
1
)
J(\theta_{0}, \theta_{1})
J(θ0,θ1)的值。下面我们用等高线图来展示这个三维图形。
每一个椭圆都具有相同的高度,即相同的
J
(
θ
0
,
θ
1
)
J(\theta_{0}, \theta_{1})
J(θ0,θ1)的值。等高线图,则可以看出在三维空间中存在一个使得
J
(
θ
0
,
θ
1
)
J(\theta_{0}, \theta_{1})
J(θ0,θ1)最小的点。
通过这些图形等高线图,我们能更好地理解这些代价函数
J
J
J所表达的值是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点,更接近于代价函数
J
J
J 的最小值。
Gradient descent梯度下降
此时,有一个目标函数,我们的目的时最小化目标函数
J
(
θ
0
,
θ
1
)
J(\theta_{0}, \theta_{1})
J(θ0,θ1),使用梯度下降最小化函数,不仅仅是最小化线性回归的代价函数J,可以广泛的应用于各种函数,或者多变量(不仅限与两个)。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合
(
θ
0
,
θ
1
,
.
.
.
.
.
.
,
θ
n
)
\left( {\theta_{0}},{\theta_{1}},......,{\theta_{n}} \right)
(θ0,θ1,......,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到找到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
其中
a
a
a是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
在这个表达式中,如果你要更新这个等式,你需要同时更新
θ
0
{\theta_{0}}
θ0和
θ
1
{\theta_{1}}
θ1,我的意思是在这个等式中,我们要这样更新:
θ
0
{\theta_{0}}
θ0:=
θ
0
{\theta_{0}}
θ0 ,并更新
θ
1
{\theta_{1}}
θ1:=
θ
1
{\theta_{1}}
θ1。
实现方法是:你应该计算公式右边的部分,通过那一部分计算出
θ
0
{\theta_{0}}
θ0和
θ
1
{\theta_{1}}
θ1的值,然后同时更新
θ
0
{\theta_{0}}
θ0和
θ
1
{\theta_{1}}
θ1。
左边的式子是正确的同时更新步骤,右边的在更新完 θ 0 {\theta_{0}} θ0后再去计算 θ 1 {\theta_{1}} θ1,此时的 θ 0 {\theta_{0}} θ0已经是更新之后的 θ 0 {\theta_{0}} θ0,不是初始值,故而不是同时更新。
其中
:=的意思是赋值 ,=是布尔运算
Gradient descent intuition梯度下降知识点总结
a
a
a是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大
让我们来看看如果
a
a
a太小或
a
a
a太大会出现什么情况:
- 如果 a a a太小了,即我的学习速率太小,结果就是它会需要很多步才能到达全局最低点。
- 如果
a
a
a太大,那么梯度下降法可能会越过最低点,它会导致无法收敛,甚至发散。
假设 θ 1 {\theta_{1}} θ1初始化在局部最低点,则该点的导数为0,即 θ 1 {\theta_{1}} θ1不变,依旧保持局部最优。
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度(导数),这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小 a a a。
Gradient descent for linear regression线性回归的梯度下降
迭代如下图所示:
直至很好的拟合训练集数据
梯度下降法和平方差代价函数两个结合起来会得到一个算法:线性回归算法。
线性回归的代价函数总是这样一个的弓状函数,即凸函数
有时被称作Batch梯度下降,针对全局的梯度下降。
正规方程组方法可以用来求解代价函数的最小值,但是梯度下降法更适合大的数据集,但是速度慢。