模型性能评估

模型性能评估

模型性能评估是为了评价模型的泛化能力,模型性能评估主要有两个问题要解决:

1)用什么数据来评估?

2)用什么标准来评估?

下面的第一节内容主要解答用什么数据来评估模型的性能,第二节解答用什么标准来评估。

1.用什么数据来评估模型性能

常用的有3中,按照复杂程度程度排序分别为:

1)训练集+测试集

2)holdout方法

3)K折交叉验证

其中第1种方法是用测试集来评估模型的性能;第二种方法是用验证集+测试集来评估,验证集用于训练过程中的评估,测试集用于最终的评估;第3种方法也是用验证集+测试集的方式,但是不同于第2种,在k折交叉验证方法下验证集是不重复的,且一次训练会得到k个模型。

1.1 训练集+测试集

最简单的方法,就是将数据集按比例分为训练集和测试集,训练集用来训练模型,测试集用来测试模型性能;

优点:简洁,易操作;

缺点:鲁棒性差,可能存在性能评估失真和过拟合情况;(原因:重复使用同一组测试集来评估,意味这测试集也在间接的参与模型训练,那么测试集有又当运动员又当裁判的风险)

scikit-learn库中的model_selection模块下提供了train_test_split方法,专门用于这种方式的数据集划分;

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)

参数中的test_size是指测试集占全部数据的比例。

1.2 holdout方法

该方法是机器学习模型泛化性能的一个经典且常用的方法;

holdout方法是在前一种方法的基础上改进而来,它把数据集划分为3个部分:1)训练集,2)验证集,3)测试集;

在模型训练和参数调优阶段,只使用验证集对模型做性能评估,在训练的过程中选择那些在训练集和验证集上表现都良好的模型,最后才在测试集上对模型性能进行泛化评估;这样会大大减少测试集使用的次数,减少过拟合的风险。

优点:降低模型过拟合风险;

缺点:模型性能对训练集数据划分为训练及验证子集的方法是敏感的,评价结果会随样本的不同而发生变化。

1.3 K折交叉验证

在k折交叉验证方法中,我们将不重复并随机的将训练数据划分为k个,其中k-1个用于模型的训练,剩下一个用于模型的测试,重复此过程k次,得到k个模型以及其性能评价;

一般过程如下:

1)选择一套超参,进行K折交叉验证,记录此套超参在K折交叉验证下的性能评价(一般是K个模型的性能评价的平均);

2)更换超参,继续1)步骤中的方法;

3)所有超参完成训练;

4)选取其中表现最好的超参数,使用这套超参值在所有的训练集上重新训练模型;

5)使用独立的测试集对最终的模型进行测试评价;

该方法的重点是:无重复抽样,即将数据集划分为k个之后,每次选择不同的块作为交叉验证中的验证集,保证不会有重复的验证集。

scikit-learn库中的model_selection模块中有StratifiedKFold类,可以方便的进行操作:

import numpy as np
from sklearn.model_selection import StratifiedKFold

X = np.array([    [1,2],    [3,4],    [1,3],    [2,4],    [2,3],
    [1,4],
    ])
y = np.array([0,0,0,1,1,1])

skf = StratifiedKFold(n_splits=3)
for train_index,valid_index in skf.split(X,y):
    print("train:",train_index,"valid:",valid_index)
    X_train,X_valid = X[train_index],X[valid_index]
    y_train,y_valid = y[train_index],y[valid_index]
创建类时传入的n_split参数代表k折中的k;
执行结果如下:

2.用什么标准来评价模块性能的好坏

在分类模型中,最常用评价标准就是错误率;但是除了错误率,还有准确率,召回率,F1分数等评价指标,在不同的应用场景下,不同的评价指标可能会带来更好的效果;在介绍这些指标之前先介绍它们的基础--混淆矩阵;

2.1 混淆矩阵(confusion matrix)

混淆矩阵是一个简单的方阵,用于显示一个分类器的分类效果;

如下图所示:

为简化叙述,下面以二分类模型来描述:

在二分类中模型中,有4个变量:1)真正(true positive),2)真负(true negative),3)假正(false positive),4)假负(false negative);这4个变量分布如下图,变量值代表属于此类的数据个数。

scikit-learn库中的metrics模块中有confusion_matrix方法,可以直接调用此方法来生成混淆矩阵:

from sklearn.metrics import confusion_matrix

confmat = confusion_matrix(y_true=y_test,y_pred=y_pred)

confusion_matrix方法中的参数分别为实际测试样本的类标以及使用模型预测出来测试样本的类标。

2.2 分类模型的准确率与召回率

这里定义了3个不同的评价指标,根据实际应用需要可以选择其中合适的指标作为模型评价标准,或者通过组合变换实现更复杂的评价指标。

准确率:预测为正的数据中实际为正的比率;$PRE = \frac{TP}{TP+FP}$;

召回率:实际为正的样本被预测正确的比率;$REC=\frac{TP}{TP+FN}$;

F1分数:$F1=2\frac{PRE\times REC}{PRE+REC}$

scikit-learn库中的metrics模块中有precision_score,recall_score,f1_score方法,使用方法与confusion_matrix相同。

这些指标都只是参考,有需要的话可以自己订制指标。

原文地址:https://www.cnblogs.com/sienbo/p/11436533.html

时间: 2024-10-29 19:07:47

模型性能评估的相关文章

机器学习:模型性能评估与参数调优

