`

理解线性回归

 
阅读更多

线性回归是利用数理统计回归分析,来确定变量之间的依赖关系的统计分析方法。如何理解呢,其实就是要寻找数据规律,以便根据数据规律,对新的变量条件进行结果推断。放到数学中来,就是把这个规律看成一个函数,要想办法求解出这个函数的各个参数。可以想像解方程,只不过这里要找的不是方程中的x、y、z,而是寻找合适的系数。

201803101418.jpg

上图中有许多的二维数据点,通过观察发现这些点貌似是有一些规律的,通过描绘蓝色直线可以很直接的观察到,这些数据点围绕在这条直线的周围,并沿着直线的方向进行延伸。这条直线其实就是我们要找的规律。那这条直接怎么样来找呢?找到的直线是不是最好的呢?如果这些点到直线的距离之和如果最小,那这条直接应该就是我们期望的直线(这是svm的思路,寻找一个分割面,能让所有点到分割面距离和最小),但这里我们换一种思路,如果所有数据点的y值与x落在直线上的y值的差值距离的和最小,这条直线也应该是我们期望的。

假设这条直线的函数为 f(x) = y = a * x + b , 其中a和b就是我们要寻找到系数,x和y分别是数据点的横坐标值和纵坐标值。假设这里有n个数据点,第k个点的y值就是yk,上面描述的最小距离和就可以表示为 |f(xk) - yk|,也可以直接用(f(xk) - yk)2替代(L2),这样不用考虑绝对值的正负区间情况。那么现在就是要找一个合适的a和b,让所有点的(f(xk) - yk)2的和最小。需要注意的是,这里的x和y都是已经知道的数据点,而系数是未知数据。我们为所有点的(f(xk) - yk)2的和命名为J函数,它的未知变量其实就是a、b,最后表示为J(a,b),在多维的情况下可以用一个向量θ表示所有的参数,写成J(θ)。


201803102206.jpg


201803102221.jpg

现在就是想办法求这个系数的函数的最小值,我们能想像J会是一个有谷底的图形,而谷底就是斜度接近或者是0的地方(不能排除有的时候会有多个谷底,你只找到了一个其中一个,但不是最底的那个,就所谓局部最优和全局最优的区别)。

201803102248.jpg

斜度的计算可以对J(a,b)进行求导,为方便可以对a和b两个维度分别进行偏导,也就是分别看a和b维度的斜度。可以想像自己站在谷顶某处,要下到谷底,可以向左下一段,再向右下一段,再交替着一直走下山。

 

201803110846.jpg
对求导不熟悉的可以参考上图,就是在某a点求J(a)的极限,也就是微增量ΔJ / 微增量Δa。 我们省略了求导后得到的系数2,这不影响找最小值。
201803102258.jpg

201803102258.jpg

这里其实理论上可以命J’函数为0,带入各数据点来求解a、b,但实际处理时数据噪音以及量级和维度的量级,不方便求解。这里就可以用梯度下降算法了,这里我们将用随机梯度下降方法,在一组简单的数据上,手工进行下降的训练。梯度下降是一种小步逐步逼近最低点的方法,一开始先随机选一个a作为起点,然后选定一个合适的步进量α,用α * J(a)’作为a方向上一次移动的长度,那到底是向左还是向右移动呢?通过观察,如果是在最低点的右侧,斜度是正值,我们要逼近最低点,应该是向左走;如果是在最低点的左侧,斜度是负值,则要向右走,所以应该用a - α * J(a)’,这样就可以向最低点方向走了。α的值一定要选的合适,太小会让逼近的过程太久,太大会出现老是走过了的情况。最后得到了以下公式。b维度的也是类似的。再接下来就可以将数据点的x、y值带入到公式,循环执行,直到a、b都收缩到趋于稳定的状态,也就是α * J(a)’和α * J(b)’已经小于设定的阈值。

 


201803111133.jpg


201803111133.jpg  

 

这里我们来一些数据,假设我们有这么一组x、y的数据,y有一些是未知的值,我们需要推测它们是什么值。从已知的值我们很容易知道y = 2x - 1,现在就用随机梯度进行a、b的寻找。

 

201803110957.jpg
随机梯度下降不需要每次用全量的数据,每次随机取一个或一部分进行训练,可以减少运算快速达到结果。因为每次只取一个数据点,所以上面的函数不再需要求和,a、b的推导可以简化为以下式子。

201803111140.jpg

201803111141.jpg
如果每次都先计算好了a,计算b的时候可以把当次的a代入来使用,则b的推导变成:

201803111143.jpg
假设a初始值为1、b初始值为0,(这里的初始值可以随机选取),设定步进量为0.01,然后依次或随机选取一对x、y的值带入到上面的at+1和bt+1中计算a和b的值,这里需要重复很多次,你会发现a、b的值有时候会出现反复,但大的趋势上来看,是在逐步的靠近a=2、b=-1。以上过程可以直接用excel来进行,会写程序的可以设置循环次数或者判断α * J’的大小,当小于阈值时退出。
附上excel文件 随机梯度excel
 
分享到:
评论

相关推荐

    如何理解线性回归-数学介绍

    ### 如何理解线性回归-数学介绍 #### 1. 线性回归的基本概念 在探讨线性回归之前,我们需要了解线性回归的基本概念及其背景。线性回归是一种统计方法,用于研究自变量(通常表示为X)与因变量(通常表示为Y)之间...

    线性回归与非线性回归

    总的来说,理解线性回归与非线性回归的基本原理和应用是数据分析和机器学习的关键技能。Matlab作为强大的数值计算工具,提供了丰富的函数支持,使得这两种回归方法的实施变得相对简单。通过深入学习和实践,我们可以...

    线性回归分析Delphi源码

    学习和理解这个Delphi源码可以帮助开发者深入理解线性回归算法的工作原理,同时也能提高他们在Delphi环境下处理数据分析任务的能力。此外,通过阅读和分析源码,还可以学习如何将统计方法应用于实际编程项目,提升...

    实战(python)利用线性回归来预测鲍鱼年龄 利用线性回归和局部

    在本实战项目中,我们将探讨如何使用Python编程语言和两种不同的线性回归模型——标准线性回归和局部加权线性回归(LOESS)来预测鲍鱼的...同时,这也将帮助你更好地理解线性回归和LOESS在实际问题中的应用及其优缺点。

    线性回归算法代码.zip

    首先,我们来深入理解线性回归的基本概念。线性回归模型通常表示为 y = wx + b,其中y是因变量(目标变量),x是自变量(特征变量),w是权重(斜率),b是截距。目标是找到最佳的w和b值,使得模型能够尽可能准确地...

    18.线性回归及多项式回归分析四个案例分享1

    通过这些案例,我们可以深入理解线性回归的基本原理和应用,以及如何使用Python的Scikit-learn库进行模型训练和预测。这些技能对于数据科学家和机器学习工程师来说是至关重要的,因为线性回归不仅是一个基础工具,也...

    王松桂《线性统计模型——线性回归与方差分析》第一章课件

    有了这些基础,我们才能更好地理解线性回归和方差分析模型的构造、推导和应用。 线性模型研究的基本问题包括随机变量的定义、线性关系与非线性关系的区别、变量间关系的类型,以及线性模型的定义和特点。随机变量...

    数据挖掘线性回归数据集

    这个数据集特别设计用于教学目的,特别是数据挖掘教科书第六章的案例实验,这表明它应该包含了适合初学者理解线性回归概念和应用的实例。 数据集通常包括多个样本,每个样本由一组自变量和一个因变量组成。在数据集...

    Advertising-线性回归测试数据集

    数据集包含了三个广告渠道(电视、广播、报纸)的投入量以及对应的收入值,这为学习和理解线性回归提供了很好的实例。 1. **线性回归模型**:线性回归假设因变量(在这里是收入)与一个或多个自变量(广告投入)...

    线性回归分析模型 可运行.zip

    总结来说,这个压缩包提供的线性回归模型可以帮助学习者和专业人士深入理解线性回归的基本概念,以及如何使用MATLAB进行实际操作。无论是单变量还是多变量的线性回归问题,都能够通过这个模型得到解决。在数据处理和...

    应用线性回归预测医疗费用,含详细讲解及代码

    首先,我们需要理解线性回归的基本概念。线性回归模型通过找到一条最佳拟合直线(或超平面,对于多维情况)来描述自变量与因变量之间的关系。这条直线的斜率表示自变量变化对因变量的影响程度,而截距则代表了当所有...

    Python 实现一元线性回归 Jupyter Notebook 源代码和数据.zip

    对于初学者来说,这是一个很好的实践项目,有助于理解线性回归的基本概念和Python的数据分析流程。在实际应用中,你可能需要根据具体问题调整这些步骤,例如选择合适的特征、处理非线性关系或进行特征工程等。

    线性回归房价预测数据集

    这个数据集是针对自然语言处理课程中线性回归概念的一个实践案例,适合初学者和有经验的数据科学家用来熟悉和理解线性回归算法。 线性回归的核心思想是找到一个最佳的直线(或多维超平面),这条直线可以最好地拟合...

    实验一-线性回归.docx

    线性回归是一种基础而重要的统计学和机器学习方法,它被...总的来说,这个实验旨在帮助学习者从理论到实践全面理解线性回归,包括基本概念、数学原理、Python实现和优化算法,以提升其在数据分析和机器学习领域的技能。

    机器学习——线性回归demo

    在这个"机器学习——线性回归demo"中,我们将深入理解线性回归的原理,并通过一个实际的编程示例来熟悉其在Python中的实现。 线性回归的基本思想是寻找一条直线(在一维情况下)或超平面(在多维情况下),使得数据...

    线性回归c++实现

    首先,我们要理解线性回归模型的基本概念。线性回归假设因变量Y与自变量X之间存在线性关系,可以用公式表示为: \[ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_nX_n + \epsilon \] 其中,\(\beta_0\) ...

    线性回归.zip_回归_回归 matlab_回归算法_线性回归代码_线性回归梯度

    这个压缩包提供了一个完整的MATLAB实现线性回归,尤其是基于梯度下降的实现过程,对于学习和理解线性回归算法以及实践数据分析具有很高的价值。通过阅读和运行这些代码,用户可以深入理解线性回归的原理以及如何在...

    线性回归预测PM2.5(包括代码详解)

    首先,我们需要理解线性回归的基本概念。线性回归模型假设因变量和自变量之间存在线性关系,即因变量可以用自变量的线性组合来表示。通常,这个关系用方程 y = a + bx + ε 描述,其中y是因变量,x是自变量,a是截距...

    机器学习线性回归与分类

    提供的代码资源为学习者提供了实际操作的机会,可以通过运行这些代码来理解线性回归和逻辑回归的工作原理。通过调整参数、尝试不同的特征组合或处理方法,学习者可以深化对机器学习的理解并提高解决问题的能力。 ...

    数据挖掘中线性回归分析的研究.pdf

    在数据挖掘领域中,线性回归分析是一种重要的统计学方法,它通过建立变量间的线性模型来进行预测和趋势分析。...此外,理解线性回归分析对于掌握其他更复杂的统计模型和机器学习算法也具有重要意义。

Global site tag (gtag.js) - Google Analytics