本文不涉及线性回归具体算法和原理性的东西,纯新手向、介绍性的文章。
线性回归
线性回归,对于初学者而言(比方说我)比较难理解,其实换个叫法可能就能立马知道线性回归是做什么的了:线性拟合。所谓拟合,就简单多了,如下图所示:
线性拟合,顾名思义拟合出来的预测函数是一条直线,数学表达如下:
\(h(x)=a_0+a_1x_1+a_2x_2+..+a_nx_n+J(\theta)\)
其中 \(h(x)\) 为预测函数, \(a_i(i=1,2,..,n)\) 为估计参数,模型训练的目的就是计算出这些参数的值。
而线性回归分析的整个过程可以简单描述为如下三个步骤:
- 寻找合适的预测函数,即上文中的 \(h(x)\) ,用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数,若是非线性的则无法用线性回归来得出高质量的结果。
- 构造一个Loss函数(损失函数),该函数表示预测的输出(h)与训练数据标签之间的偏差,可以是二者之间的差(h-y)或者是其他的形式(如平方差开方)。综合考虑所有训练数据的“损失”,将Loss求和或者求平均,记为 \(J(\theta)\) 函数,表示所有训练数据预测值与实际类别的偏差。
- 显然, \(J(\theta)\) 函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到 \(J(\theta)\) 函数的最小值。找函数的最小值有不同的方法,Spark中采用的是梯度下降法(stochastic gradient descent, SGD)。