模型性能评估的常用指标 真阳性(True Positive,TP):指被分类器正确分类的正例数据 真阴性(True Negative,TN):指被分类器正确分类的负例数据 假阳性(False Positive,FP):被错误地标记为正例数据的负例数据 假阴性(False Negative,FN):被错误地标记为负例数据的正例数据 精确率=TP/(TP+FP),TP+FP是模型预测的正样本总数,精确率衡量的是准确性: 召回率=TP/(TP+FN),TP+FN是真实的正样本总数,召回率衡量的是覆盖率

机器学习之模型性能评估

TP与TN都是分对了情况,TP是正类,TN是负类.则推断出,FP是把错的分成了对的,而FN则是把对的分成了错的. [举例]一个班里有男女生,我们来进行分类,把女生看成正类,男生看成是负类.我们可以用混淆矩阵来描述TP.TN.FP.FN.   相关(Relevant),正类 无关(NonRelevant),负类 被检索到(Retrieved) True Positives(TP,正类判定为正类.即女生是女生) False Positives(FP,负类判定为正类,即"存伪".男生判定为女

模型的性能评估(二) 用sklearn进行模型评估

在sklearn当中,可以在三个地方进行模型的评估 1:各个模型的均有提供的score方法来进行评估. 这种方法对于每一种学习器来说都是根据学习器本身的特点定制的,不可改变,这种方法比较简单.这种方法受模型的影响, 2:用交叉验证cross_val_score,或者参数调试GridSearchCV,它们都依赖scoring参数传入一个性能度量函数.这种方法就是我们下面讨论的使用scoring进行模型的性能评估. 3:Metric方法,Metric有为各种问题提供的评估方法.这些问题包括分类.聚类

机器学习模型性能评估方法笔记

模型性能评估综述 对于模型性能的评估,我们通常分为一下三步: 1. 对数据集进行划分,分为训练集和测试集两部分: 2. 对模型在测试集上面的泛化性能进行度量: 3. 基于测试集上面的泛化性能,依据假设检验来推广到全部数据集上面的泛化性能 数据集的划分 对于模型来说,其在训练集上面的误差我们称之为"训练误差"或者"经验误差",而在测试集上的误差称之为"测试误差".因为测试集是用来测试学习期对于新样本的学习能力的,因此我们可以把测试误差作为泛化误差的

[下篇] 一篇文章详解性能评估难点

在这个娱乐明星频频出轨.奇葩热文爆炸的时代,你却能抽空关注IT技术,请为你这份难能可贵和对技术的执着点个赞吧!请搜索"ICT_Architect"关注微信公众号,获取更多精彩内容. 在上篇文章[收藏] 深入浅出存储性能评估方法论中,我们介绍了性能评估相关概念和原理,但是在项目实战中,要根据业务真实诉求给出切合实际的性能配置,还需要针对业务模型进行最佳实践分析和洞察,从主机端口.存储系统.后端磁盘等端到端进行分析和评估,在本文中把常见的性能评估过程中的难点依次罗列,希望对大家有所帮助.

【NLP】蓦然回首:谈谈学习模型的评估系列文章(三)

基于NLP角度的模型评价方法 作者:白宁超 2016年7月19日19:04:51 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量.于是,就产生了对这一专题进度学习总结,这样也便于其他人参考,节约大家的时间.本文依旧旨在简明扼要梳理出模型评估核心指标,重点达到实用.本文布局如下:第一章采用统计学习角度介绍什么是学习模型以及如何选择,因为现今的自然语言处理方面大都采用概率统计完成的,事实证明这也比规则的方法好.第二章采用基

模型优化评估

Basis Expansion 这个咋翻译呢, 线性扩充基? 无所谓其实, 这里主是用它来处理因变量 和 自变量 的非线性关系的 Basis Expansion 是指通过对数据进行转换来扩充或替换数据集的的特征. 我最初的数据分析工具是R语言嘛, 当时没有接触ML这些什么正则的概念, 就统计学理论. 在做线性模型的时候, 拟合的不是很好, 我当时真的就凭感觉, 给方程加上一些高阶项 然后就拟合得可以了. 不过呢,后来还是放弃了, 因为很难解释, 尤其是经管方面, 模型的参数的解释尤为重要 这点跟

【机器学习】性能评估指标

机器学习性能评估指标 TP.TN.FP.FN FN:False(假的) Negative(反例),模型判断样本为负例,但模型判断错了,事实上是正样本.(漏报率)FP:False(假的) Positive(正例),模型判断样本为正例,但模型判断错了,事实上是负样本.(误报率)TN:True(真的) Negative(负例),模型判断样本为负例,事实上也是负样本,模型的判断是对的.TP:True(真的) Positive(正例),模型判断样本为正例,事实上也是正样本,模型判断是对的. Precisi

风控建模之性能评估

目录 1 KS 2 GINI 3 知识拓展 4 思考 ? 建模完成后的下一步,就是对模型性能进行评估,常用指标有: KS:关注的是一个点(好坏差异最大的点),要结合取到最大KS的评级点综合评估模型 GINI:关注的是一个面,是一个积分的概念,对模型的评估实际上比KS更全面一些 ? 1 KS 在看模型性能报告时,除了KS,还有一个非常重要的指标:在哪一个评级KS取到最大,这会给模型应用带来差异.因为同样的KS,有的模型在高分段区分效果特别好,有的模型在低分段区分效果特别好,但通常而言,银行更关注的