Machine Learning 简明教程

Machine Learning - Quick Guide

Machine Learning - Introduction

如今的人工智能 (AI) 已经远远超越了区块链和量子计算的炒作。这是因为庞大的计算资源很容易为普通人所用。开发人员现在利用这一点创建新的机器学习模型并重新训练现有模型以获得更好的性能和结果。高性能计算 (HPC) 的容易获得导致对具有机器学习技能的 IT 专业人员的突然需求增加。

在本教程中,你将详细了解 −

机器学习的核心是什么?

  1. 机器学习中有哪些不同的类型?

  2. 有哪些不同的算法可用于开发机器学习模型?

  3. 有哪些工具可用于开发这些模型?

  4. 有哪些编程语言选择?

  5. 哪些平台支持机器学习应用程序的开发和部署?

  6. 有哪些 IDE(集成开发环境)可用?

  7. 如何在这一重要领域快速提升你的技能?

Machine Learning - What Today’s AI Can Do?

当你在 Facebook 照片中标记人脸时,是 AI 在幕后运行并识别图片中的人脸。人脸标记现在在显示人脸图片的多个应用程序中无处不在。为什么只有人脸?有几个应用程序可以检测诸如猫、狗、瓶子、汽车等物体。我们的道路上运行着自动驾驶汽车,它们可以实时检测物体以操纵汽车。当你旅行时,你使用 Google Directions 来了解实时交通状况并遵循 Google 在该时间点建议的最佳路径。这是另一种实时物体检测技术的实现。

让我们考虑我们通常在访问外国时使用的 Google Translate 应用程序的示例。你手机上的 Google 在线翻译器应用程序可以帮助你用对你来说是外语的语言与当地人交流。

有许多 AI 应用程序是我们实际生活中正在使用的。事实上,我们每个人都在生活的许多方面使用了 AI,甚至在我们不知情的情况下。当今的 AI 可以以极高的准确性和速度执行极其复杂的工作。让我们讨论一个复杂任务的示例,以了解你今天为你的客户开发的 AI 应用程序中所期望的能力。

Example

我们所有人都使用 Google Directions ,无论是在城市中进行日常通勤还是进行城际旅行。Google 地图应用程序会在此时间实例建议最快的路线前往目的地。当我们遵循此路径时,我们观察到谷歌在其建议中几乎 100% 正确,并且我们在旅途中节省了宝贵的时间。

想象一下开发此类应用程序涉及的复杂性,考虑到到达目的地有多条路径,并且该应用程序必须判断每条路径中的交通状况,才能为每条路径提供旅行时间估算值。此外,还要考虑 Google 地图覆盖全球这一事实。毫无疑问,这类应用程序的引擎盖下运用了许多人工智能和机器学习技术。

考虑到对这类应用程序的持续需求,你现在就会明白为什么对具备人工智能技能的 IT 专业人士会出现突然需求。

在我们的下一章,我们将了解开发人工智能程序需要具备什么条件。

Machine Learning - Traditional AI

人工智能之旅始于 20 世纪 50 年代,当时的计算能力只是当今的一小部分。人工智能从机器按照统计人员使用计算器进行预测的方式进行预测开始。因此,最初整个人工智能开发主要基于统计技术。

在本章中,让我们详细讨论这些统计技术是什么。

Statistical Techniques

当今人工智能应用程序的开发始于使用古老的传统统计技术。你一定在学校里用过直线内插法来预测未来值。还有许多其他此类统计技术成功应用于开发所谓的 AI 程序。之所以称为“所谓的”,是因为我们今天拥有的人工智能程序要复杂得多,并且所使用的技术远远超出了早期人工智能程序所使用的统计技术。

以下是那些日子里用于开发 AI 应用程序且仍然在实践中的一些统计技术示例 -

  1. Regression

  2. Classification

  3. Clustering

  4. Probability Theories

  5. Decision Trees

此处,我们仅列出了一些基本的技巧,足以让你开始使用 AI,而不会让你害怕 AI 所需的广度。如果你正在基于有限数据开发 AI 应用程序,你将使用这些统计技术。

但是,如今的数据量很大。要分析我们所拥有的海量数据,统计技术无济于事,因为它们有一些自身的局限性。因此,开发了深度学习等更先进的方法来解决许多复杂的问题。

