如何提高训练模型准确率

2023-10-30

如何提高训练模型准确率

原文链接:https://blog.csdn.net/Winteeena/article/details/78997696

提升一个模型的表现有时很困难,尝试所有曾学习过的策略和算法,但模型正确率并没有改善。
这才是考验真本领的时候!这也是普通的数据科学家跟大师级数据科学家的差距所在。
本文将分享 8 个经过证实的方法,使用这些方法可以建立稳健的机器学习模型。

导语


模型的开发周期有多个不同的阶段,从数据收集开始直到模型建立。

不过,在通过探索数据来理解(变量的)关系之前,建议进行假设生成(hypothesis generation)步骤(如果想了解更多有关假设生成的内容,
推荐阅读(why-and-when-is-hypothesis-generation-important)。我认为,这是预测建模过程中最被低估的一个步骤。

花时间思考要回答的问题以及获取领域知识也很重要。这有什么帮助呢?
它会帮助你随后建立更好的特征集,不被当前的数据集误导。这是改善模型正确率的一个重要环节。

在这个阶段,你应该对问题进行结构化思考,即进行一个把此问题相关的所有可能的方面纳入考虑范围的思考过程。

现在让我们挖掘得更深入一些。让我们看看这些已被证实的,用于改善模型准确率的方法。

正文


1.增加更多数据

持有更多的数据永远是个好主意。相比于去依赖假设和弱相关,更多的数据允许数据进行“自我表达”。数据越多,模型越好,正确率越高。

我明白,有时无法获得更多数据。比如,在数据科学竞赛中,训练集的数据量是无法增加的。
但对于企业项目,我建议,如果可能的话,去索取更多数据。这会减少由于数据集规模有限带来的痛苦。

2.处理缺失值和异常值

训练集中缺失值与异常值的意外出现,往往会导致模型正确率低或有偏差。这会导致错误的预测。
这是由于我们没能正确分析目标行为以及与其他变量的关系。所以处理好缺失值和异常值很重要。

仔细看下面一幅截图。在存在缺失值的情况下,男性和女性玩板球的概率相同。
但如果看第二张表(缺失值根据称呼“Miss”被填补以后),相对于男性,女性玩板球的概率更高。

从上面的例子中,我们可以看出缺失值对于模型准确率的不利影响。所幸,我们有各种方法可以应对缺失值和异常值:

  • 1.缺失值:对于连续变量,可以把缺失值替换成平均值、中位数、众数。对于分类变量,可以把变量作为一个特殊类别看待。
    你也可以建立模型预测缺失值。KNN为处理缺失值提供了很好的方法。想了解更多这方面内容,推荐阅读《Methods to deal and treat missing values》。
  • 2.异常值:你可以删除这些条目,进行转换,分箱。如同缺失值,你也可以对异常值进行区别对待。
    想了解更多这方面内容,推荐阅读《How to detect Outliers in your dataset and treat them?》。

3.特征工程学(Feature Engineering)

这一步骤有助于从现有数据中提取更多信息。新信息作为新特征被提取出来。
这些特征可能会更好地解释训练集中的差异变化。因此能改善模型的准确率。

假设生成对特征工程影响很大。好的假设能带来更好的特征集。
这也是我一直建议在假设生成上花时间的原因。特征工程能被分为两个步骤:

  • 特征转换:许多场景需要进行特征转换:

  • A)把变量的范围从原始范围变为从0到1。这通常被称作数据标准化。
    比如,某个数据集中第一个变量以米计算,第二个变量是厘米,第三个是千米,在这种情况下,在使用任何算法之前,必须把数据标准化为相同范围。

  • B)有些算法对于正态分布的数据表现更好。所以我们需要去掉变量的偏向。
    对数,平方根,倒数等方法可用来修正偏斜。

  • C)有些时候,数值型的数据在分箱后表现更好,因为这同时也处理了异常值。
    数值型数据可以通过把数值分组为箱变得离散。这也被称为数据离散化。

  • 创建新特征:从现有的变量中衍生出新变量被称为特征创建。这有助于释放出数据集中潜藏的关系。
    比如,我们想通过某家商店的交易日期预测其交易量。在这个问题上日期可能和交易量关系不大,
    但如果研究这天是星期几,可能会有更高的相关。在这个例子中,某个日期是星期几的信息是潜在的。我们可以把这个信息提取为新特征,优化模型。

