机器学习的相关概念与建模流程

news2024/11/27 18:41:31

文章目录

  • 一、机器学习简介
    • 1. 机器学习的相关定义
    • 2. 一次简单的机器学习任务:鸢尾花分类
  • 二、数据与数据集相关概念
    • 1. 数据与数据集
    • 2. 特征与标签
    • 3. 连续变量和离散变量
    • 4. 模型类型
  • 三、机器学习建模一般流程
    • 1. 提出基本模型
    • 2. 确定损失函数
    • 3. 根据损失函数性质,选择优化方法
    • 4. 利用优化算法进行损失函数求解

一、机器学习简介

1. 机器学习的相关定义

  • 一个计算机程序(算法),利用经验 E (历史数据)来学习任务 T (围绕某个问题进行训练),性能表现为 P (模型评估结果),如果针对任务 T 的性能 P 能随着经验 E 不断增长,则称之为机器学习
  • 对上述定义,我们有一个更加通俗易懂的解释,就是通过不断地喂养数据,让算法变得越来越聪明,就叫做机器学习
  • 机器学习算法指可以通过一次次的数据,不断累积经验,能够在既定任务处理上越来越聪明的计算流程。机器学习用到的算法也被称为机器学习算法、机器学习模型等。
  • 要想使机器学习算法变得越来越聪明,就需要进行反馈操作,输入新数据的预测结果判别是否正确。
  • 模型评估是指模型输出之后,来自真实数据反馈的外在数值表现。
  • 算法参数是指对模型运行及输出结果有所影响的模型关键指标(例如,算法规定的计算流程是两个数加权求和,则参数就是两个变量的权重。权重不同,模型最终输出结果也不同)。
  • 模型训练是指根据模型输出结果的反馈结果,来不断调整模型参数,最终让模型性能提升的过程。其具体流程如下。

在这里插入图片描述

2. 一次简单的机器学习任务:鸢尾花分类

  • 鸢尾花分类学习任务可以分为如下几步。

在这里插入图片描述

  • (1) 获取历史数据,描述这朵花的基本信息和种类。

在这里插入图片描述

  • (2) 将数据输入模型/算法,学习历史数据,判断满足什么条件时属于什么种类。

在这里插入图片描述

  • (3) 新数据预测,在学习完成后,就可以在模型中输入新的数据,对其类型进行判断。

在这里插入图片描述

  • (4) 反馈机制,对输入新数据的预测结果判别是否正确,使得整体计算流程越来越聪明。

在这里插入图片描述

二、数据与数据集相关概念

1. 数据与数据集

  • 所谓数据,特指能够描绘某件事物的属性或者运行状态的数值,并且一个数据集由多条数据构成。
  • 例如上文中的中鸢尾花数据,就是描述鸢尾花一般属性的数据集。我们可以通过本地读取文件的方式查看该数据集。
  • 通过在 Jupyter Notebook 中输入如下代码即可。
# 导入相关包
import numpy as np
import pandas as pd
iris_df = pd.read_csv("E:\百度网盘\iris.csv")
iris_df
  • 在其中填写文件的目录,大家一般情况下是通过属性当中的文件目录直接复制粘贴,但这样操作会报错 OSError: [Errno 22] Invalid argument: ‘\u202aD‘ ,对于此处的解决办法有两种。
  • (1) 鼠标在路径前端,点击一次删除后再次运行。
  • (2) 将文件的路径先复制好,再手动输入或重命名复制文件名,再次运行。
  • 会将 iris.csv 中的数据读取出来(包括 150 行,5 列,以及对应的标签),具体运行结果如下所示。

在这里插入图片描述

  • 数据集描述鸢尾花基本信息如下。

在这里插入图片描述

  • 在上述数据集中,每一行代表一朵花的记录结果,而其中每一列代表所有花的一项共同指标。
  • 类似这种二维表格数据,有时也被称为面板数据,属于结构化数据的一种。

2. 特征与标签

  • 鸢尾花数据集中的每一列是所有描述对象的一项共同指标,其中,前四列分别描述了鸢尾花的四项生物学性状,而最后一列则描述了每一朵花所属类别。
  • 当然,如果上述表格的记录目的是通过记录鸢尾花的四个维度的不同属性的取值最终判别鸢尾花属于哪一类,则该数据集中的前四列也被称为数据集的特征(features),而最后一列被称为数据集的标签(labels)。
  • 据此,我们在实际建模过程中,当需要利用模型进行预测时时,也是通过输入模型一些样本的特征(一些鸢尾花的四个特征取值),让模型进行每个样本的标签判别(判别每一朵花应该属于哪一类)。
  • 标签和特征,只是依据模型预测目标进行的、围绕数据集不同列进行的划分方式,如果模型的预测目标发生变化,则数据集的特征和标签也会发生变化。
  • 例如,如果围绕鸢尾花数据集我们最终是进行每一朵花的花瓣宽(petal width)的预测,则上述数据集中1、2、3、5列就变成了特征,第4列变成了标签。因此,特征和标签本质上都是人工设置的。
  • 一般来说,标签列需要放在最后一列,以便于我们的观察对比。
  • 数据集中的列也被称为字段,鸢尾花数据集中总共有5列,也就总共有5个字段。

3. 连续变量和离散变量

  • 对于鸢尾花数据而言,由于每一条数据都记录了一朵花的四个维度的属性以及花的所属类别,因此,如果从随机变量的角度出发,每一组观测结果我们也能将其视作5个随机变量的一次观测值。
  • 例如,我们可以将花萼长(sepal length)看成是一个随机变量,而第一条数据中的5.1cm,则可看成这个随机变量的第一个观测值。
  • 随机变量有离散变量和连续变量之分。
  • 连续变量,指的是随机变量能够取得连续数值,例如随机变量表示距离或者长度测算结果时,该变量就是连续性变量。
  • 离散变量,指的是随机变量只允许取得离散的整数,例如随机变量用 0/1 表示性别。不难发现,鸢尾花数据集中前四个变量都是连续变量,而最后一个变量是离散型变量(或者说可以用离散变量表示)。
  • 也就是说鸢尾花数据集的特征都是连续型特征,而标签则是离散型标签。
  • 知识点补充:对于离散型变量,可以细分为名义型变量和顺序性变量。
  • 名义变量,指的是随机变量取得不同离散值时,取值大小本身没有数值意义,只有指代意义。例如,用 0/1 代表男女,则该变量没有 1>0 的数值意义。但
  • 顺序变量,则有大小方面的数值意义,例如使用 0/1/2 代表高中/本科/研究生学历,则可用 2>1>0 来表示学习的高低之分。

4. 模型类型

  • 离散型变量和连续性变量在数理特征上有很大的区别。因此,对于预测类的机器学习建模来说,标签这一预测指标是连续型变量还是离散型变量,会对模型预测过程造成很大影响。
  • 如果是围绕离散型标签进行建模预测,则称任务为分类预测任务,该模型为解决分类任务的分类(classification)模型,
  • 如果是围绕连续型标签进行建模预测,则称该任务为回归预测任务,该模型为解决回归问题的回归类(regression)模型。
  • 如果依据鸢尾花数据集来构建一个预测某一朵花属于哪个类型的任务,属于分类任务,对应的,若需要完成该任务,我们也需要构建对应的分类模型来进行预测。此外,我们再介绍另外一个用于回归类问题建模的数据集,abalone 数据集。
  • 由于 abalone 数据集是 txt 格式数据集,各列是通过空格进行分隔,并且第一行没有列名,因此我们需要使用下述语句进行读取(“ sep=‘\t’ 默认是由 tab 分割的数据,header=None 表示第一行就是数据)。
ab_df = pd.read_csv("E://百度网盘//abalone.txt", sep='\t', header=None)
ab_df
  • 便会读取出如下所示的数据。

在这里插入图片描述

  • 同时,该数据各列名称如下。

在这里插入图片描述

  • 为了使阅读数据集更加方便,因此我们修改数据集列名称,并查看修改结果。
ab_df.columns
ab_df.columns = ['Gender', 'Length', 
                 'Diameter', 'Height', 
                 'Whole weight', 'Shucked weight', 
                 'Viscera weight', 'Shell weight',
                 'Rings']
ab_df #查看修改结果

在这里插入图片描述

  • 对于 abalone 数据集来说,Rings 是标签,围绕 Rings 的预测任务是连续型变量的预测任务,因此是个回归类问题。

三、机器学习建模一般流程

1. 提出基本模型

  • 例如,利用简单线性回归去捕捉一个简单数据集中的基本数据规律。
  • 例如 y=wx+b 就是我们所提出的基本模型。在提出模型时,我们往往会预设好一些影响模型结构或者实际判别性能的参数,如简单线性回归中的 w 和 b 。