随着我们在这个教程中继续前进,我们将了解机器学习是什么以及它如何用于开发此类复杂的人工智能应用程序。

Machine Learning - What is Machine Learning?

考虑下图,其中显示了房屋价格与其面积(平方英尺)的关系图。

house prices versus

在 XY 图上绘制各个数据点之后,我们会绘制一条最佳拟合线,为任何其他房屋进行预测,条件是知道了它的面积。你将把已知数据输入机器并要求它找到最佳拟合线。一旦机器找到了最佳拟合线,你将通过输入已知的房屋面积来检验其适用性,即以上曲线中的 Y 值。机器现在将返回估计的 X 值,即房屋的预期价格。该图表可以外推以找出面积为 3000 平方英尺甚至更大的房屋的价格。这在统计中称为回归。具体来说,这种回归称为线性回归,因为 X 和 Y 数据点之间的关系是线性的。

在许多情况下,X 和 Y 数据点之间的关系可能不是直线,而可能是具有复杂方程的曲线。你现在要做的任务是找出最佳拟合曲线,该曲线可以外推以预测未来值。下图显示了一个这样的应用程序图。

predict future values

来源:

你将使用统计优化技术来找出这里最佳拟合曲线的方程。这正是机器学习的全部内容。你使用已知的优化技术来找出问题的最佳解决方案。

接下来,让我们看看机器学习的不同类别。

Machine Learning - Categories

机器学习大致归类如下所述 -

categories machine learning

正如上图所示,机器学习从左向右发展。

  1. 最初,研究人员从监督学习开始。这是前面讨论的房价预测的情况。

  2. 随后是无监督学习,其中机器在没有任何监督的情况下自主学习。

  3. 科学家进一步发现,在机器按预期的方式完成任务时奖励机器可能是个好主意,于是强化学习应运而生。

  4. 很快,如今可用的数据变得非常庞大,迄今为止开发的传统技术无法分析大数据并为我们提供预测。

  5. 因此,出现了深度学习,其中在二进制计算机中创建的人工神经网络 (ANN) 中模拟了人脑。

  6. 现在,机器利用如今可获得的高计算能力和巨量内存资源自主学习。

  7. 现在已经观察到,深度学习已经解决了以前许多无法解决的问题。

  8. 现在进一步通过给深度学习网络奖励作为奖励来推进该技术,最终出现了深度强化学习。

现在让我们更详细地研究每个类别。

Supervised Learning

监督式学习类似于训练孩子走路。你将牵着孩子的手,向他展示如何向前迈步,自己走路示范,等等,直到孩子学会自己走路。

Regression

类似地,在监督式学习的情况下,你会给计算机具体的已知示例。你说对于给定的特征值 x1 输出是 y1,对于 x2 是 y2,对于 x3 是 y3,等等。基于此数据,你让计算机找出 x 和 y 之间的经验关系。

一旦机器通过足够数量的数据点以这种方式进行训练,你现在会要求机器为给定的 X 预测 Y。假设你已知给定 X 的 Y 的真实值,你将能够推断出机器的预测是否正确。

因此,你将使用已知测试数据来测试机器是否已学习。一旦你满意机器能够以所需的准确度级别(例如 80% 到 90%)进行预测,就可以停止进一步训练机器。

现在,你可以安全地使用机器对未知数据点进行预测,或要求机器为给定 X 预测 Y,而你不知道 Y 的真实值。这种训练属于我们前面讨论的回归。

Classification

你还可以将机器学习技术用于分类问题。在分类问题中,你将类似性质的对象归类到一个组中。例如,在 100 名学生中,你可以根据他们的身高将他们分成三组——矮、中和高。通过测量每个学生的身高,你将他们放在适当的组中。

现在,当一名新学生进来时,你将通过测量他的身高将他放在适当的组中。通过遵循回归训练中的原则,你将训练机器根据他的特征(身高)对学生进行分类。当机器学会如何形成组后,它将能够正确分类任何未知的新学生。同样,在将开发的模型投入生产之前,你将使用测试数据来验证机器是否学会了你的分类技术。

监督学习是人工智能真正开始其旅程的地方。这项技术在多起案件中都得到了成功应用。你在机器上进行手写识别时使用了这个模型。已经为监督学习开发了几种算法。你将在以下章节中学习它们。

