模型验证 model validation 就是在选择 模型 和 超参数 之后。通过对训练数据进行学习。对比模型对 已知 数据的预测值和实际值 的差异。

错误的模型验证方法。

用同一套数据训练 和 评估 模型。 准确率总是100% 。

模型验证正确方法: 留出集。

从训练模型的数据中留出一部分。用这部分数据来验证模型的性能。

使用train_test_split 工具。

交叉检验

用留出集进行模型验证有一个缺点,就是模型失去了一部分训练机会。有一半数据都没有为模型训练做出贡献。

每个子集既是训练集,也是验证集。





这就是俩轮交叉校验。 扩展一下,实现更多轮交叉校验。



使用cross_val_score 可以非常简单的实现。



极端情况,只留一个样本左测试。这种交叉检验类型模型被称为 LOO leave-one-out .



选择最优模型

如何选择模型和超参数

  • 偏差与方差的均衡

    “最优模型”的问题 基本可以看出是找出偏差 与方差平衡点的问题。

  • 欠拟合

    希望从数据中找到一条直线,但由于数据本质上比直线要复杂, 也就是说模型没有足够的灵活性来适应数据的所有特征。

    也叫高偏差

  • 过拟合

    希望用高阶多项式拟合数据,有足够的灵活性,完美地适应数据的所有特征。 十分准确的描述了训练数据,也过多的学习了数据的噪音。适应数据所有特征的同时,也适应了随机误差,

    也叫高方差

对于高偏差模型:模型在验证集的表现与训练集的表现类似

对于高方差模型:模型在验证集的表现远远不如训练集的表现。

如果我们有能力不断调整模型的复杂度,那么希望训练得分和验证得分如下

Scikit-Learn 验证曲线

用交叉校验计算一个模型的验证曲线。 用多项式 回归 模型。 多项式的次数是一个可调参数。

一次多项式: y = ax + b

三次多项式: y = ax^3 + bx^2 + cx + d

在Scikit-Learn 中,可以用一个带多项式预处理器 的 简单线性回归模型实现。

用一个管道命令 来组合 这 俩种操作。

创建一些数据 给模型 拟合

数据可视化,将不同次数的多项式拟合曲线画出来

问题:究竟多项式的次数是多少,才能在 偏差 和 方差 间达到平衡。

可以通过可视化验证曲线来找答案。

利用Scikit-Learn的 validation_curve函数 可以非常简单的实现。 只提供模型、数据、参数名称和验证范围信息。

函数就会 自动计算验证范围 内的训练得分 和 验证得分。

学习曲线

英雄模型复杂度的另一个重要因素就是 最优模型 往往受到 训练数据量 的影响。

学习曲线的特征:

  • 特定复杂度的模型 对较小的数据集 容易 过拟合:此时 训练得分较高,验证得分较低。
  • 特定复杂度的模型 对较大的数据集 容易 欠拟合:随着数据的增大,训练得分会不断降低, 验证得分会不断升高。
  • 模型的验证集得分永远不会高于 训练集得分: 俩条曲线一直在靠近,不会交叉



    学习曲线最重要的特征,随着训练样本数量的增加,分数会收敛到定值,因此,一旦训练数据已经使模型收件,再增加训练数据 也无济于事, 只能通过换模型。

验证时间:网格搜索

Scikit-Learn在grid_search提供了一个自动化工具来寻找最优多项式的回归模型。

GridSearchCV元评估器来设置这些参数。

然后调用fit()方法在每个网格上拟合模型。并同时记录每个点的得分

获取最优参数

