一文读懂机器学习:基本概念、五大流派与九种常见算法

本文主要是介绍一文读懂机器学习:基本概念、五大流派与九种常见算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

15225560cd447a7dd5d2ca677274a227.gif

一、机器学习概览

0354f319d111576814e0d969f716932d.gif

b7bded0bd45c9aa23cd28a2706d2f59d.png

1. 什么是机器学习?

机器通过分析大量数据来进行学习。比如说,不需要通过编程来识别猫或人脸,它们可以通过使用图片来进行训练,从而归纳和识别特定的目标。

2. 机器学习和人工智能的关系

机器学习是一种重在寻找数据中的模式并使用这些模式来做出预测的研究和算法的门类。机器学习是人工智能领域的一部分,并且和知识发现与数据挖掘有所交集。

6e765c8acfb5e53aae7d5725b5d0a8fa.png

3. 机器学习的工作方式

①选择数据: 将你的数据分成三组:训练数据、验证数据和测试数据

②模型数据: 使用训练数据来构建使用相关特征的模型

③验证模型: 使用你的验证数据接入你的模型

④测试模型: 使用你的测试数据检查被验证的模型的表现

⑤使用模型: 使用完全训练好的模型在新数据上做预测

⑥调优模型: 使用更多数据、不同的特征或调整过的参数来提升算法的性能表现

9611fc20af14c4b1fecd5e3c31f27af7.png

4. 机器学习所处的位置

①传统编程: 软件工程师编写程序来解决问题。首先存在一些数据→为了解决一个问题,软件工程师编写一个流程来告诉机器应该怎样做→计算机遵照这一流程执行,然后得出结果

②统计学: 分析师比较变量之间的关系

③机器学习: 数据科学家使用训练数据集来教计算机应该怎么做,然后系统执行该任务。首先存在大数据→机器会学习使用训练数据集来进行分类,调节特定的算法来实现目标分类→该计算机可学习识别数据中的关系、趋势和模式

④智能应用: 智能应用使用人工智能所得到的结果,如图是一个精准农业的应用案例示意,该应用基于无人机所收集到的数据

b77dea9b2855c2d6e727850236375107.png

5. 机器学习的实际应用

机器学习有很多应用场景,这里给出了一些示例,你会怎么使用它?

  • 快速三维地图测绘和建模:要建造一架铁路桥,PwC 的数据科学家和领域专家将机器学习应用到了无人机收集到的数据上。这种组合实现了工作成功中的精准监控和快速反馈。

  • 增强分析以降低风险:为了检测内部交易,PwC 将机器学习和其它分析技术结合了起来,从而开发了更为全面的用户概况,并且获得了对复杂可疑行为的更深度了解。

  • 预测表现最佳的目标:PwC 使用机器学习和其它分析方法来评估 Melbourne Cup 赛场上不同赛马的潜力。

38fb7c4c31b9c44212368d9474e206ba.gif

二、机器学习的演化

aa363614c2a248e0f1ec0090c66d0130.gif

22ad49625660c72cf03d90fa4c50c9d0.png

几十年来,人工智能研究者的各个「部落」一直以来都在彼此争夺主导权,参阅机器之心文章《华盛顿大学教授 Pedro Domingos:机器学习领域五大流派(附演讲 ppt)》。现在是这些部落联合起来的时候了吗?他们也可能不得不这样做,因为合作和算法融合是实现真正通用人工智能(AGI)的唯一方式。这里给出了机器学习方法的演化之路以及未来的可能模样。

1. 五大流派

①符号主义: 使用符号、规则和逻辑来表征知识和进行逻辑推理,最喜欢的算法是:规则和决策树

②贝叶斯派: 获取发生的可能性来进行概率推理,最喜欢的算法是:朴素贝叶斯或马尔可夫

③联结主义: 使用概率矩阵和加权神经元来动态地识别和归纳模式,最喜欢的算法是:神经网络

④进化主义: 生成变化,然后为特定目标获取其中最优的,最喜欢的算法是:遗传算法

⑤Analogizer: 根据约束条件来优化函数(尽可能走到更高,但同时不要离开道路),最喜欢的算法是:支持向量机

5421c8bff6f5e3262dd412bb29d68afa.png

2. 演化的阶段

1980 年代
  • 主导流派:符号主义

  • 架构:服务器或大型机

  • 主导理论:知识工程

  • 基本决策逻辑:决策支持系统,实用性有限

1990 年代到 2000 年
  • 主导流派:贝叶斯

  • 架构:小型服务器集群

  • 主导理论:概率论

  • 分类:可扩展的比较或对比,对许多任务都足够好了

2010 年代早期到中期
  • 主导流派:联结主义

  • 架构:大型服务器农场

  • 主导理论:神经科学和概率

  • 识别:更加精准的图像和声音识别、翻译、情绪分析等

00e45dc2a2940cdc899e3bdd9481c02c.png

3. 这些流派有望合作,并将各自的方法融合到一起

2010 年代末期
  • 主导流派:联结主义+符号主义

  • 架构:许多云

  • 主导理论:记忆神经网络、大规模集成、基于知识的推理

  • 简单的问答:范围狭窄的、领域特定的知识共享

2020 年代+
  • 主导流派:联结主义+符号主义+贝叶斯+……

  • 架构:云计算和雾计算

  • 主导理论:感知的时候有网络,推理和工作的时候有规则

  • 简单感知、推理和行动:有限制的自动化或人机交互

2040 年代+
  • 主导流派:算法融合

  • 架构:无处不在的服务器

  • 主导理论:最佳组合的元学习

  • 感知和响应:基于通过多种学习方式获得的知识或经验采取行动或做出回答

