机器学习之线性回归

什么是线性回归

线性回归利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间
关系进⾏建模的⼀种分析⽅式。一般只有一个特征值的称之为单变量回归,多个特征值的称之为多变量回归。

线性回归

线性回归可以分为两类:线性关系和非线性关系。

  1. 线性关系
    线性关系是指特征值和目标值之间的关系呈现多元一次关系,例如一个特征值时,则特征值和目标值呈现直线性关系;两个特征值时,则特征值和目标值呈现平面关系。
    机器学习之线性回归_第1张图片
  2. 非线性关系
    非线性关系指特征值和目标值之间的关系呈多元二次以上关系,即关系无法用直线来表达,需要用直线才能贴合。
    机器学习之线性回归_第2张图片

损失函数

由算法得出的线性回归方程有会多种,那么模型是怎么选出最有的回归方程呢,那么让回归方程的值与实际值的误差最小,就是最好的回归方程,这就我们优化回归方程的函数:损失函数。
损失函数:预测的所有数值与实际数值之间差的平方的总和,又叫做最小二乘法,数学定义如下:
在这里插入图片描述
那么我们怎么求模型中的各个系数w,使得损失函数最小?在线性回归中常用到两种方法:

  1. 正规方程法
  2. 梯度下降法

1. 正规方程(LinearRegression)

正规方程法就是数学中的求方程的未知数,将特征值、目标值和未知数w列出方程组,求解方程组,即可得到系数w,如下图的方程组。当特征值和w较少时,比较容易算出,但特征过多过于复杂时,则求解起来很麻烦,甚至求解不出答案。例如样本量较多时,更多采用梯度下降法。特征之间存在多重共线性问题时,需要使用岭回归(Ridge Regression)。
正规方程法公式如下:
在这里插入图片描述
X为特征矩阵,y为目标矩阵。
在这里插入图片描述
机器学习之线性回归_第3张图片

2.梯度下降法(SGDRegressor)

在求解回归方程时往往没有最优解,经常采用迭代的方法,不断沿着函数梯度的反方向更新参数,直到损失函数最小化。
梯度下降法的过程如下:
a. 随机初始化模型参数,并计算当前参数下损失函数的地图,即当前点的斜率;
b. 沿着参数朝着梯度的反方向进行一定的步长调整,使得损失函数下降;
c. 重复a和b的过程,直到损失函数达到最小值,或者设定迭代次数的限制。
梯度下降法的公式如下:
在这里插入图片描述
α在梯度下降算法中被称作为学习率或者步⻓,意味着我们可以通过α来控制每⼀步⾛的距离,控制参数不要⾛太快,错过了使损失函数取最⼩值的点。同时也要保证不要⾛的太慢,导致太阳下⼭了,还没有⾛到⼭下。所以α的选择在梯度下降法中往往是很重要的!α不能太⼤也不能太⼩,太⼩的话,可能导致迟迟⾛不到最低点,太⼤的话,会导致错过最低点!
机器学习之线性回归_第4张图片
梯度下降法分类:

  • 全梯度下降算法(Full gradient descent) FGD
    • 要在所有数据集上计算梯度,所以下降速度慢;
    • 无法在线更新模型,即运行过程中无法增加样本
  • 随机梯度下降算法(Stochastic gradient descent)SGD
    • 计算单个样本的梯度,速度更快;
    • 由于只使用一个样本,容易陷入局部最优解
  • ⼩批量梯度下降算法(Mini-batch gradient descent)
    • 随机抽取一个小批量样本集,然后再采用FGD
    • batch_size = 1为SGD,batch_size=n为FGD,一般设为2的幂次方
  • 随机平均梯度下降算法(Stochastic average gradient descent)
    • 内存中为每个样本维护一个旧梯度,随机选择i个样本来更新该梯度,其他梯度保持不变,然后求得所有梯度的平均值
    • n设置为1时,为SGD

两种方法对比

