机器学习简介

2023-11-12

介绍

机器学习是人工智能 (AI) 的一个子领域。机器学习的目标通常是理解数据的结构并将该数据拟合到人们可以理解和利用的模型中。

尽管机器学习是计算机科学的一个领域,但它与传统的计算方法不同。在传统计算中,算法是计算机用来计算或解决问题的显式编程指令集。相反,机器学习算法允​​许计算机对数据输入进行训练并使用统计分析来输出落在特定范围内的值。因此,机器学习有助于计算机根据样本数据构建模型,以便根据数据输入自动执行决策过程。

今天的任何技术用户都从机器学习中受益。面部识别技术允许社交媒体平台帮助用户标记和分享朋友的照片。光学字符识别 (OCR) 技术将文本图像转换为活字。由机器学习提供支持的推荐引擎可根据用户偏好建议接下来观看哪些电影或电视节目。依靠机器学习进行导航的自动驾驶汽车可能很快就会向消费者提供。

机器学习是一个不断发展的领域。因此,在使用机器学习方法或分析机器学习过程的影响时,需要牢记一些注意事项。

在本教程中,我们将研究监督学习和无监督学习的常见机器学习方法,以及机器学习中的常见算法方法,包括 k-近邻算法、决策树学习和深度学习。我们将探讨哪些编程语言在机器学习中最常用,并为您提供每种语言的一些优点和缺点。此外,我们将讨论机器学习算法所带来的偏见,并考虑在构建算法时可以记住什么来防止这些偏见。

机器学习方法

在机器学习中,任务通常分为几大类。这些类别基于如何接收学习或如何向所开发的系统提供学习反馈。

两种最广泛采用的机器学习方法是监督学习它根据人类标记的示例输入和输出数据来训练算法,以及无监督学习它为算法提供没有标记的数据,以便允许它在输入数据中找到结构。让我们更详细地探讨这些方法。

监督学习

在监督学习中,为计算机提供示例输入,并标有其所需的输出。这种方法的目的是让算法能够通过将其实际输出与“教导”输出进行比较来“学习”,以发现错误,并相应地修改模型。因此,监督学习使用模式来预测其他未标记数据的标签值。

例如,通过监督学习,算法可以输入带有标记为的鲨鱼图像的数据fish和海洋图像标记为water。通过对这些数据进行训练,监督学习算法应该能够稍后将未标记的鲨鱼图像识别为fish和未标记的海洋图像为water.

监督学习的一个常见用例是使用历史数据来预测统计上可能的未来事件。它可以使用历史股票市场信息来预测即将到来的波动,或用于过滤垃圾邮件。在监督学习中,带标签的狗照片可以用作输入数据,对未带标签的狗照片进行分类。

无监督学习

在无监督学习中,数据是未标记的,因此学习算法只能寻找输入数据之间的共性。由于未标记数据比标记数据更丰富,因此促进无监督学习的机器学习方法尤其有价值。

无监督学习的目标可能就像发现数据集中的隐藏模式一样简单,但它也可能有特征学习的目标,这允许计算机自动发现对原始数据进行分类所需的表示。

无监督学习通常用于事务数据。您可能拥有大量客户及其购买行为的数据集,但作为一个人,您可能无法理解从客户档案及其购买类型中可以得出哪些类似的属性。将这些数据输入无监督学习算法后,可以确定购买无香皂的特定年龄段的女性可能怀孕,因此可以针对该受众开展与怀孕和婴儿产品相关的营销活动,以便以增加他们的购买数量。

在没有被告知“正确”答案的情况下,无监督学习方法可以查看更广泛且看似无关的复杂数据,以便以潜在有意义的方式组织它。无监督学习通常用于异常检测,包括欺诈性信用卡购买,以及推荐下一步购买哪些产品的推荐系统。在无监督学习中,未标记的狗照片可以用作算法的输入数据,以查找相似点并将狗照片分类在一起。

方法

作为一个领域,机器学习与计算统计学密切相关,因此拥有统计学背景知识对于理解和利用机器学习算法很有用。

