一、模型评估与优化

1. 模型评估方法

1)偏差与方差分析

偏差(Bias)指模型预测值与真实值之间的差异,反映了预测结果是否准确,取决于模型学习的程度;方差(Variance)指预测结果在均值附近的偏离幅度,反映了模型预测结果的稳定程度,以及对训练集上数据波动的敏感程度.,这个训练集上数据波动的敏感程度可以这样理解,当大部分的数据样本都是比较集中存在的时候,然后,可能有些个别数据会因为一些细微的因素的影响会导致这个数据产生影响。

方差不仅仅表达了样本偏离均值的程度,更是揭示了样本内部彼此波动的程度

(偏差主要评估模型准不准,方差主要评估模型稳不稳)

偏差分析是哪个过程的工具和技术 什么叫偏差分析_召回率


上图四个模型分别对应着

“低偏差-低方差”(理想情况)、

“低偏差-高方差”、

“高偏差-低方差”、

“高偏差-高方差”(不良模型).

一般来说,偏差与方差是有冲突的,这称为“偏差-方差窘境”.

偏差分析是哪个过程的工具和技术 什么叫偏差分析_分类_02

  • 总的讲述:从图中可以看出,最开始模型在训练数据的时候,模型的偏差越来越小,泛化误差也是在随之减小,此时的方差细微的改变,偏差对泛化误差占据主导地位,但随着模型不短的训练数据,模型的拟合能力越来越强,训练数据的大部分特征都已经被模型学习到,不断的学习,模型的拟合能力已经非产强了,如果说再进行学习, 数据的特征稍微有一点改变,就会导致模型发生显著的变化,一点风吹草动就会把模型吓的不要不要的,数据喂多了, 模型的泛化能力肯定就弱了,泛化误差就大了,方差也就大了。模型训练到偏差和方差的交点处就好了。
  • 在训练不足时,模型拟合能力不强,训练数据的扰动不足以使模型产生显著变化,此时偏差主导了泛化错误率;
  • 随着训练程度加深,模型拟合能力逐渐增强,训练数据发生的扰动渐渐能被模型学习到,方差逐渐主导了泛化错误率;
  • 在训练充分后,模型拟合能力已经非常强,训练数据发生的轻微扰动都会导致模型发生显著变化,若训练数据自身的、非全局的特性被模型学习到了,则将发生过拟合.

分类问题性能度量

① 错误率与精度

错误率和精度是分类问题中常用的性能度量指标,既适用于二分类任务,也适用于多分类任务.

  • 错误率(error rate):指分类错误的样本占样本总数的比例,即 ( 分类错误的数量 / 样本总数数量)
  • 精度(accuracy):指分类正确的样本占样本总数的比例,即 (分类正确的数量 / 样本总数数量)
    偏差分析是哪个过程的工具和技术 什么叫偏差分析_召回率_03
    查准率、召回率及F1的定义$
    错误率和精度虽然常用,但并不能满足所有的任务需求。对于二分类问题,可以将真实类别、预测类别组合为“真正例”(true positive)、“假正例”(false positive)、“真反例”(true negative)、“假反例”(false negative)四种.
  • 偏差分析是哪个过程的工具和技术 什么叫偏差分析_偏差分析是哪个过程的工具和技术_04

  • 样例总数:TP + FP + TN + FN
  • 查准率: TP / (TP + FP),表示分的准不准FP为0的话,那就等于1了,那就是最完美的,没有产生误报 ,检测出来是这个类,等于1的话那说明那就真的是这个类别
  • 召回率:TP / (TP + FN),表示分的全不全,又称为“查全率”,FN为0的话,那么这个就等于1,没有一个漏网之鱼
  • 查准率和召回率都是位于0~1之间,越靠近1那么,指标越优。
  • F1得分:这个F1就是根据查准率和召回率指标进行评判的
    偏差分析是哪个过程的工具和技术 什么叫偏差分析_召回率_05

查准率和召回率是一对矛盾的度量。一般来说,查准率高时,召回率往往偏低;召回率高时,查准率往往偏低。 例如,在病毒感染者检测中,若要提高查准率,只需要采取更严格的标准即可,这样会减少漏掉部分感染者,召回率就变低了;反之,放松检测标准,更多的人被检测为感染,召回率升高了,查准率又降低了. 通常只有在一些简单任务中,才能同时获得较高查准率和召回率。

查准率和召回率在不同应用中重要性也不同。例如,在商品推荐中,为了尽可能少打扰客户,更希望推荐的内容是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,希望让更少的逃犯漏网,此时召回率更重要。

这个查准率和召回率啊,根据具体的情况进行具体的分析,不听的情况可能占据的主导地位不一样。

P-R曲线

P-R曲线图直观显示了模型在样本总体上的查准率、召回率,其横轴为召回率、纵轴为查准率,按照样本预测为正例的概率从高到低排列

