单变量线性回归原理解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 给出一个房价预测的例子,x轴是房子的大小,y轴是房子的价格,图中标注了一些房子作为数据集,而这些点被称为标注数据(labeled data),利用这样的数据来预测的方法称为:监督学习。监督学习分为两类:分类与回归,此时,作为预测房价的这个例子是监督学习中的回归例子。

Linear Regression with one Variable(单变量线性回归)


Model and Cost Function(模型和损失函数)

给出一个房价预测的例子,x轴是房子的大小,y轴是房子的价格,图中标注了一些房子作为数据集,而这些点被称为标注数据(labeled data),利用这样的数据来预测的方法称为:监督学习。监督学习分为两类:分类与回归,此时,作为预测房价的这个例子是监督学习中的回归例子。

2.png-181.8kB


$m$代表是数据集的个数,$x's$是输入变量或者特征,$y's$是输出变量或者目标变量。

2.png-116.1kB


选择题1
1.png-27.5kB


整个预测的过程可以归结为如下图:

1.png-13.9kB

通过训练数据,将数据输入到算法里面,我们能得到一个关于这个模型的一个假设$h$,然后利用这个假设$h$我们将其他输入变量输入到该假设中就会得到我们想要的预测结果$y$。那么对于单变量的线性回归我们用如下公式来表示:

$$ h_θ(x) = θ_0 + θ_1x $$

线性模型其意思是模型是呈现线性变化的,为什么对于该房价的例子我们要采用单变量的,其原因是该模型的未知参数仅有一个$x$来决定。


对于假设函数其包含两个参数,$θ_0$和$θ_1$,那么如何来确定这两个参数来使得得出的假设函数直线更好的拟合数据集或者换句话说如何才能判断假设函数所产生的误差最小?
1.png-63.2kB
所以,给出如下定义:

