机器学习完整路径

一个机器学习项目从开始到结束大致分为 5 步,分别是定义问题、收集数据和预处理、选择算法和确定模型、训练拟合模型、评估并优化模型性能。是一个循环迭代的过程,优秀的模型都是一次次迭代的产物。

定义问题

要剖析业务场景,设定清晰的目标,同时还要明确当前问题属于哪一种机器学习类型。

收集数据和预处理

收集数据

数据来源有多种形式,根据业务问题进行搜集和整合。

数据可视化

通过散点图来观察特征和指标间的分布,推测之间的关系。

数据清洗

1、处理缺失的数据。(补充、剔除)
2、处理重复的数据。
3、处理错误的数据。
4、处理不可用的数据。

特征工程

特征工程是一个专门的机器学习子领域,它是数据处理过程中最有创造力的环节,特征工程做得好不好,非常影响机器学习模型的效率。特征工程就是指优化数据集的特征,使机器学习算法更起作用的过程。数据和特征决定了机器学习的上限,而模型和算法只是无限逼近这个上限而已
摒弃掉冗余的特征、降低特征的维度,能使机器学习模型训练得更快。

特征编码

  • 独热编码(One-HotEncoding)
    用于将分类特征的每个元素转化为一个可直接计算的数值,也即特征值数字化。独热编码采用N位状态寄存器来对N个可能的取值进行编码,每个状态都由独立的寄存器来表示,并且在任意时刻只有其中一位有效。
    独热编码的优点:能够处理非数值属性;在一定程度上扩充了特征;编码后的属性是稀疏的,存在大量的零元分量。

  • LabelEncoder
    针对离散变量,将离散型的数据转换成 0 到 n − 1 之间的数,这里 n 是一个列表的不同取值的个数,可以认为是某个特征的所有不同取值的个数。

特征选择

在一个数据集中,每个特征在标签预测或分类过程中发挥的作用其实都不同。对于那些没作用和作用小的数据,我们就可以删掉,来降低数据的维度,节省模型拟合时的计算空间。

自动特征选择工具,klearn 的 feature_selection 模块中,有很多自动特征选择工具。SelectKBest 的原理和使用都非常简单,它是对每个特征和标签之间进行统计检验,根据 X 和 y 之间的相关性统计结果,来选择最好的 K 个特征,并返回。

数据降维

把多维特征压缩成低维的特征,也就是通过算法实现特征选择,减少特征的数目。常见的降维算法有两种:主成分分析法(PCA)和线性判别分析(LDA)。PCA 是一种无监督的降维方法,而 LDA 是一种有监督的降维方法。

特征变换

特征变换的整体目标是让原始特征变得机器学习模型可用,甚至是更好用。

特征构建

特征构建是整个特征工程领域最具创造力的部分,也是我觉得在数据预处理环节中最有意思的地方。因为它完全没有一定之规,全凭借你的经验、领域知识和创造力。

构建特征集和标签集

主要是针对监督学习,拆分出特征和标签。

拆分训练集、验证集和测试集

训练集用来训练模型,验证集用来模型调优,测试集用来评估模型性能。
验证集,是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。
测试集,用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。

选择算法并建立模型

最常用的算法工具包是 scikit-learn,简称 sklearn,它是使用最广泛的开源 Python 机器学习库,堪称机器学习神器。

模型的参数

内部参数和外部参数。内部参数是属于算法本身的一部分,不用我们人工来确定,刚才提到的权重 w 和截距 b,都是线性回归模型的内部参数;而外部参数也叫做超参数,它们的值是在创建模型时由我们自己设定的。

深度学习

最基本、最简单的神经网络就是逻辑回归模型。神经网络需要对数据进行归一化的操作。

深度学习特别擅长处理非结构化的数据。传统的模型需要先做各种各样的特征工程,让数据变得“计算机友好”,再输入模型进行学习。而深度学习模型则可以自动进行特征提取,因此就省略掉了手工做特征工程的环节。

集成学习

集成学习的核心思想是训练出多个模型并将这些模型进行组合。根据分类器的训练方式和组合预测的方法,集成学习中两种最重要的方法就是:降低偏差的 Boosting 和降低方差的 Bagging。

训练模型

训练模型就是用训练集中的特征变量和已知标签,根据当前样本的损失大小来逐渐拟合函数,确定最优的内部参数,最后完成模型。

在模型训练的过程中,控制模型的复杂度,防止过拟合。比如决策树的最大深度,和回归模型的正则化。

模型的评估和优化

在验证集或者测试集进行模型效果评估的过程中,我们则是通过最小化误差来实现超参数(模型外部参数)的优化。

如果模型的评估分数不理想,我们就需要回到第 3 步,调整模型的外部参数,重新训练模型。要是得到的结果依旧不理想,那我们就要考虑选择其他算法,创建全新的模型了。如果很不幸,新模型的效果还是不好的话,我们就得回到第 2 步,看看是不是数据出了问题。

对于过拟合的讨论,我们多限于监督学习的应用范围,也就是回归和分类两大类问题。当然,也有人认为无监督学习中也存在过拟合现象,但是无监督学习中的过拟合被讨论的不多。

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

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

相关文章

Excel技巧 - 管理规则设置一行变色

如何设置某一列单元格的值大于一个值时,该单元格所在的一整行都变色呢? 1、先框选内容区域,点击开始,条件格式,新建规则 2、如果销量大于20,则该行都变为绿色 编辑格式选择:使用公式确定要设置…

【MySQL】存储过程(十一)