机器学习之线性回归_第5张图片
那么什么时候用正规方程法,什么时候用梯度下降法呢?

  1. 是否存在逆矩阵:从正规方程的公式可以得知,要先计算逆矩阵,有可能它的逆矩阵不存在,这就需要我们去除冗余特征值,让其逆矩阵不为0。而梯度下降法可以使用;
  2. 特征值数据量是否大:特征值数据大于10000时,建议采用梯度下降法。正规方程法计算量较大,难以计算,当然可以用主成分分析降低特征的维度,再使用正规方程法计算;
  3. 拟合函数是否为线性:不是线性无法使用正规方程法,梯度下降法还是可以使用;
  4. 以下几种情况特殊处理:
    • 特征值数据较少,无法拟合;
    • 特征值数量与样本量一致时,正规方程法可以解决;

所以线性回归的算法选择总结如下:

  • 小数据规模:
    • 正规方程:
    • 岭回归:特征之间多重共线性
  • 大规模数据:
    • 梯度下降法

线性回归API

  • 正规方程法:
    sklearn.linear_model.LinearRegression(fit_intercept=True)
    • 参数:
      • fit_intercept:是否计算偏置
    • 属性:
      • LinearRegression.coef_:回归系数
      • LinearRegression.intercept_:偏置
  • 梯度下降法:
    sklearn.linear_model.SGDRegressor(max_iter = 1000, loss=“squared_loss”, fit_intercept=True, learning_rate
    =‘invscaling’, eta0=0.01)
    • 参数:
      • loss:损失类型
      • max_iter用来指定神经网络的最大迭代次数,默认值为1000
      • fit_intercept:是否计算偏置
      • learning_rate:学习率填充
        • ‘constant’: eta = eta0
        • ‘optimal’: eta = 1.0 / (alpha * (t + t0)) [default]
        • ‘invscaling’: eta = eta0 / pow(t, power_t) power_t=0.25:存在⽗类当中
        • eta0:初始学习率或者步长,对于学习速率α,可以先选择0.001,然后按10倍来进行调整。
    • 属性:
      • SGDRegressor.coef_:回归系数
      • SGDRegressor.intercept_:偏置

线性回归性能评估

均⽅误差(Mean Squared Error, MSE)评价线性回归模型的好坏,公式如下:
在这里插入图片描述
对应API:

  • sklearn.metrics.mean_squared_error(y_true, y_pred)
    • 均⽅误差回归损失
    • y_true:真实值
    • y_pred:预测值
    • return:浮点数结果

线性回归应用

回归分析主要用于分析自变量和因变量的影响关系,也可以分析自变量对因变量的影响因素。它的主要应⽤场景是进⾏预测和控制例如计划制定、KPI制定、⽬标制定等。

优点

回归分析的优点是数据模式和结果便于理解,如线性回归⽤y=ax+b的形式表达,在解释和理
解⾃变量与因变量关系式相对容易;在基于函数公式的业务应⽤中,可以直接使⽤代⼊法求
解,因此应⽤起来⽐较容易。

缺点

回归分析的缺点是只能分析少量变量之间的相互关系,⽆法处理海量变量间的相互作⽤关系,
尤其是变量共同因素对因变量的影响程度。

回归分析实际落地场景举例

回归分析的结果,着重于不同X对于Y影响的对⽐,直接预测Y的场景较少。以在各种媒体上投放的⼴告对最终销售所产⽣的效果研究为例:

  • 公司投入很多的营销渠道:传统大众媒体、直销媒体和数字媒体,通过线性回归能够回答不同渠道之间的销量影响;并且调整每个渠道之间的投入营销,从而获取最大收益;并且在哪个渠道的广告效果最好。
  • 销售量=营销变量+误差因素;回归分析并不能直接得出营销变量和销售量的关系,但能够分析出营销变量里的影响因素大小。

回归分析的结果,着重于不同X对于Y影响的对⽐,直接预测Y的场景较少。

你可能感兴趣的:(机器学习,线性回归,回归)