Unsupervised Learning

在无监督学习中,我们不为机器指定目标变量,而是询问机器“你能告诉我关于 X 的什么吗?”。更具体地说,我们可能会提出诸如给定一个庞大数据集 X,“我们可以从 X 中找出五个最佳组?”或“哪些特征在 X 中出现得最频繁?”这样的问题。为了得出这些问题的答案,你可以理解机器需要推导出策略所需的数据点数量非常庞大。在监督学习的情况下,机器甚至可以用大约数千个数据点进行训练。然而,在无监督学习的情况下,合理接受用于学习的数据点数量从数百万开始。如今,数据通常非常丰富。数据理想情况下需要整理。然而,在大多数情况下,社交区域网络中不断流入的数据量是无法完成的任务。

下图显示了通过无监督机器学习确定的黄色圆点和红色圆点之间的边界。你可以清楚地看到,机器将能够以相当高的准确度确定每个黑点的类别。

unsupervised machine learning

来源:

链接:https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boundary.png[[role="bare"] [role="bare"]https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png]

无监督学习在许多现代人工智能应用中取得了巨大的成功,比如人脸识别、物体检测,等等。

Reinforcement Learning

考虑训练一只宠物狗,我们训练我们的宠物给我们拿回一个球。我们将球扔到一个一定距离然后让狗把它拿回来给我们。每次狗这么做了,我们都给它奖励。慢慢地,狗学会了正确地完成这项工作会得到奖励,然后狗在下一次开始正确地完成工作。完全地,此概念应用于“强化”类型学习。此技术最初开发用于让机器玩游戏。机器会得到一个算法来分析游戏每个阶段的所有可能动作。机器可能会随机选择其中一个动作。如果动作正确,机器会得到奖励,否则它可能会受到惩罚。慢慢地,机器将开始区分正确和错误的动作,并且在多次迭代之后学会以更好的准确度解决游戏谜题。随着机器玩越来越多的游戏,赢得游戏的准确度会提高。

整个过程可以如以下图表所示:

game puzzle

这种机器学习技术不同于监督学习,因为它不需要提供标记的输入/输出对。重点是平衡探索新解决方案和使用学习到的解决方案。

Deep Learning

深度学习是基于人工智能神经网络 (ANN),更具体地说是卷积神经网络 (CNN) 的模型。深度学习中使用了很多架构,比如深度神经网络、深度信任网络、反向神经网络和卷积神经网络。

这些网络已成功用于解决计算机视觉、语音识别、自然语言处理、生物信息学、药物设计、医学图像分析和游戏中的问题。深度学习被积极应用于很多其他领域。深度学习需要巨大的处理能力和庞大的数据,而这些数据在如今通常很容易获取。

我们将在接下来的章节中更详细地探讨深度学习。

Deep Reinforcement Learning

深度强化学习 (DRL) 结合了深度学习和强化学习这两种技术。现在将 Q-learning 这样的强化学习算法与深度学习结合创建了一个功能强大的 DRL 模型。此技术在机器人、电子游戏、金融和医疗保健领域取得了巨大的成功。现在通过创建 DRL 模型解决了以前很多无法解决的问题。在这个领域有很多研究,很多产业也积极地关注着此领域。

目前,你已经初步了解了各种机器学习模型,现在让我们更深入地了解这些模型中可用的各种算法。

Machine Learning - Supervised

监督学习是最重要的机器训练学习模型之一。本章将详细介绍它。

Algorithms for Supervised Learning

许多算法可用于监督学习。下面展示了监督学习中一些广泛使用的算法−

  1. k-Nearest Neighbours

  2. Decision Trees

  3. Naive Bayes

  4. Logistic Regression

  5. Support Vector Machines

随着我们本章的学习,让我们详细讨论其中的每种算法。

k-Nearest Neighbours

k-最近邻域算法简称 kNN 是一种统计技术,可用于解决分类和回归问题。让我们讨论使用 kNN 对未知对象进行分类的情况。考虑如下图像所示的对象分布−

nearest neighbours

来源:

该图表显示三种类型的对象,分别用红色、蓝色和绿色标记。当您对上述数据集运行 kNN 分类器时,每种类型对象的边界将如下所示−

dataset boundaries

来源:

现在,考虑一个您想要将它分类为红色、绿色或蓝色的新的未知对象。如下图所示。

