机器学习之线性回归
这里写目录标题
本文参考吴恩达机器学习网课,以房价预测问题为实例分析,整理成为笔记,如有错误,感谢大家批评指正!
学习目标
- 掌握机器学习中线性回归的相关算法其中包括单变量线性回归、多变量线性回归
- 了解模型构建的过程
- 理解梯度下降算法
线性回归
回归问题属于机器学习中的监督学习部分,监督学习包括:- 回归问题
- 分类问题
单变量线性回归
从模型构建过程入手:
首先准备训练数据集,将特征作为自变量,通过假设函数
h
(
x
)
h(x)
h(x)对输出进行预估得到
y
y
y,与准备的数据集中对应的
y
y
y两者比较通过合适的方式构造代价函数(即Lost Function)。
以预测房价为例,假设评判放假的标准只有一个:房子的大小。我们收集到一批数据分别为房子的尺寸与价格,我们想要根据这批数据判断不同大小房子的价格,以房子的尺寸作为横轴,以房子的价格作为纵轴得到下图:
自然而然的想到根据数据拟合得到一条直线,这样就可以预测不同尺寸对应的价格了。如果我们想要得到最符合上述条件的一条直线就属于线性回归。表示为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x若所提供的数据集,利用直线拟合无法得到最优结果,需要进行非线性回归,即逻辑回归,非线性回归相关内容可以参考我的另一篇博客,这里不再赘述。
损失函数
给定一组 ( θ 0 , θ 1 ) (\theta_0,\theta_1) (θ0,θ1),便可得到一个一条直线,无数个参数组合得到无数条直线,那么如何确定最终的拟合结果呢?这就需要引入损失函数(Loss Function)(与上文中提到的代价函数是等价的)
给定一个假设函数
h
(
x
)
h(x)
h(x)分别计算训练集提供的尺寸所对应的价格对于,每一个
x
i
{x^i}
xi得到
h
(
x
i
)
h(x^i)
h(xi)与提供的
y
i
y^i
yi存在偏差,构造计算两者偏差的函数就得到损失函数,我们选取最优拟合直线的原则就是确定合适的
θ
0
,
θ
1
\theta_0,\theta_1
θ0,θ1使得损失函数
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1)最小。
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
[
h
(
x
i
)
−
y
i
]
2
J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m [h(x^i)-y^i]^2
J(θ0,θ1)=2m1i=1∑m[h(xi)−yi]2
梯度下降
构造好损失函数后,又迎来一个关键问题,我们该采用什么方法对假设函数中的参数进行更新呢?这里就要引入梯度下降算法的概念。
我们知道函数的一阶导数表示此刻函数图像的变化方向,我们希望每一次更新参数使得函数
J
(
θ
)
J(\theta)
J(θ)的值变小,所以利用导数来更新参数变化是可行的。
下图为梯度下降算法的具体公式:
其中,
α
\alpha
α为学习率,学习率控制参数每次步进的大小。
一般对参数进行初始化例如
θ
0
=
0
,
θ
1
=
1
\theta_0=0,\theta_1=1
θ0=0,θ1=1,对该点求参数
θ
1
,
θ
0
\theta_1,\theta_0
θ1,θ0的偏导,利用图片中的公式进行更新,参数应该是同步进行更新的。当我们参数选择不同的初始值,可能会得到不同的局部最小值。如下图所示:
梯度下降算法使用技巧
1. 设置合适的学习率
为了简化运算,我们将上述假设函数简化为过原点的直线,即
h
θ
(
x
)
=
θ
1
x
h_\theta(x)=\theta_1x
hθ(x)=θ1x以此来研究损失函数
J
(
θ
)
J(\theta)
J(θ)最小化的过程,由于只有一个参数进行更新,上述三维图像变成二维图像,自变量为
θ
1
\theta_1
θ1,因变量为
J
(
θ
1
)
J(\theta_1)
J(θ1)的大小。
-
如果学习率 α \alpha α设置的过小:
梯度下降会变的非常缓慢,从而降低了收敛速度,需要迭代更多的次数。 -
如果学习率 α \alpha α设置的过大:
可能会越过局部最小值,甚至会变的发散。
如上图所示 ,当位于A点时,利用梯度下降的公式进行更新,如果学习率设置的过大,将会越多最小值达到右侧的某个点,如果这个点的斜率即倒数要比A点更大,那么下一次的步长将会更大,周而复始会得到发散的结果。
2. 进行特征尺度变化
假设有两个特征
x
1
,
x
2
x_1,x_2
x1,x2,若
x
1
x_1
x1变化范围为
[
0
,
2000
]
[0,2000]
[0,2000],
x
2
x_2
x2变化范围为
[
0
,
1
]
[0,1]
[0,1],可以看到两者有很大的差距,利用梯度下降进行同步更新,当
x
1
x_1
x1变化很大时,
x
2
x_2
x2变化很小,这样会使得
J
(
θ
1
,
θ
2
)
J(\theta_1,\theta_2)
J(θ1,θ2)图像变得畸形,用等高线表示为:
而我们进行特征缩放后,可以理解为归一化的过程,是的两个特征变化范围接近,上图右侧使得两个特征都限定在
[
0
,
1
]
[0,1]
[0,1]范围内,这样做的好处是加快收敛速度,减少迭代次数。
注意:特征缩放并不是唯一的,我们可以选择不同的缩放方式,只要不改变原来的变化趋势都可以使用,目的是为了加快在收敛速度,减少迭代次数。
多变量线性回归
上面研究的一直是利用一个特征预测房价,实际上对于房价的影响是多方面的,房子的新旧、层数、卧室的数目等都会对房价产生影响,如果仍然希望利用直线进行拟合,这就要引入多变量线性回归,假设函数变为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
+
θ
n
x
n
h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn这里
n
=
4
n=4
n=4。多变量线性回归仍然是线性回归,因此寻找最优拟合直线的过程与单变量线性回归一致,我们回顾一样单变量线性回归的研究过程: