模型评估——定量分析预测的质量


https://blog.csdn.net/hustqb/article/details/77922031

    • 评分参数定义模型评价规则
      • 公共案例预定义值
      • 根据度量函数定义你的评分策略
      • 应用你自己的评分对象
      • 使用多种度量指标
    • 分类度量
      • 从二分类到多分类多标签
      • 精确度
      • Cohens kappa
      • 混乱矩阵
      • 分类报告
      • 汉明损失
      • Jaccard 相似性相关系数
      • 准确率召回率和F度量
        • 二分类
        • 多分类多标签
      • Hinge损失
      • Log损失
      • Matthews 相关系数
      • ROC
      • 0-1损失
      • Brier score损失
    • 多标签分级度量
      • Coverage误差
      • 分级标签平均准确度
      • 分级损失
    • 回归度量
      • Explained variance score
      • 均值绝对误差
      • 均值平方误差
      • 均值平方对数误差
      • 中位数绝对误差
      • R2R2 score定义相关性
    • 聚类度量
    • 简陋评分器

在sklearn库里,用于评估模型预测的质量的API一共有3种:

  1. 评分方法:评估者具有score(),面向其要解决的问题,可以提供一个默认评估标准。 这部分内容不在本文中讲述,因为它因不同的模型而异,所以会在各个模型的介绍文档中讲述。
  2. 评分参数:使用交叉验证的模型评估工具(如model_selection.cross_val_scoremodel_selection.GridSearchCV)依赖于内部评分策略。这些内容会在其他章节(评分参数:定义模型评判规则)中讨论。
  3. 度量函数:metrics模块实现了针对特定目的评估误差的功能。 这些指标会在下面这些章节详细介绍:Classification metrics, Multilabel ranking metrics, Regression metrics and Clustering metrics. 
    最后,Dummy estimators对于获得随机预测的这些指标的基准值是有用的。

声明:

  1. 本文译自Python库sklearn里的官方文档
  2. 需要读者对Python有一定的了解
  3. 本文超长…而且因为水平有限,有些地方翻译的较为生硬。

聚类性能评估部分。

简陋评分器

??在进行监督学习的过程中,简单清晰的检查包括将一个估计模型与简单的经验法则进行比较。 DummyClassifier实现了几种简单的分类策略:

  • stratified根据训练数据类的分布产生随机数据。
  • most_frequent总是将结果预测为训练集中最常用的标签。
  • prior总是预测为先前最大的那个类。
  • uniform产生均匀随机预测。
  • constant总是预测为用户提供的常量标签。这种方法的主要靠的是F1分值,此时的正例数量较小。

为了说明DummyClassifier,首先让我们创建一个不平衡的数据集:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
X, y = iris.data, iris.target
y[y != 1] = -1
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

然后再来比较一下SVCmost_frequent

from sklearn.dummy import DummyClassifier
from sklearn.svm import SVC
clf = SVC(kernel='linear', C=1).fit(X_train, y_train)
print clf.score(X_test, y_test)  # 0.63...

clf = DummyClassifier(strategy='most_frequent',random_state=0)
clf.fit(X_train, y_train)
print clf.score(X_test, y_test)  # 0.57...

可以看出,SVC的效果不比简陋的分类器(dummy classifier)号多少,下面,让我们换一下svc的核函数:

clf = SVC(kernel='rbf', C=1).fit(X_train, y_train)
clf.score(X_test, y_test)  # 0.97...

??我们看到准确率提高到近100%。建议使用交叉验证策略,以便更好地估计精度。更一般地说,当分类器的准确度太接近随机时,这可能意味着出现了一些问题:特征没有帮助,超参数没有正确调整,数据分布不平衡等 
DummyRegressor还实现了四个简单的经验法则:

    • mean:预测训练目标的平均值。
    • median:预测训练目标的中位数。
    • quantile:预测用户提供的分数量的训练目标。
    • constant:预测用户提供的常数值。