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

文章目录

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

引言

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

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

昨天把关于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.mzph.cn/news/348506.shtml

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

相关文章

C++输出一句话里面第一个单词并大写

这里主要是使用了decltype()函数来方便我们对数据处理&#xff0c;它可以自动的帮助我们推算变量的类型&#xff0c;防止后面出现溢出的错误 #include<iostream> #include<string> using namespace std; int main() {string s1("juice and rice");//迭代…

低版本mysql utf8mb5_记住:永远不要在 MySQL 中使用 UTF-8

最近我遇到了一个 bug&#xff0c;我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串&#xff0c;然后出现了一个离奇的错误&#xff1a;Incorrect string value: ‘\xF0\x9F\x98\x83 我用的是 UTF-8 编码的客户端&#xff0c;服务器也是 UTF-8 编码的&…

C++中使用cin读取一组词存入vector后将其大写打印

今天在复习C的时候偶然看到这个题目&#xff0c;要求是使用C完成大写转换然后存放到vector中去&#xff1a; 这里也是使用了一个string库&#xff0c;但不知道为什么string库里并没有自带大小写转化&#xff0c;只得使用algorithm库的transform函数来进行大小写转化 #include&…

使用Logstash,JDBC将数据聚合并索引到Elasticsearch中

介绍 在我以前的帖子在这里和这里我展示了如何使用JDBC和Elasticsearch JDBC进口商库从SQL数据库索引数据到Elasticsearch。 在这里的第一篇文章中&#xff0c;我提到了使用导入程序库的一些缺点&#xff0c;这些缺点我已在此处复制&#xff1a; 不支持ES版本5及更高版本 嵌套…

hive选择mariadb还是mysql_Hive MariaDb的安装

1.安装命令yum -y install mariadb-server mariadb2.进入mariadb数据库mysql -u root -p //第一次登录时的密码为空3.修改mariadb数据库密码update user set passwordpassword(sugar) where userroot;4.设置root用户可以从任何主机登录&#xff0c;对任何的库和表都有访问权限g…

一文带你彻底搞懂C++中一些常见指针(形如*p)的用法

提高指针效率以及程序可读性 为什么要后置运算符&#xff1f; 有C语言编程经验的人可能会感到疑问&#xff0c;为什么在C里面我们推荐优先使用运算符的前置版本&#xff0c;就是把运算符号放在变量的前面&#xff0c;前置版本的递增避免了不必要的工作&#xff0c;它将值加一后…

mysql ssd tps 上不去_转【案例分享】压测TPS上不去

1.问题描述&#xff1a;客户新上的一个关键业务系统&#xff0c;在做上线前的压力测试时&#xff0c;应用的并发无法达到上线前的并发指标和响应时间指标要求。压测时TPS的曲线很不稳定&#xff0c;如下所示&#xff1a;2.分析过程&#xff1a;从上述知识点可以知道&#xff1a…

C++函数概念解析(1)

函数 一个典型的函数包含以下几个部分 返回类型函数名称一个或者多个形参函数体 举例如下 int fact(int ival) {int ret1;while(val>1)ret*val--;//这里先乘再减return ret; }函数名fact形参ival实参ret返回类型int 每当我们定义出一个函数&#xff0c;我们不能直接使用…

棋牌类游戏算法–牌分类_快速分类–三向和双枢轴

棋牌类游戏算法–牌分类毫无疑问&#xff0c;Quicksort被认为是本世纪最重要的算法之一&#xff0c;并且它是许多语言的事实上的系统排序&#xff0c;包括Java中的Arrays.sort 。 那么&#xff0c;quicksort有何新功能&#xff1f; 好吧&#xff0c;除了我刚刚&#xff08;在J…

真实收货地址大全2016_中国古典诗词大全汇集了诗经、唐诗、宋词、元曲以及纳兰词,12册精美套装。...

↑点击上方“诗画天地”关注我们诗词也如人生&#xff0c;你驻足便是驿站&#xff0c;你前行便是风景。任由时光无尽幻变&#xff0c;回眸处星孤月洁&#xff0c;阅读诗词能让人生变得清明透彻&#xff0c;仿佛与古人走在同一条道上&#xff0c;俯仰之间&#xff0c;人生皆是诗…

C++函数概念解析(2)

数组形参 我们为函数传递一个数组时&#xff0c;实际传递的是这个数组的指针 void print(const int*); void print(const int[]);//函数的意图是作用于一个数组 void print(const int[10]);以数组作为形参的函数也必须保证这个数组不越界 使用标记指定数组长度 以C风格字符串…

C++中函数概念解析(3)

概念&#xff1a; 如果同一作用域里几个函数的名字相同但形参列表不相同&#xff0c;我们称之为重载&#xff08;overload&#xff09; 它们这些函数接受的参数不一样&#xff0c;但执行的操作非常类似&#xff0c;当调用这些函数时&#xff0c;编译器会根据传递的实参类型推断…

python可以帮机器人编程吗_Python如何实现机器人聊天

今天午休的时候&#xff0c;无意之中看了一篇博客&#xff0c;名字叫Python实现机器人&#xff0c;感觉挺有的意思的。于是用其写了一个简单的Python聊天&#xff0c;源码如下所示:# -*- coding: utf-8 -*-import aimlimport sysimport osdef get_module_dir(name):print("…

测试案例6种编写方法_一种编写测试的好方法

测试案例6种编写方法测试。 我最近一直在考虑测试。 作为我对各种项目所做的代码审查的一部分&#xff0c;我已经看到了数千行未经测试的代码。 这不仅是测试覆盖率统计数据指出这一点的情况&#xff0c;更是该项目中根本没有任何测试的情况 。 我一直听到这种悲惨状况的两个原…

python字符串查找匹配_说说在 Python 中,如何找出所有字符串匹配

Regex 对象有一个 findall() 方法&#xff0c;它会返回包含所查找字符串的所有匹配。这与 search() 方法明显不同&#xff0c;search() 将返回一个 Match 对象&#xff0c;其中包含被查找字符串中的 “ 第一次 ” 匹配文本。请看以下示例&#xff0c;注意区分&#xff1a;phone…

类 in C++

我们为什么需要类、 用户在实际编程中传统数据类型往往不能够满足实际需要&#xff0c;我们对经常使用的对象需要自定义一种数据结构来满足调用的需求以便于提高程序运行的效率。 类的组成 数据抽象封装接口实现 这个程序的作用是读取入库书籍的ISBN编号 saledata total;/…

使用Spring MVC应用程序配置嵌入式H2控制台

在上一篇文章中&#xff0c;我们使用嵌入式H2数据库将Spring MVC应用程序部署到Tomcat。 在嵌入式数据库中浏览数据非常困难&#xff0c;因为我们无法连接外部客户端来查看数据。 H2提供了一个Web控制台&#xff0c;我们可以启用它并使用它来浏览数据&#xff0c;如下所示&…

python实践心得体会_“Python自然语言实践”——总结(一),实战

正则表达式在NLP中的基本应用正则表达式的作用&#xff1a;(1)将文档内容从非结构化转为结构化以便后续的文本挖掘(2)去除“噪声”&#xff0c;在处理大量文本片段的时候&#xff0c;有非常多的文字信息与最终输出的文本无关。这些无关的片段称之为“噪声”。1. 匹配字符串在Py…

Hashcat从入门到入土(二)

使用hashcat破解word密码 昨天的文章里给自己挖了一个坑&#xff0c;使用公司电脑显卡还是GT705古董级别的&#xff0c;显卡驱动也没设置好&#xff0c;导致使用hashcat的时候出现了exhausted的问题&#xff0c;导致密码没有算出来&#xff0c;今天我用自己电脑算一下&#xf…

rizomuv缩放排布_RizomUV

第一章:为什么要用RizomUV来解决UV进程课时1:教程简介课时2:为什么要用RizomUV2020课时3:课程框架结构第二章&#xff1a;有哪些准备工作课时4:MAYA桥接工具安装课时5:3DSMAX桥接工具安装课时6:C4D桥接工具安装课时7:Zbrush桥接工具安装课时8:Blender桥接工具安装课时9:桥接工具…