Java 如何在apachesparkmllib';使用培训、测试和验证数据集
我想实现ApacheSpark的ALS机器学习算法。我发现应该选择最好的模型来获得最好的结果。我已经按照论坛上的建议,将培训数据分为三组Java 如何在apachesparkmllib';使用培训、测试和验证数据集,java,apache-spark,apache-spark-mllib,collaborative-filtering,Java,Apache Spark,Apache Spark Mllib,Collaborative Filtering,我想实现ApacheSpark的ALS机器学习算法。我发现应该选择最好的模型来获得最好的结果。我已经按照论坛上的建议,将培训数据分为三组培训、验证和测试 我发现以下代码示例可以在这些集合上训练模型 val ranks = List(8, 12) val lambdas = List(1.0, 10.0) val numIters = List(10, 20) var bestModel: Option[MatrixFactorizationModel] = None var bestValida
培训、验证和测试
我发现以下代码示例可以在这些集合上训练模型
val ranks = List(8, 12)
val lambdas = List(1.0, 10.0)
val numIters = List(10, 20)
var bestModel: Option[MatrixFactorizationModel] = None
var bestValidationRmse = Double.MaxValue
var bestRank = 0
var bestLambda = -1.0
var bestNumIter = -1
for (rank <- ranks; lambda <- lambdas; numIter <- numIters) {
val model = ALS.train(training, rank, numIter, lambda)
val validationRmse = computeRmse(model, validation, numValidation)
if (validationRmse < bestValidationRmse) {
bestModel = Some(model)
bestValidationRmse = validationRmse
bestRank = rank
bestLambda = lambda
bestNumIter = numIter
}
}
val testRmse = computeRmse(bestModel.get, test, numTest)
val等级=列表(8,12)
val lambdas=列表(1.0,10.0)
val numIters=列表(10,20)
var bestModel:选项[MatrixFactoryModel]=无
var bestValidationRmse=Double.MaxValue
var bestRank=0
var bestLambda=-1.0
变量bestNumIter=-1
对于(rankNo),人们永远不会使用测试数据对模型进行微调。如果您这样做,它将不再是您的测试数据。
我推荐Andrew Ng教授著名课程的这一部分,该部分讨论了模型培训过程:
根据您对验证数据集的错误值的观察,您可能希望添加/删除功能、获取更多数据或在模型中进行更改,甚至可能尝试完全不同的算法。如果交叉验证和测试rmse看起来合理,那么您就完成了模型,您可以使用它(一些预测,我想)这让你首先建造了它