运筹视角下,体系化学习机器学习算法原理的实践和总结

news2024/9/28 23:24:45

文章目录

  • 引言
  • 目标设计
  • 目标实践
  • 文章汇总
  • 经验总结
  • 一则预告

引言

上两周总结了我在体系化学习运筹学基础知识方面的个人经验,看过那篇文章的人可能知道,今年我还花了很多时间学习机器学习中各种模型的算法原理。

在工业应用中,机器学习和运筹优化之间的交互是非常普遍的,很多场景都需要先用机器学习做预测,然后用运筹优化做决策。因此,机器学习技术对于像我这样的运筹从业者来说,也是需要了解甚至掌握的内容。

昨天把关于SVM的文章发表后,此前拟定的机器学习的体系化学习计划就算全部完成了。所以这篇文章来总结一下,机器学习体系化学习方面的个人经验。

一开始回顾今年在机器学习上的学习计划和完成度时,吓了一跳,因为里面的内容就只有贝叶斯、决策树、决策树集成、神经网络和SVM这5项。

查阅了此前的文章发表记录后才发现,有些内容是我在2022下半年的时候,就已经开始在做了。为了能体系化地梳理内容,本篇文章会把那些文章放到一起去总结。

正文见下。

目标设计

以下是我制定的学习计划和执行记录,其中带*的日期表示2022年,其他日期表示2023年。
在这里插入图片描述

作为一个机器学习方向的小白,首先需要了解机器学习中的基本概念。私以为,其中最重要的内容是如何评估一个模型的好坏,即性能指标。在实际场景时,性能指标不仅用于评估机器学习模型,还经常应用于其他模型的效果评估。

掌握基本概念后,再来学习各种不同的机器学习模型。从图上可以看出,我2023年规划的学习内容主要是经典机器学习模型,而不是现在应用更多的深度神经网络。这不表示学习深度神经网络不重要,而仅仅是因为在机器学习方面我基础薄弱,需要先打好基础。

最后,图中所示的几项内容肯定不是机器学习包含的全部内容,只是作为基础知识存在于我机器学习计划的第一阶段。这里还需要说明的是,机器学习之决策树集成模型中的xgboost和lightgbm在工业场景中的应用频率是非常高的,对于不太复杂的预测问题,它已经可以完美完成任务了。感兴趣的读者可以着重学习一下。

目标实践

对于机器学习中的每个模型,我给自己预设的目标是两周时间内学习完,最终在今年年中完成所有内容的学习。

从时间完成度来看,除SVM外,其他内容都按时完成了——SVM一直拖到昨天才完成,主要是因为之前已经放弃学习这个了,上个月发现除SVM外的机器学习和运筹优化学习任务都已经提前完成了,这才想着把SVM补上。所以,也算不上超时。

关于完成模型学习,我的定义是,写一篇与模型内容对应的文章,里面至少应该包含3个模块:

第一个是用自己的逻辑描述清楚算法原理。我对自己的要求是,让算法小白都能看懂内容,如果未来真的有机会教书育人,这应该是我宝贵的财富了;

第二个是自己编写代码实现算法全过程。我对自己的要求是,要使用Python实现模型逻辑,并和sklearn的结果做对比,以验证自己是否真的理解了模型的算法原理。

第三个是从运筹角度理解模型的算法原理。我对自己的要求是,对各种预测模型,都使用数学建模(优化变量/目标函数/约束条件)+算法求解这种运筹范式去理解它们。

从内容完成度来看,基本上每一篇模型相关的文章都达到预期了,这个方面,整体是令人满意的。

文章汇总

本节汇总了我体系化学习机器学习算法原理的相关文章和链接,并按照此前的目标设计进行了分类。

分类文章和链接
概念-性能指标机器学习性能指标
概念-交叉验证以K近邻算法为例,使用交叉验证优化模型最佳参数
概念-网格搜索以K近邻算法为例,使用网格搜索GridSearchCV优化模型最佳参数
模型-K近邻K近邻分类算法的Python代码实现
模型-线性模型线性回归和Python代码实现
线性模型优化:岭回归和Lasso回归
模型-逻辑回归逻辑回归模型和Python代码实现
模型-贝叶斯朴素贝叶斯分类算法和实例演示
模型-决策树决策树入门、sklearn实现、原理解读和算法分析
模型-决策树集成随机森林原理和性能分析
花了3周理解的xgboost算法原理
模型-神经网络多层感知机(MLP)算法原理和代码实现
模型-SVM半生不熟的SVM算法原理解读

