斯坦福机器学习笔记-单变量线性回归

斯坦福机器学习笔记-单变量线性回归

本节通过房价预测问题来学习第一个学习算法线性回归算法

基本概念

监督式学习-回归
  • 监督式学习:由于对于数据样本来说,都包含与之对应的正确答案,故为监督式学习
  • 回归:预测值为连续值,故为回归问题
    ml_single_variable_linear_regression_supervised_regression
训练集

首先明确几个数学符号, 如下图所示

  • m:表示训练集样本数目
  • xs x ′ s 表示输入向量,也叫输入特征, 比如本例房价预测问题中的面积,居住区域等
  • ys y ′ s 表示输出变量,也叫目标变量
  • x(i) x ( i ) , y(i) y ( i ) )表示训练集中第i个训练样本
    ml_single_variable_linear_regression_training_dataset
假设函数(Hypothesis Function)

通过给定的训练集学习到的函数h : X -> Y叫做假设函数(Hypothesis Function),如图所示,本例房价预测问题中的假设函数就是一个房价(Y)关于面积(X)的函数。一个好的假设函数可以预测出对应X的Y值。

我们通过如下形式表示假设函数,为了方便, hθ(x) h θ ( x ) 也叫作 h(x) h ( x ) , 当然会有更复杂的函数,也许是非线性函数,但是由于线性函数是简单的形式,所以我们先从线性方程的例子开始学习,逐渐建立复杂的模型。
ml_single_variable_linear_regression_hypothesis_formula

上图所示是单个变量的线性回归,这个变量就是x,根据x来预测房价的函数,这个模型也叫作Univariate linear regression。
ml_single_variable_linear_regression_hypothesis

代价函数(Cost Function)

引入代价函数的目的是为了更好的将我们的线性方程和数据相拟合。当我们设定了假设函数外,我们就可以进行预测。但是如何选择假设函数的参数 θ0 θ 0 θ1 θ 1 呢?选择不同的参数 θ0 θ 0 θ1 θ 1 时,就会有不同的假设函数。下图列举了三种不同 θ0 θ 0 , θ1 θ 1 情况下的假设函数
ml_single_variable_linear_regression_cost_functino_with_3_different_parameters

问题是如何选择参数呢?我们的想法是选择某个参数 θ0 θ 0 , θ1 θ 1 ,使得对于训练集的训练样本(x, y), hθ(x) h θ ( x ) 尽可能的接近y. 如果预测值和真实值越接近,表示假设函数越准确。这里我们使用均方误差来作为衡量标准,即我们的目标是最小化训练样本的预测值和真实值的平方的均值,公式如下
ml_single_variable_linear_regression_cost_function_minimize

其中m为训练集中样本数目,上标i表示某训练样本, 1/2是为了简化计算

现在我们定义一个代价函数
ml_single_variable_linear_regression_cost_function_definition

我们的目标就是关于 θ0 θ 0 , θ1 θ 1 , 对代价函数 J(θ0,θ1) J ( θ 0 , θ 1 ) , 求最小值, 即
ml_single_variable_linear_regression_cost_function_minimize_J
ml_single_variable_linear_regression_cost_function_video_screenshot

代价函数也叫作平方误差代价函数, 也有其他代价函数,不过对于回归问题来说,平方误差代价函数是一个合理的选择。

代价函数直观理解

为了更好的理解代价函数,我们使用简化的假设函数,即令 θ0 θ 0 为0, 简化版的假设函数是经过原点的直线,如果所示
ml_single_variable_linear_regression_cost_function_hypothesis_function

我们需要更好的理解两个函数,一个是代价函数,另一个是假设函数。需要注意的是,假设函数是关于x的函数,对于本例就是关于房子面积x的函数。与此不同的是代价函数是关于 θ1 θ 1 的函数, 而 θ1 θ 1 控制着假设函数的斜率。如图所示,令 θ1 θ 1 为1, 训练集包含三个样本
ml_single_variable_linear_regression_cost_function_hypothesis_function_theta1

左边为假设函数,x轴为房子面积,现在我们计算下当 θ1 θ 1 为1的情况下,代价函数的值为0

继续更改 θ1 θ 1 的值,计算对应的代价函数的值, 得到下图
ml_single_variable_linear_regression_cost_function_hypothesis_function_theta_total

对于不同的 θ1 θ 1 , 有着不同的假设函数 hθ(x) h θ ( x ) 和不同的 J(θ1) J ( θ 1 ) , 我们学习算法的优化目标就是寻找某个 θ1 θ 1 使得代价函数 J(θ) J ( θ ) 值最小,从图中可以看出,当 θ1 θ 1 为1的时候,假设函数能够完美的拟合训练数据,代价函数取得最小值

代价函数直观理解II

上节中,我们令 θ0 θ 0 等于0, 故代价函数 J(θ) J ( θ ) 是关于 θ1 θ 1 的函数。但本节有两个参数 θ0 θ 0 , θ1 θ 1 , 所以代价函数图像有些复杂。当只有一个参数 θ1 θ 1 的时候,代价函数图像是一个弓形函数,两个参数的代价函数在某种意义上也是一种弓形函数,是一个三维坐标的弓形曲面
ml_single_variable_linear_regression_cost_function_3d

其中,参数 θ1 θ 1 , θ1 θ 1 分别为底面坐标轴,某点高度表示 J(θ) J ( θ )