$$ minimize{1\over2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$

$$ h_\theta(x^{(i)}) = \theta_0 + \theta_1x^{(i)} $$

第一个公式是最小化预测值与真实值差的平方的值,也叫作均方误差值,是衡量误差的一种方式。第二个公式是我们的假设函数。有时我们更喜欢写成如下形式:

$$ J(\theta_0,\theta_1) = {1\over2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$

$$ minimizeJ(\theta_0,\theta_1) $$


其中的$J(\theta_0,\theta_1)$叫做代价函数(cost function),我们的目的就是最小化代价函数,使得假设函数更加接近真实数据集。为了能更好的解释代价函数我们举个例子并画出能说明其含义的图来:

2.png-136.6kB
2.png-193.8kB

左边的图在坐标系中分别画了三个的点$(1,1)$,$(2,2)$,$(3,3)$,假设这就是我们的数据集,那么现在我们就要对这个数据集进行假设函数的猜测,当然,学过数学的人一眼就能看出在$\theta_0=0$,$\theta_1=1$时,也就是假设函数$h_\theta(x) = x$时是最吻合数据集的,但是假如该数据集不会这样简单,不能一眼看出它的拟合线来该怎么办呢?注意到,当假设函数越能拟合数据集时,它的代价函数就越接近$0$,所以这就是采用代价函数来选择参数$\theta_0$,$\theta_1$从而产生出更好的假设函数来拟合数据集的原因。


选择题2
1.png-45.5kB


刚刚上面的例子图片采用的二维的图像,因为图片中只包含了两个参数,$\theta_1$和$J(\theta_1)$,如果是三个参数的图片则会映射到三维的图像上面上:

1.png-210.9kB


在这个三维图片中,图中的图片上的点距离“水平地面”的高度就是它的代价值$J(\theta_0,\theta_1)$,或许我们还可以用另外一种图片来表示这个三维图:剖面图或者轮廓图。

1.png-85.4kB
1.png-82.4kB
1.png-79kB

从上到下,左边依次是不同的假设函数直线,右边依次是不同的轮廓图,这三个假设直线一个比一个更接近数据集,所以对应的轮廓图中的代价函数的点会更接近中心区域。所以运用此种图片可以更加直观的来判别假设函数的好坏。


Gradient Desent(梯度下降)

1.png-239.7kB

就像图片中画出的那样,梯度下降就是以最合适的方向来进行递减。假如自己站在一个山峰的某以高度,现在想以最快的速度去山底,所以就会问自己以我现在所在的位置我的四周360度的方向上哪一个方向上可以令我下降最快,然后不断进行迭代和执行,这样终会在某一时刻会到达山底。

3.png-239.8kB

但是又如上图所示,不可避免的当我所站的位置不一样,会下降到不同的山底,而这样的山底其实只是在我当前的视野中的山底并不是真正的山底,所以,此种方法会受限于$color{red}{初始位置}$的选择。换句话说就是会陷入$color{red}{局部最优}$


下面让我们来公式化梯度下降算法:
4.png-47.4kB
其中$\alpha$叫做学习率(learning rate),${\partial\over\partial\theta_j}$叫做梯度,$color{red}{两者相乘叫做步长}$。


选择题3
2.png-26.3kB


那么公式化完了梯度下降的公式,让我们再来看看这个公式所包含的意义和原理:
1.png-158.3kB
上图中有两个小坐标图,先来看第一个小坐标图,注意到在图的右边有个红点,此时在它当前的位置上的导数是个$color{red}{正数}$,所以对于$\theta_1 := \theta_1 - \alpha{\partial\over\partial\theta_1}$中的$\alpha{\partial\over\partial}$即为$\partial$倍的某一个正数,所以对于更新后的$\theta_1$相当于$color{red}{减小}$了,所以更新后的$\theta_1$会逐渐靠近图中的谷底。
而第二个小坐标图,注意到在图的左边有个红点,此时在它当前的位置上的导数是个$color{red}{负数}$,所以对于$\theta_1 := \theta_1 - \alpha{\partial\over\partial\theta_1}$中的$\alpha{\partial\over\partial}$即为$\partial$倍的某一个负数,所以对于更新后的$\theta_1$相当于$color{red}{增加}$了,所以更新后的$\theta_1$也会逐渐靠近图中的谷底。以上就是梯度下降算法的自更新原理。


对于参数$\alpha$也有选取上的一些注意事项,如果选取的太小则会导致到达最终点的时间过慢,太大的话会导致在最终点附近发生来回震荡(overshoot):
2.png-156.4kB


选择题4
1.png-83.1kB
解析

  • 可以看出当前所在的点已经陷入局部最优了,所以此时的$\theta$不会改变并且会停止迭代。

还有一点是需要注意的,$color{red}{当迭代越来越靠近最优点时,其步长会越来越小}$。因为当趋于最优点时其导数会趋于$0$,所以导致步长越来越小,故只要确定了合适的学习率$\alpha$就不必担心步长的大小问题了:
1.png-165.5kB


小节测试

小节测试题1
1.png-62.7kB


小节测试题2
2.png-36.1kB


小节测试题3
3.png-8.7kB


小节测试题4
4.png-65.3kB
解析

  • 选项三,$\alpha$选择过小是有坏处的,会导致函数收敛速度过慢。
  • 选项四,存在局部最优点的函数在进行梯度下降时会因为初始点的选择($\theta_0$,$\theta_1$)的不同导致最终收敛结束后的结果不同。

小节测试题5
5_2.png-44.7kB
解析

  • 选项三,$J(\theta_0,\theta_1)=0$并不能说明迭代至了局部最优点了,只能说明假设函数与数据集完全拟合了。

目录
相关文章
|
13天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
42 1
|
2月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
50 3
|
2月前
|
C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(二)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
2月前
|
编译器 C++ 开发者
【C++】深入解析C/C++内存管理:new与delete的使用及原理(三)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
2月前
|
存储 C语言 C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(一)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
46 1
|
17天前
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
45 0
|
2月前
|
数据采集 存储 编解码
一份简明的 Base64 原理解析
Base64 编码器的原理,其实很简单,花一点点时间学会它,你就又消除了一个知识盲点。
75 3
|
23天前
|
API 持续交付 网络架构
深入解析微服务架构:原理、优势与实践
深入解析微服务架构:原理、优势与实践
22 0
|
24天前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景

推荐镜像

更多