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

news/2024/5/20 6:59:09 标签: 算法, 聚类

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

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

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

  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.niftyadmin.cn/n/27109.html

相关文章

使用WireShark监控和调试OpenDDS系统

1 简介 与所有基于网络的通信一样,DDS系统可以使用Wireshark进行监控和调试。Wireshark是一种开源的数据包分析器,可用于监视各种网络活动。有关Wireshark的更多信息,包括如何安装,请访问Wireshark.org。 Wireshark使用称为解析器dissectors的模块逐个协议地解码数据包。这…

如何通过指令控制将一副扑克牌变成一种简单的计算机

题目 题目就是文章的标题 已知 牌数:每套扑克牌有54张,其中去掉大小王,剩下52张,这52张中又有4种花色黑桃,红桃,梅花,方片每种花色都有13张(1,2,3,4,5,6,7,8,9,10,J,Q,K&#xff…

是Spring啊!

一.概念spring概念一个包含了众多工具方法的 IoC 容器okk~~分析一下这句话意思,众多方法,IoC 是形容词,容器是名词 -> 众多方法:比如一个类里有许多方法, 容器:存储的东西 重点就是IoC是什么?Ioc2.1解释IoC -> Inversion of Control 控制反转 -> 对象的生命周期 ->…

【FPGA笔记系列3】assign语句和if-esle语句

结构化建模 前面几节中采用的方法称为结构化建模。 assign语法(数据流建模方式) assign语句仅能描述组合逻辑电路,没有涉及时钟、触发器等! 五人投票电路(由于CGD100板子原因,需修改逻辑使按下点亮,弹起熄灭) 因为板子当key按下时为低电平,弹起时为高电平;led高电平点…

C语言 atoi 函数解析

文章目录前言atoi函数的介绍atoi函数的使用atoi函数的自我实现写在最后前言 对于atoi函数大家可能会有些陌生&#xff0c;不过当你选择并阅读到这里时&#xff0c;请往下阅读&#xff0c;我相信你能对atoi函数熟悉该函数的头文件为 <stdlib.h> 或 <cstdlib> atoi函…

C语言-动态内存分配-动态通讯录的改造(12.3)

目录 动态通讯录需要改造地方&#xff1a; 1.改造存放通讯录的结构体 2.改造初始化通讯录的实现 3.改造增加联系人的实现 4.动态通讯录源码以及静态通讯录实现的链接 写在最后&#xff1a; 动态通讯录需要改造地方&#xff1a; 1.改造存放通讯录的结构体 在contact.h文…

c++继承

1.概念 c继承代表父类属性在子类中会存在一份。理解起来为生物学的继承即可&#xff0c;子承父业&#xff0c;传承血脉继承&#xff1a;子类中不会产生新的属性&#xff0c;派生子类会有新属性产生。继承分为父类和子类&#xff0c;派生分为基类和派生类 2.c单继承 1.c继承的基…

kafka开kerberos认证报错the client is being asked for a password

Kafka kerberos认证错误记录TOC kafka开发调试 kerberos认证错误记录 背景 kafka 开发调试&#xff0c;开 kerberos情况下遇到的错误。 错误日志 Could not login: the client is being asked for a password, but the Kafka client code does not currently support obta…