服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 你应该知道的十种机器学习算法

你应该知道的十种机器学习算法

2023-11-02 12:02微风01 编程技术

机器学习/人工智能领域在将来是越来越受欢迎。由于大数据是目前科技行业最热门的趋势,机器学习非常强大,可以根据大量数据做出预测或计算建议。使用大量数据训练的深度学习算法,构建出一个能够理解人类语言并自动生成

你应该知道的十种机器学习算法

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

毫无疑问,机器学习/人工智能领域在将来是越来越受欢迎。由于大数据是目前科技行业最热门的趋势,机器学习非常强大,可以根据大量数据做出预测或计算建议。使用大量数据训练的深度学习算法,构建出一个能够理解人类语言并自动生成语言的模型。ChatGPT、文心一言等等,都是机器学习的伟大产物。

机器学习中大模型那么智能当然离不开伟大的机器学习算法,下面主要讲一下常见机器学习算法的基础知识。

机器学习算法可以分为三大类——监督学习、无监督学习和强化学习。 当某个属性(标签)可用于某个数据集(训练集),但属性(标签)缺失且需要针对其他实例进行预测时,监督学习非常有用。当挑战是发现给定未标记数据集中的隐式关系(项目未预先分配)时,无监督学习非常有用。强化学习介于这两个极端之间——每个预测步骤或动作都有某种形式的反馈,但没有精确的标签或错误消息。

1、主成分分析(PCA)/SVD

PCA 是一种无监督方法,用于了解由向量组成的数据集的全局属性。此处分析数据点的协方差矩阵,以了解哪些维度(大多数)/数据点(有时)更重要(即它们之间的方差较高,但与其他维度的协方差较低)。考虑矩阵的顶级 PC 的一种方法是考虑具有最高特征值的特征向量。SVD 本质上也是一种计算有序分量的方法,但不需要获取点的协方差矩阵即可获得它。

你应该知道的十种机器学习算法

2、最小二乘法和多项式拟合

大学时学习的数值分析,曾经将直线和曲线拟合到点来得到方程。可以使用它们来拟合机器学习中低维度的小型数据集的曲线。(对于大数据或具有多个维度的数据集,可能最终会严重过度拟合,所以不必担心)。OLS 具有封闭式解决方案,因此无需使用复杂的优化技术。

你应该知道的十种机器学习算法

显而易见,使用该算法来拟合简单曲线/回归

约束线性回归

最小二乘法可能会与数据中的异常值、杂散场和噪声混淆。因此,我们需要约束来减少我们在数据集上拟合的线的方差。正确的方法是拟合线性回归模型,这将确保权重不会出现异常行为。模型可以具有 L1 范数 (LASSO) 或 L2(岭回归)或两者(弹性回归)。均方损失已优化。

你应该知道的十种机器学习算法

使用这些算法来拟合带有约束的回归线,避免过度拟合并掩盖模型中的噪声维度。

3、K表示聚类

他是无监督聚类算法。给定一组向量形式的数据点,我们可以根据它们之间的距离来形成点簇。这是一种期望最大化算法,它迭代地移动聚类中心,然后将点与每个聚类中心结合在一起。算法采用的输入是要生成的簇的数量以及它将尝试收敛簇的迭代次数。

你应该知道的十种机器学习算法

从名称中可以明显看出,可以使用该算法在数据集中创建 K 个簇

4、逻辑回归

Logistic 回归是在应用权重后应用非线性(主要使用 sigmoid 函数,也可以使用 tanh)的约束线性回归,因此将输出限制为接近 +/- 类(在 sigmoid 情况下为 1 和 0)。交叉熵损失函数使用梯度下降进行优化。初学者注意:逻辑回归用于分类,而不是回归。还可以将逻辑回归视为单层神经网络。逻辑回归使用梯度下降或 L-BFGS 等优化方法进行训练。NLP 人们经常将其与最大熵分类器的名称一起使用。

这就是 Sigmoid 的样子:

你应该知道的十种机器学习算法

使用 LR 训练简单但非常强大的分类器。