经验总结

针对机器学习算法原理的体系化学习和感悟,总结如下:

首先,机器学习完美诠释了建模的重要性。 机器学习要解决的问题只有就分类和回归两种场景,但是预测模型就非常多了。从不同角度出发,可以得到不同的最优化模型,然后针对模型的个性化特点,选用不同的求解算法甚至是单独开发和改进出新的算法,最终得到不同的预测效果。而这一切的根源,就在于数学建模上的差异。

其次,尽量从运筹角度去理解机器学习的算法原理。 学习机器学习对我个人来说,可以理解为技术栈的拓宽,所以不需要像专业大佬一样全方位无死角地理解。为了能更好地将机器学习内容整合到我已有的知识框架中,我始终使用数学建模+算法求解这种运筹范式去学习各种模型。一方面,可以降低我学习的难度;另一方面,还能提升我学习的乐趣。

最后,心态上要能沉得下去。 零零散散的,我在机器学习上花了一年半左右的时间了。坦白来说,好像也没有带来什么直观的正向改变。但在学习过程中,我心态一直很平稳,不奢望有立竿见影的效果,甚至感觉只给自己画一张小饼;逐个完成那些预设的任务后,慢慢就会有一点点成就感,进而转化为继续学习的动力,然后循环往复。

一则预告

明年在拓宽技术栈方面的文章主题,偷偷预告一下,大概率是因果推断,即,判断某个动作(treatment)和最终结果之间的因果效应。

选择这个主题的主要原因是,我目前在工作上(最优定价)很需要因果推断方面的相关知识。希望明年能小有所得,继续给大家分享我的学习过程和经验总结。

最后的最后,依然是期待大家都能持之以恒地做一件件小事,积少成多,厚积薄发。

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

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

相关文章

树莓派,opencv,Picamera2利用舵机云台追踪人脸(PID控制)

一、需要准备的硬件 Raspiberry Pi 4b两个SG90 180度舵机(注意舵机的角度,最好是180度且带限位的,切勿选360度舵机)二自由度舵机云台(如下图)Raspiberry CSI 摄像头 组装后的效果: 二、项目目…

Httprunner4.3.6产生大量python进程的解决方法

hrp run执行测试用例目录的时候,发现产生了大量的python进程,导致内存爆了 具体原因是因为每执行一个测试用例,就会注册一次plugin(产生一个python进程),引用测试用例也是一样,会产生一个python进程&#…

Flutter笔记:Web支持原理与实践

Flutter笔记 Web支持原理与实践 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com CSDN:https://blog.csdn.net/qq_28550263/article/details/135037756 华为开发者社区…

大数据深度解析NLP文本摘要技术:定义、应用与PyTorch实战

文章目录 大数据深度解析NLP文本摘要技术:定义、应用与PyTorch实战1. 概述1.1 什么是文本摘要?1.2 为什么需要文本摘要? 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 …

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(三)

钓鱼邮件 当攻击者制作了钓鱼网站、木马程序后,便会想法设法将其传给受害者,而常见的传播方式便是钓鱼网站了。安全意识较差的用户在收到钓鱼邮件后点击邮件中的钓鱼链接、下载附件中的木马程序,便可能遭受攻击! 工具简介 Swak…

uni-app 工程目录结构介绍

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

盒子 Box

UVa1587 思路&#xff1a; 1.输入每个面的长宽并将每个面较长的一边放在前面 2.判断是否存在三对面分别相等 3.判断是否存在三组四棱相等 #include <stdio.h> #include <stdlib.h> #define maxn 100int cmp(const void* e1, const void* e2) {return (int)(*(d…

力扣:51. N 皇后

题目&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的…

使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题

目录 1、问题说明 2、问题分析思路 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序&#xff0c;查看库与库的依赖关系&#xff0c;找出出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总&#xff08;专栏文章列表&…

Neovim+ctag浏览、编辑源代码