2. 确定损失函数

  • 围绕建模的目标构建评估指标,并且围绕评估指标设置损失函数。这里需要注意的是,损失函数不是模型,而是模型参数所组成的一个函数。

3. 根据损失函数性质,选择优化方法

  • 损失函数既承载了我们优化的目标(让预测值和真实值尽可能接近),同时也是包含了模型参数的函数,当我们围绕目标函数求解最小值时,也就完成了模型参数的求解。
  • 这个过程本质上就是一个数学的最优化过程,求解目标函数最小值本质上也就是一个最优化问题,而要解决这个问题,我们就需要灵活适用一些最优化方法。
  • 在具体的最优化方法的选择上,函数本身的性质是重要影响因素,也就是说,不同类型、不同性质的函数会影响优化方法的选择。
  • 在简单线性回归中,由于目标函数是凸函数,我们根据凸函数性质,我们选取了最小二乘法作为该损失函数的优化算法。
  • 但实际上,简单线性回归的损失函数其实是所有机器学习模型中最简单的一类损失函数。

4. 利用优化算法进行损失函数求解

  • 在确定优化方法之后,我们就能够借助优化方法对损失函数进行求解,当然在大多数情况下我们都是求解损失函数的最小值。
  • 伴随损失函数最小值点确定,我们也就找到了一组对应的损失函数自变量的取值,而改组自变量的取值也就是模型的最佳参数。损失函数的求解过程才是建模的主体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet —— Smart Tomcat,以及一些访问出错可能的原因

JavaEE传送门JavaEE HTTPS —— HTTPS的加密方式 Servlet —— Tomcat, 初学 Servlet 程序 目录Smart TomcatSmart Tomcat 的下载配置 Smart Tomcat 插件访问出错404405500无法访问此网站Smart Tomcat 在上一篇文章中, 我们手动拷贝 war 包到 Tomcat 中的过程比较麻烦, 我们…

解析 json,整理分散数据入库

【问题】在 json 文件中有以下内容:现在需要将 json 中分散的数据整理入库。“LIST”中包含多个子孙记录,主要目标是”GROUPNAME”、”SERVICES”。“GROUPNAME”值、”SERVICES”中的键编号对应了数据库表 _groups 的 Groupname 和 ID。“SERVICES”每个…

PicGo+Gitee+Typora实现markdown图床

PicGoGitee实现markdown图床 情景概要 写博客的时候,总是需要插入图片的,图片存在本地的话上传到博客网站去就没法显示了 就算一个图一个图的复制粘贴上去,想移植到其他的博客网站,图就会失效,我们就需要图床 图床 …

系分 - 案例分析 - 项目管理

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分 - 案例分析 - 项目管理时间管理进度管理典型例题题目描述参考答案系分 - 案例分析 - 项目管理 时间管理 进度管理 ① 项目进度管理包括为管理项目按时完成所需的7个过程,具体为&#xf…

MyBatis-Plus数据安全保护(字段脱敏)

项目创建POM依赖 <dependency><!--MyBatis-Plus 企业级模块--><groupId>com.baomidou</groupId><artifactId>mybatis-mate-starter</artifactId><version>1.2.8</version> </dependency> YML配置 spring:datasource:# 配…

熟悉Spring框架?Spring容器使用流程,注解 你真的会吗?(让你一下通透~)

目录 前言 一、ApplicationContext 和 BeanFactory 的区别 二、主要工作流程 三、开发步骤 3.1、创建Maven项目 3.2、创建Spring的核心配置文件 3.3、Spring注解 3.3.1、类注解 3.3.2、五大类注解的关系 3.3.3、方法注解 3.3.4、属性注入 3.3.5、五大注解关系图&am…

【03】FreeRTOS的任务创建(静态和动态)和删除

目录 1.任务创建和删除的API函数 1.1动态创建任务函数 1.1.1实现动态创建任务流程 1.1.2任务控制块结构成员介绍 1.2静态创建任务函数 1.2.1实现静态创建任务流程 1.3任务删除函数 1.3.1删除任务流程 2.任务创建和删除&#xff08;动态方法&#xff09; 2.1宏confi…

一文掌握项目估算工具及方法【管理有度13】

01为什么要做估算我们的业务方经常抱怨资源不足&#xff0c;团队需求的吞吐率太低&#xff0c;资源和需求量的不匹配是一个永恒的话题&#xff0c;解决方案应该不只是增加资源&#xff0c;增加了资源如果需求的输入量不能稳定保证&#xff0c;那资源就会处于持续浪费的状态当中…

