spark 在回归模块提供的算法有:LinearRegressionWithSGD,RidgeRegressionWithSGD,LassoWithSGD,IsotonicRegression,StreamingLinearRegressionWithSGD
LinearRegression 是寻找线性关系 h(X) = BX,使得 Y-h(X)【损失函数】尽可能小。求解最优解的算法有很多,spark 主要提供了随机梯度下降算法(SGD)。
线性回归同样可以采用正则化手段,其主要目的就是防止过拟合。当采用 L1 正则化时,则变成了 Lasso Regresion;当采用 L2 正则化时,则变成了 Ridge Regression。
此外,spark 还提供了 IsotonicRegression,这是一种保序回归,具有分段回归的效果。
最后,结合 spark 的特性,官方还提供了基于流的 StreamingLinearRegressionWithSGD 算法。
##LabeledPoint
由于回归是有监督学习,因此需要一个数据结构来表示(label,features),LabeledPoint 正是这样一个数据结构。虽然 LabeledPoint 属于 regression 包,但是广泛在有监督学习中使用。
- 类: pyspark.mllib.regression.LabeledPoint(label, features)
- label:样本的 label 值
- feature:样本的特征向量
##LinearRegression
使用非规则化的数据,训练线性回归模型。使用随机梯度下降寻找最优解。
最小二乘回归公式为:
f(weights) = 1/n ||A weights-y||^2^
- 类:pyspark.mllib.regression.LinearRegressionWithSGD
- 方法:
train(data, iterations=100, step=1.0, miniBatchFraction=1.0, initialWeights=None, regParam=0.0, regType=None, intercept=False, validateData=True, convergenceTol=0.001)
- data:结构为 LabeledPoint 的 RDD 数据集
- iterations:迭代次数,默认为 100
- step:SGD 的步长,默认为 1.0。
- miniBatchFraction:用于每次 SGD 迭代的数据,默认 1.0。
- initialWeights:初始权值,默认 None。
- regParam:规则化参数,默认 0.0。
- regType::用于训练模型的规则化类型,可选为 l1(Lasso)或 l2(Ridge),在线性回归默认为 None。
- intercept:布尔值,表示是否使用增强表现来训练数据,默认 False。
- validateData:布尔值,表示算法是否在训练前检验数据,默认 True。
- convergenceTol:终止迭代的收敛值,默认 0.001。
- 方法:
- 类: pyspark.mllib.regression.LinearRegressionModel(weights, intercept)
- 属性:
- weights:每个特征的权值
- intercept:该模型的截距
- 方法: load(sc, path)
从指定路径加载模型 - 方法: save(sc, path)
将模型保存到指定路径 - 方法: predict(x)
预测,输入可以为单个 LabeledPoint 或整个 RDD
- 属性:
##RidgeRegression
使用 L2 规则化的数据,训练线性回归模型。使用随机梯度下降寻找最优解。
最小二乘回归公式为:
f(weights) = 1/2n ||A weights-y||^2^ + regParam/2 ||weights||^2^
- 类: pyspark.mllib.regression.LinearRegressionWithSGD
- 方法:
train(data, iterations=100, step=1.0, regParam=0.01, miniBatchFraction=1.0, initialWeights=None, intercept=False, validateData=True, convergenceTol=0.001)
- data:结构为 LabeledPoint 的 RDD 数据集
- iterations:迭代次数,默认为 100
- step:SGD 的步长,默认为 1.0。
- miniBatchFraction:用于每次 SGD 迭代的数据,默认 1.0。
- initialWeights:初始权值,默认 None。
- regParam:规则化参数,默认 0.01。
- intercept:布尔值,表示是否使用增强表现来训练数据,默认 False。
- validateData:布尔值,表示算法是否在训练前检验数据,默认 True。
- convergenceTol:终止迭代的收敛值,默认 0.001。
- 方法:
- 类:pyspark.mllib.regression.RidgeRegressionModel(weights, intercept)
- 属性:
- weights:每个特征的权值
- intercept:该模型的截距
- 方法: load(sc, path)
从指定路径加载模型 - 方法: save(sc, path)
将模型保存到指定路径 - 方法: predict(x)
预测,输入可以为单个 LabeledPoint 或整个 RDD
- 属性:
##Lasso
使用 L2 规则化的数据,训练线性回归模型。使用随机梯度下降寻找最优解。
最小二乘回归公式为:
f(weights) = 1/2n ||A weights-y||^2^ + regParam ||weights||_1
- 类:pyspark.mllib.regression.LassoWithSGD
- 方法:
train(data, iterations=100, step=1.0, regParam=0.01, miniBatchFraction=1.0, initialWeights=None, intercept=False, validateData=True, convergenceTol=0.001)
- data:结构为 LabeledPoint 的 RDD 数据集
- iterations:迭代次数,默认为 100
- step:SGD 的步长,默认为 1.0。
- miniBatchFraction:用于每次 SGD 迭代的数据,默认 1.0。
- initialWeights:初始权值,默认 None。
- regParam:规则化参数,默认 0.01。
- intercept:布尔值,表示是否使用增强表现来训练数据,默认 False。
- validateData:布尔值,表示算法是否在训练前检验数据,默认 True。
- convergenceTol:终止迭代的收敛值,默认 0.001。
- 方法:
-
类:pyspark.mllib.regression.LassoModel(weights, intercept)
- 属性:
- weights:每个特征的权值
- intercept:该模型的截距
- 方法: load(sc, path)
从指定路径加载模型 - 方法: save(sc, path)
将模型保存到指定路径 - 方法: predict(x)
预测,输入可以为单个 LabeledPoint 或整个 RDD
- 属性:
##IsotonicRegression
【这一块没学明白,后续再把这个坑填上吧】
- 类:pyspark.mllib.regression.IsotonicRegression
- 方法:
train(data, isotonic=True)
- data:(label,feature,weight)三元组组成的 rdd
- isotonic:布尔值,保序或非保序
- 方法:
- 类:pyspark.mllib.regression.IsotonicRegressionModel(boundaries, predictions, isotonic)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于