4.特征选择

特征选择是寻找众多属性的哪个子集合,能够最好的解释目标变量与各个自变量的关系的过程。

你可以根据多种标准选取有用的特征,例如:

  • 所在领域知识:根据在此领域的经验,可以选出对目标变量有更大影响的变量。
  • 可视化:正如这名字所示,可视化让变量间的关系可以被看见,使特征选择的过程更轻松。
  • 统计参数:我们可以考虑p值,信息价值(information values)和其他统计参数来选择正确的参数。
  • PCA:这种方法有助于在低维空间表现训练集数据。这是一种降维技术。降低数据集维度还有许多方法:如因子分析、低方差、高相关、前向后向变量选择及其他。

5.使用多种算法

使用正确的机器学习算法是获得更高准确率的理想方法。但是说起来容易做起来难。

这种直觉来自于经验和不断尝试。有些算法比其他算法更适合特定类型数据。因此,我们应该使用所有有关的模型,并检测其表现。

6.算法的调整

我们都知道机器学习算法是由参数驱动的。这些参数对学习的结果有明显影响。参数调整的目的是为每个参数寻找最优值,以改善模型正确率。
要调整这些参数,你必须对它们的意义和各自的影响有所了解。你可以在一些表现良好的模型上重复这个过程。

例如,在随机森林中,我们有 max_features,number_trees, random_state, oob_score 以及其他参数。优化这些参数值会带来更好更准确的模型。

想要详细了解调整参数带来的影响,可以查阅《Tuning the parameters of your Random Forest model》。下面是随机森林算法在scikit learn中的全部参数清单:

RandomForestClassifier(n_estimators=10,criterion=‘gini’,max_depth=None,min_samples_split=2,
min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=‘auto’,max_leaf_nodes=None,
bootstrap=True,oob_score=False,n_jobs=1,random_state=None,verbose=0,warm_start=False,class_weight=None)

7.集成模型

在数据科学竞赛获胜方案中最常见的方法。这个技术就是把多个弱模型的结果组合在一起,获得更好的结果。它能通过许多方式实现,如:

  • Bagging(Bootstrap Aggregating)
  • Boosting
    想了解更多这方面内容,可以查阅《Introduction to ensemble learning》。

    使用集成方法改进模型正确率永远是个好主意。主要有两个原因:1)集成方法通常比传统方法更复杂;2)传统方法提供好的基础,在此基础上可以建立集成方法。

    注意:到目前为止,我们了解了改善模型准确率的方法。但是,高准确率的模型不一定(在未知数据上)有更好的表现。有时,模型准确率的改善是由于过度拟合。

8.交叉验证

如果想解决这个问题,我们必须使用交叉验证技术(cross validation)。交叉验证是数据建模领域最重要的概念之一。
它是指,保留一部分数据样本不用来训练模型,而是在完成模型前用来验证。

这种方法有助于得出更有概括性的关系。想了解更多有关交叉检验的内容,
建议查阅《Improve model performance using cross validation》。

结语


