吴恩达机器学习(一)单变量线性回归(假设函数、代价函数、梯度下降)

目录

0. 前言

1. 假设函数(Hypothesis)

2. 代价函数(Cost Function)

3. 梯度下降(Gradient Descent)


学习完吴恩达老师机器学习课程的单变量线性回归,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

单变量线性回归(Linear Regression with one variable)是只有一个变量的线性回归函数。初始作如下定义:

  • (x, y) --- 一个样本
  • (x^{(i)}, y^{(i)}) --- 第i个样本
  • x --- 输入变量的特征
  • y --- 输出量
  • m --- 训练样本的数量

1. 假设函数(Hypothesis)

用一线性函数拟合样本数据集,可以简单定义为如下:

\large h_{\theta }=\theta_{0}+\theta_{1}x

\theta_{0} 和 \theta_{1} 为参数。

2. 代价函数(Cost Function)

衡量一个假设函数的“损失”,又称作“平方和误差函数”(Square Error Function),给出如下定义:

\large J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2

相当于,对所有样本的假设值与真实值之差的平方求和,除以两倍的样本数量。若总体的真实值与总体的假设值差别巨大,会造成代价函数 J(\theta_{0},\theta_{1}) 的值较大,所以我们的目标为,求使得 J(\theta_{0},\theta_{1}) 取最小值(总体真实值与假设值差别最小)时候的 \theta_{0} 和 \theta_{1} 。

3. 梯度下降(Gradient Descent)

梯度:某一函数在该点处的方向导数沿该方向取得最大值,即在该点变化率(斜率)最大。

梯度下降:使得自变量 \theta_{0}\theta_{1} 沿着使 J(\theta_{0},\theta_{1}) 下降最快的方向移动,尽快取得 J(\theta_{0},\theta_{1}) 的最小值,给出如下定义:

\large \theta_{j}:=\theta_{j}-\alpha \frac{\partial }{\partial \theta_{j} }J(\theta_{0},\theta_{1})

对于 j=0 或者 j=1,在该方向上,若 J(\theta_{0},\theta_{1}) 斜率(导数)为正数,则应该减去一个值(使得 \theta_{j} 左移),若 J(\theta_{0},\theta_{1}) 斜率为负数,则反之。

  • for\ 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)})
  • for\ 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)}

注:应同时更新 \mathbf{\theta_{0}} 和 \mathbf{\theta_{1}} ,即对于每一次迭代,应先算完 \mathbf{\theta_{0}} 和 \mathbf{\theta_{1}} ,再对它们进行赋值。

其中,\alpha 为学习率(learning rate),表示每次移动的步长。若 \alpha 太小,则梯度下降速度很慢,若 \alpha 太大,则无法收敛甚至发散。

梯度下降的步骤如下:

  1. 设定初始的 \theta_{0} 和 \theta_{1} ;
  2. 不断更新 \theta_{0} 和 \theta_{1} ,使得 J(\theta_{0},\theta_{1}) 减小,直到达到我们所期望的最小值。

注:对于梯度下降而言,不同的初始值,移动的方向可能会不同,导致最后收敛的值不同,会造成局部最优解(local minimum)。但是幸运的是,对于线性回归而言,其代价函数总是凸函数(convex function),局部最优解就是全局最优解(global optimum)。

梯度下降又称作 Batch Gradient Descent,“Batch”的意思为每一次迭代都遍历了所有的数据集(公式中的求和步骤)。


如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

 

 

 

你可能感兴趣的:(机器学习)