天天看点

Spark Mllib数据挖掘入门四——回归分析

回归分析(regression analysis)是一种用来确定两种或两种以上变量间相互依赖的定量关系的统计分析方法,运用十分广泛。

如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。

如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多重线性回归分析。

回归分析是最常用的机器学习算法之一。本文将向读者介绍线性回归的基本理论与MLlib中使用的预测算法,以及为了防止过度拟合而进行的正则化处理,这些不仅仅是回归算法的核心,也是MLlib的最核心部分。

1.随机梯度下降算法 

MLlib中使用的是较为经典的随机梯度下降算法,它充分利用了Spark框架的迭代计算特性,通过不停地判断和选择当前目标下的最优路径,从而能够在最短路径下达到最优的结果,继而提高大数据的计算效率。

随机梯度下降算法最终被归结为通过迭代计算特征值从而求出最合适的值。θ求解的公式如下:θ=θ−α(f ( θ)−yi)xi

2.回归的过拟合

如果测试数据过于侧重某些具体的点,则会对整体的曲线形成构成很大的影响,从而影响到待测数据的测试精准度。这种对于测试数据过于接近而实际数据拟合程度不够的现象称为过拟合,而解决办法就是对数据进行处理,而处理过程称为回归的正则化。

正则化使用较多的一般有两种方法,lasso回归(L1回归)和岭回归(L2回归)。

L1范数和L2范数相比较而言,L1能够在步进系数α在一定值的情况下将回归曲线的某些特定系数修正为0。而L1回归由于其平方的处理方法从而使得回归曲线获得较高的计算精度。

3.MLlib线性回归

MLlib回归算法中数据格式的要求,可以从回归算法的源码来分析:def train( input:RDD[LabeledPoint],numIterations:Int, stepSize:Double):LinearRegressionModel = { train(input,numIterations, stepSize, 1.0) }

均方误差(Mean Squared Error, MSE)是衡量“平均误差”的一种较方便的方法,可以评价数据的变化程度。均方根误差是均方误差的算术平方根。

MLlib计算框架中最核心的部分,即梯度下降算法实际上机器学习的大多数算法都是在使用迭代的情况下最大限度地逼近近似值,这也是学习算法的基础。

继续阅读