【问题标题】:How to increase the accuracy of neural network model in spark?spark中如何提高神经网络模型的精度?
【发布时间】:2016-11-22 08:39:11
【问题描述】:
import org.apache.spark.ml.classification.MultilayerPerceptronClassifier
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.sql.Row

// Load training data
val data = MLUtils.loadLibSVMFile(sc,"/home/.../neural.txt").toDF()

val splits = data.randomSplit(Array(0.6, 0.4), seed = 1234L)
val train = splits(0)
val test = splits(1)

val layers = Array[Int](4, 5, 4, 4)
val trainer = new MultilayerPerceptronClassifier().setLayers(layers).setBlockSize(128).setSeed(1234L).setMaxIter(100)
val model = trainer.fit(train)
// compute precision on the test set
val result = model.transform(test)
val predictionAndLabels = result.select("prediction", "label")
val evaluator = new MulticlassClassificationEvaluator().setMetricName("precision")
println("Precision:" + evaluator.evaluate(predictionAndLabels))

我正在使用 MultilayerPerceptronClassifier 在 Spark 中构建神经网络。我得到了 62.5% 的准确率。为了获得良好的准确性,我应该更改哪些所有参数?

【问题讨论】:

  • ...一些代码,到目前为止你尝试了什么,你的设置是什么?
  • 我已编辑帖子。请检查
  • 这个问题太笼统了:我们不知道数据,我们不知道你在做什么。请再写一遍,补充一些细节
  • 我建议您参加一些有关神经网络的课程,以了解参数调整的含义以及您应该如何解释准确性。如果您需要一些帮助,您需要定义数据集中的内容、您希望实现的目标、您使用的哪些机器学习算法导致您不得不使用神经网络等。

标签: apache-spark machine-learning neural-network precision apache-spark-mllib


【解决方案1】:

正如一些人所说,这个问题过于宽泛,如果没有更多细节就无法回答,但一些建议(独立于使用的模型/算法或用于实现它们的工具和库)将是:

  • 使用交叉验证集并使用不同的网络架构执行一些交叉验证。
  • 绘制“学习曲线”
  • 确定您是否有高偏差或高方差
  • 看看您是否可以或需要应用特征缩放和/或归一化。
  • 做一些“错误分析”(手动验证哪些示例失败并评估或分类它们以查看是否可以找到模式)

不一定按此顺序,但这可以帮助您确定是否存在欠拟合、过拟合、是否需要更多训练数据、添加或删除特征、添加正则化等。总之,执行机器学习调试。

希望对您有所帮助,您可以在 Andrew Ngs 系列视频中找到有关此内容的更多详细信息,从以下内容开始: https://www.youtube.com/watch?v=qIfLZAa32H0

【讨论】:

    猜你喜欢
    • 2020-04-04
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2023-01-28
    • 2023-03-29
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多