精华内容
下载资源
问答
  • 模型评估

    2021-03-16 23:53:02
    模型评估是模型开发过程不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。 按照数据集的目标值不同,可以把模型评估分为分类模型评估和回归模型评估。 1 分类模型评估 准确...

    模型评估是模型开发过程不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。

    按照数据集的目标值不同,可以把模型评估分为分类模型评估和回归模型评估。

     

    1 分类模型评估

    分类模型评估

    • 准确率:预测正确的数占样本总数的比例  https://blog.csdn.net/weixin_48135624/article/details/114887146

    • 精准率:正确预测为正占全部预测为正的比例

    • 召回率:正确预测为正占全部正校本的比例

    • F1-score:主要用于评估模型的稳健性

    • AUC指标:主要用于评估样本不均衡的情况

    2 回归模型评估

    回归模型评估                                                              

     

    均方根误差(Root Mean Squared Error,RMSE)也称标准误差

    • RMSE是一个衡量回归模型误差率的常用公式。 不过,它仅能比较误差是相同单位的模型。

    • 预测值-真实值减去预测值的差,求平方,再求所有的和,除以对应得样本数,再开根号,就是均方根误差。

    • 求和符号,n是10的话。1+2+3+...+10。

    均方根误差

    举例:

    假设上面的房价预测,只有五个样本,对应的
    真实值为:100,120,125,230,400
    预测值为:105,119,120,230,410

    那么使用均方根误差求解得:

    均方根误差

     

    相对平方误差(Relative Squared Error,RSE):与RMSE不同,RSE可以比较误差是不同单位得模型。

    相对平方误差(Relative Squared Error,RSE)、

     

    平均绝对误差(Mean Absolute Error,MAE):MAE与原始数据单位相同,它仅能比较误差是相同单位的模型,量级近似与RMSE,但是误差值相对小一些。

    • 2的绝对值是2,-2的绝对值是2

    平均绝对误差(Mean Absolute Error,MAE)、

     

    相对绝对误差(Relative Absolute Error,RAE):与RSE不同,RAE可以比较误差是不同单位的类型

    相对绝对误差

    决定系数 (Coefficient of Determination)

    决定系数 (Coefficient of Determination)

    R2描述了回归模型所解释的因变量方差在总方差中的比例。R2很大,即自变量和因变量之间存在线性关系,如果回归模型是“完美的”,SSE为零,则R2为1。R2小,则自变量和因变量之间存在线性关系的证据不令人信服。如果回归模型完全失败,SSE等于SST,没有方差可被回归解释,则R2为零。

    3 拟合

    模型评估用于评价训练好的的模型的表现效果,其表现效果大致可以分为两类:过拟合、欠拟合。

    在训练过程中,你可能会遇到如下问题:

    训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢?

    当算法在某个数据集当中出现这种情况,可能就出现了拟合问题。

     

    3.1 欠拟合

    ​​

    因为机器学习到的天鹅特征太少了,导致区分标准太粗糙,不能准确识别出天鹅。

    欠拟合(under-fitting)模型学习的太过粗糙,连训练集中的样本数据特征关系都没有学出来

     

    3.2 过拟合

    过拟合

    机器已经基本能区别天鹅和其他动物了。然后,很不巧已有的天鹅图片全是白天鹅的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅。

    过拟合(over-fitting):所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在测试数据集中表现不佳

     

    • 欠拟合
      • 学习到的东西太少
      • 模型学习的太过粗糙
    • 过拟合
      • 学习到的东西太多
      • 学习到的特征多,不好泛化
    展开全文
  • 模型评估平台

    2021-07-13 16:23:22
    模型评估的样本收集。模型产品种类多,训练是基于多种数据源和数据流量进行的。模型评估首先要解决样本收集问题。样本收集功能较独立,所以应将其解耦,以便后续模块接入。 样本数据的特征计算。有了样本,需要特征...

    对模型进行评估的平台通常需要支持任务调度、指标分析、可视化、报告管理、用户管理、日志管理、邮件管理等功能。

    平台需求分析

    以金融风控场景中的用户信用资质评估为例,在通过一系列数据分析建模,得到一个用户信用资质的模型。对于此类模型的评估,主要考虑以下几点:

    • 模型评估的样本收集。模型产品种类多,训练是基于多种数据源和数据流量进行的。模型评估首先要解决样本收集问题。样本收集功能较独立,所以应将其解耦,以便后续模块接入。
    • 样本数据的特征计算。有了样本,需要特征工程处理,将数据转化为特征,此过程需要接入特征计算服务,以API形式提供,这样,特征可以通过接入特征计算服务的接口来获得。
    • 特征数据的入模计算。获取特征数据后,需要对特征数据入模计算,一般采用Web框架加载模型文件,平台需要进行参数适配和模块封装。
    • 模型结果的指标评估。模型需要从稳定性、准确性、性能这3方面进行评估。平台需要将评估模型的指标计算逻辑抽象成通用模块,并以接口形式来提供以方便调用,这样大量的指标计算高内聚在一个独立的模块中,通过扩展指标的计算能力,提高平台覆盖范围的评估能力。
    • 对评估报告进行管理。需要支持报告查看及历史轨迹追溯,从项目流程角度,需支持邮件推送方式,发给相关人员,及报告的发布、查看、推送、追溯等功能。
    • 模型评估过程可视化。通过直方图、密度图等可视化操作,降低数据理解成本。在集成开源的可视化工具包方面,平台需考虑通用性和专业性。另外,在不方便直接调用工具包的指标,可考虑前后端交互方式、技术实现成本、前端渲染效果及加载效率等。
    • 打造流程闭环。模型评估平台需要通过与模型管理平台、模型部署平台的交互打通整个项目流程,实现模型从开发、评估、版本管理到部署上线的流程闭环。
    • 保障数据安全。

    平台架构设计

    通过前文,模型评估平台大致可包括样本管理模块、配置管理模块、任务管理模块、模型评估模块、用户管理模块等。架构图如下:

     工作原理如下:

    • 通过配置管理模块为模型生成一个配置项,存到数据库中,且为该模型生成唯一ID。然后在数据库中生成一条规则信息,为该规则生成唯一ID(该ID唯一标识规则,可通过规则ID得到规则的所有信息)。规则包含任务所需的模型基本信息、样本基本信息、验证环境信息。
    • 任务管理模块管理整个任务调度,通过规则信息ID获取该任务依赖的模型名称及版本、样本数量、接口地址、任务运行环境等信息。然后生成一个任务,并为每个任务生成一个任务ID。任务启动后,可通过Hadoop streaming执行MapReduce 任务进行样本处理。处理样本后,调用模型服务,最终得到样本的模型表现结果,并将其存储在HDFS上。
    • 模型评估模块将HDFS上的模型表现结果存到本地,并进行指标分析,并将指标分析结果存到MySQL数据库中,为其生成唯一ID。
    • 报告管理模型将模型评估模块生成的指标分析结果进行整理,生成评估报告,并将报告保存在数据库中,同时为其生成唯一ID。
    • 用户管理模块管理公司内部账号系统,为不同用户设置不同权限。
    • 模型开发者确认模型评估报告后,模型评估平台将验证通过的模型版本打包上传到模型版本管理平台。然后通过与模型部署系统的联动,触发模型部署环节,最后通过回调方式更新模型上线的状态。该过程使得模型评估、模型版本管理、模型部署形成闭环。

    1、 配置管理模块

          配置管理模块主要包括 模型信息模块、规则信息管理模块、邮件报告模块

          模型信息模块主要对模型属性进行管理,包括模型信息配置、模型名称、模型版本、模型调用接口、关联模型(对于新模型来说,线上暂时没有相应的调用流量和日志,需要关联一个旧模型来进行前期的样本收集)、关联版本(关联模型的版本)、模型大小。模型信息配置见下表

    模型信息配置
    配置项  内容
    模型名称 Model_v2
    模型大小30.2M
    模型版本V1.0
    模型调用接口/model/getmodel
    关联模型Model_v1
    关联版本V3.0

          规则信息管理模块复杂整个任务执行中依赖的元信息管理,用户通过前端进行规则配置,规则包含执行任务调度时所需的参数信息,如模型名称、模型版本、样本信息和执行环境等。任务规则信息配置详见表:

    任务规则信息配置
    配置项  内容
    规则ID10001
    模型名称Model_V2
    模型版本V1.0
    样本方式自动获取/手动上传
    样本数量20000
    执行环境离线、在线(沙盒、小流量)

          

         邮件报告模块管理邮件和报告两部分。

    邮件规则信息配置
    配置项内容
    邮件标题Model_v2模型评估报告
    邮件组model_group@...com
    报告ID20001
    主送人xyz@XXX.com
    抄送人XXX@.com

     

       2.任务管理模块

         任务的启动可通过前端一键式触发。它与规则是多对一的关系,同一个规则可通过多次启动生成多个任务,但一个任务只能由一个规则生成。任务间相互独立,各任务在各自进程上运行,互不影响。任务执行完后,最终生成的评估报告相互独立,任务与报告一一对应。

         任务的精细管理和有序调度使得模型评估过程顺利进行。通过任务与规则ID的关联可得到任务的依赖信息,这些信息包含了任务执行的环境、任务执行所需数据、任务间的顺序关系。利用任务与报告ID的关系可得到模型评估报告,评估报告是任务最终的执行结果。

         任务管理模块的任务流有两条线。一是定时调度任务,以便后期扩展时采用AirFlow工作流平台来管理一组具有依赖关系的作业任务。---这类调度任务主要服务于模型监控,主要在采集完模型线上的表现数据后,进行指标计算,然后可视化展现,监控。一旦模型效果衰减,能够及时发现,更新模型。  另一类任务流是实时触发任务,改类任务的流程是用户完成模型配置和规则配置后,通过Web进行触发。任务一旦启动,会依次进行样本抽取、与依赖服务交互、指标计算分析流程。

          任务管理模块采用多进程任务并发功能。任务间相互独立,互不影响,同时在某个任务内通过对不同状态之间的迁移,实现对任务的多样化管理。可以重运行、暂停、结束任务。任务状态分3种---初始状态、执行状态和终止状态。

    • 初始状态是任务生成后的第一个状态。如果任务没有被进程获取到,它将一直存在于任务池中,等待执行。任务执行顺序是先进先出的模式,按照任务生成时间的先后顺序进行调度。
    • 执行状态是任务的中间状态,标记着任务执行的不同阶段,通过状态码可以实时跟踪任务的执行状态。该阶段包括样本处理阶段、在线服务调用阶段、离线服务调用阶段。在每个阶段中,一旦出现异常,会对状态码进行标记。该阶段不会长期存在,有超时控制。一旦该阶段正常完成或服务异常,就会进入终止状态。
    • 终止状态是任务结束后的一个稳定态。

     3. 模型评估模块

    主要包括离线效果验证、模型在线效果评估、模型一致性验证(离线/在线一致性验证)。架构如下

    评估指标包括模型覆盖率、通过率、密度曲线、分位点、接口响应时间、ROC、AUC、PSI、KS值。

    该模块的流程如下:

    通过任务信息获取对应样本,使用这批样本请求特征计算中心的服务,并得到对应的特征结果,将特征结果输入模型计算中心后得到模型计算数据,然后对数据进行性能分析、稳定性指标计算、准确性指标计算。

    下面是核心指标的计算逻辑:

    • 模型覆盖率:模型可预测的用例数和用例总数之比。针对样本进行的模型覆盖率统计能评估出模型对用户的覆盖程度,取值范围0~1.
    • 密度曲线:反映模型分的分布情况。应符合正态分布,该指标可作为调整模型通过率阈值的参考,供业务决策方决策。
    • 百分位数及统计值:包括百分位数、非空率、非零率、平均值、中间值。
    • 通过率。基于模型分的上下边界值,按照合理的递增步长将模型分划分在合理的等级范围(递增步长可以根据不同业务标准进行调整)内,并通过每个区间的比例统计评估模型分的分布情况。
    • 模型接口响应时间。

    4.数据存储模块 

    数据存储模块是模型评估中数据存储的基础,对外提供操作存储介质的API,对内负责与关系数据库、HDFS和HBase交互。数据存储模块架构如图:

    数据存储模块主要对源数据、程序计算的中间数据及最终结果数据进行管理。

    目前数据有两种。一种是输入配置信息,另一种是中间数据(包括程序计算的临时数据及模型服务计算的结果数据)。结果数据包括模型指标和性能报表信息。不同类型数据存放在对应的存储介质中。

    数据存储方式
    不同阶段的数据数据类型存储介质
    源数据配置信息MySQL
    中间数据模型结果数据HDFS
    最终数据模型指标分析结果MySQL/HDFS
    最终数据样本结果HDFS

    数据库设计包括表设计和索引设计。模型评估平台中主要的表及索引见下表。

    模型评估平台中主要的表及索引
    表名索引作用核心字段
    规则表规则ID规则保存及查询模型名称/样本数量
    模型表模型ID、模型名模型保存及查询模型名称/模型版本
    任务表任务ID任务保存及状态查询任务ID/任务状态
    报告表报告ID报告存储及查询报告ID/结果ID
    结果表结果ID结果源数据存储结果ID/结果类型

    5. 日志管理模块

    日志管理模块主要负责对采集到的不同产品的业务日志进行分析,记录平台本身产生的业务工作流日志,对日志等级进行划分(分为正常业务日志和错误日志)。为了保证日志服务的高可靠性,通常使用Flume+Kafka组件。

    模型评估平台展示

    模型配置规则

         配置规则是任务调度依赖的规则集,规定了模型验证过程中依赖的环境、样本数据,及模型本身的相关信息。配置规则的核心是将规则、模型、任务进行提炼,并赋予不同的属性。这方便了用户操作,同时也有利于系统扩展。

         为了配置模型规则,首先需要将待验证的模型 基本信息进行配置和保存。

         新模型开发完成后,要对其评估,并在平台添加新模型。代码如下

    def addmodel(self):
        model_list=list()
        param_list=['modelName','modelApi','modelVersion','assModel']
        for value in param_list:
            model_list.append(self.get_argument(value))
        sql="insert into model" \
            "(model-name, api-url, version, associate-module)"  \
            "values ('%s','%s','%s','%s')"%(model_list[0],model_list[1],model_list[2],model_list[3]))
        try:
            data=client.insert(sql)
        except Exception as e:
            Log.error("model table insert fail")
            return 1, "model insert error", None
         return 0, 'model add success', data
            

    模型配置完成后,需要生成一个验证规则,为后期启动任务做准备。规则配置是模型信息、样本信息和执行环境的组合。该配置支持增、删、改、查,实现如下:

    class RuleHandler(tornado.web.RequestHandler):
         def post(self):
             url=self.request.uri
             #根据路由判断操作类型
             opType=url.split("/")[-1][:4]
             if opType=="save":
                status,msg,data=self.saveRule()
             elif opType=="update":
                status,msg,data=self.updateRule()
             elif opType=="scan":
                status,msg,data=self.scanRule()
             elif opType=="del":
                status,msg,data=self.deleteRule()
             eles:
                res=generate_response(1,"api request failed",None)
                self.finish(res)
             res=generate_response(status,msg,data)
             self.finish(res)
    

    以添加规则为例:

    def saveRule(self):
        try:
            #获取需要保持的规则字段
            Type=self.get_argument('type')
            isUpload=self.get_argument("generationMode")
            sampleNum=self.get_argument("sampleNum")
            #Type 0 代表模型,表示规则类型,后续可扩展
            if Type=='0':
               modelName=self.get_argument("modelName")
               modelVersion=self.get_argument("modelVersion")
               #参数异常值检查
               emptyParams=''
               if modelName='':
                  emptyParams="'模型名'"
               if modelVersion='':
                  emptyParams="'模型版本'"
               if isUpload='':
                  emptyParams="'样本生成方式'"
               if sampleNum='':
                  emptyParams="'样本数'"
               if len(emptyParams)>0"
                  return 1, "缺少参数,参数{empty}不能为空".format(empty=emptyParams),None
               sql="insert into rule_config" \
                   "(model_name,model_version,type,is_upload,sample_num)" \
                   "values('{ModelName}','{Modelversion}','{Type}','{IsUpload}','{SampleNum}'}" \
    .format(ModelName=modelName, Modelversion=modelversion, Type=type, IsUpload=isUpload, SampleNum=sampleNum)
         except Exception as e:
            print("保存规则时获取参数错误: {exce}".format(exce=e))
            return 1,"保存规则时获取参数错误: {exce}".format(exce=e),None
        try:
            data=client.insert(sql)
        except Exception as e:
            print("保存规则入库时发生错误: {exce}".format(exce=e))
            return 1, "规则信息保持失败",None
        return 0, "规则保存成功",data

    模型评估指标

    1、密度曲线

    2、模型分的百分位数及统计分布

    3、模型分的通过率

    4、覆盖率: 有表现的样本与样本总数的比值,在风控领域有一定意义。

    5、模型稳定性-PSI(Population Stability Index),衡量模型分的分布差异

    6、模型在线/离线Gap分布

    7、接口响应时间分布

    模型评估报告

    模型评估报告包含--样本分析和模型评估

    • 样本分析,包含样本的时间维度、数量等
    • 模型评估,不仅有模型分统计类指标,模型准确性指标,还包括性能类指标(接口响应时间)、模型稳定性指标(PSI),以及与模型关联的特征指标(模型的特征维数,特征重要性)。

    总结 

    平台特性如下:

    • 平台具有通用性。它涵盖了模型稳定性、准确性和模型性能。
    • 功能易扩展
    • 学习成本低。通过将业务应用划分为界面层、业务逻辑层、数据访问层、屏蔽了复杂的模型评估流程,通过数据、任务、结果的可视化,展示了功能配置简单、易操作、可解释性这些特点。

    平台收益:

    • 提高组织效能,缩短项目周期。
    • 提高数据安全性
    • 加强数据的沉淀和共享。通过平台统一入口,一方面,数据得到有效沉淀和积累;另一方面,有效利用了集群资源,减少重复操作,使样本数据,特征数据,模型数据可以共享。
    • 提高项目团队成员的技术能力。通过平台化、工程化思维,提高团队成员分析和解决问题的能力。
    展开全文
  • 分享一个大牛的人工智能教程。零基础!...模型评估主要分为离线评估和在线评估两个阶段。针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择也有所不同。知道每种评估指标的精确定

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

    “没有测量,就没有科学”这是科学家门捷列夫的名言。在计算机科学特别是机器学习领域中,对模型的评估同样至关重要,只有选择与问题相匹配的评估方法,才能快速地发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。模型评估主要分为离线评估和在线评估两个阶段。针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择也有所不同。知道每种评估指标的精确定义、有针对性地选择合适的评估指标、根据评估指标的反馈进行模型调整,这些都是模型评估阶段的关键问题。 

    1. 模型评估指标

    1.1 准确率

    准确率是指分类正确的样本占总样个数的比例。

    准确率的局限性:准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷,当不同总类的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。比如:当负样本占99%,分类器把所有样本都预测为负样本也可以得到99%的准确率,换句话说总体准确率高,并不代表类别比例小的准确率高。

    1.2 精确率和召回率

    精确率是指正确分类的正样本个数占分类器判定为正样本的样本个数的比例。

    召回率是指正确分类的正样本个数占真正的正样本数的比例。

    Precison值和Recall值是既矛盾又统一的两个指标,为了提高Precison值,分类器需要尽量在‘更有把握’时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多‘没有把握’的正样本,导致Recall值降低。

    在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用TopN返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的TopN的结果就是模型判定的正样本,然后计算N个位置上的Precision和前N个位置上的Recall。

    1.3 F1分数

    F1分数是精度和召回率的谐波平均值,正常的平均值平等对待所有的值,而谐波平均值回给予较低的值更高的权重,因此,只有当召回率和精度都很高时,分类器才能得到较高的F1分数。

    F1分数对那些具有相近的精度和召回率的分类器更为有利。但这并不一定能符合你的期望,在某些情况下,你更关心的是精度,而另一些情况下,你可能真正关心的是召回率。精确率与召回率的权衡将是很值得思考的问题。

    1.4 均方误差、根均方误差、绝对百分比误差

    均方误差和根均方误差都会受到异常值的影响,而影响最终的模型评估。

    平均绝对百分比误差提高了异常值的鲁棒性,相当于把每个点的误差进行了归一化处理,降低了个别离群带来的绝对误差的影响。

    1.5 ROC曲线

    1.5.1 什么是ROC曲线?

    二值分类器是机器学习领域中最常见也是应用最广泛的分类器。评价二值分类器的指标很多,比如precision,recall,F1 score,P-R曲线等,但发现这些指标或多或少只能反映模型在某一方面的性能,相比而言,ROC曲线则有很多优点,经常作为评估二值分类器最重要的指标之一。

    ROC曲线是Receiver Operating Characteristic Curve的简称,中文名为'受试者工作特征曲线'。

    ROC曲线的横坐标为假阳性率(FPR),纵坐标为真阳性率(TPR)。

    1.5.2 ROC曲线绘制

    创建数据集

    import pandas as pd
    
    column_name = ['真实标签','模型输出概率']
    datasets = [['p',0.9],['p',0.8],['n',0.7],['p',0.6],
               ['p',0.55],['p',0.54],['n',0.53],['n',0.52],
               ['p',0.51],['n',0.505],['p',0.4],['p',0.39],
               ['p',0.38],['n',0.37],['n',0.36],['n',0.35],
               ['p',0.34],['n',0.33],['p',0.30],['n',0.1]]
    
    data = pd.DataFrame(datasets,index = [i for i in range(1,21,1)],columns=column_name)
    print(data)
    
       真实标签  模型输出概率
    1     p   0.900
    2     p   0.800
    3     n   0.700
    4     p   0.600
    5     p   0.550
    6     p   0.540
    7     n   0.530
    8     n   0.520
    9     p   0.510
    10    n   0.505
    11    p   0.400
    12    p   0.390
    13    p   0.380
    14    n   0.370
    15    n   0.360
    16    n   0.350
    17    p   0.340
    18    n   0.330
    19    p   0.300
    20    n   0.100
    

    绘制ROC曲线

    # 计算各种概率情况下对应的(假阳率,真阳率)
    points = {0.1:[1,1],0.3:[0.9,1],0.33:[0.9,0.9],0.34:[0.8,0.9],0.35:[0.8,0.8],
            0.36:[0.7,0.8],0.37:[0.6,0.8],0.38:[0.5,0.8],0.39:[0.5,0.7],0.40:[0.4,0.7],
            0.505:[0.4,0.6],0.51:[0.3,0.6],0.52:[0.3,0.5],0.53:[0.2,0.5],0.54:[0.1,0.5],
            0.55:[0.1,0.4],0.6:[0.1,0.3],0.7:[0.1,0.2],0.8:[0,0.2],0.9:[0,0.1]}
    X = []
    Y = []
    for value in points.values():
            X.append(value[0])
            Y.append(value[1])
            
    import matplotlib.pyplot as plt
    
    plt.scatter(X,Y,c = 'r',marker = 'o')
    plt.plot(X,Y)
    
    plt.xlim(0,1)
    plt.ylim(0,1)
    plt.xlabel('FPR')
    plt.ylabel('TPR')
    plt.show()
    

    AUC指ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。AUC越大说明分类器越可能把真正的正样本排在前面,分类性能越好。

    ROC曲线相比P-R曲线,当正负样本的分布发生变化时,ROC曲线的形状能够保存基本不变,而P-R曲线的形状一般会发生激烈的变化,这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。

    2. 模型评估方法

    2.1 Holdout检验

    Holdout检验是最简单也是最直接的验证方法,它将原始的样本随机划分为训练集和验证集两部分。sklearn.model_selction.train_test_split函数就是使用该方法。比方说,将样本按照70%-30%的比例分成两部分,70%的样本用于模型训练,30%的样本用于模型验证。

    Holdout检验的缺点很明显,即在验证集上计算出来的评估指标与原始分组有很大关系,为了消除随机性,研究者们引入了'交叉验证'的思想。

    2.2 交叉验证

    k-flod交叉验证:首先将全部样本划分成K个大小相等的样本子集,依次遍历这k个子集,每次把当前子集作为验证集,其余的子集作为训练集。最后把K次评估指标的平均值作为最终的评估指标,在实际实验中,K经常取10。

    留一验证:每次留下一个样本作为验证集,其余所有样本作为测试集,样本总数为n,依次对n个样本进行遍历,进行n次验证,再将评估指标求平均值得到最终的评估指标,在样本总数较多的情况下,留一验证法的时间开销极大。

    2.3 自助法

    不管是Holdout检验还是交叉验证,都是基于划分训练集和测试集的方法进行模型评估的,然而,当样本规模较小时,将样本集进行划分会让训练集进一步减少,这可能会影响模型训练效果,自助法是可以维持训练集样本规模的验证方法。

    自助法是基于自助采样法的检验方法,对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集,n次采样过程中,有的样本会被重复采样,有的样本没有被抽到过,将这些没有被抽到过的样本作为训练集,进行模型验证。

    2.4 超参数调优

    为了进行超参数调优,一般会采用网格搜索、随机搜索、贝叶斯优化等算法。超参数搜索算法一般包括以下几个要素:

    • (1)目标函数,即算法需要最大化/最小化的目标
    • (2)搜索范围,一般通过上限和下限来确定
    • (3)算法的其他参数,如搜索步长

    2.4.1 网格搜索

    网格搜索可能是最简单、应用最广泛的超参数搜索算法,它通过查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优解,然而这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较的时候,因此,在实际应用过程中,网格搜索法一般会先使用较大的搜索范围和较大的步长,来寻找全局最优解可能的位置,然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值,这种操作方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所有很可能会错过全局最优解,sklearn提供了GridSearchCV类实现网格搜索。

    2.4.2 随机搜索

    随机搜索的思想与网格搜索的思想比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。它的理论依据是,如果样本点足够大,那么通过随机采样也能大概率地找到全局最优解或近似解,随机搜索一般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也是没法保证的,sklearn提供了RandomizedSearchCV类实现随机搜索。

    2.4.3 贝叶斯优化算法

    贝叶斯优化算法在寻找最优超参数时,采用了与网格搜索,随机搜索完全不同的方法,网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息,而贝叶斯优化算法则充分利用了之前的信息,贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。具体来说,它学习目标函数形状的方法是,首先根据先验分布,假设一个搜索函数,然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布,最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。

    对于贝叶斯优化算法,有一个需要注意的地方,一旦找到了一个局部最优值,它会在该区域不断采样,所以很容易陷入局部最优值,为了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找到一个平衡点,'探索'就是在还未取样的区域获取采样点,而'利用'则是根据后验分布在最可能出现全局最优值的区域进行采样。

    3. 优化过拟合与欠拟合

    3.1 降低过拟合风险的方法

    (1) 从数据入手,获得更多的训练数据。使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减少噪音的影响,当然,直接增加实验数据一般是很困难的,但是可以通过一定的规则来扩充训练数据。比如,在图像分类的问题上,可以通过图像的平移、旋转、缩放等方式扩充数据;更进一步地,可以使用生成式对抗网络来合成大量的新训练数据。

    (2) 降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免拟合过多的采样噪音。例如,在神经网络中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。

    (3) 正则化方法。

    (4) 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。

    3.2 降低欠拟合风险方法

    (1) 添加新特征。当特征不足或现有特征与样本标签的相关性不强时,模型容易出现不拟合,通过挖掘'上下文特征''ID类特征''组合特征'等新的特征,往往能够取得更好的效果,在深度学习的潮流中,有很多类型可以帮组完成特征工程,如因子分解机。

    (2) 增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力,例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。

    (3) 减少正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要针对性地减少正则化系数。

    展开全文
  • Sklearn模型评估

    2021-01-14 10:02:18
    有 3 种不同的 API 用于评估模型预测的质量: Estimator score method(估计器得分的方法): Estimators(估计器)有一...Scoring parameter(评分参数): Model-evaluation tools (模型评估工具)使用 cross-validati

    有 3 种不同的 API 用于评估模型预测的质量:

    • Estimator score method(估计器得分的方法): Estimators(估计器)有一个 score(得分) 方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 estimator (估计器)的文档中会有相关的讨论。
    • Scoring parameter(评分参数): Model-evaluation tools (模型评估工具)使用 cross-validation (如 model_selection.cross_val_score 和 model_selection.GridSearchCV) 依靠 internal scoring strategy (内部 scoring(得分) 策略)。这在 scoring 参数: 定义模型评估规则 部分讨论。
    • Metric functions(指标函数): metrics 模块实现了针对特定目的评估预测误差的函数。这些指标在以下部分部分详细介绍 分类指标, 多标签排名指标, 回归指标 和 聚类指标 。
    展开全文
  • 机器学习模型评估指标示例选择正确的度量来评估机器学习模型我们什么时候评估我们的机器学习模型呢?答案不是只有一次。通常,我们在实际的数据科学工作流中两次使用机器学习模型验证指标:模型比较:为您的任务选择...
  • 目录导语模型评估回归任务的评估指标分类任务的评估指标过拟合现象过拟合的原因过拟合解决办法模型选择与调整超参数正则化留出法交叉验证网格搜索实验:线性回归预测股票走势实验说明特征提取与特征选择模型训练及...
  • 第1章 模型评估简介 1.1 什么是模型评估 1.2 模型评估指标的分类 (1)线性回归的评估指标 (2)数字分类的评估指标 第2章 线性回归的评估指标 第3章 数字分类的评估指标
  • 这个指标在样本均衡的情况下是完全适用的, 但是在遇到样本不均衡问题的时候就失去了意义,而我们日常面对的数据会有较多的不均衡, 面对这样的问题,我们需要采用新的模型评估指标,而我们的评估指标需要能够反映...
  • 机器学习之模型评估

    2021-11-25 16:37:11
    机器学习之模型评估) 这篇来谈谈机器学习模型的评估。1.模型评估2.交叉验证2.1回归问题的验证2.2分类问题的验证2.3精确率和召回率2.4 F值3.正则化3.1过拟化3.2正则化的方法3.3正则化的效果3.4分类的正则化3.5包含...
  • Python回归模型评估

    2021-02-04 18:09:29
    Python回归模型评估 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。 2 回归模型评估简介 对给给定的回归模型进行质量评估,常见概念见下...
  • 2.模型评估与选择

    2021-07-13 22:08:32
    机器学习简介—模型评估与选择 纲要 模型选择的原则 模型的性能指标 模型评估的方法 模型性能的比较 目标 了解模型选择的原则 掌握交叉验证法评估模型 熟悉常见模型的性能指标 了解模型评估的误差与方差 模型...
  • 模型评估一、配置化驱动方式下评估和预测1.1 评估1.2 预测二、API方式下评估和预测2.1 评估2.2 预测 一、配置化驱动方式下评估和预测 1.1 评估 训练完成后,用户可以使用评估脚本 val.py 来评估模型效果。假设训练...
  • 机器学习之模型评估和选择 一、模型评估的一些基本术语 经验误差 指学习器在训练集上的误差 泛化误差 指学习器在新样本上的误差 泛化能力 学习的模型适应新样本的能力,即在预测新样本时的效果好坏 过拟合 ...
  • 模型评估—交叉验证

    千次阅读 2021-02-16 13:06:21
    3.1.1. cross_validate 函数和多度量评估 3.1.2. 通过交叉验证获取预测 3.2. 交叉验证迭代器 3.3. 交叉验证迭代器–循环遍历数据 3.3.1. K 折 3.1.3.2. 重复 K-折交叉验证 3.3.3. 留一交叉验证 (LOO) 3.3.4. ...
  • 梯度下降 模型评估

    2021-03-15 19:18:39
    各种梯度下降法性能比较 分类模型常用评估方法 回归模型常用评估方法
  • 不知道你是否已经看完了我之前讲过的有关机器学习的文章,如果没看过也没关系,因为本篇文章介绍的内容适用于所有分类模型(包括神经网络),主要就是介绍分类模型评估指标。另外,在前面我还会提一下数据不平衡的...
  • 深度学习模型评估指标 文章目录深度学习模型评估指标1. 基本指标2. 指标1. 准确率Accuracy2. 精确度Precision和召回率Recall3. F1 score4. 混淆矩阵5. ROC曲线与AUC指标6. TAR,FRR,FAR 1. 基本指标 标签为正样本,...
  • 常用机器学习算法包括分类、回归、聚类等几大类型,以下针对不同模型总结其评估指标一、分类模型常见的分类模型包括:逻辑回归、决策树、朴素贝叶斯、SVM、神经网络等,模型评估指标包括以下几种:(1)二分类问题(a)...
  • 文章目录前言一、聚类算法1.1 无监督学习与聚类算法1.2 ... tol1.2.2 DBSCAN算法的基本原理2.1 DBSCAN重要参数eps,min_samples1.3 簇内平方和的定义1.4 模型评估标准1.4.1 轮廓系数1.4.2 Calinski_harabasz_score1..
  • GBDT和分类模型评估(算法角度)GBDT和分类模型评估(算法角度)模板赋值可以使用assign方法进行模板变量赋值。namespaceindex\app\controller;usethink\facade\View;classIndex{publicfunctionindex(){//模板变量赋值...
  • 分类模型评估指标

    2021-05-25 12:19:45
    对于构建好的机器学习模型,需要对模型的效果进行评估,对于机器学习中的3大类问题,分类,回归,聚类而言,各自有不同的评估指标,本文主要介绍分类模型常用的评估指标。 以二分类问题为例,考虑真实分类和模型预测...
  • 模型评估之A/B测试

    2021-02-08 15:10:25
    离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全代替线上评估结果; 离线评估无法完全还原线上的工程环境。离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据丢失等情况; 线上...
  • Python 交叉验证模型评估 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。 2 交叉验证模型评估简介 交叉验证(Cross Validation)是机器...
  • R语言glm拟合logistic回归模型:模型评估(计算模型拟合的统计显著性)、模型评估(赤信息AIC指标计算)
  • hold out 检验 将原始的样本集合按比例划分成训练集和验证...留1验证:每次留下一个样本作为验证集,其余用于训练,遍历n次,将n次评估结果的均值作为最终评估指标。当样本总数太大的话,需要遍历次数很多,时间开销..
  • 多种pyspark模型评估方式(超详细)

    千次阅读 2020-12-29 19:45:56
    而DataFrame的性能要远远好于RDD,并且MLlib已经不再被维护了,所以本文章主要记录基于ML的模型评估,MLlib不做过多涉及。 基于pyspark开发一个分布式机器训练平台,用来做二分类判别,对二分类模型评估方法有很多,...
  • 本文总结了各个评估指标的优缺点及其相互关系。 MAE(Mean Absolute Error) 顾名思义,即“绝对误差的均值”: 使用 MAE 指标的优点是,计算出的误差指标的量纲与目标变量一致,并且对离群值不敏感。缺点则是...
  • 回归模型评估指标

    2021-05-13 00:50:57
    欢迎关注”生信修炼手册”!回归模型评估,核心是利用模型预测值与真实值之间的差值,常用的指标有以下几种1.平均绝对误差Mean Absolute Error,简称MAE,公式如下考虑...
  • 模型评估可以从多维度多指标进行评估。这里只谈论指标。我们常用的指标,logloss,mse,auc(GAUC)等等。其他指标包括gini(2*AUC -1),PRauc,KS(max(TPR−FPR)),acc,precision,F1 score。对于预估分数的指标包括...
  • 模型评估概述 在选择不同模型对训练数据完成建模,并对测试数据完成预测后,我们需要面临的一个重要问题就是如何比较不同模型的优劣,因此如何定义模型评估的标准是至关重要的。分类问题,作为机器学习中最基础也是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 282,601
精华内容 113,040
关键字:

模型评估