预测建模的过程令人疲惫。但是,如果你能灵活思考,就可以轻易胜过其他人。
简单地说,多考虑上面这8个步骤。获得数据集以后,遵循这些被验证过的方法,你就一定会得到稳健的机器学习模型。
不过,只有当你熟练掌握了这些步骤,它们才会真正有帮助。
比如,想要建立一个集成模型,你必须对多种机器学习算法有所了解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何提高训练模型准确率 的相关文章

  • Python 数据分析——Matplotlib相关知识

    Python 数据分析 Matplotlib相关知识 第五章 Matplotlib相关知识 样式 文章目录 Python 数据分析 Matplotlib相关知识 前言 一 matplotlib的绘图样式 style 1 matplotlib
  • 朋友月薪3000,靠 Python 做副业月入过万!

    被压垮的打工人 你还好吗 房贷车贷 上老下小 日常开销 但你的收入有多少 所以你不敢生病 甚至不敢回家 就为了每个月那么点死工资 还得天天加班 然而忙忙忙 却变成了 穷忙族 成为了职场废人 朋友在事业单位工作 事少离家近 收入也很稳定 但她
  • 时间序列特征构造:以电力负荷预测为例讲解(python语言)

    个人电气博文目录传送门 学好电气全靠它 个人电气博文目录 持续更新中 时间序列特征构造 时间序列问题 首先不管是回归问题 还是分类问题 一个模型的好坏 决定因素由数据集的大小 特征值的选取和处理 算法 其中最重要的是特征值的选取和处理 今天
  • 全网最详细的Python安装教程,超级详细·小白秒懂!!!

    目录 1 安装版本说明 2 准备工作 确定操作系统及位数 2 1 确定方法1 2 2 确定方法2 3 下载Python安装包 4 安装Python 5 测试Python是否安装成功 6 Python安装成功后找不到编写代码的桌面快捷方式 7
  • 一次讲清楚京东科技百亿级用户画像平台的探索和实践 | 京东云技术团队

    背景 如果你是用户 当你使用抖音 小红书的时候 假如平台能根据你的属性 偏好 行为推荐给你感兴趣的内容 那就能够为你节省大量获取内容的时间 如果你是商家 当你要进行广告投放的时候 假如平台推送的用户都是你潜在的买家 那你就可以花更少的钱 带
  • 用RPA实现高效批量下载图片,轻松解决繁琐操作!

    在电商行业中 高质量的商品图片是吸引客户的重要因素之一 然而 传统的下载方式需要逐个点击商品链接并手动保存图片 费时费力且容易出错 为了解决这个问题 八爪鱼抓取淘宝商品图片rpa机器人应运而生 它可以模拟人在电脑上的操作 根据用户的配置自动
  • 《OptiBPM入门教程》好书分享

    目 录 1 入门指南 1 1 OptiBPM安装及说明 1 2 OptiBPM简介 1 3 光波导介绍 1 4 快速入门 2 创建一个简单的MMI耦合器 2 1 定义MMI耦合器材料 2 2 定义布局设置 2 3 创建一个MMI耦合器 2
  • 时间相干性测量

    迈克尔逊干涉仪及类似干涉仪通常可用于给定光源的时间相干性或光谱测量 在VirtualLab Fusion中 光源建模非常灵活 软件提供了多种有限带宽的光谱类型以供设置 该示例演示了如何在迈克尔逊干涉仪中应用此光源模型 使用参数扫描 Para
  • Python数据分析:从入门到进阶,一篇文章带你飞!

    随着大数据时代的来临 数据分析已经成为了各行各业不可或缺的一环 而Python作为数据分析的利器 更是备受推崇 今天 我将为大家带来一篇关于Python数据分析的介绍 让我们一起走进数据的世界 探索Python的魅力 一 Python数据分
  • Pipeline 助您轻松驾驭海量数据!

    前言 数据治理在当今信息时代变得至关重要 随着数据量的不断增长和多样化 组织需要有效地管理和利用这些数据 以支持业务决策和创新发展 不论是做数据分析还是数据解析 利用 Pipeline 可以帮助组织实现数据治理的自动化和规范化 为组织提供更
  • Python数据分析原来这么简单!5分钟上手,让你成为数据分析达人!

    前言 数据分析是如今信息时代的核心技能之一 通过对大量数据的收集 整理 处理和分析 数据分析师可以从中提取出有价值的信息 为企业决策提供支持和指导 而Python作为一种简单 易学且功能强大的编程语言 成为了数据分析的热门工具之一 本文将为
  • 《OCAD光学系统自动设计程序》好书分享

    OCAD是一款具有鲜明工程化特色的中国光学自动设计软件 程序重点在于可以首先进行复杂光学系统的初始布局 进行设计前期的总体方案设计 可以对各类典型光学系统自动进行初始结构设计 作为一款光学系统辅助设计软件 SEEOD以光的直线传播 数学几何
  • 深入挖掘:Python中的Statsmodels库高级应用

    写在开头 随着数据科学的发展 解决更为复杂问题的关键往往在于深入了解数据并采用更高级的分析工具 本文将带您深入探讨Python中的Statsmodels库 并引入一些高级功能 为更深入的数据挖掘奠定基础 1 方差分析 1 1 方差分析概念
  • Selenium库编写爬虫详细案例

    一 引言 Selenium作为一个强大的自动化测试工具 其在网络爬虫领域也展现出了许多技术优势 首先 Selenium可以模拟浏览器行为 包括点击 填写表单 下拉等操作 使得它能够处理一些其他爬虫工具无法应对的情况 比如需要登录或者页面使用
  • 航空港务数据大屏为航空港的可持续发展提供有力支撑!

    随着经济的发展 不断加建与扩建民用机场 空港行业规模不断扩大 在不断引进和消化发达国家先进技术的同时 中国深入开展了对新技术和新材料的研究 极大地丰富和发展了中国的机场建设技术 且各项机场建设计划均已落实推进 行业在经济发展的推动下欣欣向荣
  • Selenium库编写爬虫详细案例

    一 引言 Selenium作为一个强大的自动化测试工具 其在网络爬虫领域也展现出了许多技术优势 首先 Selenium可以模拟浏览器行为 包括点击 填写表单 下拉等操作 使得它能够处理一些其他爬虫工具无法应对的情况 比如需要登录或者页面使用
  • Pendulum详解1——Pendulum库入门指南 - 时光的艺术

    写在开头 时间 是编程世界中不可或缺的元素 无论是事件调度 数据分析 还是用户界面的显示 时间都扮演着关键的角色 然而 在Python的标准库 datetime 中 我们经常面临繁琐的操作和限制 为了摆脱这些束缚 我们引入了一个更加强大和灵
  • Pendulum详解1——Pendulum库入门指南 - 时光的艺术

    写在开头 时间 是编程世界中不可或缺的元素 无论是事件调度 数据分析 还是用户界面的显示 时间都扮演着关键的角色 然而 在Python的标准库 datetime 中 我们经常面临繁琐的操作和限制 为了摆脱这些束缚 我们引入了一个更加强大和灵
  • 欢迎来到阿清的数据分析求职分享

    大家好 我是阿清 在这里 我将与大家分享关于数据分析岗位求职路上的点点滴滴 包括行业和岗位的深入见解 求职技巧 面试准备方法 以及实战案例分析等等 关于我 正经工作履历 2015年东南大学计算机专业研究生毕业 校招身份加入了阿里 最初参与面
  • GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 GPT4 Python近红外光谱数据分析及机器学习与深度学习建模 第一 GPT4 入门基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初体验 注册与

