分类模型
混淆矩阵
- 真实值是Positive,模型认为是Positive的数量(True Positive=TP)
- 真实值是Positive,模型认为是Negative的数量(False Negative=FN),统计学上的第一类错误(Type I Error)
- 真实值是Negative,模型认为是Positive的数量(False Positive=FP),统计学上的第二类错误(Type II Error)
- 真实值是Negative,模型认为是Negative的数量(True Negative=TN)
评估指标
ROC曲线
ROC曲线:为不同阈值(从大到小排序)下Sensitivity和(1-Specificity)的轨迹。
横坐标:1-Specificity (FPR)
纵坐标:Sensitivity (TPR)
AUC:ROC曲线下的面积,AUC越接近1,模型的预测效果越好。
KS曲线
KS曲线横坐标为概率阈值或depth,纵坐标为TPR和FPR值,KS=max(TPR-FPR),对应最优的划分阈值
Lift与Gain图
l i f t = T P / ( T P + F P ) ( T P + F N ) / ( T P + F N + F P + T N ) lift=\frac{TP/(TP+FP)}{(TP+FN)/(TP+FN+FP+TN)} lift=(TP+FN)/(TP+FN+FP+TN)TP/(TP+FP)
该指标衡量的是:与不利用模型相比,模型的预测能力变好了多少。
不利用模型,我们只能利用正例的比例是(TP+FN)/(TP+FN+FP+TN)来估计正例的比例;利用模型之后,只需要从预测为正例的那个样本的子集中挑选正例。
g a i n = T P ( T P + F P ) gain=\frac{TP}{(TP+FP)} gain=(TP+FP)TP
横坐标:正例集百分比(随阈值变化)
纵坐标:lift或gain值(随阈值变化)
回归模型
spark的回归模型指标计算过程
import org.apache.spark.mllib.stat.{MultivariateStatisticalSummary, Statistics}
val summary: MultivariateStatisticalSummary = Statistics.colStats(observations)
L1范数:向量各个元素绝对值之和;
L2范数:向量各个元素的平方求和然后求平方根.
- MAE(Mean Absolute Error)
平均绝对误差:summary.normL1(1) / summary.count - MSE(Mean Square Error)
平均平方差:SSerr / summary.count
SSerr = math.pow(summary.normL2(1), 2) - RMSE(Root Mean Square Error)
方均根差:math.sqrt(MSE)