偏差分析是哪个过程的工具和技术 什么叫偏差分析_召回率_06


在进行比较时,如果一个模型P-R曲线图被另一个模型的曲线完全包住,则可断言后者优于前者(如上图中A优于C);如果两个模型P-R曲线图发生了交叉(如A和B),则很难断言A和B孰优孰劣,只能在具体查准率或召回率条件下进行比较。然而,很多情况下,我们仍然希望把模型比较出一个高低,这时一个合理的判断是比较P-R曲线下面积的大小,它在一定程度上代表了模型的查准率和召回率取得相对“双高”的比例。另外,也可以使用平衡点(Break-Even Point,简称BEP,该点处查准率=召回率)作为模型综合性能的评估指标,例如上图中,模型A的BEP值为0.8,模型C的BEP值为0.64,可以认为A优于C.

ROC曲线与AUC

ROC全称是“受试者工作特征”(Receiver Operating Characteristic),横轴为FP(假正例)率,纵轴为TP(真正例)率。

偏差分析是哪个过程的工具和技术 什么叫偏差分析_召回率_07


进行模型比较时,与P-R曲线相似,如果一个模型的ROC曲线被另一个模型的曲线完全包住,则可断言后者优于前者,综合评价指标就是比较ROC曲线下的面积,即AUC(Area Under ROC Curve),看这个图,假正例小的时候,真正例很大,比较ROC模型曲线,就比它所包的面积就可

混淆矩阵

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。每一行(数量之和)表示一个真实类别的样本,每一列(数量之和)表示一个预测类别的样本。

以下是一个预测结果准确的混淆矩阵:

A类别

B类别

C类别

A类别

5

0

0

B类别

0

6

0

C类别

0

0

7

上述表格表示的含义为:A类别实际有5个样本,B类别实际有6个样本,C类别实际有7个样本;预测结果中,预测结果为A类别的为5个,预测结果为B类别的为6个,预测结果为C类别的为7个。

最理想的情况下就是只有对角线上有值,对角线上的位置都是正确的,其他位置上都是错误的。

以下是一个预测结果不准确的混淆矩阵:

A类别

B类别

C类别

A类别

3

1

1

B类别

0

4

2

C类别

0

0

7

上述表格表示的含义为:A类别实际有5个样本,B类别实际有6个样本,C类别实际有7个样本;预测结果中,A类别有3个样本预测准确,另外各有1个被预测成了B和C;B类别有4个预测准确,另外2个被预测成了C类别;C类别7个全部预测准确,但有1个本属于A类别、2个本属于B类别的被预测成了C类别。

根据混淆矩阵,查准率、召回率也可表示为:

查准率 = 主对角线上的值 / 该值所在列的和

召回率 = 主对角线上的值 / 该值所在行的和

训练集与测试集

通常情况下,评估一个模型性能的好坏,将样本数据划分为两部分,一部分专门用于模型训练,这部分称为“训练集”,一部分用于对模型进行测试,这部分被称为“测试集”,训练集和测试集一般不存在重叠部分. 常用的训练集、测试集比例有:9:1, 8:2, 7:3等. 训练集和测试的划分,尽量保持均衡、随机,不能集中于某个或少量类别.

有些公共数据集在创建时,已经进行了划分. 有时候,我们需要自己对数据集进行划分,划分的方式是先打乱数据集,然后使用一种计算方法,将一部分数据划入训练集,一部分数据划入测试集.

一道题你能交出来一个优秀的学生么?就是这个道理,测试集可以判断模型是否是过拟合飞机不足就让飞机多飞几次

偏差分析是哪个过程的工具和技术 什么叫偏差分析_python_08

交叉验证法

什么是交叉验证

在样本数量较少的情况下,如果将样本划分为训练集、测试集,可能导致单个集合样本数量更少,可以采取交叉验证法来训练和测试模型.

“交叉验证法”(cross validation)先将数据集D划分为k个大小相同(或相似)的、互不相交的子集,每个子集称为一个"折叠"(fold),每次训练,轮流使用其中的一个作为测试集、其它作为训练集. 这样,就相当于获得了k组训练集、测试集,最终的预测结果为k个测试结果的平均值.

交叉验证就是,当我们的数据集有40个时候,划分训练集合数据集的时候,我们可以把数据分成5份,每份8个,将一份当做测试集使用,其他四份当做训练集使用, 把这五次预测出来的结果求均值作为预测结果。这个方法用于数据集较少的情况下

偏差分析是哪个过程的工具和技术 什么叫偏差分析_python_09

import sklearn.model_selection as ms

n = ms.cross_val_score(model, #模型
                       train_x, train_y,# 样本输入、输出
                       cv,  # 折叠数量
                       scoring) # 指定返回的指标