spark Pipeline,逻辑回归、svm等算法交叉验证

摘要:
常用的算法有逻辑回归、神经网络、ALS、SVM、决策树等。Spark中采用是k折交叉验证。在Spark中,CrossValidation和ParamMap结合使用。具体做法是,针对某有特定的ParamMap,CrossValidator计算K个评估分数的平均值。然后和其他参数组合CrossValidator计算结果比较,最终将最优的参数组合挑选出来,用于整个训练数据集上模型的重新训练。也就是说,通过交叉验证,找到了最佳的ParamMap,利用此ParamMap在整个训练集上可以训练出一个泛化能力强,误差相对小的的最佳模型。

交叉验证应用与各种算法中,用于验证超参数的最优值。

常用的算法有逻辑回归、神经网络、ALS、SVM、决策树等。

Spark中采用是k折交叉验证 (k-fold cross validation)。举个例子,例如10折交叉验证(10-fold cross validation),将数据集分成10份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计。 10折交叉检验最常见,是因为通过利用大量数据集、使用不同学习技术进行的大量试验,表明10折是获得最好误差估计的恰当选择,而且也有一些理论根据可以证明这一点。但这并非最终结论,争议仍然存在。而且似乎5折或者20折与10折所得出的结果也相差无几。交叉检验常用于分析模型的泛化能力,提高模型的稳定。相对于手工探索式的参数调试,交叉验证更具备统计学上的意义。在Spark中,Cross Validation和ParamMap(参数组合Map)结合使用。具体做法是,针对某有特定的ParamMap,CrossValidator计算K (K 折交叉验证)个评估分数的平均值。然后和其他参数组合CrossValidator计算结果比较,最终将最优的参数组合挑选出来,用于整个训练数据集上模型的重新训练(re-fit)。也就是说,通过交叉验证,找到了最佳的ParamMap,利用此ParamMap在整个训练集上可以训练(fit)出一个泛化能力强,误差相对小的的最佳模型。

这里值得学习的是ML api提供了一个帮助我们寻找最佳参数的api

ALS交叉验证参数

rank取值(5,10,20)

regParam--正则化参数(0.05,0.10,0.15,0.20,0.40,0.80)

ParamMap[] paramGrid=new ParamGridBuilder()
      .addGrid(als.rank(),new int[]{5,10,20})
      .addGrid(als.regParam(),new double[]{0.05,0.10,0.15,0.20,0.40,0.80})
      .build();
CrossValidator交叉验证
setNumFolds:五折交叉验证
setEvaluator:模型评估
// CrossValidator 需要一个Estimator,一组Estimator ParamMaps, 和一个Evaluator.
      // (1)Pipeline作为Estimator;
      // (2)定义一个RegressionEvaluator作为Evaluator,并将评估标准设置为“rmse”均方根误差
      // (3)设置ParamMap
      // (4)设置numFolds    

      CrossValidator cv=new CrossValidator()
      .setEstimator(pipeline)
      .setEvaluator(new RegressionEvaluator()
              .setLabelCol("rating")
              .setPredictionCol("predict_rating")
              .setMetricName("rmse"))
      .setEstimatorParamMaps(paramGrid)
      .setNumFolds(5);
// 运行交叉检验,自动选择最佳的参数组合
      CrossValidatorModel cvModel=cv.fit(training);

会通过五折交叉验证确定ALS算法rank和正则参数的最优值

免责声明:文章转载自《spark Pipeline,逻辑回归、svm等算法交叉验证》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于SecureCRT不能显示输入、换行不正常设置input边框被选中时渐变下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

机器学习模型评估方法(一)

机器学习中,将数据集划分为训练集、验证集、测试集。训练集构建模型,然后用模型计算测试数据集的测试误差,最后以测试集的测试误差近似为模型的泛化能力,根据泛化能力来评估模型的优劣。 本文首先引入数据集概率分布的概念,然后介绍模型评估方法。 1. 数据集的概率分布 总体样本服从某一分布P(X),数据集D是从总体样本中独立随机抽样m次获取的,数据集D = {(x1...

机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)

http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考《机器学习实战》这本书...

Python机器学习(6)——逻辑回归分类

在本系列文章中提到过用Python机器学习(2)数据拟合与广义线性回归中提到过回归算法来进行数值预测。逻辑回归算法本质还是回归,只是其引入了逻辑函数来帮助其分类。实践发现,逻辑回归在文本分类领域表现的也很优秀。现在让我们来一探究竟。 1、逻辑函数 假设数据集有n个独立的特征,x1到xn为样本的n个特征。常规的回归算法的目标是拟合出一个多项式函数,使得预测...

前馈神经网络介绍

转自出处: http://blog.csdn.net/walilk/article/details/50278697 符号说明: 以如下图为例: 前面的网络结构对应二分类问题 后面的网络结构对应多分类问题 Layer层: 最左边的层为输入层(input layer),对应样本特征 最右边的层为输出层(output layer),对应预测结果 Node:...

机器学习基础:(Python)训练集测试集分割与交叉验证

在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章。在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具。我会解释当使用统计模型时,通常将模型拟合在训练集上,以便对未被训练的数据进行预测。 在统计学和机器学习领域中,我们通常把数据分成两个子集:训练数据和测试数据,并且把模型拟合到训练数据上,以...

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类。 一、模型概述 1、Sigmoid函数 为了具象化...