Java教程

2.单变量线性回归

本文主要是介绍2.单变量线性回归,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 一元线性回归(模型描述)

常用符号:

m : 训练样本的数量

x : 输入变量/特征

y : 输出变量/预测的目标变量

(x, y): 表示一个训练样本

$$(x^{(i)}, y^{(i)})$$ : 表示特殊训练样本/第i个训练样本

监督学习的工作过程:

2. 代价函数

在线性回归中我们要解决的是一个最小化的问题

Idea: 选择模型参数 \(\theta_0, \theta_1\), 使得对于任意的训练样本 (x, y), \(h_\theta\) 尽可能接近 y

线性回归的整体目标函数:

\[minimize_{\theta_0,\theta_1} \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2 \\ h_\theta(x^i) = \theta_0 + \theta_1x^{(i)} \]

代价函数:

数学定义:

\[J(\theta_0, \theta_1) = \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2 \\ minimize_{\theta_0,\theta_1} J(\theta_0, \theta_1) \]

代价函数也被称作平方误差函数,有时也被称为平方误差代价函数

平方误差代价函数可能是解决回归问题最常见的手段了

3. 代价函数理解

为了更好地使代价函数 \(J(\theta_i)\) 可视化,先使用一个简化的 假设函数,即让 \(\theta_0 = 0\)

4.代价函数理解2

代价函数越小,\(\theta_0, \theta_1\) 对应的假设函数确定的模型与 训练集中的数据拟合得越好

5. 梯度下降

梯度下降算法可以用于 代价函数以及更一般函数的 最小化

问题概述:

我们有一个函数 \(J(\theta_0, \theta_1)\), 也许这是一个线性回归的, 也许是一个需要最小化的其他函数

我们需要一个算法,来最小化函数 \(J(\theta_0, \theta_1)\)

梯度下降的思路:

1.开始给定 \(\theta_0, \theta_1\) 一些初始值, 初始值是什么其实并不重要,但通常的选择是将 \(\theta_0, \theta_1\) 初始化为0 (Start with some \(\theta_0, \theta_1\))

2.Keep changing \(\theta_0, \theta_1\) to reduce \(J(\theta_0, \theta_1)\) until we hopefully end up at a minimum

梯度下降算法的定义:

进行梯度下降的时候一定要同时更新 $$\theta_0, \theta_1$$

6. 梯度下降理解

1. α 学习率

α(学习率),永远是一个正数,控制我们以多大的幅度更新参数 \(θ_j\)

如果 α 太小,梯度下降会很慢

如果 α 太大,梯度下降可能会越过最低点,甚至无法收敛或者发散

2. 偏导数

如果 \(θ_1\) 已经处在一个局部最优点,你认为下一步梯度下降会怎样?

局部最优点的导数是 0 ,如果已经在局部最优点,\(θ_1\)将不再改变

即使学习速率 α 保持不变,梯度下降法也可以收敛到局部最低点

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度;

这是因为当我们接近局部最低点时,根据定义,在局部最低点的导数等于零,所以

当我们接近局部最低点时,导数值会自动变得越来越小;

所以梯度下降将自动采取较小的幅度,这就是梯度下降的运行方式。

7. 线性回归 梯度下降

将梯度下降应用到线性回归中:将梯度下降和代价函数结合,得到线性回归算法,它可以用直线模型拟合数据

梯度下降算法:

repeat until convergence {
\(\theta_j := \theta_j - α \frac{\partial}{\partial J(\theta_j)}J(\theta_0, \theta_1)\)

\((for \quad j=1 \quad and \quad j=0)\)

}

线性回归模型:

\[h_\theta = \theta_0 + \theta_1x \\ J(\theta_0, \theta_1) = \frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \]

将梯度下降应用到最小化方差代价函数中,关键是导数项

推导过程:

\[\frac{\partial}{\partial \theta_j}J(\theta_0, \theta_1) \\ = \frac{\partial}{\partial \theta_j}\frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \\ =\frac{\partial}{\partial \theta_j}\frac{1}{2m} \sum_{i=1}^{m}(\theta_0 + \theta_1x - y^{(i)})^2 \]

\[j=0:\frac{\partial}{\partial \theta_0}J(\theta_0, \theta_1) = \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)}) \\ j=1:\frac{\partial}{\partial \theta_1}J(\theta_0, \theta_1) = \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)} \\ \]

线性回归算法:

repeat until convergence {

\[\theta_0 := \theta_0 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)}) \\ \theta_1 := \theta_1 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)} \]

}

同时更新 \(\theta_0, \theta_1\)

说明: 线性回归的代价函数,是一个弓形函数,术语叫做凸函数,这个函数没有局部最优解,
只有一个全局最优解。当计算这种代价函数的梯度下降时,只要时使用梯度下降,
它总是会收敛到全局最优

Batch梯度下降算法,意味着每一步梯度下降,我们都历遍了整个训练集的样本。
所以在梯度下降中,当计算偏导数时,我们计算总和。在每一个单独的梯度下降
中,我们最终计算m个训练样本的总和。

这篇关于2.单变量线性回归的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!