模型评价是度量机器学习算法的好坏的标准,是机器学习入门的第一课。
下面简单介绍下分类和回归问题中的模型评价方法,以及python中代码实现。
目录结构如下:
回归问题
回归问题中预测连续值,主要的评价方法有均方误差,绝对值误差,R2等及其演变。
均方误差
绝对值误差
其改进的取中位数绝对值误差:
R2
分子:代表回归值与真实值之间的平方差异; 分母:测试数据真实值的方法,内部差异;
python代码实现:
分类问题
分类问题中的评价指标比较多,不同的问题适用不同的指标,选对指标是解决问题的前提。比如说疾病监测,欺诈监测,单独使用准确率就显得太不专业。
混淆矩阵
从混淆矩阵开始可以推导出其他多个指标,比如准确率,查准率,查全率。
混淆矩阵形式如下:
从一个具体的实例开始,对一个二分类问题:
真实值和预测值分别如下:
真实值:0 1 1 0 1 1 0 1 1 0
预测值:1 1 1 1 1 0 0 1 0 1
那么填充混淆矩阵如下:
精度、查准率、查全率
精度/准确率 :所有预测正确的样本占总样本的比例;
精确率/查准率:预测为正例中预测对的比率;
召回率/查全率:真实正例中别预测为正例的比率;
公式表示及针对上面的例子计算为:
查准率P,查全率R也可以进一步理解为:
P:检测出来的信息有多少比例的是用户感兴趣的;预测为真实际也为真占模型预测为真的样本比例。
R:用户感兴趣的信息中有多少比例被检索出来;预测为真实际也为真,占实际为真的比例。
P,R是一对矛盾的两个度量值。提高查准率(谨慎选择),查全率会降低;提高查全率(选上所有的),查准率会降低。
于是又了P-R曲线:
以查准率为横坐标,查全率为纵坐标绘制的曲线,更能反映分类器的性能。
F1-score
F1值是结合了上述两个指标的综合情况考虑。是P和R的调和平均。
定义如下:
ROC-AUC
ROC:受试者特征曲线,起源于二战雷达探测。
ROC曲线和P-R曲线类似,但是使用的真阳性率,假阳性率作为横纵坐标。真阳性率和假阳性率其定义如下:
真阳性率:预测为真实际也为真,占实际为真的比例;越高,正类样本被模型预测正确,模型效果越好。
假阳性率:预测为正实际为假的,占实际假样本比例;越低,负样本被模型预测正确,模型效果越好
ROC曲线其在样本比例不平衡的问题中有很好的鲁棒性。
AUC是ROC曲线下的面积。
ROC曲线绘制
对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组FPR和TPR结果,而要得到一个曲线,我们实际上需要一系列FPR和TPR的值。那么怎么得到ROC曲线呢?
简单的演示通过以下3个步骤:
1. 从小到大调整不同阈值得到对应的混淆矩阵值
2. 计算对应的FPR和TPR
__3. 对多组FPR和TPR值绘制曲线
多条ROC曲线,怎么评价那条曲线对应的分类器更优呢?
如果一个曲线在另一个曲线上面,比如蓝线在红线上面,那么蓝线对应分类器性能更优。中间的黑色斜线对应随机猜测。
如果曲线有交叉,那么计算曲线下的面积AUC。越大越好。
ROC曲线优点: 在样本分布不均衡情况下更加稳定,和类别无关。考虑的是预测排序质量。
AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。
python代码实现
领取专属 10元无门槛券
私享最新 技术干货