人工智能知识全面讲解:机器学习的过程

2023-10-30

1.3.1 机器学习的三个阶段
学习了机器学习的概念后,我们知道机器学习实际上就是计算机通过算法
处理数据并且学得模型的过程。“模型”这个词经常被我们挂在嘴边,但大部
分人仍然不清楚模型是怎么做出来的,模型在计算机里是怎么表示的,对模型
很难有一个具象的认识。实际上模型主要完成转化的工作,帮助我们将一个在
现实中遇到的问题转化为计算机可以理解的问题,这就是我们常说的建模 。
如图1-6所示,在机器学习中生成一个模型的过程包括准备数据、建立模
型以及模型应用三个阶段。准备数据有收集数据、探索数据及数据预处理三个
步骤。对数据进行处理后,在建立模型阶段开始训练模型、评估模型,然后通
过反复迭代优化模型,最终在应用阶段上线投产使用模型,在新数据上完成任
务。

在数据准备阶段,我们首先通过各种渠道收集相关数据,然后对数据、需
求和机器学习的目标进行分析,尤其是对数据进行一些必要的梳理,从而了解
数据的结构、数据量、各特征的统计信息、数据质量情况及分布情况等,以便
后续根据数据的特点选择不同的机器学习算法。除此之外,为了更好地体现数
据分布情况,我们通常选择用可视化的方式把数据的概况展示出来。
通过数据探索,我们可能会发现不少问题,如存在数据缺失、数据不规
范,有异常数据、非数值数据、无关数据和数据分布不均衡等情况。这些问题
会直接影响数据的质量,因而得到的模型误差率会偏高。我们希望把样本数据
的各个变量处理得更规范整齐并且具有表征意?,这样才能最大限度地从原始
数据中提取特征信息以便算法和模型使用。为此,接?来要进行重点工作——
数据预处理,这是机器学习过程中必不可少的关键步骤。生产环境中的数据往
往是原始数据,也就是没有经过加工和处理的数据,这类数据常常存在千奇百
怪的问题,因此,数据预处理的工作通常占据整个机器学习过程的大部分时
间。
接?来就是整个机器学习中的重头戏——建模。训练模型的过程从本质上
来说就是通过大量训练数据找到一个与理想函数最接近的函数 。这是所有机
器学习研究的目标,也是机器学习的本质所在。
最理想的情况?,任何适合使用机器学习去解决的问题,在理论上都能被
一个最优的函数完美解决。但在现实应用中不一定能准确地找到这个函数,所
以我们会去找与这个理想函数较接近的函数。如果一个函数能够满足我们的使
用,那么我们就认为该函数是好的。
在训练数据的过程中,通常认为存在一个假设函数集合,这个集合包含了
各种各样的假设函数,我们需要做的就是从中挑选出最好的一个,这个假设
函数与理想函数是最接近的 。训练模型的过程,就好比在数学上,我们知道
有一个方程和一些点的坐标,用这些点来求这个方程的未知项,从而得到完整
的方程。但在机器学习中,我们往往很难得到这个完整的方程,所以我们只能
通过各种手段求最接近理想情况?的未知项的值,使得这个结果最接近原本的
方程。图1-7展示了模型训练的本质。

 

 这个过程非常重要,在后续章节真正学习机器学习算法时,我们需要利用