5、SVM(支持向量机)

SVM 是一种常用的监督学习算法,是像线性/逻辑回归一样的线性模型,不同之处在于它的核心思想是将数据映射到高维特征空间,并在该空间中寻找一个最优的超平面来进行分类。超平面是一个 n-1 维的线性子空间,其中 n 是特征的维数。SVM 在特征空间中选择具有最大间隔(Margin)的超平面作为最优分类边界,以提高分类的鲁棒性

你应该知道的十种机器学习算法

SVM 适用于二分类和多分类问题。它通过最大化间隔来寻找最优分类超平面,并具有在高维空间中处理非线性问题的能力。在实践中,选择合适的核函数和参数设置对于 SVM 的性能至关重要。

6、前馈神经网络

这些基本上是多层逻辑回归分类器。由非线性(sigmoid、tanh、relu + softmax 和很酷的新 selu)分隔的许多权重层。它们的另一个流行名称是多层感知器。FFNN 可作为自动编码器用于分类和无监督特征学习。

你应该知道的十种机器学习算法

多层感知器

你应该知道的十种机器学习算法

FFNN 作为自动编码器

FFNN 可用于训练分类器或提取特征作为自动编码器

7、卷积神经网络(Convnets)

当今世界上几乎所有最先进的基于视觉的机器学习结果都是使用卷积神经网络实现的。它们可用于图像分类、对象检测甚至图像分割。卷积网络由 Yann Lecun 在 80 年代末至 90 年代初发明,其特征是卷积层充当分层特征提取器。也可以在文本(甚至图表)中使用它们。

你应该知道的十种机器学习算法

使用卷积网络进行最先进的图像和文本分类、对象检测、图像分割。

8、循环神经网络(RNN):

RNN 通过在时间 t 的聚合器状态和时间 t 的输入上递归应用同一组权重来对序列进行建模(假设序列在时间 0..t..T 具有输入,并且在每个时间 t 有一个隐藏状态)这是 RNN t-1 步骤的输出)。纯 RNN 现在很少使用,但其对应的 LSTM 和 GRU 在大多数序列建模任务中都是最先进的。

你应该知道的十种机器学习算法

RNN(如果这里是一个密集连接的单元和一个非线性,那么现在 f 通常是 LSTM 或 GRU)。LSTM 单元用于代替纯 RNN 中的普通密集层。

你应该知道的十种机器学习算法

将 RNN 用于任何序列建模任务,特别是文本分类、机器翻译、语言建模

9、条件随机场(CRF)

CRF 可能是概率图模型 (PGM) 系列中最常用的模型。它们用于像 RNN 一样的序列建模,也可以与 RNN 结合使用。在神经机器翻译系统出现之前,条件随机场是最先进的,在许多小数据集的序列标记任务中,它们仍然比需要大量数据才能泛化的 RNN 学得更好。它们还可以用于其他结构化预测任务,例如图像分割等。CRF 对序列的每个元素(例如句子)进行建模,以便邻居影响序列中组件的标签,而不是所有标签彼此独立。

使用 CRF 来标记序列(文本、图像、时间序列、DNA 等)

10、决策树

它是一种基于树结构的分类和回归算法。它通过对特征进行分割来构建一个树形模型,每个内部节点表示一个特征,每个叶节点表示一个类别或一个数值。决策树通过对特征进行逐层的判断和分割,以最终得到一个预测结果。

举一个简单的例子来解释决策树的工作原理。假设我们有一个二分类问题,要根据一个人的性别、年龄和教育水平来预测他们是否购买某个产品。首先,我们从根节点开始,选择一个特征进行分割,比如选择性别作为第一个分割点。我们可以根据性别将数据分为男性和女性两个分支。然后,我们进一步选择一个特征进行分割,比如选择年龄。在男性分支中,我们可以将数据分为年龄小于等于30岁和大于30岁的两个子分支;在女性分支中,我们也可以进行类似的分割。接着,我们再选择一个特征进行分割,比如选择教育水平。在每个年龄分支中,我们可以将数据进一步分为高教育水平和低教育水平两个子分支。