depicted figure

如您所见,未知数据点属于蓝色对象类别。从数学上讲,可以通过测量该未知点与数据集中每个其他点的距离来得出这个结论。当您这样做时,您将知道它的大多数邻居都是蓝色的。到红色和绿色对象的平均距离肯定大于到蓝色对象的平均距离。因此,可以将这个未知对象分类为属于蓝色类别。

kNN 算法还可以用于回归问题。kNN 算法在大多数 ML 库中都有现成的可供使用。

Decision Trees

简单的流程图格式决策树如下所示 −

flowchart format

您可以根据此流程图编写代码来对输入数据进行分类。这个流程图不言自明,而且很普通。在此场景中,您尝试对传入的电子邮件进行分类以决定何时阅读它。

实际上,决策树可能又大又复杂。有许多算法可用于创建和遍历这些树。作为机器学习爱好者,您需要理解和掌握创建和遍历决策树的这些技术。

Naive Bayes

朴素贝叶斯用于创建分类器。假设您想从一个水果篮中对不同种类的水果进行分类。您可以使用水果的颜色、大小和形状等特征,例如,任何颜色为红色、形状为圆形、直径约为 10 厘米的水果都可以被认为是苹果。因此,要训练模型,您将使用这些特征并测试给定特征与所需约束匹配的概率。然后将不同特征的概率组合起来,得出给定水果是苹果的概率。朴素贝叶斯通常需要少量的训练数据进行分类。

Logistic Regression

观察以下图表。它显示了数据点在 XY 平面中的分布。

distribution data points

从图表中,我们可以从视觉上检查红色点和绿色点的分离情况。您可以绘制一条边界线以分离出这些点。现在,要对新的数据点进行分类,你只需确定该点位于该线的哪一侧。

Support Vector Machines

观察以下数据分布。此处三类数据不能线性分离。边界曲线是非线性的。在这种情况下,找出手术的公式会变成一项复杂的工作。

non linear

数据来源: http://uc-r.github.io/svm

支持向量机 (SVM) 在这种情况下非常适合确定分离边界。

Machine Learning - Scikit-learn Algorithm

幸运的是,大多数情况下你不需要编写前面课程中提到的算法。有很多提供算法可用实现的标准库。其中一个经常使用的工具包是 scikit-learn。下图展示了此库中可供你使用的算法类型。

scikit learn

使用这些算法非常简单,由于它们经过了充分的现场测试,你可以安全地将它们用于你的 AI 应用。其中大多数库甚至可以免费用于商业目的。

Machine Learning - Unsupervised

迄今为止你所看到的都是让机器学习找到我们目标的解决方案。在回归中,我们训练机器预测一个未来值。在分类中,我们训练机器在我们定义的类目中对未知物体进行分类。总之,我们一直在训练机器以便它可以为我们的数据 X 预测 Y。给定一个巨大数据集并且不估计类目,我们很难使用监督学习训练机器。如果机器能够查阅并分析达到数百 GB 和 TB 的大数据并且告诉我们此数据包含很多不同的类目会怎样?

以选民数据为例。通过考虑每个选民的一些输入(在 AI 术语中称为特征),让机器预测有这么多的选民会为 X 政党投票,还有这么多的会为 Y 投票,等等。因此,总的来说,我们询问机器一个给定一个巨大的数据点 X 的数据集,“你能告诉我 X 的什么?”。或者它可能是一个类似于“我们可以从 X 中找出哪五个最好的组?”的问题。或者它甚至可以是“哪三个特征在 X 中一起出现的频率最高?”。

这正是无监督学习所要做的。

Algorithms for Unsupervised Learning

现在让我们讨论一下无监督学习中广泛使用的一种分类算法。

k-means clustering

2000 和 2004 年的美国总统选举都很接近——非常接近。任何候选人收到的最高普选票百分比为 50.7%,最低为 47.9%。如果有一定百分比的选民改变立场,选举的结果就会不同。有一些小团体选民,在适当劝说后会改变立场。这些团体可能并不庞大,但对于如此接近的竞选来说,他们可能足以改变选举结果。你如何找到这些人群?你如何用有限的预算吸引他们?答案是聚类。

让我们了解它是如何工作的。

  1. 首先,你收集有关人群的信息,无论是否征得他们的同意:任何可能提供一些关于什么对他们重要以及什么会影响他们投票意向的信息。

  2. 然后,将这些信息放入某种聚类算法中。

  3. 接下来,针对每个集群(明智的方法是先选择最大的一个),你需要制作一条吸引这些选民的信息。

  4. 最后,展示广告系列并进行衡量来查看其效果。

聚类是一种无监督学习,可自动形成相似事物的集群。这类似于自动分类。你可以对几乎所有事物进行聚类,集群中项目越相似,则集群越好。在本章中,我们将研究一种称为 k 均值聚类的聚类算法。称其为 k 均值,因为它找到“k”个独特的集群,每个集群的中心はその集群中的值的平均值。

Cluster Identification

集群识别告诉算法:“这里有一些数据。现在,将相似的事物组合在一起,并向我介绍这些组。”与分类的关键区别在于,在分类中,你了解正在寻找什么。然而,在聚类中则不是这种情况。

聚类有时被称为无监督分类,因为它产生与分类相同的结果,但无需预先定义类。

现在,我们对有监督学习和无监督学习都感到满意。为了理解机器学习类别的其余部分,我们必须首先理解人工神经网络 (ANN),我们将在下一章中学习它。

Machine Learning - Artificial Neural Networks

人工神经网络的概念源自人脑中的神经网络。人脑非常复杂。通过仔细研究大脑,科学家和工程师提出了一种架构,可以融入我们二进制计算机的数字世界。一种此类典型架构如下图所示 −

artificial neural networks

它有一个输入层,其中有许多传感器,可以用它们从外部世界收集数据。在右侧,我们有一个输出层,它为我们提供了网络预测的结果。在这两者之间,隐藏着许多层。每增加一层,在训练网络时都会增加复杂性,但它会在大多数情况下提供更好的结果。我们现在将讨论设计了几种类型的架构。

ANN Architectures

下图显示了几个在一段时间内开发的人工神经网络架构,并且目前正在实践中使用。

ann architectures

来源:

链接:https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464[[role="bare"] [role="bare"]https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464 ]

每个架构针对特定类型的应用程序开发。因此,当你为你的机器学习应用程序使用神经网络时,你将必须使用现有架构的其中一种或设计自己的架构。你最终确定的应用程序类型取决于应用程序需求。没有单一的准则告诉你使用特定的网络架构。

Machine Learning - Deep Learning

深度学习使用人工神经网络。首先,我们将了解一些深度学习应用程序,它们将让你了解其功能。

Applications

深度学习已在机器学习应用程序的多个领域显示出很大的成功。

Self-driving Cars − 自动自动驾驶汽车使用深度学习技术。它们通常适应不断变化的交通状况,随着时间的推移变得越来越擅长驾驶。

Speech Recognition − 深度学习的另一个有趣应用是语音识别。我们所有人今天都使用能够识别我们语音的几个移动应用程序。苹果的 Siri、亚马逊的 Alexa、微软的 Cortena 和谷歌的助理——所有这些都使用深度学习技术。

Mobile Apps − 我们使用多个基于 Web 和移动的应用程序来组织我们的照片。人脸检测、人脸识别、人脸标记、识别图像中的物体——所有这些都使用深度学习。

Untapped Opportunities of Deep Learning

在看到深度学习应用程序在许多领域取得巨大成功后,人们开始探索到目前为止尚未应用机器学习的其他领域。有几个领域成功应用了深度学习技术,还有许多其他领域可以加以利用。这里讨论其中的一些领域。

  1. 农业就是这样一个行业,人们可以应用深度学习技术以提高作物产量。

  2. 消费金融是机器学习可以帮助及早发现欺诈行为并分析客户的偿还能力的另一领域。

  3. 深度学习技术也应用于医学领域,用于创建新药和针对病人提供个性化处方。

可能性是无穷无尽的,而且新观念和新发展层出不穷,需要随时关注。

What is Required for Achieving More Using Deep Learning

要使用深度学习,超级计算能力是强制性要求。需要内存和 CPU 来开发深度学习模型。幸运的是,现在我们已经能够轻松获得高性能计算 (HPC)。因此,我们上面提到的深度学习应用程序的开发成为现实,而且在未来,我们还可以在我们之前讨论的那些尚未开发的领域看到应用程序。

现在,我们将了解在机器学习应用程序中使用深度学习之前我们必须考虑的一些限制。

Deep Learning Disadvantages

以下是使用深度学习之前需要考虑的一些重要要点:

  1. Black Box approach

  2. Duration of Development

  3. Amount of Data

  4. Computationally Expensive

现在,我们将详细研究其中每一项限制。

Black Box approach

ANN 就像一个黑盒子。你给它一个特定的输入,它将为你提供一个特定的输出。下图显示了一个这样的应用程序,你将动物图像馈送到神经网络,它告诉你图像是一只狗。

black box approach

为什么这被称为黑匣子方法,是因为你不知道网络为什么会得出某个结果。你不知道网络是怎么得出它是狗的结论的?现在考虑一个银行应用程序,银行希望决定客户的信用度。该网络一定会为你提供这个问题的答案。然而,你能够向客户解释吗?银行需要向客户解释为什么贷款未获得批准?

Duration of Development

下图描述了训练神经网络的过程:

duration of development

你首先定义要解决的问题,为此创建规范,确定输入特征,设计网络,部署它并测试输出。如果输出不符合预期,请将其作为反馈来重新构建网络。这是一个迭代过程,可能需要多次迭代,直到网络完全训练好以产生所需的输出。

Amount of Data

深度学习网络通常需要大量数据才能进行训练,而即使只有几千个数据点,传统的机器学习算法也能成功使用。幸运的是,如以下图表所示,数据丰度每年增长 40%,而 CPU 处理能力每年增长 20%。

amount of data

Computationally Expensive

训练神经网络所需的计算能力比运行传统算法所需的能力高出数倍。深度神经网络的成功训练可能需要数周的训练时间。

相比之下,传统的机器学习算法只需要几分钟/小时的训练时间。此外,训练深度神经网络所需的计算能力在很大程度上取决于你的数据大小以及网络的深度和复杂程度?

在概述了机器学习是什么、它的功能、限制和应用之后,让我们深入学习“机器学习”。

Machine Learning - Skills

机器学习的宽度非常大,需要跨多个领域的技能。以下列出了成为机器学习专家所需的技能:

  1. Statistics

  2. Probability Theories

  3. Calculus

  4. Optimization techniques

  5. Visualization

Necessity of Various Skills of Machine Learning

为了让你简要了解需要获得哪些技能,让我们讨论一些示例:

Mathematical Notation

大多数机器学习算法在很大程度上基于数学。你需要了解的数学水平可能只是初学者水平。重要的是你应该能够阅读数学家在方程式中使用的符号。例如 - 如果你能够阅读符号并理解其含义,那么你就可以学习机器学习了。如果没有,你可能需要复习一下你的数学知识。

f_{AN}(net-\theta)=\begin{cases}\gamma & if\:net-\theta \geq \epsilon\\net-\theta & if - \epsilon< net-\theta <\epsilon\\ -\gamma & if\:net-\theta\leq- \epsilon\end{cases}

\displaystyle\\\max\limits_{\alpha}\begin{bmatrix}\displaystyle\sum\limits_{i=1}^m \alpha-\frac{1}{2}\displaystyle\sum\limits_{i,j=1}^m label^\left(\begin{array}{c}i\\ \end{array}\right)\cdot\:label^\left(\begin{array}{c}j\\ \end{array}\right)\cdot\:a_{i}\cdot\:a_{j}\langle x^\left(\begin{array}{c}i\\ \end{array}\right),x^\left(\begin{array}{c}j\\ \end{array}\right)\rangle \end{bmatrix}

f_{AN}(net-\theta)=\left(\frac{e {\lambda(net-\theta)}-e {-\lambda(net-\theta)}}{e {\lambda(net-\theta)}+e {-\lambda(net-\theta)}}\right)\;

Probability Theory

这是一个测试你当前概率论知识的例子:使用条件概率进行分类。

p(c_{i}|x,y)\;=\frac{p(x,y|c_{i})\;p(c_{i})\;}{p(x,y)\;}

使用这些定义,我们可以定义贝叶斯分类规则—

  1. 如果 P(c1|x, y) > P(c2|x, y) ,则该类为 c1 。

  2. 如果 P(c1|x, y) < P(c2|x, y) ,则该类为 c2 。

Optimization Problem

这是一个优化函数