这个过程去理解算法的实现过程、构造损失函数的原因,以及找到所谓“最优
解”的方法。在实际问题求解中,我们将理想函数与实际函数之间的差距称为
损失值,所有的损失值加起来构成一个损失函数。求解最好的实际函数,也就
是求解令损失函数最小化的过程。
1.3.2 模型的训练及选择
一般情况?,不存在在任何情况?表现效果都很好的算法。因此在实际选
择模型时,我们会选用几种不同的方法来训练模型,比较它们的性能,从中选
择最优的方案。在训练模型前,可以将数据集分为训练集和测试集,或将训练
集再细分为训练集和验证集,以便评估模型对新数据的表现。
构建模型后,我们通常使用测试数据测试模型的效果。如果我们对模型的
测试结果满意,就可以用这个模型对新数据进行预测;如果我们对测试结果不
满意,则可以继续优化模型。优化的方法很多,在后面的章节中再?细讨论。
到这里模型训练的工作就完成了。计算机在样本数据上使用一个算法,经
过学习后得到一个模型,然后为模型输入新的待预测的数据,得到最终的预测
结果。
总结上述训练模型的过程,可分为以?三步:(1)根据应用场景、实际
需要解决的问题以及手上的数据,选择一个合适的模型。
(2)构建损失函数。需要依据具体的问题来确定损失函数,例如回归问
题一般采用欧式距离作为损失函数,分类问题一般采用交?熵代价函数作为损
失函数,这部分内容在后续章节会展开讲述。
(3)求解损失函数。求解损失函数是机器学习中的一个难点,因为做到
求解过程又快又准不是一件容易的事情。常用的方法有梯度?降法、最小二乘
法等,这部分内容同样在后续章节会展开讲述。
实际上在每个阶段,产品经理都可以做很多事情以帮助开发工程师提升模
型的效果,因为产品经理最接近业务,最了解一线需求,也就是最了解问题背
景、方案应用场景、业务数据,等等。在整个项目开始之前我们需要确保开发
工程师能够完全理解业务场景,明确模型的目标。在准备数据阶段,我们可以
根据业务经验告诉开发工程师哪些数据是业务同事重点关注的,哪些数据可
能会更有价值,哪些数据之间可能存在关联 。比如在建立一个预测客户贷款
倾向度模型时,我们会根据银行的经验把一些符合贷款申请的条件和规则告诉
开发工程师,以便他们做数据过滤及异常数据的处理。在建模阶段,我们同样
可以根据对业务场景的理解提出模型与数据源优化的方向,让程序开发和场景
应用两个环境能够真正有机地结合起来。

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

人工智能知识全面讲解:机器学习的过程 的相关文章