对于那些可能没有学过统计学的人来说,首先定义相关性和回归可能会有所帮助,因为它们是研究定量变量之间关系的常用技术。相关性是未指定为因变量或独立变量之间的关联的度量。回归在基本层面上用于检查一个因变量和一个自变量之间的关系。由于当自变量已知时,回归统计可用于预测因变量,因此回归具有预测功能。

机器学习方法正在不断开发。出于我们的目的,我们将介绍在撰写本文时机器学习中使用的一些流行方法。

k-最近邻

k-近邻算法是一种模式识别模型,可用于分类和回归。通常缩写为 k-NN,kk-近邻是一个正整数,通常很小。在分类或回归中,输入将由空间内 k 个最接近的训练示例组成。

我们将重点关注 k-NN 分类。在此方法中,输出是类成员资格。这会将一个新对象分配给其 k 个最近邻居中最常见的类。在 k = 1 的情况下,对象被分配到单个最近邻的类。

让我们看一个 k 最近邻的例子。下图中,有蓝色菱形物体和橙色星形物体。它们属于两个不同的类别:钻石级和星级。

k-nearest neighbor initial data set

当一个新对象添加到空间中时(在本例中是一颗绿色的心),我们将希望机器学习算法将心分类到某个类别。

k-nearest neighbor data set with new object to classify

当我们选择 k = 3 时,算法将找到绿心的三个最近邻居,以便将其分类为钻石类或星星类。

在我们的图中,绿色心形最近的三个邻居是一颗钻石和两颗星星。因此,算法会将心脏分类为星类。

k-nearest neighbor data set with classification complete

在最基本的机器学习算法中,k-近邻被认为是一种“惰性学习”,因为在对系统进行查询之前,不会发生超出训练数据的泛化。

决策树学习

对于一般用途,决策树用于直观地表示决策并显示或通知决策。在使用机器学习和数据挖掘时,决策树被用作预测模型。这些模型将对数据的观察映射到有关数据目标值的结论。

决策树学习的目标是创建一个模型,该模型将根据输入变量预测目标值。

在预测模型中,通过观察确定的数据属性由分支表示,而关于数据目标值的结论由叶子表示。

当“学习”一棵树时,源数据根据属性值测试划分为子集,并在每个派生子集上递归地重复该子集。一旦某个节点的子集的值与其目标值相等,则递归过程将完成。

让我们看一个可以决定某人是否应该去钓鱼的各种条件的示例。这包括天气条件以及气压条件。

fishing decision tree example

在上面的简化决策树中,通过将示例在树中排序到适当的叶节点来对其进行分类。然后返回与特定叶子相关的分类,在本例中是Yes or a No。该树根据是否适合钓鱼对一天的条件进行分类。

真正的分类树数据集将具有比上面概述的更多的特征,但关系应该很容易确定。在进行决策树学习时,需要做出几个决定,包括选择哪些特征、使用什么条件进行分割,以及了解决策树何时达到明确的结局。

深度学习

深度学习试图模仿人脑如何将光和声音刺激处理为视觉和听觉。深度学习架构受到生物神经网络的启发,由硬件和 GPU 组成的人工神经网络中的多个层组成。

深度学习使用级联的非线性处理单元层来提取或转换数据的特征(或表示)。一层的输出作为后续层的输入。在深度学习中,算法可以受监督并用于对数据进行分类,也可以不受监督并执行模式分析。

在目前正在使用和开发的机器学习算法中,深度学习吸收的数据最多,并且已经能够在一些认知任务中击败人类。由于这些属性,深度学习已成为人工智能领域具有巨大潜力的方法

计算机视觉和语音识别都从深度学习方法中取得了重大进展。 IBM Watson 是利用深度学习的系统的一个著名示例。

编程语言

在选择专门从事机器学习的语言时,您可能需要考虑当前招聘广告中列出的技能以及可用于机器学习过程的各种语言的库。

Python由于有许多可用的框架,它是最流行的机器学习语言之一,包括TensorFlow, PyTorch, and Keras。作为一种具有可读语法并能够用作脚本语言的语言,Python 被证明在预处理数据和直接处理数据方面功能强大且简单。这scikit学习机器学习库构建在 Python 开发人员可能已经熟悉的几个现有 Python 包之上,即NumPy, SciPy, and Matplotlib.

