# 机器学习算法迷你课程

> 原文： [https://machinelearningmastery.com/machine-learning-algorithms-mini-course/](https://machinelearningmastery.com/machine-learning-algorithms-mini-course/)

机器学习算法是机器学习的重要组成部分。

您必须了解他们如何努力在该领域取得任何进展。

在这篇文章中，您将发现一个14部分的机器学习算法迷你课程，您可以遵循该课程以最终理解机器学习算法。

我们将在本课程中介绍很多内容，您将度过一段美好的时光。让我们开始吧。

![Machine Learning Algorithms Mini-Course](img/0bdf58a585ba4b46d0ce9e3e008db60a.jpg)

机器学习算法迷你课程
摄影： [Jared Tarbell](https://www.flickr.com/photos/generated/3881682653/) ，保留一些权利。

## 这门课程是谁？

在我们开始之前，让我们确保您在正确的位置。

*   本课程适合初学者对机器学习算法的好奇心。
*   本课程不假设您知道如何编写代码。
*   本课程不假设数学背景。
*   本课程不假设机器学习理论的背景。

这个迷你课程将带您参考基础的机器学习算法和10种顶级技术。

我们将访问每个算法，让您了解它是如何工作的，但不要过于深入地保持移动。

## 迷你课程概述

让我们来看看我们将在接下来的14节课中介绍的内容。

您可能需要一次又一次地回到此帖子，因此您可能想要将其加入书签。

这个迷你课程分为四个部分：算法基础，线性算法，非线性算法和集成算法。

### 算法基础

*   **第1课**：如何在机器学习中谈论数据
*   **第2课**：支持所有算法的原则
*   **第3课**：参数和非参数算法
*   **第4课**：偏见，差异和权衡

### 线性算法

*   **第5课**：线性回归
*   **第6课**：逻辑回归
*   **第7课**：线性判别分析

### 非线性算法

*   **第8课**：分类和回归树
*   **第9课**：朴素贝叶斯
*   **第10课**：k-最近邻居
*   **第11课**：学习向量量化
*   **第12课**：支持向量机

### 集成算法

*   **第13课**：套袋和随机森林
*   **第14课**：提升和AdaBoost

## 获取免费算法思维导图

![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg)

方便的机器学习算法思维导图的样本。

我已经创建了一个由类型组织的60多种算法的方便思维导图。

下载，打印并使用它。

## 第1课：如何在机器学习中讨论数据

数据在机器学习中起着重要作用。

在谈论数据时，理解并使用正确的术语非常重要。

您如何看待数据？想想电子表格。您有列，行和单元格。

机器学习的统计视角在机器学习算法旨在学习的假设函数（f）的上下文中构建数据。给定一些输入变量（输入），该函数回答关于预测输出变量（输出）的问题。

输出= f（输入）

输入和输出可以称为变量或向量。

计算机科学观点使用一行数据来描述实体（如人）或关于实体的观察。因此，行的列通常称为观察的属性，行本身称为实例。

## 第2课：支持所有算法的原则

有一个共同的原则是所有监督机器学习算法的基础，用于预测性建模。

机器学习算法被描述为学习目标函数（f），其最佳地将输入变量（X）映射到输出变量（Y）。

Y = f（X）

这是一个通用的学习任务，我们希望在未来（Y）中给出预测输入变量（X）的新例子。我们不知道函数（f）的外观或形式。如果我们这样做，我们将直接使用它，我们不需要使用机器学习算法从数据中学习它。

最常见的机器学习类型是学习映射Y = f（X）来预测新X的Y.这称为预测性建模或预测分析，我们的目标是使最准确的预测成为可能。

## 第3课：参数和非参数算法

什么是参数化机器学习算法？它与非参数机器学习算法有什么不同？

假设可以大大简化学习过程，但也可以限制可以学习的内容。将函数简化为已知形式的算法称为参数机器学习算法。

算法包括两个步骤：

1.  选择功能的表单。
2.  从训练数据中学习函数的系数。

参数机器学习算法的一些示例是线性回归和逻辑回归。

不对映射函数的形式做出强有力假设的算法称为非参数机器学习算法。通过不做出假设，他们可以自由地从训练数据中学习任何功能形式。

非参数方法通常更灵活，实现更高的准确率，但需要更多的数据和训练时间。

非参数算法的示例包括支持向量机，神经网络和决策树。

## 第4课：偏见，差异和权衡

通过偏方差权衡的镜头可以最好地理解机器学习算法。

偏差是模型所做的简化假设，使目标函数更容易学习。

通常，参数算法具有较高的偏差，使得它们学习起来快速且易于理解，但通常不太灵活。反过来，它们对复杂问题的预测表现较低，而这些复杂问题无法满足算法偏差的简化假设。

决策树是低偏差算法的示例，而线性回归是高偏差算法的示例。

方差是如果使用不同的训练数据，目标函数的估计将改变的量。目标函数是通过机器学习算法从训练数据估计的，因此我们应该期望算法具有一些方差，而不是零方差。

K 最近邻算法是高方差算法的一个例子，而线性判别分析是低方差算法的一个例子。

任何预测性建模机器学习算法的目标是实现低偏差和低方差。反过来，该算法应该实现良好的预测表现。机器学习算法的参数化通常是平衡偏差和方差的斗争。

*   增加偏差会减少差异。
*   增加方差将减少偏差。

## 第5课：线性回归算法

线性回归可能是统计学和机器学习中最知名且易于理解的算法之一。

这不是一项统计技术吗？

预测性建模主要关注最小化模型的误差或使可能性最准确的预测，但代价是可解释性。我们将借用，重用和窃取来自许多不同领域的算法，包括统计量并将其用于这些目的。

线性回归的表示是通过找到称为系数（B）的输入变量的特定权重来描述最符合输入变量（x）和输出变量（y）之间关系的线的等式。

例如：

y = B0 + B1 * x

我们将在给定输入x的情况下预测y，并且线性回归学习算法的目标是找到系数B0和B1的值。

可以使用不同的技术从数据中学习线性回归模型，例如用于普通最小二乘和梯度下降优化的线性代数解。

线性回归已经存在了200多年，并且已经被广泛研究。使用此技术时，一些好的经验法则是删除非常相似（相关）的变量，并尽可能消除数据中的噪音。

这是一种快速而简单的技术和良好的第一种算法。

## 第6课：逻辑回归算法

逻辑回归是统计领域机器学习所借用的另一种技术。它是二分类问题的首选方法（具有两个类值的问题）。

逻辑回归就像线性回归一样，目标是找到加权每个输入变量的系数的值。

与线性回归不同，使用称为逻辑函数的非线性函数来转换输出的预测。

逻辑函数看起来像一个大S，并将任何值转换为0到1的范围。这很有用，因为我们可以将一个规则应用于逻辑函数的输出，以将值捕捉到0和1（例如IF小于0.5然后输出1）并预测一个类值。

由于学习模型的方式，逻辑回归所做的预测也可以用作属于0级或1级的给定数据实例的概率。这对于需要给出更多理由的问题非常有用。一个预测。

与线性回归一样，当您删除与输出变量无关的属性以及彼此非常相似（相关）的属性时，逻辑回归确实更有效。

这是一个学习二分类问题的快速模型。

## 第7课：线性判别分析算法

逻辑回归是一种传统上仅限于两类分类问题的分类算法。如果您有两个以上的类，则线性判别分析算法是首选的线性分类技术。

LDA的代表非常简单。它包含数据的统计属性，为每个类计算。对于单个输入变量，这包括：

1.  每个班级的平均值。
2.  在所有类别中计算的方差。

通过计算每个类的判别值并对具有最大值的类做出预测来做出预测。

该技术假设数据具有高斯分布（钟形曲线），因此最好事先从数据中删除异常值。

它是分类预测性建模问题的一种简单而强大的方法。

## 第8课：分类和回归树

决策树是用于预测性建模机器学习的重要算法类型。

决策树模型的表示是二叉树。这是来自算法和数据结构的二叉树，没什么太花哨的。每个节点表示单个输入变量（x）和该变量上的分割点（假设变量是数字）。

树的叶节点包含用于做出预测的输出变量（y）。通过遍历树的分裂直到到达叶节点并在该叶节点处输出类值来做出预测。

树木学习速度快，预测速度非常快。它们通常也可以解决各种问题，并且不需要对数据进行任何特殊准备。

决策树具有很大的方差，并且在集合中使用时可以产生更准确的预测，我们将在第13课和第14课中讨论这个主题。

## 第9课：朴素贝叶斯算法

Naive Bayes是一种简单但令人惊讶的强大的预测性建模算法。

该模型由两种类型的概率组成，可以直接从您的训练数据中计算出来：

1.  每个班级的概率。
2.  给出每个x值的每个类的条件概率。

一旦计算，概率模型可用于使用贝叶斯定理对新数据做出预测。

当您的数据是实值时，通常假设高斯分布（钟形曲线），以便您可以轻松估计这些概率。

朴素贝叶斯被称为朴素，因为它假设每个输入变量是独立的。这是一个强有力的假设，对于实际数据是不现实的，然而，该技术对于大范围的复杂问题非常有效。

## 第10课：K 最近邻算法

KNN算法非常简单且非常有效。

KNN的模型表示是整个训练数据集。简单吧？

通过搜索K个最相似的实例（邻居）的整个训练集并总结那些K个实例的输出变量，对新数据点做出预测。对于回归，这可能是平均输出变量，在分类中，这可能是模式（或最常见）类值。

诀窍在于如何确定数据实例之间的相似性。如果您的属性具有相同的比例（例如，以英寸为单位），则最简单的技术是使用欧几里德距离，您可以根据每个输入变量之间的差异直接计算该数字。

KNN可能需要大量内存或空间来存储所有数据，但仅在需要预测时才进行计算（或学习），及时。您还可以随着时间的推移更新和策划您的训练实例，以保持预测准确。

距离或接近度的概念可以在非常高的维度（许多输入变量）中分解，这会对算法在您的问题上的表现产生负面影响。这被称为维度的诅咒。它建议您仅使用与预测输出变量最相关的输入变量。

## 第11课：学习向量量化

K 最近邻的缺点是你需要坚持整个训练数据集。

学习向量量化算法（或简称LVQ）是一种人工神经网络算法，允许您选择要挂起的训练实例数量，并准确了解这些实例应该是什么样子。

LVQ的表示是码本向量的集合。这些是在开始时随机选择的，并且适于在学习算法的多次迭代中最佳地总结训练数据集。

在学习之后，可以使用码本向量来进行与K 最近邻类似的预测。通过计算每个码本向量和新数据实例之间的距离来找到最相似的邻居（最佳匹配码本向量）。然后返回最佳匹配单元的类值或（回归情况下的实际值）作为预测。

如果将数据重新缩放到相同范围（例如0到1之间），则可获得最佳结果。

如果您发现KNN在您的数据集上提供了良好的结果，请尝试使用LVQ来降低存储整个训练数据集的内存要求。

## 第12课：支持向量机

支持向量机可能是最流行和最受关注的机器学习算法之一。

超平面是分割输入变量空间的线。在SVM中，选择超平面以最好地将输入变量空间中的点与其类（0级或1级）分开。

在二维中，您可以将其可视化为一条线，并假设我们的所有输入点都可以被此线完全分开。

SVM学习算法找到导致超平面最好地分离类的系数。

超平面与最近数据点之间的距离称为边距。可以将两个类分开的最佳或最佳超平面是作为最大边距的线。

只有这些点与定义超平面和分类器的构造有关。

这些点称为支持向量。它们支持或定义超平面。

实际上，优化算法用于找到使裕度最大化的系数的值。

SVM可能是最强大的开箱即用分类器之一，值得尝试使用您的数据集。

## 第13课：套袋和随机森林

随机森林是最流行和最强大的机器学习算法之一。它是一种称为Bootstrap Aggregation或bagging的集成机器学习算法。

引导程序是一种用于从数据样本中估计数量的强大统计方法。比如一个意思。您可以获取大量的数据样本，计算平均值，然后平均所有平均值，以便更好地估计真实平均值。

在装袋中，使用相同的方法，但是用于估计整个统计模型，最常见的是决策树。

获取训练数据的多个样本，然后为每个数据样本构建模型。当您需要对新数据做出预测时，每个模型都会做出预测，并对预测进行平均以更好地估计真实输出值。

随机森林是对这种方法的一种调整，其中创建决策树，使得不是选择最佳分裂点，而是通过引入随机性来进行次优分割。

因此，为每个数据样本创建的模型与其他情况相比更加不同，但仍然以其独特和不同的方式准确。结合他们的预测可以更好地估计真实的基础产值。

如果使用具有高方差的算法（如决策树）获得良好的结果，通常可以通过装袋算法获得更好的结果。

## 第14课：提升和AdaBoost

Boosting是一种集合技术，试图从许多弱分类器中创建一个强分类器。

这是通过从训练数据构建模型，然后创建第二个模型来尝试从第一个模型中纠正错误来完成的。添加模型直到完美预测训练集或添加最大数量的模型。

AdaBoost是第一个为二分类开发的真正成功的增强算法。这是理解助力的最佳起点。现代助推方法建立在AdaBoost上，最着名的是随机梯度增强机。

AdaBoost用于短决策树。在创建第一个树之后，每个训练实例上的树的表现用于加权创建的下一个树应该关注每个训练实例的注意力。难以预测的训练数据被赋予更多权重，而易于预测的实例被赋予更少的权重。

模型一个接一个地顺序创建，每个模型更新训练实例上的权重，这些权重影响序列中下一个树所执行的学习。

构建完所有树之后，将对新数据做出预测，并根据训练数据的准确率对每棵树的表现进行加权。

因为通过算法如此关注纠正错误，所以必须删除带有异常值的干净数据。

## 迷你课程评论

你做到了。做得好！花点时间回顾一下你走了多远：

*   您发现了如何在机器学习中讨论数据以及所有预测性建模算法的基本原理。
*   您发现了参数和非参数算法之间的差异以及偏差和方差引入的误差之间的差异。
*   您发现了三种线性机器学习算法：线性回归，逻辑回归和线性判别分析。
*   你被介绍了5种非线性算法：分类和回归树，朴素贝叶斯，K-最近邻，学习向量量化和支持向量机。
*   最后，您发现了两种最流行的集成算法：使用决策树进行装袋和使用AdaBoost进行提升。

不要轻视这一点，你在很短的时间内走了很长的路。这只是机器学习算法之旅的开始。继续练习和发展你的技能。

你喜欢这个迷你课吗？
您有任何问题或疑点吗？

发表评论并告诉我。