Python数据科学手册-机器学习之模型验证的更多相关文章

  1. Python数据科学手册-机器学习介绍

    机器学习分为俩类: 有监督学习 supervised learning 和 无监督学习 unsupervised learning 有监督学习: 对数据的若干特征与若干标签之间 的关联性 进行建模的过 ...

  2. Python数据科学手册-机器学习:朴素贝叶斯分类

    朴素贝叶斯模型 朴素贝叶斯模型是一组非常简单快速的分类方法,通常适用于维度非常高的数据集.因为运行速度快,可调参数少.是一个快速粗糙的分类基本方案. naive Bayes classifiers 贝 ...

  3. Python数据科学手册-机器学习: k-means聚类/高斯混合模型

    前面学习的无监督学习模型:降维 另一种无监督学习模型:聚类算法. 聚类算法直接冲数据的内在性质中学习最优的划分结果或者确定离散标签类型. 最简单最容易理解的聚类算法可能是 k-means聚类算法了. ...

  4. Python数据科学手册-机器学习: 决策树与随机森林

    无参数 算法 随机森林 随机森林是一种集成方法,集成多个比较简单的评估器形成累计效果. 导入标准程序库 随机森林的诱因: 决策树 随机森林是建立在决策树 基础上 的集成学习器 建一颗决策树 二叉决策树 ...

  5. Python数据科学手册-机器学习: 支持向量机

    support vector machine SVM 是非常强大. 灵活的有监督学习算法, 可以用于分类和回归. 贝叶斯分类器,对每个类进行了随机分布的假设,用生成的模型估计 新数据点 的标签.是属于 ...

  6. Python数据科学手册-机器学习:线性回归

    朴素贝叶斯是解决分类任务的好起点,线性回归是解决回归任务的好起点. 简单线性回归 将数据拟合成一条直线. y = ax + b , a 是斜率, b是直线截距 原始数据如下: 使用LinearRegr ...

  7. Python数据科学手册-机器学习之特征工程

    特征工程常见示例: 分类数据.文本.图像. 还有提高模型复杂度的 衍生特征 和 处理 缺失数据的填充 方法.这个过程被叫做向量化.把任意格式的数据 转换成具有良好特性的向量形式. 分类特征 比如房屋数 ...

  8. Python数据科学手册-机器学习: 流形学习

    PCA对非线性的数据集处理效果不太好. 另一种方法 流形学习 manifold learning 是一种无监督评估器,试图将一个低维度流形嵌入到一个高纬度 空间来描述数据集 . 类似 一张纸 (二维) ...

  9. Python数据科学手册-机器学习: 主成分分析

    PCA principal component analysis 主成分分析是一个快速灵活的数据降维无监督方法, 可视化一个包含200个数据点的二维数据集 x 和 y有线性关系,无监督学习希望探索x值 ...

随机推荐

  1. 018(Phone List)(字典树)

    题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1471 题目思路: 这不就是一个超级明显的字典树嘛 字典树,又称单词查找树,Trie树,是一种树形 ...

  2. NIO.2中Path、 Paths、Files类的使用

  3. Python下载网易云收藏

    提前声明 仅作为个人学习使用,任何版权问题作者概不负责 本文的语言不会且不可能很严谨 博客园的编辑器有点BUG把我搞晕头了,所以本文可能有点鬼畜 前情 不知道各位有几个是对国内大厂的软件设计很满意的? ...

  4. 《Python编程:从入门到实践》第19章笔记:用户/用户注册/身份验证

    接上篇django最基本的一些日常用法,这是第19章笔记,希望在做"动手试一试"的时候可以让自己方便参考. 这一章实现了两个功能: 1.让用户能够添加主题Topic和条目Entry ...

  5. 如何有效地开发 Jmix 扩展组件

    扩展组件的概念在使用 Jmix 框架开发中扮演着非常重要的角色.我们将在本文探索什么是扩展组件以及 Jmix Studio 在扩展组件开发和应用程序模块化方面能给开发者带来什么帮助. Jmix 中的扩 ...

  6. 虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_183 2021年,对于正在找工作的朋友来说,笼罩在新冠肺炎疫情之下,今年的就业季显得更加具有挑战性,更有意思的是,每当这个时候,各 ...

  7. 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...

  8. 一文搞懂│php 中的 DI 依赖注入

    目录 什么是 DI / 依赖注入 依赖注入出现的原因 简单的依赖注入 高阶的依赖注入 依赖注入的应用 依赖注入高阶优化 什么是 DI / 依赖注入 依赖注入DI 其实本质上是指对类的依赖通过构造器完成 ...

  9. 【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position

    问题描述 当使用SDK连接到Azure Event Hub时,最常规的方式为使用连接字符串.这种做法参考官网文档就可成功完成代码:https://docs.azure.cn/zh-cn/event-h ...

  10. 开源风吹动开源心 ~ 8月16日,你若来,我们(Apache)在等你!

    点击上方蓝字关注ALC Beijing 抢! 太好看了吧! 买它,就是它,买它! 要抢! ALC是Apache Local Community的缩写,是全世界范围的 Apache 开源爱好者本地群组. ...