项目管理:项目控制的三个基本原则

要记住项目控制是怎么回事&#xff0c;一个简单方法是思考PDA。PDA是指预防、检测和行动。让我们仔细看看项目控制的这些基本原则。 1、预防 就像你自己的健康一样&#xff0c;健康的秘诀是加强你的免疫系统&#xff0c;尽量减少与有害物的接触。换句话说&#xff0c;就是不…

谷歌账号被封怎么办?谷歌账号解封申诉步骤请收好!

谷歌账号有多重要&#xff1f;相信很多跨境人和社媒营销人都会深有感悟的&#xff0c;谷歌账号可以说是国外互联网的一个通行证&#xff0c;国外非常多的网站都是支持使用谷歌账号登录的。 谷歌账号对企业进军海外市场是非常重要的存在&#xff0c;然而谷歌账号一旦操作不当是很…

Go语言变量

Go语言变量 参考资料主要来源于菜鸟教程。 参考链接&#xff1a;https://blog.51cto.com/u_15230485/2821028 变量来源于数学&#xff0c;是计算机语言中能存储计算结果或能表示值抽象概念。 变量可以通过变量名访问。 Go语言变量名由字母、数字、下划线组成&#xff0c;其中首…

Vector和ArrayList对比

本文会对ArrayList和Vector进行分析&#xff0c;为什么会关注这两个类&#xff0c;主要是因为他们拥有相同的继承结构&#xff0c;接下来就来探索下这两个类实现和效率的异同。 继承结构 可以看到&#xff0c;Vector和ArrayList都实现了List和RandomAccess接口&#xff0c;都继…

C语言——常用字符串库函数的介绍

文章目录常用字符串库函数介绍1.1关于字符串简介1.2:[strlen库函数](https://legacy.cplusplus.com/reference/cstring/strlen/?kwstrlen)1.2.1strlen函数的功能1.2.2strlen函数的参数和返回类型1.2.3strlen函数使用注意事项1.2.4strlen的使用1.2.5模拟实现strlen函数1.3:[str…

喜讯!酷开科技荣获中国国际广告节三项殊荣!

近日&#xff0c;由中国广告协会主办的第29届中国国际广告节AD Fair媒企交易会在厦门国际会展中心隆重举行。其中备受瞩目的三大盛典&#xff1a;广告主金伙伴盛典、广告主盛典、媒企盛典&#xff0c;是广告业必不可少的荣誉殿堂&#xff0c;他们不仅是对中国广告传媒业各方主体…

【C++升级之路】第七篇:STL简介

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【C学习与应用】 ✒️✒️本篇内容&#xff1a;从整体上对STL进行粗略介绍 &#x1f6a2;&#x1f6a2;作者简介&#xff1a;计算机海洋的新进船长一枚&…

GTD之初总结

思维导图 GTD&#xff1a;GTD是“Getting Things Done”的缩写&#xff0c;是由效率管理专家戴维艾伦&#xff08;David Allen&#xff09;开创的一套完整个人时间管理系统 既高效地处理工作事务&#xff0c;又能品味生活的快乐滋味&#xff0c;达到心如止水的轻松感 GTD工作…

docker中基础内容

docker中的核心概念 1、镜像&#xff1a; Image 定义&#xff1a;一个镜像就代表一个软件&#xff0c;比如&#xff1a;mysql 镜像、redis 镜像、es镜像等等2、容器&#xff1a; Container 定义&#xff1a;一个镜像运行一次就会生成一个容器&#xff0c;容器就是一个运行的软…

托普云农在创业板IPO过会:拟募资约3亿元,前三季度利润下滑8%

近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;浙江托普云农科技股份有限公司&#xff08;下称“托普云农”&#xff09;获得创业板上市委会议通过。据贝多财经了解&#xff0c;托普云农于2022年6月24日递交招股书并获得受理。 本次冲刺创业板上市&#xff0c;托普…

分享36个C源码,总有一款适合您

C源码 分享36个C源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 源码下载链接&#xff1a;https://pan.baidu.com/s/1WTLgtQ2J5gfZdj-LMEYnEA?pwdnimr 提取码…

Swagger使用

SpringBoot继承Swagger <!--swagger依赖--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency> <!--swagger ui--> <dependen…