zoukankan      html  css  js  c++  java
  • 模型评估与选择

    1. 评估方法

      通常,我们可通过实验测试来对学习器的泛化误差(在新样本上的误差)进行评估并进而做出选择,为此,需使用一个“测试集”来测试学习器对新样本的判断能力,然后以测试集上的“测试误差”作为泛化误差的近似。主要有以下几种测试方法:

    1.1 留出法

      直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。一般要采用若干次随机划分,重复进行实验评估取平均值作为留出法的评估结果。

      常见的做法是将大约2/3到4/5的样本作为训练集,剩下的作为测试集。

    1.2 交叉验证法

      先将数据集D划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的那个作为测试集。这样可以获得k组训练/测试集,从而进行k次训练和测试。最终取平均值。

      k常见的是取10,此时称为10折交叉验证。

      当数据集D包含m个样本,而k=m时,称为留一法,这种方法得到的评估结果一般比较精确,但是训练集只比所有样本少一个,训练成本较高。

    1.3 自助法

      对于给定样本数为m的数据集D,我们对其进行采样产生数据集D':每次随机从D中选一个样本,将其放入D',然后将其放回去,再进行随机挑选,以此类推。这个过程执行m次后,我们得到包含m个样本的D'。

      容易得到,一个样本不被选中的概率为(1-1/m)m,取极限,约为1/e = 0.368,即有36.8%的数据D'中不存在的。

      于是将这36.8%的数据作为测试集,D'的数据作为训练集,这种方法对数据集较小,难以有效划分训练/测试集的时候很有用。

    2. 性能度量

      对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还要有衡量模型泛化能力的评估标准,这就是性能度量。

    2.1 错误率与精度

      这是分类任务中最常见的两种性能度量。

      错误率就是样本中出错的比例,而精度则是(1-错误率)

    2.2 查准率(精确率)和查全率(召回率)

      精确率指的是模型判为正的所有样本中有多少是真正的正样本;召回率指的是所有正样本有多少被模型判为正样本,即召回。

      先介绍下4个概念:真正例、假正例、真反例、假反例

    真实情况 预测结果
    正例 反例
    正例 TP(真正例) FN(假反例)
    反例 FP(假正例) TN(真反例)

      查准率P为TP/(TP +FP),查全率R为TP/(TP + FN)

    一般而言,查准率高的时候,查全率会较低,反之亦然。

    2.3 F1度量

      F1 = (1+b2)*P*R/(b2*P + R)

      b大于1时查全率有更大影响,b小于1时查准率更有影响

    2.4 ROC与AUC

      ROC全称为“受试者工作特征”,先介绍2个概念:

      真正例率TPR=TP/(TP+FN)
      假正例率FPR=FP/(TN+FP)

      ROC曲线,如下:

    image_1bl5ud1vo1c7sb79cmeuqd5og9.png-111.3kB

      AUC则是其面积(曲线与右下两条线的闭合形状),一般而言,面积越大的学习器性能越好。

  • 相关阅读:
    树莓派常用Linux命令
    列出树莓派中系统中建立了哪些用户、哪些组?
    树莓派的用户管理
    树莓派变成一个Web服务器: nginx + php + sqlite
    树莓派做web服务器(nginx、Apache)
    树莓派修改更新源
    树莓派安装mysql
    树莓派2 购买心得
    python写的屏保程序
    win32下利用python操作printer
  • 原文地址:https://www.cnblogs.com/vachester/p/7192333.html
Copyright © 2011-2022 走看看