要开始使用 Python,您可以阅读我们的教程系列“如何使用 Python 3 进行编码,”或专门阅读“如何使用 scikit-learn 在 Python 中构建机器学习分类器” or “如何使用 Python 3 和 PyTorch 执行神经风格迁移.”

Java广泛应用于企业编程中,一般由同时从事企业级机器学习工作的前端桌面应用程序开发人员使用。通常它不是那些想要学习机器学习的编程新手的首选,但受到有 Java 开发背景的人青睐,应用于机器学习。就工业中的机器学习应用而言,Java 往往比 Python 更多地用于网络安全,包括网络攻击和欺诈检测用例。

Java 机器学习库包括深度学习4j,一个为 Java 和 Scala 编写的开源分布式深度学习库;MALLET (MAchine L赚取LanguagE Toolkit)允许对文本进行机器学习应用,包括自然语言处理、主题建模、文档分类和聚类;和Weka,用于数据挖掘任务的机器学习算法的集合。

C++是游戏或机器人应用(包括机器人运动)中机器学习和人工智能的首选语言。由于嵌入式计算硬件开发人员和电子工程师对语言的熟练程度和控制水平,他们在机器学习应用中更有可能青睐 C++ 或 C。一些可以与 C++ 一起使用的机器学习库包括可扩展的mlpack, Dlib提供广泛的机器学习算法以及模块化和开源Shark.

人类偏见

尽管数据和计算分析可能让我们认为我们正在接收客观信息,但事实并非如此;基于数据并不意味着机器学习的输出是中立的。人类偏见在数据的收集、组织以及最终决定机器学习如何与数据交互的算法中发挥着重要作用。

例如,如果人们提供“鱼”的图像作为数据来训练算法,而这些人绝大多数选择金鱼的图像,则计算机可能不会将鲨鱼分类为鱼。这会造成人们对鲨鱼作为鱼的偏见,并且鲨鱼不会被算作鱼。

当使用科学家的历史照片作为训练数据时,计算机可能无法正确分类也是有色人种或女性的科学家。事实上,最近的同行评审研究表明,人工智能和机器学习程序表现出类似人类的偏见,包括种族和性别偏见。例如,参见“从语言语料库自动导出的语义包含类似人类的偏见” and “男性也喜欢购物:使用语料库级别的约束减少性别偏见的放大” [PDF].

随着机器学习在商业中的应用越来越广泛,未发现的偏见可能会导致系统性问题长期存在,这些问题可能会阻碍人们获得贷款的资格,无法看到高薪工作机会的广告,或者无法获得当日送达的选择。

由于人类偏见会对他人产生负面影响,因此意识到这一点并努力尽可能消除它非常重要。实现这一目标的一种方法是确保有不同的人参与一个项目,并且不同的人正在测试和审查该项目。还有人呼吁监管第三方监控和审核算法, 建立可以检测偏见的替代系统, and 伦理审查作为数据科学项目规划的一部分。提高对偏见的认识,留意我们自己的无意识偏见,并在我们的机器学习项目和管道中构建公平性,可以努力消除该领域的偏见。

DigitalOcean Machine Learning

结论

本教程回顾了机器学习的一些用例、该领域使用的常见方法和流行方法、合适的机器学习编程语言,并且还介绍了在算法中复制无意识偏差时需要记住的一些事项。

由于机器学习是一个不断创新的领域,因此重要的是要记住算法、方法和途径将不断变化。