🚗MySQL学习第十一站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 一.引入 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的工作,可以减少数据在数据库和应用服务器之间的传输,…

大数据技术之Clickhouse---入门篇---SQL操作、副本

星光下的赶路人star的个人主页 积一勺以成江河,累微尘以崇峻极 文章目录 1、SQL操作1.1 Insert1.2 Update 和 Delete1.3 查询操作1.4 alter操作1.5 导出数据 2、副本2.1 副本写入流程2.2 配置步骤 1、SQL操作 基本上来说传统关系型数据库(以 MySQL 为例…

九五从零开始的运维之路(其二十七)

文章目录 前言一、SQL语句类型1.DDL2.DML3.DCL4.DQL 二、数据库操作1.查看数据库2.创建数据库3.进入数据库4.删除数据库5.更改数据库 三、数据表操作1.数据类型(一)数值类型(二)时间\日期类型(三)字符串类型…

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 4

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

Android中的ContentProvider

Android中的ContentProvider 在Android中,ContentProvider是四大组件之一,用于在不同应用程序之间共享和管理数据。它提供了一种标准化的方式来访问和管理应用程序的数据,使得多个应用程序可以安全地共享数据,而无需直接访问彼此…

phpstudy 进行 composer 全局配置

背景 因为注意到,使用 phpStudy 进行环境搭建时,有时需要使用 composer 每次都需要查找资料进行配置, 在此进行记录笔记,方便有需要的道友借鉴 配置 版本:composer1.8.5(phpStudy8 当前只能安装这一个版本…

Flink作业调度的9种状态

1.什么是作业调度 Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 task slot,每个 task slot 可以运行一条由多个并行 task 组成的流水线。 这样一条流水线由多个连续的 task 组成,比如并行度为 n 的 MapFunction 和 并行度为 n 的…

省份数量(力扣)深度优先 JAVA

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一个 …

前端面试的性能优化部分(3)每篇10题

21.如何优化移动端网页的性能? 优化移动端网页的性能是提升用户体验、降低用户流失的关键。以下是一些优化移动端网页性能的常见方法: 压缩和合并资源: 压缩 CSS、JavaScript 和图片等静态资源,减少文件大小,同时合并…

作为一个老程序员,想对新人说什么?

前言 最近知乎上,有一位大佬邀请我回答下面这个问题,看到这个问题我百感交集,感触颇多。 在我是新人时,如果有前辈能够指导方向一下,分享一些踩坑经历,或许会让我少走很多弯路,节省更多的学习的…

git管理工具学习(二)——git图谱git常用命令

git操作目录 Git的安装和图谱版本控制工具介绍git图谱详解 Git基本配置git 的最小配置查看Git的文件类型以及文件内容 Git的本地仓库基本使用创建一个git仓库创建并提交一个文件给文件重命名的简便方法工作区直接提交从缓存区清除一个文件通过git log 查看历史变化 工作区&…

CNVD-2023-12632 泛微e-cology9 sql注入 附poc

目录 漏洞描述影响版本漏洞复现漏洞修复 众亦信安,中意你啊! 微信搜索:众亦信安,回复关键字:230317 领批量检测脚本。 声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法…

【Golang】Golang进阶系列教程--Go 语言 context 都能做什么?

文章目录 前言核心是 Context 接口:包含四个方法:遵循规则WithCancelWithDeadlineWithTimeoutWithValue 前言 很多 Go 项目的源码,在读的过程中会发现一个很常见的参数 ctx,而且基本都是作为函数的第一个参数。 为什么要这么写呢…

汽车智能化再掀新热潮!「中央计算架构」进入规模量产周期

中央计算区域控制的新一代整车电子架构,已经成为车企继电动化、智能化(功能上车)之后,新一轮竞争的焦点。 如果说智能化的1.0阶段,是智能驾驶智能座舱的争夺战;那么,即将进入的2.0阶段&#xff…

黑马大数据学习笔记3-MapReduce配置和YARN部署以及基本命令

目录 部署说明MapReduce配置文件YARN配置文件分发配置文件集群启动命令开始启动YARN集群 查看YARN的WEB UI页面保存快照YARN集群的启停命令一键启动脚本单进程启停 提交MapReduce任务到YARN执行提交wordcount示例程序查看运行日志提交求圆周率示例程序 p41~43 https://www.bili…

IntelliJ IDEA快捷键大全 + 动图演示!

一、构建/编译 Ctrl F9:构建项目该快捷键,等同于菜单【Build】—>【Build Project】 执行该命令后,IntelliJ IDEA 会编译项目中所有类,并将编译结果输出到out目录中。IntelliJ IDEA 支持增量构建,会在上次构建的基…

ES6之Promise、Class类与模块化(Modules)

目录 PromiseClass类extendssuper Modules 模块系统export default 和对应importexport 和 import Promise Promise 是 ES6 引入的一种用于处理异步操作的对象。 它解决了传统回调函数(callback)模式中容易出现的回调地狱和代码可读性差的问题。 Promis…

MySQL binLog问题

看到数据库目录下有很多OFF.*文件的时候很诧异,这玩意是啥,binlog不应该都是*bin-log.*​的文件吗?* [roottest ~]# cd /data/mysql_data [roottest mysql_data]# ls ansible hap_attach_yl hap_func_yl hap_msg_yl h…

ThreadPoolExecutor详解(上)

为什么会有线程池? 如果客户端发一个请求,服务端就创建一个线程接收请求,线程资源是有限的,而且创建一个线程和执行结束之后都要调用操作系统资源销毁线程,这样频繁操作肯定非常占用cpu和内存资源,线程池的…