spark 评估指标
来源:互联网 发布:网络统考时间 编辑:程序博客网 时间:2024/05/21 18:49
评估指标
1 Classification model evaluation
1.1 二元分类
1.1.1阈值调整
1.2 Multiclassclassification
1.2.1 Label based metrics
1.3 Muitilabel classification
1.4 Ranking systems
2 Regression model evaluation
Spark mllib 自带了许多机器学习算法,它能够用来进行模型的训练和预测。当使用这些算法来构建模型的时候,我们需要一些指标来评估这些模型的性能,这取决于应用和和其要求的性能。Spark mllib 也提供一套指标用来评估这些机器学习模型。
具体的机器学习算法归入更广泛类型的机器学习应用,例如:分类,回归,聚类等等,每一种类型都很好的建立了性能评估指标。这些指标的具体信息见本节
1 分类模型评估
尽管有许多不同的分类模型,但是分类模型的评估都有相似的原理。在一个监督分类问题中,存在一个真正的输出和模型预测的输出值。由于这个原因,对于每个数据点的结果属于以下四类:
真阳性(TP) - 标签是积极的,预测也为正
真银杏(TN) - 标签为负,预测也为负
假阳性(FP) - 标签是阴性,但预测为正
假阴性(FN) - 标签是积极的,但预测为负
这四个数字是大多数分类评估模型的构建块。当考虑到分类评估是出精度的一个基本点(例如:预测正确或不正确)一般不是一个好的指标。原因就是有可能数据集时高度不平衡的。例如,在男女比例严重不均与的情况下,假如100个人,男生95,女生5人,对于一个人我只要预测他是男生,就能获得极高的准确率。所以在正负样本严重不均匀的情况下,准确率指标失效。由于这个原因,像精确率(TP/(TP+FP))和召回率(TP/(TP+FN)))通常被使用,因为他们考虑到错误的类型。在大多数应用中需要考虑精确率和召回率之间的平衡,她可以有两个组合成单个度量,成为F值。
1.1 二元分类
二元分类用来把给定的数据集分割成两个部分,他是多元分类里面的一个特例。大多数二元分类指标在多元分类中也适合。
1.1.1阈值调整
许多分类模型对每个类实际上输出一个“得分”(很多时候是一个概率),其中分数越高越相似。在二元分类情况下,模型可能对每个类别输出一个概率。P(Y=1|X) P(Y=0|X)。不同于简单地使用较高的概率,在某些情况下,模型需要被调整以便他预测一个类别的时候,属于这个类需要特别高的概率(例如对于二元分类,我们设定的阈值为90%,则>90%则为正,小于<90%都为负),因此,模型的输出的类别取决于模型的阈值。
调整预测阈值将改变准确率和召回率,它是模型优化的重要组成部分,为了直观的观察准确率,召回率或者其他的指标的变化,我们把他的这种变化作为一个阈值函数,通常的做法是绘制出他们之间的相互关系,参数是预测阈值。P-R曲线图(准确率,召回率)是对不同阈值绘制的曲线,ROC曲线绘制的是(召回率,假阳性率)绘制的曲线图。(假阳性率:FP/(FP+TN))
举例:以下程序片段说明了怎么样加载数据集,训练二元分类模型,使用不同的评估指标进行评估。
importorg.apache.spark.mllib.classification.LogisticRegressionWithLBFGS
importorg.apache.spark.mllib.evaluation.BinaryClassificationMetrics
importorg.apache.spark.mllib.regression.LabeledPoint
importorg.apache.spark.mllib.util.MLUtils
// Load training data in LIBSVM format
val data=MLUtils.loadLibSVMFile(sc,"data/mllib/sample_binary_classification_data.txt")
// Split data into training (60%) and test (40%)
valArray(training, test)= data.randomSplit(Array(0.6,0.4), seed =11L)
training.cache()
// Run training algorithm to build the model
val model=newLogisticRegressionWithLBFGS()
.setNumClasses(2)
.run(training)
// Clear the prediction threshold so the model will return probabilities
model.clearThreshold
// Compute raw scores on the test set
val predictionAndLabels= test.map{caseLabeledPoint(label, features)=>
val prediction= model.predict(features)
(prediction, label)
}
// Instantiate metrics object
val metrics=newBinaryClassificationMetrics(predictionAndLabels)
// Precision by threshold
val precision= metrics.precisionByThreshold
precision.foreach{case(t, p)=>
println(s"Threshold: $t, Precision: $p")
}
// Recall by threshold
val recall= metrics.recallByThreshold
recall.foreach{case(t, r)=>
println(s"Threshold: $t, Recall: $r")
}
// Precision-Recall Curve
valPRC= metrics.pr
// F-measure
val f1Score= metrics.fMeasureByThreshold
f1Score.foreach{case(t, f)=>
println(s"Threshold: $t, F-score: $f, Beta = 1")
}
val beta=0.5
val fScore= metrics.fMeasureByThreshold(beta)
f1Score.foreach{case(t, f)=>
println(s"Threshold: $t, F-score: $f, Beta = 0.5")
}
// AUPRC
val auPRC= metrics.areaUnderPR
println("Area under precision-recall curve = "+ auPRC)
// Compute thresholds used in ROC and PR curves
val thresholds= precision.map(_._1)
// ROC Curve
val roc= metrics.roc
// AUROC
val auROC= metrics.areaUnderROC
println("Area under ROC = "+ auROC)
- spark 评估指标
- spark机器学习库评估指标总结
- 评估指标
- 回归预测评估指标
- pyspark-评估指标
- 可靠度及其评估指标
- 机器学习性能评估指标
- 分类之性能评估指标
- 分类之性能评估指标
- 机器学习性能评估指标
- 机器学习性能评估指标
- 机器学习性能评估指标
- 机器学习性能评估指标
- 机器学习之评估指标
- 社区发现评估指标-NMI
- 机器学习十一 评估指标
- 深度学习算法评估指标
- 机器学习性能评估指标
- 网页当前时间显示(特效)
- Guess Number Higher or Lower II
- 单调队列 1005 HDU 2430 Beans
- Linux+C(一)
- 获取输入法候选调研
- spark 评估指标
- Educational Codeforces Round 14 题解
- locate 命令
- 基于TQ2440的小车编写(初步)
- GET和POST
- 单调队列1006 POJ 1821 Fence
- TreeSet重写比较器按照字符串长度排序
- 在ubuntu中用vscode编译调试C\C++
- 各个平台支持的Cocos2d-x最大纹理尺寸