除了阅读我们的教程“如何使用 scikit-learn 在 Python 中构建机器学习分类器” or “如何使用 Python 3 和 PyTorch 执行神经风格迁移,”您可以通过阅读我们的文章来了解有关技术行业中数据处理的更多信息数据分析教程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习简介 的相关文章

  • XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南 附Python代码 原文地址 Complete Guide to Parameter Tuning in XGBoost with codes in Python 译注 文内提供的代码和运行结果有一定差异 可
  • 机器学习之梯度提升树(机器学习技法)

    梯度提升树模型 Gradient Boosted Decision Tree 与随机森林的对比 前面提到的随机森林使用Bagging的方式融合起来 也就是使用bootstrapping进行抽样得到不同的样本再加上不同的特征选择训练出不同的决
  • 理解 JavaScript 中的类

    介绍 JavaScript 是一种基于原型的语言 JavaScript 中的每个对象都有一个隐藏的内部属性 称为 Prototype 可用于扩展对象属性和方法 您可以在我们的文章中阅读有关原型的更多信息了解 JavaScript 中的原型和
  • Linux 中的存储术语和概念简介

    介绍 Linux 拥有强大的系统和工具来管理硬件设备 包括存储驱动器 在本文中 我们将从高层次上介绍 Linux 如何表示这些设备以及如何将原始存储转化为服务器上的可用空间 什么是块存储 块存储是 Linux 内核中块设备的另一个名称 A块
  • python 读写hive

    最近正在 做一个 项目 需要把 算法模型的结果持久化 至hive 目前 使用的 pyhive 切记 在windows上不能使用 我目前在centos6 5上使用 官方说再macos和linux上可用 from pyhive import h
  • 如何在 JavaScript 中使用运算符进行数学运算

    介绍 数学运算是任何编程语言最基本和通用的功能之一 在 JavaScript 中 数字经常用于常见任务 例如查找浏览器窗口大小 获取货币交易的最终价格以及计算网站文档中元素之间的距离 尽管对数学的高度理解并不是成为一名有能力的开发人员的先决
  • 【CS229 lecture19】微分动态规划

    首先声明一下 这节课基本没听懂 但是还是把课程笔记写下 lecture19 微分动态规划 继续强化学习算法的讨论 Agenda 课程中段我曾讲过调试learning algorithm 今天再来将强化学习的部分 The motivating
  • DNS 术语、组件和概念简介

    介绍 DNS 即域名系统 通常是学习如何配置网站和服务器的一个非常困难的部分 了解 DNS 的工作原理将帮助您诊断配置网站访问的问题 并让您更深入地了解幕后发生的事情 在本指南中 我们将讨论一些基本的 DNS 概念 这些概念将帮助您开始使用
  • DOTA: A Large-scale Dataset for Object Detection in Aerial Images 翻译

    DOTA 用于航空图像中目标检测的大规模数据集 原文 https arxiv org pdf 1711 10398 pdf 官网 https captain whu github io DOTA dataset https captain
  • 各领域机器学习数据集汇总(附下载地址)

    原文地址 大学公开数据集 Stanford 69G大规模无人机 校园 图像数据集 Stanford http cvgl stanford edu projects uav data 人脸素描数据集 CUHK http mmlab ie cu
  • 使用 Graphite、StatsD 和 CollectD 跟踪统计数据简介

    介绍 有很多理由可以解释为什么收集有关服务器 应用程序和流量的统计数据是个好主意 收集和组织数据可以让您对有关扩展 故障排除和跟踪配置中的痛点的决策充满信心 有多种工具可用于跟踪我们机器上的指标 并且它们通常被委托给流程的某一小部分 我们可
  • 二值分类模型的评价指标

    二值分类模型的评价指标主要有 Precision Recall F Score ROC and AUC ROC Receiver Operating Characteristic ROC曲线的横坐标为false positive rate
  • 【特征工程】特征选择与特征学习

    特征选择与特征学习 在机器学习的具体实践任务中 选择一组具有代表性的特征用于构建模型是非常重要的问题 特征选择通常选择与类别相关性强 且特征彼此间相关性弱的特征子集 具体特征选择算法通过定义合适的子集评价函数来体现 在现实世界中 数据通常是
  • 如何在 Ubuntu 18.04 上使用 Python 3 设置 Jupyter Notebook

    介绍 Jupyter笔记本是一个开源 Web 应用程序 可让您创建和共享交互式代码 可视化等 该工具可与多种编程语言一起使用 包括 Python Julia R Haskell 和 Ruby 它通常用于处理数据 统计建模和机器学习 本教程将
  • 什么是 Kubernetes?

    介绍 Kubernetes 是一个功能强大的开源系统 最初由 Google 开发 并得到云原生计算基金会 CNCF 的支持 用于在集群环境中管理容器化应用程序 它旨在提供更好的方法来管理跨不同基础设施的相关分布式组件和服务 要了解有关 Ku
  • 如何修改 DOM 中的属性、类和样式

    介绍 在本教程之前的教程中series 如何更改 DOM 我们介绍了如何使用内置方法从文档对象模型 DOM 中创建 插入 替换和删除元素 通过提高操作 DOM 的熟练程度 您可以更好地利用 JavaScript 的交互功能并修改 Web 元
  • 机器学习里的 kernel 是指什么?

    转自我的知乎回答 机器学习里的 kernel 是指什么 我换个角度来解释这个问题 机器学习在做回归或者分类时有一个很朴实的想法 预测 x 的值 那就在训练集 X 中寻找那些与 x 相似的样本 再把这些样本的值加权作为预测值 这里有两个问题
  • 如何在 Ruby 中使用字符串

    介绍 A string是一个或多个字符的序列 可以由字母 数字或符号组成 Ruby 中的字符串是对象 与其他语言不同 字符串是mutable 这意味着可以就地更改它们 而不用创建新字符串 您几乎会在编写的每个程序中使用字符串 字符串允许您使
  • 扩展 Mach-O 文件中的部分

    我正在尝试从 Dyld shared cache 中提取库 并且需要修复外部引用 例如 中的指针 DATA objc selrefs部分通常指向 mach o 文件外部的数据 为了解决这个问题 我必须从 dyld 复制相应的 c 字符串并将
  • 如何将页面图片拉直,使其看起来像扫描的一样?

    我看过应用程序 想知道如何以编程方式拍摄图像 定义它需要如何转换 以便它看起来与相机平行 而不是倾斜透视 然后合并多张照片以创建 pdf 文件 例如这个应用程序就是这样做的 我不会用书籍来做这些琐碎的事情 所以很抱歉我不能推荐任何书籍 尤其