后面为了简便,将会用轮廓图(contour plots),也叫等高线图来表示。如下图所示,最小值就是这一系列同心椭圆的中心点。举个例子,下图中右侧x点, θ1 θ 1 等于800, θ1 θ 1 等于-0.15,左边就是该参数下的假设函数,可以看到,假设函数不能很好的拟合训练数据,并且x点距离中心点还很远,即此处代价值比较大
ml_single_variable_linear_regression_cost_function_3d_contour_plots_1

类似的,我们逐渐尝试不同的参数值,最后我们找到某个点,虽然不是最小值,但已经很接近最小值点了,如下图所示
ml_single_variable_linear_regression_cost_function_3d_contour_plots_2

当然,我们需要一种有效的算法,能够自动的找到使得代价函数J取得最小值的参数。因为我们会遇到更复杂,更高纬度,更多参数的情况,那时无法将其可视化。这就引出我们下节要将的算法梯度下降算法。

由本两节可知,假设函数是我们拟合数据的函数,而代价函数是评价假设函数拟合数据的拟合程度。

梯度下降算法

梯度下降

梯度下降算法是一种很常用的优化算法,他不仅被用在线性回归中,也被用于机器学习领域中的众多领域。梯度下降算法寻找最有参数 θ θ 的思想是:首先随机初始化参数,比如 θ0 θ 0 , θ1 θ 1 (例如 θ0=0 θ 0 = 0 , θ1=0 θ 1 = 0 ), 不断地改变参数 θ0 θ 0 , θ1 θ 1 , 减小 J(θ) J ( θ ) , 直到找到最小值点。
ml_single_variable_linear_regression_gradient_descent_outline

下图片表明了梯度下降法的工作过程, 可以把梯度下降的过程想象成一个人下山,如果想要尽快的下山,则每次都应该向坡度最大的方向下山。
ml_single_variable_linear_regression_gradient_descent_walk_down_mountain

梯度下降算法会收到初始状态的影响,如果我们选择不同的初始点,可能会到达不同的局部最小值。比如下图
ml_single_variable_linear_regression_gradient_descent_second_walk_down_mountain

下面具体看一下梯度下降算法的定义,如图所示,
ml_single_variable_linear_regression_gradient_descent_definition

其中,:=表示赋值, α α 为学习速率,控制着下降的歩幅, J(θ0,θ1)θj ∂ J ( θ 0 , θ 1 ) ∂ θ j 叫做梯度。算法的微妙之处在于要同时(simultaneously)更新 θ0 θ 0 θ1 θ 1

梯度和学习速率

本节将深入介绍梯度和学习速率对于梯度下降算法的意义。为了简化问题,我们使得 θ0 θ 0 等于0. 假设我们选择的初始点 θ1 θ 1 在最小值的右侧,此时的斜率是正数。根据算法更新参数公式, θ1 θ 1 减去学习速率 α α 乘以 梯度, 相当于左移参数,逐渐靠近最低点。如果初始点选择在最低值的左边,则此时的斜率为负数,更新公式会增大,逐渐靠近最低点
ml_single_variable_gradient_descent_single_variable_example

如果初始点选取在最优处或者局部最低点,那么局部最优点的导数为0, 所以 θ1 θ 1 将不再改变
ml_single_variable_linear_regression_gradient_descent_start_point_in_best

学习率会影响梯度下降的幅度。如果 α α 太小,则 θ θ 的更新速度会很小,那么梯度下降需要很久才能到达最低值。反之,如果 α α 太大,则 θ θ 的可能会直接越过最低值,甚至可能无法收敛,即无法达到最低值。
ml_single_variable_linear_regression_gradient_descent_alpha

随着逐渐接近局部最优点,相应的导数也会变小,所以参数更新的幅度也会减小,并不需要额外减小 α α 的值来减小下降程度
ml_single_variable_linear_regression_gradient_descent_should_modify_alpha

应用

本节将结合梯度下降和代价函数,并将其应用到线性回归模型中。梯度下降重要的部分就是计算梯度,也就是偏导数项。
ml_single_variable_linear_regression_gradient_descent_use_outline

我们将假设函数 hθ(x(i))=θ0+θ1x(i) h θ ( x ( i ) ) = θ 0 + θ 1 x ( i ) 带入到代价函数中,并且分别对 θ0 θ 0 θ1 θ 1 求偏导得
ml_single_variable_linear_regression_gradient_descent_hypothesis_plugging_in_cost_function

由此我们得到了完整的梯度下降算法
ml_single_variable_linear_regression_gradient_descent_hypothesis_plugging_in_cost_function_result

上节提到,梯度下降算法会受到初始点的影响,可能会收敛到局部最优点。但是用于线性回归问题的代价函数总是一个凸函数(Convex Function), 而凸函数没有局部最优解,只有一个全局最优解。故对于线性回归问题,使用梯度下降算法,总会得到一个全局最优解。

现在我们看一下梯度下降算法的运行过程,下图是关于假设函数和代价函数的图像
ml_single_variable_linear_regression_gradient_descent_workflow_1

使用梯度下降逐渐更新参数 θ0 θ 0 θ1 θ 1 的值,最后得到下图所示
ml_single_variable_linear_regression_gradient_descent_workflow_last

最后我们得到最优解,用最优解下的假设函数对房价进行预测,比如一个1,250平方英尺的房子大概能卖到250k$,如下图所示
ml_single_variable_linear_regression_gradient_descent_best_hypothesis_predict

参考

coursera machine learning week 1

Coursera机器学习笔记(二) - 单变量线性回归

单变量线性回归

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值