线性回归, 是回归分析中的一种, 其表示自变量与因变量之间存在线性关系. 回归分析是从数据出发, 考察变量之间的数量关系, 并经过必定的数学关系式将这种关系描述出来, 再经过关系式来估计某个变量的取值, 同时给出该估计的可靠程度. 下面咱们从一元线性回归开始提及.算法
在回归分析中若是只涉及一个自变量(用来预测的变量)和一个因变量(要预测的变量), 这时就称为一元回归, 若是自变量与因变量之间存在线性关系, 那么此时的回归就称为一元线性回归.函数
假设自变量x和因变量y存在线性关系, 那么x和y的线性关系函数能够表示为:学习
因为该函数是假设x和y存在线性关系, 所以该函数能够称为假设函数. 咱们把描述因变量y和自变量x关系的函数称为回归模型, 故该函数又称一元线性回归模型.其中和
称为模型参数, 不一样的参数将会构造不一样的模型, 所以构建模型的关键之处在于选择参数, 怎么样才能算好的参数呢?优化
因为咱们构建模型的最终目的是用来预测, 所以好参数构建的模型应该具有很好的预测能力, 也就是说预测值和实际值差别很小, 咱们把预测值h(x)与实际值y之间的差别称为偏差. 对于某个值来讲偏差就是h(xi)-yi, 对于整个模型来讲, 则是对全部偏差进行求和, 但因为偏差中有正负之分, 所以会产生偏差相互抵消, 为了不存在这种抵消问题, 对偏差进行平方求和, 再对其求平均, 故有平均偏差平方和, 其表示为spa
其中, m是样本量. h(x(i))表示第i个预测值, 与之对应的实际值则是y(i).3d
这种偏差能够认为是实际值或者指望值的损失, 故该偏差函数能够称为损失函数(有时也称为代价函数). 咱们能够根据损失函数数值最小来选出最优模型(很好的预测能力).blog
这里我将介绍两种基于损失函数最小的算法: 梯度降低法和最小二乘法.同步
什么是梯度? 引出百度百科定义:效率
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
在单个自变量函数曲线中, 梯度也就是曲线上某点处的斜率, 而对于咱们的损失函数来讲, 其有两个自变量和
, 故这两个自变量与损失函数
将构成三维曲面.
能够将这三维曲面想象成一座山, 咱们如今的目标是山底, 咱们要想最快下山, 就须要走最陡峭的方向, 而最陡峭的方向能够当作是当前方向(下山方向)中变化最大的反方向. (其中, 变化最大的方向是指从下山改成上山, 与目标不符, 故取其反方向, 即最大的反方向).
梯度降低法与下山过程相似, 咱们的目标是求出使得损失函数数值最小的最优解. 具体过程就是给定一个初始位置, 沿着梯度的反方向(也就是负的梯度)走一个步长的距离, 更新当前位置
, 如此反复, 直至找到使得损失函数最小的最优解
, 能够表示为:
其中, 为学习效率, 也称为步长, 等号右边的
为每次更新以前的模型参数(j=0,1), 即每走负梯度个步长, 更新一次
和
, 并且这二者是同步更新. 具体的求解过程以下:
首先是微分的求解, 该部分须要链式法则, 公式为
因为在实际中, 每每很难直接求解z对x的微分, 但引入y这个"中介"就能够将问题转化为求z对y的微分和y对x的微分, 这就至关于分数约分的一个过程.
从计算过程当中能够看出, 该算法在选择负的梯度方向时考虑到所有训练数据, 故该算法又称为批量(Batch)梯度降低法. 经过以上原理也可得知, 该算法是一个迭代求最优解的过程, 下面咱们介绍一种能够直接一步到位的算法.
2. 最小二乘法
最小二乘法又称最小平方法, 即平均偏差平方和最小, 也就是咱们的损失函数数值最小. 引出百度百科费马引理定义:
函数f(x)在点ξ的某邻域U(ξ)内有定义,而且在ξ处可导,若是对于任意的x∈U(ξ),都有f(x)≤f(ξ) (或f(x)≥f(ξ) ),那么f '(ξ)=0。
简单来讲就是可导函数极值点处导数为0, 故分别对和
求偏导, 并令其为0, 即:
由①式可得: , 故
, 代入②式中, 可得:
又因为和
, 故有:
咱们如今对一元线性回归介绍完了, 接下来看看多元线性回归.
多元线性回归与一元线性回归的区别在于自变量的个数, 一元是一个, 多元则是多个.
假设多元线性回归中有多个自变量(x0, x1, x2,...xn), 那么多元线性回归模型的假设函数能够写成:
为了简化, 咱们能够将假设函数写成矩阵的形式:
其中, x0=1
对应的其损失函数表示为(m表示样本量):
下面即是介绍求解最小损失函数的算法.
一样介绍两种算法: 梯度降低法和最小二乘法.
1. 梯度降低法
与一元的方法相似, 不过这里须要注意的是对n个自变量进行同步更新.即:
2. 最小二乘法
咱们能够将损失函数转换为矩阵的形式:
一样地, 令对
的偏导为0, 对于矩阵的运算须要用到如下公式:
而后套用公式:
经过以上咱们对一元和多元回归的模型以及算法均有所了解, 下面咱们来看看这两大算法的优缺点.
优势
1. 在特征变量不少时, 可以颇有效的运行
缺点
1. 容易依赖于步长和起始位置的选择, 所以须要屡次尝试寻找合适的步长和起始位置.
2. 因为在每次更新当前位置须要计算所有训练数据, 所以其迭代速度过慢.
优势
1. 直接应用公式计算便可, 学习效率高
缺点
1. 训练数据拟合的函数非线性的话, 则不能使用最小二乘法.
2. 须要计算的逆矩阵, 若是逆矩阵不存在, 则无法应用最小二乘法.
3. 当的样本特征n很大时, 计算
的逆矩阵将会很是耗时, 或者说无法计算.
上面咱们介绍的梯度降低法是指批量梯度降低法, 即:
在批量梯度降低法中, 每次计算过程都考虑所有数据, 容易找到全局最优, 但数据量较大时将会很是耗费时间, 所以诞生了随机梯度降低法
随机梯度降低法则是每次随机抽取一个样本进行计算, 能够大大提升学习效率, 但因为其具备随机性且仅有一个样本, 所以每每会致使不是最优解, 鉴于此, 产生了第三种方法: 小批量梯度降低法
这是综合前两种方法产生的, 选取其中a个样本进行求解.
若拟合函数非线性, 经常经过对数转换等方法将其转换为线性, 并且特征数量较少时直接运用公式进行计算便可.
当训练数据特征数量较少时, 且拟合函数为线性, 则能够直接采用最小二乘法, 若是拟合函数非线性, 能够先对其进行对数转换再运用最小二乘法;
当训练数据特征数量较多时, 因为其对拟合函数无要求, 若数据量不大, 则可选用批量梯度降低, 若数据量很大, 则能够选用小批量梯度降低.