随机推荐

  • 如何在 CentOS 7 上安装 R

    R 是一种快速发展的开源编程语言和免费环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本教程将教你如何在CentOS 7上安装R以及如何从官方安装R包综合 R 档案
  • 如何在 Ubuntu 20.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它缓存每个下载包并通过并行操作加快安装过程 在本教程中 我们将解释如何安装Yarn在 Ubuntu 20 04 上
  • 如何在 Debian 9 上安装 MongoDB

    MongoDB 是一个免费的开源文档数据库 它属于 NoSQL 数据库家族 与 MySQL 和 PostgreSQL 等传统的基于表的 SQL 数据库不同 在 MongoDB 中 数据存储在灵活的 类似 JSON字段可能因文档而异的文档 它
  • Bash if..else 语句

    本教程将引导您了解 Bash 的基础知识if声明并向您展示如何在 shell 脚本中使用它 决策是计算机编程最基本的概念之一 与任何其他编程语言一样 if if else if elif else 并嵌套ifBash 中的语句用于根据特定条
  • Java中的多重继承

    今天我们将研究Java中的多重继承 不久前我写了几篇关于遗产 界面 and 作品在Java中 在这篇文章中 我们将研究 java 多重继承 然后比较组合和继承 Java中的多重继承 Multiple inheritance in java
  • Java 中的装饰器设计模式示例

    装饰器设计模式用于在运行时修改对象的功能 同时 同一类的其他实例不会受此影响 因此单个对象会获得修改后的行为 装饰设计模式是结构设计模式之一 如适配器模式 桥梁图案 复合图案 并使用抽象类或接口作品来实施 装饰设计模式 We use inh
  • 获取R中的行数和列数

    各位读者大家好 在本文中 我们将重点讨论 R 中的行和列的概念 即R编程中获取对象的行数和列数 详细 那么 让我们开始吧 Be it a matrix or a 数据框 我们按照行和列来处理数据 在数据分析领域 尤其是统计分析 我们需要了解
  • 如何在 CentOS、Rocky Linux、RHEL 和 Fedora 上安装 Java

    介绍 本教程将向您展示如何在基于 RPM 的 Linux 发行版的当前版本上安装 Java Red Hat Enterprise Linux CentOS Fedora 和 Rocky Linux Java 是一种流行的编程语言和软件平台
  • 如何在 Ubuntu 14.04 上使用 Nginx 安装 WordPress

    介绍 WordPress 是世界上最流行的 CMS 内容管理系统 它使您可以轻松启动并运行您的网站或博客 安装后 您可以在简单的 Web 界面中管理几乎所有内容 在本指南中 我们将介绍如何在 Ubuntu 14 04 服务器上安装 Word
  • 如何使用 Nmap 和 Tcpdump 测试您的防火墙配置

    介绍 为您的基础设施设置防火墙是为您的服务提供安全性的好方法 一旦您制定了满意的策略 下一步就是测试您的防火墙规则 重要的是要充分了解您的防火墙规则是否按照您的想法进行 并了解您的基础设施在外界看来是什么样子 在本指南中 我们将介绍一些可用
  • Linux 终端简介

    介绍 本教程是 Linux 基础知识系列的第一篇 涵盖终端 Linux 命令行和执行命令的入门知识 如果您是 Linux 新手 您将需要熟悉终端 因为它是与 Linux 服务器交互的标准方式 如果您想充分利用本教程 您将需要连接和使用 Li
  • 最小堆二叉树

    A Min Heap二叉树是二叉树 其中根节点具有树中的最小键 上述定义对于树中的所有子树都适用 这被称为最小堆属性 除了最后两层之外 几乎每个节点都必须有两个子节点 也就是说 除了最后两层之外 这几乎是一个完整的二叉树 由于上述两个属性成
  • 在 Python 3 中使用循环时如何使用 Break、Continue 和 Pass 语句

    介绍 Using for 循环 and while 循环Python 允许您以有效的方式自动化和重复任务 但有时 外部因素可能会影响程序的运行方式 发生这种情况时 您可能希望程序完全退出循环 在继续之前跳过循环的一部分 或者忽略该外部因素
  • 休眠教程

    最近写了很多hibernate教程 休眠是当前市场上最好的Java ORM工具之一 所以这篇文章就像是所有 hibernate 教程和示例文章的索引 您可以依次浏览这些 hibernate 教程 从头开始学习 hibernate 我很可能会
  • Java 中的线程安全

    Java中的线程安全是一个非常重要的话题 Java使用Java线程提供多线程环境支持 我们知道从同一个对象创建的多个线程共享对象变量 这可能会导致数据不一致当线程用于读取和更新共享数据时 线程安全 The reason for data i
  • 如何使用 Ansible 角色抽象您的基础设施环境

    介绍 Ansible 是一种配置管理工具 旨在为管理员和运营团队自动控制服务器 借助 Ansible 您可以使用单个中央服务器来控制和配置许多不同的远程系统 仅使用 SSH 和 Python 作为要求 Ansible 根据任务定义在其管理的
  • 如何在 CentOS 6 上使用 fail2ban 保护 SSH

    Status 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生
  • 如何监控 DigitalOcean Droplet 上的 CPU 使用情况

    介绍 假设您的网站或应用程序比平时更慢 你如何开始调查这个问题 导致应用程序缓慢的原因有很多 但有时是因为服务器的 CPU 已满 本指南将帮助您了解您是否属于这种情况 我们将首先了解 Linux 服务器上两个最常引用的资源使用指标 CPU利
  • 如何在 Python 中将字符串转换为浮点数

    介绍 在这篇文章中 我们将使用Pythonfloat 函数将字符串转换为浮点数 我们还将使用Python的str 函数将浮点数转换为字符串 在使用数据类型进行计算和串联之前正确转换数据类型非常重要 以防止运行时错误 先决条件 为了完成本教程
  • 机器学习简介

    介绍 机器学习是人工智能 AI 的一个子领域 机器学习的目标通常是理解数据的结构并将该数据拟合到人们可以理解和利用的模型中 尽管机器学习是计算机科学的一个领域 但它与传统的计算方法不同 在传统计算中 算法是计算机用来计算或解决问题的显式编程