2d3d1054f6db1b4190f04e588247aff2.gif

三、机器学习的算法

cef38a58dd146aaf35d2721330bec0c1.gif

6602d38aff68ead42d8f92fc1d1309f9.png

你应该使用哪种机器学习算法?这在很大程度上依赖于可用数据的性质和数量以及每一个特定用例中你的训练目标。不要使用最复杂的算法,除非其结果值得付出昂贵的开销和资源。这里给出了一些最常见的算法,按使用简单程度排序。更多内容可参阅机器之心的文章《机器学习算法集锦:从贝叶斯到深度学习及各自优缺点》和《经验之谈:如何为你的机器学习问题选择合适的算法?》

1. 决策树(Decision Tree)

在进行逐步应答过程中,典型的决策树分析会使用分层变量或决策节点,例如,可将一个给定用户分类成信用可靠或不可靠。

  • 优点:擅长对人、地点、事物的一系列不同特征、品质、特性进行评估

  • 场景举例:基于规则的信用评估、赛马结果预测

71e9735e93751dd9d5ff4803f5650979.png

2. 支持向量机(Support Vector Machine)

基于超平面(hyperplane),支持向量机可以对数据群进行分类。

  • 优点:支持向量机擅长在变量 X 与其它变量之间进行二元分类操作,无论其关系是否是线性的

  • 场景举例:新闻分类、手写识别。

3. 回归(Regression)

回归可以勾画出因变量与一个或多个因变量之间的状态关系。在这个例子中,将垃圾邮件和非垃圾邮件进行了区分。

  • 优点:回归可用于识别变量之间的连续关系,即便这个关系不是非常明显

  • 场景举例:路面交通流量分析、邮件过滤

0227899316f5821e7a1b42946a063407.png

4. 朴素贝叶斯分类(Naive Bayes Classification)

朴素贝叶斯分类器用于计算可能条件的分支概率。每个独立的特征都是「朴素」或条件独立的,因此它们不会影响别的对象。例如,在一个装有共 5 个黄色和红色小球的罐子里,连续拿到两个黄色小球的概率是多少?从图中最上方分支可见,前后抓取两个黄色小球的概率为 1/10。朴素贝叶斯分类器可以计算多个特征的联合条件概率。

  • 优点:对于在小数据集上有显著特征的相关对象,朴素贝叶斯方法可对其进行快速分类

  • 场景举例:情感分析、消费者分类

5. 隐马尔可夫模型(Hidden Markov model)

显马尔可夫过程是完全确定性的——一个给定的状态经常会伴随另一个状态。交通信号灯就是一个例子。相反,隐马尔可夫模型通过分析可见数据来计算隐藏状态的发生。随后,借助隐藏状态分析,隐马尔可夫模型可以估计可能的未来观察模式。在本例中,高或低气压的概率(这是隐藏状态)可用于预测晴天、雨天、多云天的概率。

  • 优点:容许数据的变化性,适用于识别(recognition)和预测操作

  • 场景举例:面部表情分析、气象预测

8412b37dbfd63cd889c5a85cba12fe76.png

6. 随机森林(Random forest)

随机森林算法通过使用多个带有随机选取的数据子集的树(tree)改善了决策树的精确性。本例在基因表达层面上考察了大量与乳腺癌复发相关的基因,并计算出复发风险。

  • 优点:随机森林方法被证明对大规模数据集和存在大量且有时不相关特征的项(item)来说很有用

  • 场景举例:用户流失分析、风险评估

7. 循环神经网络(Recurrent neural network)

在任意神经网络中,每个神经元都通过 1 个或多个隐藏层来将很多输入转换成单个输出。循环神经网络(RNN)会将值进一步逐层传递,让逐层学习成为可能。换句话说,RNN 存在某种形式的记忆,允许先前的输出去影响后面的输入。

  • 优点:循环神经网络在存在大量有序信息时具有预测能力

  • 场景举例:图像分类与字幕添加、政治情感分析

f204ce88a00e0b505fc9b9abd23aec61.png

8. 长短期记忆(Long short-term memory,LSTM)

与门控循环单元神经网络(gated recurrent unit nerual network):早期的 RNN 形式是会存在损耗的。尽管这些早期循环神经网络只允许留存少量的早期信息,新近的长短期记忆(LSTM)与门控循环单元(GRU)神经网络都有长期与短期的记忆。换句话说,这些新近的 RNN 拥有更好的控制记忆的能力,允许保留早先的值或是当有必要处理很多系列步骤时重置这些值,这避免了「梯度衰减」或逐层传递的值的最终 degradation。LSTM 与 GRU 网络使得我们可以使用被称为「门(gate)」的记忆模块或结构来控制记忆,这种门可以在合适的时候传递或重置值。

  • 优点:长短期记忆和门控循环单元神经网络具备与其它循环神经网络一样的优点,但因为它们有更好的记忆能力,所以更常被使用

  • 场景举例:自然语言处理、翻译

9. 卷积神经网络(convolutional neural network)

卷积是指来自后续层的权重的融合,可用于标记输出层。

  • 优点:当存在非常大型的数据集、大量特征和复杂的分类任务时,卷积神经网络是非常有用的

  • 场景举例:图像识别、文本转语音、药物发现

来源:深度学习冲鸭
著作权归作者所有,仅作学术分享,侵删

觉得还不错就给我一个小小的鼓励吧!

这篇关于一文读懂机器学习:基本概念、五大流派与九种常见算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183538

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例