\displaystyle\\\max\limits_{\alpha}\begin{bmatrix}\displaystyle\sum\limits_{i=1}^m \alpha-\frac{1}{2}\displaystyle\sum\limits_{i,j=1}^m label^\left(\begin{array}{c}i\\ \end{array}\right)\cdot\:label^\left(\begin{array}{c}j\\ \end{array}\right)\cdot\:a_{i}\cdot\:a_{j}\langle x^\left(\begin{array}{c}i\\ \end{array}\right),x^\left(\begin{array}{c}j\\ \end{array}\right)\rangle \end{bmatrix}

受以下约束的限制—

\alpha\geq0,并且\:\displaystyle\sum\limits_{i-1}^m \alpha_{i}\cdot\:label^\left(\begin{array}{c}i\\ \end{array}\right)=0

如果你能够理解以上内容,那么你已经准备好了。

Visualization

在很多情况下,你将需要理解各种可视化图,以了解你的数据分布并解释算法输出的结果。

visualization plots

除了机器学习的以上理论方面,你还需要好的编程技能来编写这些算法。

那么,实现机器学习需要什么呢?让我们在下一章节中研究一下。

Machine Learning - Implementing

要开发机器学习应用程序,您必须决定平台、IDE 和用于开发的语言。有几种选择。其中大多数可以轻松满足您的要求,因为它们都提供了到目前为止讨论的 AI 算法的实现。

如果您自己开发机器学习算法,则需要仔细理解以下几个方面:

你选择的语言—这本质上是你对机器学习开发中支持的一种语言的熟练程度。

你使用的 IDE—这取决于你对现有 IDE 的熟悉程度以及你的舒适度。

Development platform - 有几个平台可用于开发和部署。其中大部分都是免费使用的。在某些情况下,您可能需要在使用量超过一定数量后支付许可费。以下是备选语言、IDE 和平台的简要列表,供您参考。

Language Choice

以下是支持机器学习开发的语言列表:

  1. Python

  2. R

  3. Matlab

  4. Octave

  5. Julia

  6. C++

  7. C

此列表并不是全面详尽的;但是,它涵盖了许多用于机器学习开发的流行语言。根据您的舒适程度,选择一种语言进行开发、开发模型并进行测试。

IDEs

以下是支持机器学习开发的 IDE 列表:

  1. R Studio

  2. Pycharm

  3. iPython/Jupyter Notebook

  4. Julia

  5. Spyder

  6. Anaconda

  7. Rodeo

  8. Google –Colab

上述列表并非全面详尽。每个都有其优点和缺点。鼓励读者在缩小范围到一个之前尝试这些不同的 IDE。

Platforms

以下是一些可以部署机器学习应用程序的平台的列表—

  1. IBM

  2. Microsoft Azure

  3. Google Cloud

  4. Amazon

  5. Mlflow

此列表再次不是穷举的。鼓励读者报名上述服务并自己尝试。

Machine Learning - Conclusion

本教程向你介绍了机器学习。现在,你知道机器学习是一种训练机器执行人类大脑可以执行的活动的技术,尽管速度比普通人快一点,而且比普通人更好。今天,我们已经看到机器可以在诸如国际象棋、AlphaGo 等被认为非常复杂的游戏中击败人类冠军。你已经看到机器可以接受训练在多个领域执行人类活动,并可以帮助人类过上更好的生活。

机器学习可以是监督学习或非监督学习。如果你有较少的数据和明确标记的训练数据,请选择监督式学习。非监督学习通常会产生更好的性能和结果,适用于大量数据集。如果你有一个巨大的数据集合,很容易获得,那就采用深度学习技术吧。你也可以学习强化学习和深度强化学习。你现在知道什么是神经网络,它们的应用程序和限制。

最后,当涉及到开发你自己的机器学习模型时,你已经研究了各种开发语言、IDE 和平台的选择。接下来你需要做的事情就是开始学习和实践每一种机器学习技术。该学科很广泛,这意味着它有广度,但如果你考虑深度,那么每个主题可以在几个小时内学会。每个主题都是相互独立的。你需要一次考虑一个主题,学习它,练习它并使用你选择的语言实现算法。这是开始学习机器学习的最佳方式。一次练习一个主题,你很快就会获得机器学习专家最终所需的能力。

祝你好运!