2023 年你应该知道的所有机器学习算法

news2024/11/17 11:29:01

在过去的几年里,根据自己的工作经验,整理了我认为最重要的机器学习算法。

通过这个,我希望提供一个工具和技术的存储库,以便您可以解决各种数据科学问题!

让我们深入研究六种最重要的机器学习算法:

  1. 解释性算法
  2. 模式挖掘算法
  3. 集成学习算法
  4. 聚类算法
  5. 时间序列算法
  6. 相似度算法

1.解释算法

机器学习中最大的问题之一是了解各种模型如何得出最终预测。我们常常知道“是什么”,但很难解释“为什么”。

解释性算法帮助我们识别对我们感兴趣的结果有有意义影响的变量。这些算法使我们能够理解模型中变量之间的关系,而不是仅仅使用模型来预测结果。

您可以使用多种算法更好地理解给定模型的自变量和因变量之间的关系。

算法

  • 线性/逻辑回归:一种对因变量与一个或多个自变量之间的线性关系建模的统计方法——可用于根据 t 检验和系数了解变量之间的关系。
  • 决策树:一种机器学习算法,它创建决策及其可能后果的树状模型。通过查看拆分分支的规则,它们对于理解变量之间的关系很有用。
  • 主成分分析 (PCA):一种降维技术,可将数据投射到低维空间,同时保留尽可能多的方差。PCA 可用于简化数据或确定特征重要性。
  • Local Interpretable Model-Agnostic Explanations (LIME):一种算法,通过使用线性回归或决策树等技术构建更简单的模型,在预测周围近似模型来解释任何机器学习模型的预测。
  • Shapley Additive explanations (SHAPLEY):一种算法,通过使用基于“边际贡献”概念的方法计算每个特征对预测的贡献来解释任何机器学习模型的预测。在某些情况下,它可能比 SHAP 更准确。
  • Shapley Approximation (SHAP):一种通过估计每个特征在预测中的重要性来解释任何机器学习模型的预测的方法。SHAP 使用一种称为“联合博弈”的方法来近似 Shapley 值,并且通常比 SHAPLEY 更快。

2.模式挖掘算法

模式挖掘算法是一种数据挖掘技术,用于识别数据集中的模式和关系。这些算法可用于多种目的,例如识别零售环境中的客户购买模式、了解网站/应用程序的常见用户行为序列,或在科学研究中寻找不同变量之间的关系。

模式挖掘算法通常通过分析大型数据集并寻找重复模式或变量之间的关联来工作。一旦确定了这些模式,就可以使用它们来预测未来趋势或结果,或者了解数据中的潜在关系。

算法

  • Apriori 算法:一种用于在事务数据库中查找频繁项集的算法 - 它高效且广泛用于关联规则挖掘任务。
  • 递归神经网络 (RNN):一种神经网络,旨在处理顺序数据,因为它们能够捕获数据中的时间依赖性。
  • 长短期记忆 (LSTM):一种循环神经网络,旨在更长时间地记住信息。LSTM 能够捕获数据中的长期依赖关系,通常用于语言翻译和语言生成等任务。
  • 使用等价类 (SPADE) 的顺序模式发现:一种通过将在某种意义上等价的项目组合在一起来查找顺序数据中频繁模式的方法。这种方法能够处理大型数据集并且相对高效,但可能不适用于稀疏数据。
  • PrefixSpan:一种通过构建前缀树和修剪不频繁项目来查找顺序数据中频繁模式的算法。PrefixScan 能够处理大型数据集并且相对高效,但可能不适用于稀疏数据。

3.集成学习

集成算法是一种机器学习技术,它结合了多个模型的预测,以便做出比任何单个模型都更准确的预测。集成算法优于传统机器学习算法的原因有以下几个:

  1. 多样性:通过组合多个模型的预测,集成算法可以捕获数据中更广泛的模式。
  2. 鲁棒性:集成算法通常对数据中的噪声和异常值不太敏感,这可以导致更稳定和可靠的预测。
  3. 减少过度拟合:通过对多个模型的预测进行平均,集成算法可以减少单个模型过度拟合训练数据的趋势,从而提高对新数据的泛化能力。
  4. 提高准确性:集成算法已被证明在各种情况下始终优于传统的机器学习算法。

算法

  • 随机森林:一种机器学习算法,它创建决策树的集合并根据树的多数票进行预测。
  • XGBoost:一种梯度提升算法,它使用决策树作为其基础模型,被认为是最强的 ML 预测算法之一。
  • LightGBM:另一种梯度提升算法,旨在比其他提升算法更快、更高效。
  • CatBoost:一种梯度提升算法,专门设计用于很好地处理分类变量。

4.聚类

聚类算法是一种无监督学习任务,用于将数据分组为“集群”。与目标变量已知的监督学习相反,聚类中没有目标变量。

这种技术对于发现数据的自然模式和趋势很有用,并且经常在探索性数据分析阶段使用,以进一步了解数据。此外,聚类可用于根据各种变量将数据集划分为不同的部分。这方面的一个常见应用是对客户或用户进行细分。

算法

  • K模式聚类:一种专门为分类数据设计的聚类算法。它能够很好地处理高维分类数据并且实现起来相对简单。
  • DBSCAN:一种基于密度的聚类算法,能够识别任意形状的聚类。它对噪声相对稳健,可以识别数据中的异常值。
  • 谱聚类:一种聚类算法,它使用相似矩阵的特征向量将数据点分组到聚类中。它能够处理非线性可分数据并且相对高效。

5.时间序列算法

时间序列算法是用于分析时间相关数据的技术。这些算法考虑了一系列数据点之间的时间依赖性,这在尝试预测未来值时尤为重要。

时间序列算法用于各种业务应用程序,例如预测产品需求、预测销售或分析客户随时间变化的行为。它们还可用于检测数据中的异常或趋势变化。

算法

  • Prophet 时间序列建模:Facebook 开发的一种时间序列预测算法,旨在直观且易于使用。它的一些主要优势包括处理缺失数据和趋势变化、对异常值具有鲁棒性以及快速适应。
  • 自回归积分移动平均 (ARIMA):一种用于预测时间序列数据的统计方法,它对数据与其滞后值之间的相关性进行建模。ARIMA 可以处理范围广泛的时间序列数据,但可能比其他一些方法更难实现。
  • 指数平滑:一种预测时间序列数据的方法,它使用过去数据的加权平均值来进行预测。指数平滑实现起来相对简单,可用于范围广泛的数据,但性能可能不如更复杂的方法。

6.相似度算法

相似度算法用于衡量成对的记录、节点、数据点或文本之间的相似度。这些算法可以基于两个数据点之间的距离(例如欧氏距离)或基于文本的相似性(例如 Levenshtein 算法)。

这些算法具有广泛的应用,但在推荐方面特别有用。它们可用于识别相似的项目或向用户推荐相关内容。

算法

  • 欧氏距离:欧氏空间中两点之间直线距离的度量。欧氏距离计算简单,广泛应用于机器学习,但在数据分布不均匀的情况下可能不是最佳选择。
  • 余弦相似度:基于两个向量之间的角度来衡量两个向量之间的相似度。
  • Levenshtein 算法:一种用于测量两个字符串之间距离的算法,基于将一个字符串转换为另一个字符串所需的最小单字符编辑(插入、删除或替换)次数。Levenshtein 算法通常用于拼写检查和字符串匹配任务。
  • Jaro-Winkler 算法:一种基于匹配字符数和换位数来衡量两个字符串之间相似性的算法。它类似于 Levenshtein 算法,通常用于记录链接和实体解析任务。
  • 奇异值分解 (SVD):一种矩阵分解方法,可将一个矩阵分解为三个矩阵的乘积——它是最先进的推荐系统不可或缺的组成部分。

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

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

相关文章

状态机原理

前言状态机在实际工作开发中应用非常广泛,在刚进入公司的时候,根据公司产品做流程图的时候,发现自己经常会漏了这样或那样的状态,导致整体流程会有问题,后来知道了状态机这样的东西,发现用这幅图就可以很清…

简单步骤比别人抢红包快一步

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

Slurm中集群配置文件slurm.conf

1.slurm.conf简介slurm.conf是一个ASCII文件,它描述了一般的Slurm 配置信息、要管理的节点、有关如何将这些节点分组到分区中,以及各种调度与这些分区关联的参数。此文件应为在群集中的所有节点上保持一致。可以通过设置SLURM_CONF在执行时修改文件位置 …

203:vue+openlayers 地图旋转移动动画、CSS缩放动画,介绍animate的使用方法

第203个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中创建动画,地图上使用的是view中的animate方法, CSS中使用的是keyframes ,animation,transform等方法。这两将两者融合在一个示例中,api用的不全,但是能起到一个抛转引玉的作用。 地图 view.anima…

Java while和do while循环详解

循环是程序中的重要流程结构之一。循环语句能够使程序代码重复执行,适用于需要重复一段代码直到满足特定条件为止的情况。所有流行的编程语言中都有循环语句。Java 中采用的循环语句与C语言中的循环语句相似,主要有 while、do-while 和 for。另外 Java 5…

ROS2机器人编程简述humble-第一章-Introduction

ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS2学习笔记流水账-推荐阅读原书。第一章:简要介绍宏观概念,配置编译一下本书配套的源码包。支持版本个人测试foxy和humble全部都OK。硬件软件机器人应用关系如下图所示&…

【阶段四】Python深度学习01篇:深度学习基础知识:神经网络历史及优势、神经网络基础单元与梯度下降:正向传播和反向传播

本篇的思维导图: 神经网络历史及优势 1958年,计算机科学家罗森布拉特(Rosenblatt)就提出了一种具有单层网络特性的神经网络结构,称为“感知器”(perceptron)。感知器出现之后很受瞩目,大家对它的期望很高。然而好景不长—一段时间后,人们发现感知器的实用性很…

2022.12 青少年机器人技术等级考试理论综合试卷(一级)

2022年12月 青少年机器人技术等级考试理论综合试卷(一级) 分数: 100 题数: 45 一、 单选题(共 30 题, 共 60 分) 1.下列哪个是机器人?( ) A.a B.b C.c D.d 标准答案: C 2.机器人的电…

1-计算机系统概述(CO)

计算机组成原理:实现计算机体系结构所体现的属性,具体指令的实现对程序员透明,即研究如何用硬件实现所定义的接口 计算机系统硬件(计算机的实体,如主机、外设)软件(由具有各类特殊功能的程序组…

【博客587】ipvs hook点在netfilter中的位置以及优先级

ipvs hook点在netfilter中的位置以及优先级 1、netfilter栈全景图 2、Netfilter hooks 五个hook点: 每个 hook 在内核网络栈中对应特定的触发点位置,以 IPv4 协议栈为例,有以下 netfilter hooks 定义: NF_INET_PRE_ROUTING:…

深入理解数据结构 —— 差分

什么是差分 对于一个数组a:a1,a2,a3...an 我们构造一个数组b:b1,b2,b3...bn 使得数组a是数组b的前缀和数组,即ai b1 b2 ... bi 则数组b就是数组a的差分 差分有什么用 当我们得到数组b后,只用对b求一遍前缀和,…

使用ChatGPT智能搜索论文

对于天天查找论文的小伙伴来说,有一个好用的搜索工具,那简直不要太开心,效率妥妥的上升。但现实结果却是,要么搜索工具不给力,要么自己输入的关键词不起作用,反正,自己脑海里想找寻的论文和搜索…

大数据必学Java基础(一百二十三):Maven常见命令介绍

文章目录 Maven常见命令介绍 一、install 二、clean 三、compile 四、package Maven常见命令介绍 Maven的命令非常多,我们只是讲解常用的几个:(所有命令都可以在控制台运行的)

Linux——页表的分页机制

目录 一.相关概念(页帧、页框、缺页中断) 二.页表分页机制 (一).为什么采用两级页表 (二).两级页表分页机制 ①原理: ②映射原理计算 一.相关概念(页帧、页框、缺页中断&#…

[Python+Django]Web学生信息管理系统数据库设计及系统实现

本文我们完成数据的设计,并通过Django框架完成数据库构建同时利用Django框架模式实现学生信息管理系统的功能。 简单的包装下毕设应该没问题了。 Python,Mysql,Pycharm的安装本文就不做特别介绍了,有需要的同学请参考如下博文。…

Linux shell 多线程开发以及模板使用,详细一文透彻

Linux shell 多线程开发以及模板使用 序 在日常工作中,通常是起一个终端,通过 shell 连接我们的跳板机服务器,为此服务器提供一个进程供我们使用。但我们通常都是一条一条命令的运行,在某些需要并发的场景时就显得捉襟见肘。所以…

读取和写入音频文件

将数据写入到音频文件,获取文件信息,然后将数据读回到 MATLAB 工作区。 写入音频文件 获取有关音频文件的信息 读取音频文件 绘制音频数据图 写入音频文件 从文件 handel.mat 加载示例数据 load handel.mat 工作区现在包含音频数据矩阵 y 和采样率 …

Linux 中断子系统(六):核心数据结构

Linux中断子系统有六个核心数据结构,分别是: irq_desc irq_data irqactions irq_chip irq_domain irq_domain_ops关系如下: 强烈建议大家学习一个子系统之前,先研究这个子系统的核心数据结构,知道了他们的关系,你就知道这个子系统在做什么事情。 右侧的 irq_chip、irq…

(nio)Selector-处理消息边界-附件与扩容

⚠️ 不处理边界的问题 以前有同学写过这样的代码,思考注释中两个问题,以 bio 为例,其实 nio 道理是一样的 public class Server {public static void main(String[] args) throws IOException {ServerSocket ssnew ServerSocket(9000);whi…

算法训练营第四天| 24. 两两交换链表中的节点 | 19.删除链表的倒数第N个节点 | 面试题 02.07. 链表相交 |142.环形链表II

24.两两交换链表中的节点 看完题后的思路 用两个指针pre,q指向1,2,创建一个虚拟头结点,使用尾插法插入**.难点在于初始条件的两个指针判空与终止条件的判断(奇数个节点与偶数个节点)** 初始节点判空无非三种情况,空节点,一个节点,直接使用一个判断解决 当个数是奇数时,pre指向…