数据挖掘

回归算法

Posted by Liangjf on March 5, 2018

本文思维导图

1.什么是回归?

回归分析是在一系列的已知或能通过获取的自变量与因变量之间的相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,通过其来实现对新自变量得出因变量的关系。因此回归分析是实用的预测模型或分类模型。

凡事皆有因果关系,解读“回归”二字,其实就是由因回溯果的过程,最终得到的因与果的关系,就称为回归。回归其实就是一个名词,没有特别的含义。

下面用一个大众的例子来更加形象的解释何为回归。 【根据销售产品预测营销额(实际中,此类数据挖掘问题可帮助商家合理的进货与最大化利润)】

这是一部分数据。观察数据一共有3个维度的因素影响最终的营销额。先拿部分数据集出来可视化,观察自变量与因变量间的关系。

通过Python可视化数据,可以看到产品销量与营销额的关系看似是线性的。其实实际中真的是这样做的,只不过在数据的获取和特征选择上做更多的功夫。所以,在此可以通过建立回归模型来分析这个业务问题。

这里先不考虑如何写代码的细节,直接上图清晰的看出回归模型的由来与作用。

由以上的图片看出来,由各个产品的销量与营销额建立回归模型: y = 0.04695x1 + 0.17659x2 + 0.00185*x3 + 2.9372 相信,看到这里应该对回归有了基本的了解了,实质就是通过对影响数据与被影响数据之间的关系建立数学模型(几何上是直线或曲线),然后使用这个模型来预测或分类。

2.回归的类型有哪些?

  • 1.线性回归
  • 2.曲线回归
  • 3.二元logistic回归
  • 4.多元logistic回归
  • 依据相关关系中自变量的个数不同分类,可分为一元回归分析预测法和多元回归分析预测法。
  • 依据自变量和因变量之间的相关关系不同,可分为线性回归预测和非线性回归预测。
  • 在这里要注意注意注意,线性回归的意思不是指样本的线性(样本可以是非线性的),而是指对参数theta的线性

3.线性回归的分析

下面对只对线性回归做分析,因为在实际解决问题中,一般是选用线性回归的,因为要节省计算量和省去模型的复杂度,很大时候简单就是美呢。

若只有一维度特征值回归模型是

若有两维特征的线性回归模型是

若有n多维特征的线性回归模型是(并把行向量转置为列向量,简化书写)

线性回归模型建立一句话概括:通过大量的训练出一个与数据拟合效果最好的模型,实质就是求解出每个特征自变量的权值θ。

当然在训练的过程中,特征的选择,拟合优化等都是要考虑的,因为不可能训练一个模型要一个月把?更不可能训练出来一个与真实情况不适应的模型吧?我们要利用一些算法和工具来更快更好的训练出适用的线性回归模型。

我们要做的工作是确定每个权值θ或者通过算法逼近真实的权值θ,针对这两种情况,诞生出两种常用的解决方法:最小二乘法和梯度下降法。

3.1求解线性回归模型

在实际线性回归的拟合中,多多少少都会有误差的,不可能完全拟合,而且我们也不会追求完全拟合(误差为0),因为这样虽然对训练数据有很好的拟合效果,但是对于测试数据和预测数据就是过拟合。在训练模型的时候要注意这点(做人也是一样,万事给自己留一条退路)。因此回归方程增加误差参数后为

误差ε是独立同分布的,服从均值为0,方差为某定值μ平方的高斯分布。(这是一个假设),这是因为中心极限定理。在实际中,很多随机的现象可看做是众多因素的独立影响的综合反映,往往近似服从正态分布。

上面的式子可看做是似然函数。似然函数其实是一种转换思想的方法。对于上面的式子,我们本来相求的是当y最小的时候,确定各个权值θ,由此确定线性回归方程。但是可以利用极大似然估计来求解,当求出或逼近得出各权值θ使误差ξ最小时,这时的y即线性回归方程就是我们想要的线性回归模型。这样就把问题转换为如何求解当θ是什么值时误差ε最小。

上面也说过了,误差服从正态分布,因此可表达为:

转换一下形式可得出下式:

上式意思为当θ为何值时使xi得到最小的yi的最大概率。这是一个特征向量的表示方法,那么全部的特征向量的表示方法是:

这时,让我们求θ的值,想到什么方法?自然反应是求导。在驻点的时候才有会极值,在此也才会有最小值。但是乍一看,这式子很难求导呢,因为涉及到累乘。通常是把普通的似然函数转换为对数似然函数,把累乘转换为累加来求解。通过对数把乘法转换为加法来方便求导是一种很常用的方法。

那么此时就得到最终需要求导的函数表达式(除去常数项)即(预测值-真实值)**2符合观察吧,可表达为

3.2最小二乘法

思想是在获得损失函数(在此是上面的目标函数)后,对其求导,获得n个方程,建立方程组来求解。

此式子就是最终要求解的目标函数,把其转换为向量表达的形式(矩阵的平方等于矩阵的转置*自身)。 对其求偏导得。

至此,我们得到了最终要确定θ的目标函数.求解此目标函数有两种常用的方法:最小二乘法和梯度下降法。

对上面的目标函数转换一下:

但是一般在大数据的情况下不使用最小二乘法,因为它的计算繁琐,假如有n多维数据,那么建立的方程组就会很多,计算量会非常大。一般在大数据和机器学习中,会使用优化的求解方法——梯度下降法。

3.3梯度下降法

梯度下降法是一种迭代求最优(全局最优(如果是凸函数)or局部最优(非凸函数))的算法。在大数据情况下,数据的特征维度很多维,那么此时对其使用最小二乘法计算量会很大。而且机器学习的思想也是通过计算机来自我迭代运算求出最优。那么梯度下降法就是一种很好的应用了。

梯度下降法的详细介绍请看另外一篇博文 这里只用一张图来介绍介绍。

人在山顶下,有n多条路径下到山的最底部。如果运用梯度下降法来计算路径的话。其主要思想是:人从山顶当前位置计算所有方向的偏导(即对各个方向维度求偏导),求出当前位置的各个偏导后,得到各个偏导函数的最小值,最小值即当前位置的梯度(因为这里是要找的是最小值,所以应该是梯度的反方向,所以称为梯度下降法。)。一致迭代的计算各个位置的梯度,那么总的趋势肯定是沿着下降的趋势的,迭代停止的条件是走到最低处或者迭代条件结束(比如迭代次数或者近似于最低处)。

3.4拟合效果的评价

总样本平方和TSS

残差平方和RSS

拟合评价参数

R越大,拟合效果越好。R的最优值为1。

针对最小二乘法和梯度下降法做一个总结:

只要特征变量的数目不大,标准方程是一个很好的计算参数θ的方法。一般地,特征变量数量小于一万,通常使用标准方程法,而不使用梯度下降法。

但是算法越复杂,例如逻辑回归算法,并不能使用标准方程法。对于那些更复杂的学习算法,将不得不仍然使用梯度下降法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。

4.总结

回归模型能够解决预测和分类问题。根据自变量的个数分为一元和多元回归;根据是否线性关系分为线性回归和非线性回归。在求解回归模型时要在特定的情况下选用对应的方法,在维度小或线性回归时可选用最小二乘法,但是在Logistic回归时应选用梯度下降法。