Neovimctag浏览、编辑源代码 一 配置安装vim及 ctags vim应该可以不用装&#xff0c;直接装neovim&#xff0c;这里我是先装了vim再装的neovim Ctags必须装&#xff0c;后面用neovim telescope索引函数时才有效 vim复制系统粘贴板&#xff1a;vim输入模式下&#xff0c;按shi…

四、UART_阻塞发送中断接收

1、开发环境 (1)Keil MDK: V5.38.0.0 (2)MCU: mm320163D7P 2、实验目的&原理图 2.1、实验目的 (1)上位机串口助手给MCU发送信息&#xff0c;MCU串口通过通过串口助手接收后&#xff0c;将接收到的内容通过串口助手发送到上位机。 (2)串口在whil循环中每隔1秒发送一次…

怎么使用jupter notebook并配置环境变量

有的时候需要使用Jupyter Notebook运行代码&#xff0c;Jupyter Notebook的主要特点&#xff1a; ① 编程时具有语法高亮、缩进、tab补全的功能。 ② 可直接通过浏览器运行代码&#xff0c;同时在代码块下方展示运行结果。 ③ 以富媒体格式展示计算结果。富媒体格式包括&…

社会人士可以考英语四六级吗?怎么考四六级

目录 一、社会人士能考英语四六级吗二、社会人士可以参加哪些英语等级考试第一.考个商务英语类证书第二.社会上比较认可的还有翻译证书第三.出国常用的英语凭证第四.职称英语.第五.PETS. 大学英语四六级是为提高我国大学英语课程的教学质量服务。那么社会人士能不能报考英语四六…

【UML】第12篇 序列图(1/2)——基本概念和构成

目录 一、什么是序列图&#xff08;Sequence Diagram&#xff09; 1.1 定义 1.2 主要用途 1.3 序列图和BPMN的区别和联系 二、序列图的构成 2.1 对象 2.2 生命线 2.3 消息 2.4 激活 序列图&#xff0c;是我个人认为的用处最多的一种图。产品和研发的同学&#xff0c;都…

java实现深度优先搜索 (DFS) 算法

度优先搜索&#xff08;Depth First Search&#xff0c;DFS&#xff09;算法是一种用于遍历或搜索图或树的算法。这种算法从一个节点开始&#xff0c;沿着一条路径尽可能深地搜索&#xff0c;直到遇到不能继续前进的节点时返回上一个节点&#xff0c;然后继续搜索其他路径。具体…

网络通信协议

WebSocket通信 WebSocket是一种基于TCP的网络通信协议&#xff0c;提供了浏览器和服务器之间的全双工通信&#xff08;full-duplex&#xff09;能力。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff…

算法通关村-番外篇排序算法

大家好我是苏麟 , 今天带来番外篇 . 冒泡排序 BubbleSort 最基本的排序算法&#xff0c;最常用的排序算法 . 我们以关键字序列{26,53,48,11,13,48,32,15}看一下排序过程: 动画演示 : 代码如下 : (基础版) class Solution {public int[] sortArray(int[] nums) {for(int i …

ArkUI - 状态管理

目录 一、State装饰器 二、自定义组件 三、Prop和Link、Provide和Consume 四、Observed和ObjectLink 五、页面路由 跳转模式 实例模式 使用步骤 一、State装饰器 这里涉及到两个概念 状态 和 视图 状态&#xff08;State&#xff09;&#xff1a;指驱动视图更新的数…

【附三菱 MX OPC Server 6.04的安装包】MX-OPC下载以及用GX Works2和组态王进行仿真连接

使用MX-OPC来完成三菱和组态王的仿真连接。 文章目录 目录 文章目录 软件下载 1.OPC设置 2.GX Works 2 设置 3.GX Works 2 和OPC 连接测试 4.和组态王进行仿真连接 5.安装OPC后&#xff0c;GX Works2 无法打开 提示堆栈不足 6.收尾&#xff08;组态王变量的删除&#xff0…

如何使用java来实现windows系统关机

可以使用Java代码来调用操作系统的命令行来实现Windows关机操作。具体步骤如下&#xff1a; import java.io.IOException;public class ShutdownWindows {public static void main(String[] args) {try {// 调用命令行执行关机命令Process process Runtime.getRuntime().exec…