SparkMLlib MultiClassMetrics.confusionMatrix() 和 precision() 似乎给出了矛盾的结果
SparkMLlib MultiClassMetrics.confusionMatrix() and precision() seems giving contradictory results
我是机器学习和 Spark MLlib 的新手。我使用 RandomForest.trainClassifier()
创建了 RandomForest 分类器模型 我的训练数据集本质上大部分是分类的并且有 response/target 个变量 Actionable/NoActionable.
我已经使用测试数据创建了 predictionAndLables
RDD
model.predict()
现在我正在尝试以下方法来验证我的模型准确性。
MultiClassMetrics metrics = new MultiClassMetrics(predictionAndLables.rdd())
System.out.println(metrics.precision()); //prints 0.94334140435
System.out.println(metrics.confusionMatrix()); //prints like the following
1948.0 0.0
117.0 0.0
现在,如果您看到使用 precision()
方法打印的模型精度似乎在 94%
附近确实不错,但如果您看到上面的混淆矩阵,似乎有问题,我有 1948
NonActionable 目标变量和 117
测试数据集中可操作的目标变量。
所以根据混淆矩阵它可以正确预测 NonActionable 并且不能预测所有 Actionable 变量。我试图理解混淆矩阵以及为什么精度是 94%
。所以结果看起来很矛盾。
想象一下,您的 117 行可操作行与大约 500 行不可操作行粘在一起。现在,分类器可以将所有 617 个移到 Actionable 列并得到 500 个 NonActionable 错误,或者它可以将它们移到 NonActionable 列并得到 117 个错误。除非你告诉它 117 个 Actionable 错误比 500 NonActionable 错误更多,否则它会这样做。弄清楚如何平衡问题(伪造更多可操作的项目,对不可操作的项目进行二次抽样,更重地加权可操作的项目等)并处理更多功能以削弱 "glue"(使可操作和不可操作的看起来尽可能不同到分类器)
我是机器学习和 Spark MLlib 的新手。我使用 RandomForest.trainClassifier()
创建了 RandomForest 分类器模型 我的训练数据集本质上大部分是分类的并且有 response/target 个变量 Actionable/NoActionable.
我已经使用测试数据创建了 predictionAndLables
RDD
model.predict()
现在我正在尝试以下方法来验证我的模型准确性。
MultiClassMetrics metrics = new MultiClassMetrics(predictionAndLables.rdd())
System.out.println(metrics.precision()); //prints 0.94334140435
System.out.println(metrics.confusionMatrix()); //prints like the following
1948.0 0.0
117.0 0.0
现在,如果您看到使用 precision()
方法打印的模型精度似乎在 94%
附近确实不错,但如果您看到上面的混淆矩阵,似乎有问题,我有 1948
NonActionable 目标变量和 117
测试数据集中可操作的目标变量。
所以根据混淆矩阵它可以正确预测 NonActionable 并且不能预测所有 Actionable 变量。我试图理解混淆矩阵以及为什么精度是 94%
。所以结果看起来很矛盾。
想象一下,您的 117 行可操作行与大约 500 行不可操作行粘在一起。现在,分类器可以将所有 617 个移到 Actionable 列并得到 500 个 NonActionable 错误,或者它可以将它们移到 NonActionable 列并得到 117 个错误。除非你告诉它 117 个 Actionable 错误比 500 NonActionable 错误更多,否则它会这样做。弄清楚如何平衡问题(伪造更多可操作的项目,对不可操作的项目进行二次抽样,更重地加权可操作的项目等)并处理更多功能以削弱 "glue"(使可操作和不可操作的看起来尽可能不同到分类器)