主要内容
- 线性回归的概念
- 代价函数
- 梯度下降算法
- 线性回归模型的代价函数对参数的偏导数
一 线性回归的概念
- 线性回归是拟合一条直线,将训练数据尽可能分布到线上. 另外还有多变量的线性回归称为多元线性回归.
- 通过拟合的直线模拟现有数据,对未知数据进行预测,变量通常是连续的标量。
二 代价函数
-
代价函数(有些地方也叫 损失函数) 用于更好地拟合样本,得到更合适模型的一个方法。
-
在线性回归中,假设函数为 hθ(x) = θ0 + θ1 * x ,其中θ0和θ1的变化会引起假设函数的变化,参数的选择决定了我们得到的直线相对于训练集的准确度。
-
为了让预测值和真实值的误差尽可能小和最小化θ0和θ1,我们将这个问题转化为找到能使训练集中预测值和真实值的差的平方的和的1/2M最小的θ0和 θ1的值。
为代价函数,又称为平方误差函数,它是解决回归问题最常用的手段
-
m 代表训练集样本数量,
-
xi 代表第 i 个样本,
-
hθ(xi) 代表第 i 个样本对应的预测值,
-
yi 代表第 i 个样本对应的真实值。
-
**J(θ0,θ1)的值越小,表示对应的假设函数越好,线性回归的目标函数即求使得J(θ0,θ1)**最小的 **(θ0,θ1)**参数带入后的假设函数
-
常用三维坐标图或者等高线法来表示**J(θ0,θ1)**与 θ0,θ1两个参数的关系
-
这是一个碗状的3D图, 碗底即代价函数**J(θ0,θ1) **的最低点,对应的θ0和θ1即为最小。
-
在同一条线上的所有**J(θ0,θ1)**的值都相同(如图中的三个x值都一样)
-
同心椭圆的中心即为最小的 J(θ0,θ1)
-
三 梯度下降算法
- 梯度下降算法又称为Batch梯度算法,是应用最广泛的求极小值算法
- 梯度下降算法不仅应用于线性回归上,还被广泛应用于机器学习的众多领域
3.1 算法的引入
-
假设一线性回归模型,它的代价函数为 J(θ0,θ1) 。我们的目标是最小化这个代价函数,而要得到最小的代价函数值关键就在于正确选取 θ0和θ1的值,于是我们引出梯度下降算法。
步骤:1. 初始化θ0和θ1的值,通常取0。
2. 不断改变θ0和θ1的值,试图通过这种改变使得 J(θ0,θ1) 变小,直到找到 J(θ0,θ1) 的最小值(也可能是局部最小值)
3.2 算法的定义公式
- 公式说明:
- := 符号是赋值运算符,表示把符号后面的值赋予给符号后面的值,
- α 表示学习率,用来控制每次更新参数的步长(说白一点就是控制梯度下降的步子大小),α的大小不好确定,如果太小则需要很多步才能收敛,如果太大最后可能不会收敛甚至可能发散。
偏导数,用来计算当前参数对应代价函数的斜率,导数为正则θ减小,导数为负则θ增大,通过这样的方式可以使整体向θ=0收敛。
3.3 参数的更新方法
-
在梯度下降中,我们使用公式更新 θ0 和 θ1 的值,在更新时,我们应当同时更新 θ0 和 θ1 的值
-
如果不同时更新,如下图,前一个更新后的 θ0 会影响到 temp1 的导数项
,继而影响更新θ1
3.4 梯度下降的具体过程
-
为了易理解梯度下降过程,我们假定 hθ(x) = θ1x, 代价函数为 J(θ1) ,可以得到 J(θ1) 与 θ1 关系图如下
-
梯度下降过程即:
- 首先选取 θ1 的值,得到对应的 J(θ1) ,标记在上图中红点位置处。
- 以红点作切线(上图中红色实线),此时切线的斜率即公式中的导数项,切线斜率再与学习率 α (正数)相乘 ,最后用θ1减去它们相乘后的值,计算出的值即第一次更新后的θ1 (向左移动),此时也可以发现对应的 J(θ1) 位置会往左边移动,直到运动到最小值(局部最小值)。
- 移动速度跟学习率 α 有关,如果 α 过大,每次移动也会跳跃得越大,很容易越过最小值,无法收敛,甚至发散。而事实上,在梯度下降过程中,学习率 α 会自动调整,越靠近最小值, α 会越小,移动越慢。
- 如果初始化 θ1 后,得到对应的 J(θ1) 本身就处在最小值位置,再使用梯度下降算法, θ1 将不会更新,因为此时导数项为0,J(θ1) 也不会发生变化。
-
在梯度下降的过程中,当我们越来也接近局部最低点时,梯度下降会自动采取更小的幅度(因为导数值会自动变得越来越小),在局部最低点是导数 = 0
四 线性回归模型的代价函数对参数的偏导数
-
梯度下降每次更新的都需要进行偏导计算,这个偏导对应线性回归的代价函数
-
对代价函数求导的结果为: