郭震 AI公众号:郭震AI

12 机器学习基础之模型评估与选择

发布日期:

分类: 计算机视觉

预计阅读: 5 分钟

阅读: --

模型评估与选择流程图查看大图
模型评估与选择流程图

视觉模型不能只看训练集表现。验证集、测试集和真实场景样本要分开,否则很容易把过拟合当成进步。

模型评估与选择实操核对图查看大图
模型评估与选择实操核对图

我会固定数据划分和评估指标,再比较模型。指标和样本一变,模型好坏就没有可比性。

在机器学习的过程中,模型的评估与选择是至关重要的一步,它直接影响到我们所构建模型的效果。上一篇中,我们讨论了监督学习与非监督学习的基本概念。接下来,我们将深入探讨如何评估和选择机器学习模型,以确保我们的模型能够在实际应用中取得良好的表现。

模型评估的基本概念

在模型评估中,我们需要了解的第一个概念是性能度量。在监督学习中,我们通常需要处理分类和回归任务,这两种任务的性能评估指标是不同的。

视觉模型评估选择判断卡查看大图
视觉模型评估选择判断卡

选择视觉模型时,先比较验证指标、错误样例、推理速度、显存占用、数据偏差和维护成本。

分类模型的评估指标

  1. 准确率 (Accuracy): 准确率是所有预测中正确预测的比例。它的计算公式为:

    Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}}

    其中,TP是真正类的数量,TN是真负类的数量,FP是假正类的数量,FN是假负类的数量。

  2. 精确率 (Precision): 精确率是指在所有被预测为正类的样本中,实际为正类的比例。其计算公式为:

    Precision=TPTP+FP\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}
  3. 召回率 (Recall): 召回率是指在所有实际为正类的样本中,被正确预测的比例。其计算公式为:

Recall=TPTP+FN\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}
  • F1 分数: F1 分数是精确率和召回率的调和平均数,用于综合评估分类模型的性能。其计算公式为:

    F1=2×Precision×RecallPrecision+RecallF1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
  • 案例:鸢尾花数据集的分类

    我们可以使用鸢尾花数据集来进行一个简单的分类任务,并评估模型的性能。以下是使用 Python 和 Scikit-learn 的代码示例:

    import pandas as pd
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import classification_report
    
    # 加载数据
    iris = load_iris()
    X = iris.data
    y = iris.target
    
    # 划分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 创建与训练模型
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X_train, y_train)
    
    # 进行预测
    y_pred = model.predict(X_test)
    
    # 输出分类报告
    print(classification_report(y_test, y_pred, target_names=iris.target_names))
    

    回归模型的评估指标

    对于回归模型,常用的评估指标包括:

    1. 均方误差 (MSE): 是预测值与实际值的差值的平方的平均值。其计算公式为:

      MSE=1ni=1n(yiy^i)2\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
    2. 均方根误差 (RMSE): 是均方误差的平方根,常用于与真实值的比较。其计算公式为:

      RMSE=MSE\text{RMSE} = \sqrt{\text{MSE}}
    3. 决定系数 (R²): 用于衡量模型对数据变异的解释能力,其值在0和1之间,值越高,模型越好。其计算公式为:

      R2=1i=1n(yiy^i)2i=1n(yiyˉ)2R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}

    案例:波士顿房价数据集的回归

    以波士顿房价数据集为例,我们来训练一个回归模型并评估其性能:

    from sklearn.datasets import load_boston
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import mean_squared_error, r2_score
    
    # 加载数据
    boston = load_boston()
    X = boston.data
    y = boston.target
    
    # 划分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 创建与训练模型
    model = LinearRegression()
    model.fit(X_train, y_train)
    
    # 进行预测
    y_pred = model.predict(X_test)
    
    # 输出评估指标
    mse = mean_squared_error(y_test, y_pred)
    r2 = r2_score(y_test, y_pred)
    print(f'MSE: {mse}, R²: {r2}')
    

    模型选择

    评估完各个模型的性能后,我们需要选择最佳的模型。模型选择的常用方法有:

    计算机视觉阅读地图卡查看大图
    计算机视觉阅读地图卡

    读《机器学习基础之模型评估与选择》时,可以先看配图里的任务、概念、练习和判断点,再回到正文补细节。这样更容易判断这篇内容能放到哪个真实场景里。

    1. 交叉验证 (Cross-validation): 通过将数据集划分为多个子集,使用其中一部分训练模型,使用其他部分进行评估,从而得到模型在不同数据上的表现,更可靠地选择模型。

    2. 网格搜索 (Grid Search): 针对模型的超参数,通过系统的方法来寻找最佳的参数组合,以提高模型性能。

    交叉验证示例

    以下是使用交叉验证进行模型选择的简单代码示例:

    from sklearn.model_selection import cross_val_score
    
    # 使用随机森林模型
    model = RandomForestClassifier()
    
    # 进行交叉验证
    scores = cross_val_score(model, X, y, cv=5)
    
    print(f'Cross-validation scores: {scores}')
    print(f'Mean score: {scores.mean()}')
    
    机器学习基础之模型评估与选择应用复盘卡查看大图
    机器学习基础之模型评估与选择应用复盘卡

    读到这里,可以把《机器学习基础之模型评估与选择》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

    机器学习基础之模型评估与选择应用检查卡查看大图
    机器学习基础之模型评估与选择应用检查卡

    读完《机器学习基础之模型评估与选择》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

    小结

    通过对模型评估与选择的深入理解,我们能够更有效地选择和优化机器学习模型。在实际应用中,可以根据任务的不同特征和要求来选择合适的评估指标,从而确保最好的模型表现。评估模型的结果应作为模型优化与改进的重要依据。

    在下一篇中,我们将讨论过拟合与正则化的概念,以进一步提升模型的泛化能力。

    相关教程

    相关页面

    AI 教程列表

    分享文章

    转发到常用平台

    微信/朋友圈可先复制链接

    延伸教程

    AI 教程列表

    相关内容

    相关 AI 教程

    返回栏目

    Reader Messages

    读者留言

    有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

    最多 800 字

    为了防刷,每条留言会做长度、链接数量和提交频率限制。

    0/800

    留言列表

    0
    正在加载留言...