这样不断进行特征的选择和分割,直到满足停止条件。停止条件可以是达到预定的树的深度、节点中的样本数小于某个阈值或不再有可分割的特征。

最终,我们得到了一棵决策树,每个叶节点表示一个类别。对于新的未知样本,我们可以沿着树的分支进行判断,最终到达一个叶节点,并根据叶节点的类别进行预测。

目前使用的两种常见决策树算法是随机森林(Random Forests)和提升树(Boosting trees),前者在属性的随机子集上构建不同的分类器,并将它们组合起来进行输出

决策树可用于对数据点进行分类(甚至回归)

TD 算法(时间差分法)

如果仍然想知道上述方法如何解决像 DeepMind 那样击败围棋世界冠军这样的任务,那么它们不能。上面讨论的所有 10 种算法都是模式识别,而不是策略学习器。为了学习解决多步骤问题的策略,例如阿尔法GO赢得一场国际象棋比赛、ChatGPT语音机器人。这种类型的机器学习称为强化学习。该领域最近取得的许多(不是全部)成功都是将卷积网络或 LSTM 的感知能力与一组称为时间差分学习的算法相结合的结果。其中包括 Q-Learning、SARSA 、DQN等等其他一些变体。

总结

这些是 10 种机器学习算法,先作为入门的一些了解,心里有大模型算法这个概念。后面会针对每种算法进行深入分析研究。

原文地址:https://www.toutiao.com/article/7252577521580180029/

延伸 · 阅读

精彩推荐
  • 编程技术URL编码表一览(推荐收藏)

    URL编码表一览(推荐收藏)

    有时候我们会碰到一些网页地址里面有一些%(百分号)组成的网址,其实这样的%与数字的组合就是一个符号。下面是URL编码表,大家可以对应下。...

    编程技术网4942020-07-18
  • 编程技术分享5个实用的vs调试技巧

    分享5个实用的vs调试技巧

    vs 是我们平时编写代码时的首选工具,相信也是大多数小伙伴儿的首选调试工具,因为实际操作起来太方便了,代码编写完,一个 F5 就可以愉快的调试了。...

    BianChengNan''''s7582022-09-01
  • 编程技术前端:使用CSS3实现酷炫的3D旋转透视

    前端:使用CSS3实现酷炫的3D旋转透视

    3D动画效果现在越来越普及,已经被广泛的应用到了各个平台,比如阿里云,华为云,webpack官网等。它可以更接近于真实的展示我们的产品和介绍,带来极...

    趣谈前端9552021-01-05
  • 编程技术软件工程专业的学生如果编程不太好,是否容易实现就业

    软件工程专业的学生如果编程不太好,是否容易实现就业

    首先,软件工程专业的整体就业表现还是比较不错的,相信随着工业互联网的发展,未来行业领域依然会持续释放出大量的软件开发岗位,所以目前选择软...

    今日头条3062020-11-11
  • 编程技术手写一个基于 Proxy 的缓存库

    手写一个基于 Proxy 的缓存库

    Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和...

    Segmentfault8192021-02-22
  • 编程技术聊聊 Nuxt 开箱即用的特性

    聊聊 Nuxt 开箱即用的特性

    最近公司项目中使用了 Nuxt 框架,进行首屏的服务端渲染,加快了内容的到达时间 (time-to-content),于是笔者开始了对 Nuxt 的学习和使用。以下是从源码角度...

    大转转FE5362021-08-31
  • 编程技术算法系列15天速成 第七天 线性表【上】

    算法系列15天速成 第七天 线性表【上】

    人活在社会上不可能孤立,比如跟美女有着千丝万缕的关系,有的是一对一,有的是一对多,有的是多对多...

    编程技术网3092020-07-26
  • 编程技术详解git仓库迁移的两种解决方案

    详解git仓库迁移的两种解决方案

    这篇文章主要介绍了详解git仓库迁移的两种解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    ZhangRuoxu2712020-08-01