随机推荐

  • Memcache介绍及安装部署

    Memcache 官网 http memcached org 1 Memcache 的特性 1 可以通过做集群同步的方式 让各 memcache 服务器的数据进行同步 从而实现数据的一致性 2 memcached使用libevent库 能在
  • 国庆7天没休息,我用17张图画明白了SpringCloudAlibaba

    大家好 今天给大家介绍一个非常热门的技术 同时也是面试的时候面试官特别喜欢问的一个话题 那就是 SpringCloudAlibaba 的底层原理 现在大家都知道 SpringCloudAlibaba 风靡 Java 开发行业 各个公司都在用
  • pycharm导入第三方库

    第一步 点击文件按钮 第二步 点击设置 第三步 选择项目 python解释器 第四步 点击右侧栏的 第五步 输入要导入的库 进行搜索 第六步 点击安装包 等待安装完成即可
  • 基于springboot+vue的开源mes系统

    真正的大师 永远都怀着一颗学徒的心 一 项目简介 基于springboot vue的开源mes系统 二 实现功能 常规管理 现场数据采集 系统管理 菜单管理 用户管理 日志管理 角色管理 基础数据配置平台 基础数据维护 物料管理 物料台账
  • 程序员常去的个顶级开发社区

    程序员常去的个顶级开发社区 Stack Overflow 9月份 Stack Overflow也将迎来其6岁的生日 毫无疑问 Stack Overflow是全球最受程序员欢迎的开发社区 而且也是内容最丰富的社区之一 官方网站 http st
  • checkpatch海思SDK代码遇见的常见错误《一》

    01 WARNING AVOID EXTERNS externs should be avoided in c files 3 FILE sample region sample region c 3 extern C ifdef cplu
  • C++面试题分享

    在牛客网偶然间翻到的一个大佬总结的有关C 面试题的一个专栏 该专刊囊括了C语言 C 操作系统 计算机网络 嵌入式 算法与数据结构 数据库等一系列知识点 总结出了高频面试考点 附有答案 共计273道 在这里给大家分享一下 链接 蒋豆芽面试题专
  • gitlab--基础--5.4--CICD--variables

    gitlab 基础 5 4 CICD variables 1 variables的保留字 1 1 CI 标识该job是在CI环境中执行 1 2 CI COMMIT REF NAME 用于构建项目的分支或tag 的名称 1 3 CI COMM
  • Could not find a package configuration file provided by "ignition-transport1"

    一 错误 按照Gazebo官网教程进行code introspection环境配置 在对代码进行编译时报错如下 二 错误原因 cmakelists txt里设置的ignition transport版本为ignition transport
  • 解决方案:fatal error: openssl/bio.h: 没有那个文件或目录

    出现报错如下 出现该错误的原因有两个 没有安装openssl或者libssl dev库 Libssl dev版本过高 需要降级 一 没有安装openssl或者libssl dev库 使用指令安装openssl 我的是已经安装完成了 所以再把
  • catch抛出异常finally还执行吗

    在面试的时候 经常会问到一些很基础的知识 比如有没接触过try catch finally 他们的执行顺序是怎么样的呢 你对此嗤之以鼻 这不是很简单吗 按照顺序执就行了 没错 可是如果每一块有return 并且有抛异常 扑捉异常的情况呢 估
  • 三步搞定ABAP DOI操作EXCEL

    前言 ABAP可以使用OLE与DOI两种方式实现操作EXCEL 使用OLE时 每个单元格的值和样式都需要写代码实现 特别是对于不规则的格式 代码量巨大 而DOI是从服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存 当然 也可
  • sum(1),sum(2,3,4),sum(2)(3)(4)

  • 高级人工智能课程笔记

    课程部分笔记 依据 人工智能 一种现代化方法 第三版 目录 智能概述 搜索search Uninformed Search Informed Search 约束满足问题CSP MDP 值迭代方法 策略迭代 RL 朴素贝叶斯 其他 智能概述
  • el-input针对手机号的校验优化

    注意 以下代码均只展示与本文相符的内容 并不提供完整项目代码 先看代码 tool js文件 function isvalidPhone str const reg 1 3 4 5 7 8 0 9 d 8 return reg test st
  • tomcat 修改默认访问项目名称和项目发布路径

    摘要 本次主要介绍tomcat设置访问的默认项目的名称和项目存放的路径 1 修改项目发布路径 tomcat默认的而发布路径为 tomcat webapps 目录 但是这个目录下有一些默认的项目 在tomcat启动的时候会跟着一起加载 如果不
  • 数据库连接池的实现及原理

    对于一个简单的数据库应用 由于对于数据库的访问不是很频繁 这时可以简单地在需要访问数据库时 就新创建一个连接 用完后就关闭它 这样做也不会带来什么明显的性能上的开销 但是对于一个复杂的数据库应用 情况就完全不同了 频繁的建立 关闭连接 会极
  • Docker (一)如何打dockerfile

    熟悉docker 是高级java必备的技术素质 在面试中 经常会有公司问到 你会打dockerfile吗 面试中很少问及docker的其他知识点 那是因为docker是运维范围内的事 如果你的公司拥有强大的运维平台的话 基本上打docker
  • windows下编译dlib

    dlib 1 下载dlib源码 dlib18 17 http pan baidu com s 1gey9Wd1 2 解压源码包 3 打开cmake 设置source code路径为解压目录 新建生成目录 起名为build 设为二进制生成目录
  • 如何提高训练模型准确率

    如何提高训练模型准确率 原文链接 https blog csdn net Winteeena article details 78997696 提升一个模型的表现有时很困难 尝试所有曾学习过的策略和算法 但模型正确率并没有改善 这才是考验真