随机推荐

  • chorme唤起Java开发的本地程序全采坑记

    chorme唤起Java开发的本地程序全踩坑记 背景说明 在开发企业web应用时 往往需要进行订单通知 状态通知 或者需要一些插件式本地应用来扩展一些网页 实现不了的功能等 以通知为例 如果网页标签页或者浏览器切出去了 意味着网页内部的通知
  • 毕业设计-基于深度学习的网络流量异常检测系统

    目录 前言 课题背景和意义 实现技术思路 一 网络流量异常检测方法 二 基于 的物联网流量异常检测 三 实验 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费
  • docker 删除容器 找回容器内文件_如何管理 Docker 容器里的文件

    之前的文章里介绍了 Docker 的基本操作 再来水一篇文章说说怎么对容器里的文件进行管理 Docker 容器虽然类似虚拟机 但如果想要物理机和容器内系统进行文件传输时 还是有点区别的 如果只是单纯对容器内的系统进行本地文件管理的话 那么用
  • 1、Apache Hudi简介

    1 Hudi简介 Hudi是Hadoop Updates and Incrementals的缩写 用于管理HDFS上的大型分析数据集存储 主要目的是高效的减少入库延时 Hudi是一个开源Spark三方库 支持在Hadoop上执行upsert
  • 单词分析(蓝桥杯)

    单词分析 题目描述 小蓝正在学习一门神奇的语言 这门语言中的单词都是由小写英文字母组 成 有些单词很长 远远超过正常英文单词的长度 小蓝学了很长时间也记不住一些单词 他准备不再完全记忆这些单词 而是根据单词中哪个字母出现得最多来分辨单词 现
  • C语言宏定义运算式计算错误的问题

    RT Thread Studio编译器里使用宏定义计算如下公式 按照正常的数学运算关系 算出来的结果是453 59 如果不加括号算出来的值完全不对 结果是 1050360954 1510059952 把计算过程全都加上括号后计算正确 由此可
  • android基础:android页面添加滚动条

    1 建立一个android项目 2 打开layout下的activity main xml文件 如果创建项目事修改了activity main xml文件就选择你修改的文件名 3 删除activity main xml文件中内容 4 将下列
  • Nacos配置中心使用(Spring Cloud版)

    目标 向项目中集成Nacos配置 原项目是一个SpringBoot项目 这里假设我们无法修改原有项目的SpringBoot版本 注意 在不动SpringBoot版本的前提下 根据SpringBoot的版本 确定Spring Cloud和Na
  • unity3d关节物体连接方式 Joint 简介

    Unity3D 在components physics里有很多种Joint方式 用于模拟物体与物体间的联系 物体间作用力等 由于上次辛苦写了一堆没成功保存后 这次就不写那么详细了 做个引子 真的用到的时候大家可以查官网再做具体研究 Hing
  • 花生壳PHTunnel嵌入Openwrt实例

    下载 下载自己的编译平台的二进制PHTunnel文件是第一步要做的 我们可以到贝锐科技开放平台网站 https developer oray com sdk 进行下载 根据自己的型号进行下载 比如我的路由器是基于mipsel c库使用的是u
  • 你值得拥有——流星雨下的告白(Python实现)

    目录 1 前言 2 霍金说移民外太空 3 浪漫的流星雨展示 4 Python代码 1 前言 我们先给个小故事 提一下大家兴趣 然后我给出论据 得出结论 最后再浪漫的流星雨表白代码奉上 还有我自创的一首诗 开始啦 2 霍金说移民外太空 霍金说
  • Python-继承

    单继承 多继承 面向对象三大特性 封装根据职责将属性和方法封装到一个抽象的类中 继承实现代码的重用 相同的代码不需要重复的缩写 多态不同的对象调用相同的方法 产生不同的执行结果 增加代码的灵活度 1 单继承 1 1继承的概念 语法和特点 继
  • mysql批量插入、更新

    1 创建表 CREATE TABLE user id int 11 UNSIGNED NOT NULL AUTO INCREMENT COMMENT id name varchar 255 CHARACTER SET utf8 COLLAT
  • mysql 安装教程(详细说明)

    如果你装过 一定要先卸载干净 并且重启重新装 卸载教程 保证成功 https www cnblogs com qzhc p 11354678 html 大家都知道MySQL是一款中 小型关系型数据库管理系统 很具有实用性 对于我们学习很多技
  • SpringBoot的ApplicationRunner

    场景 在开发过程中 需要在容器启动的时候查询数据库 将数据加载到程序中 代码 Component Slf4j RequiredArgsConstructor public class InitAppRunner implements App
  • monaco-editor基本使用以及monaco-editor封装成vue组件

    文章目录 一 monaco editor基本使用 二 monaco editor封装成vue组件 一 monaco editor基本使用 以vue2项目为例 安装依赖 npm i monaco editor npm i monaco edi
  • Redis知识总结

    Redis的全称是 Remote Dictionary Server Redis是一个开源 BSD许可 内存数据结构存储 可以用作数据库 缓存和消息代理 它支持数据结构 如字符串 散列 列表 集合 带有范围查询的排序集 位图 超级日志 具有
  • unity3D 鼠标滚轮实现物体的大小缩放

    这个实现的方法不难 难的可能是要弄懂鼠标滚轮响应函数的机制 响应函数是Input GetAxis Mouse ScrollWheel 其中 这个函数是有返回值的 类型是float 向前滚是返回正数 向后滚是返回负数 所以 下面这个脚本操作的
  • 域名系统和 DNS

    目录 1 名字解析介绍和DNS 1 2 DNS服务工作原理 1 3 DNS查询类型 1 4 名称服务器 1 5 解析类型 1 6 完整的查询请求经过的流程 2 DNS 服务相关概念和技术 2 1 DNS服务器的类型 2 1 1 主DNS服务
  • 人工智能知识全面讲解:机器学习的过程

    1 3 1 机器学习的三个阶段 学习了机器学习的概念后 我们知道机器学习实际上就是计算机通过算法 处理数据并且学得模型的过程 模型 这个词经常被我们挂在嘴边 但大部 分人仍然不清楚模型是怎么做出来的 模型在计算机里是怎么表示的 对模型 很难