Skip to content

Latest commit

 

History

History
445 lines (297 loc) · 9.35 KB

gentle-introduction-vectors-machine-learning.md

File metadata and controls

445 lines (297 loc) · 9.35 KB

机器学习向量的温和介绍

原文: https://machinelearningmastery.com/gentle-introduction-vectors-machine-learning/

向量是线性代数的基本元素。

在训练算法时,在算法和过程(例如目标变量(y))的描述中,在整个机器学习领域中使用向量。

在本教程中,您将发现用于机器学习的线性代数向量。

完成本教程后,您将了解:

  • 什么是向量以及如何使用 NumPy 在 Python 中定义一个向量。
  • 如何执行加法,减法,乘法和除法等向量运算。
  • 如何使用标量执行点积和乘法等附加操作。

让我们开始吧。

A Gentle Introduction to Vectors for Machine Learning

机器学习向量的温和介绍 Lachlan Donald 的照片,保留一些权利。

教程概述

本教程分为 5 个部分;他们是:

  1. 什么是向量?
  2. 定义向量
  3. 向量算术
  4. 向量点产品
  5. 向量标量乘法

什么是向量?

向量是一个或多个称为标量的值的元组。

向量由组件构建,组件是普通数字。您可以将向量视为数字列表,将向量代数视为对列表中的数字执行的操作。

向量通常用小写字符表示,例如“v”;例如:

v = (v1, v2, v3)

其中 v1,v2,v3 是标量值,通常是实数值。

向量也使用垂直表示或列显示;例如:

      v1
v = ( v2 )
      v3

在描述机器学习算法的训练时,通常将目标变量表示为具有小写“y”的向量。

通常使用几何类比引入向量,其中向量表示 n 维空间中的点或坐标,其中 n 是维数的数量,例如 2。

向量也可以被认为是来自向量空间的原点的线,具有方向和幅度。

这些类比作为一个起点很好,但不应该太紧,因为我们经常考虑机器学习中非常高的维度向量。我发现向量坐标是机器学习中最引人注目的类比。

现在我们知道了一个向量是什么,让我们来看看如何在 Python 中定义一个向量。

定义向量

我们可以将 Python 中的向量表示为 NumPy 数组。

可以从数字列表创建 NumPy 数组。例如,下面我们定义一个长度为 3 且整数值为 1,2 和 3 的向量。

# create a vector
from numpy import array
v = array([1, 2, 3])
print(v)

该示例定义了具有 3 个元素的向量。

运行该示例将打印定义的向量。

[1 2 3]

向量算术

在本节中将演示简单的向量向量算法,其中所有操作在两个相等长度的向量之间以元素方式执行,以产生具有相同长度的新向量

向量加法

可以将两个相等长度的向量相加在一起以创建新的第三向量。

c = a + b

新向量与其他两个向量具有相同的长度。新向量的每个元素被计算为在相同索引处添加其他向量的元素;例如:

a + b = (a1 + b1, a2 + b2, a3 + b3)

或者,换句话说:

c[0] = a[0] + b[0]
c[1] = a[1] + b[1]
c[2] = a[2] + b[2]

我们可以通过添加 NumPy 数组直接在 Python 中添加向量。

# add vectors
from numpy import array
a = array([1, 2, 3])
print(a)
b = array([1, 2, 3])
print(b)
c = a + b
print(c)

该示例定义了两个向量,每个向量具有三个元素,然后将它们相加。

首先运行该示例打印两个父向量然后打印一个新向量,该向量是两个向量的相加。

[1 2 3]

[1 2 3]

[2 4 6]

向量减法

可以从另一个相等长度的向量中减去一个向量以创建新的第三向量。

c = a - b

与加法一样,新向量具有与父向量相同的长度,并且新向量的每个元素被计算为相同索引处的元素的减法。

a - b = (a1 - b1, a2 - b2, a3 - b3)

Or, put another way:

c[0] = a[0] - b[0]
c[1] = a[1] - b[1]
c[2] = a[2] - b[2]

可以在 Python 中直接减去 NumPy 数组。

# subtract vectors
from numpy import array
a = array([1, 2, 3])
print(a)
b = array([0.5, 0.5, 0.5])
print(b)
c = a - b
print(c)

该示例定义了两个向量,每个向量包含三个元素,然后从第二个向量中减去第一个向量。

首先运行该示例打印两个父向量,然后打印第一个减去第二个的新向量。

[1 2 3]

[ 0.5 0.5 0.5]

[ 0.5 1.5 2.5]

向量乘法

两个相等长度的向量可以相乘。

c = a * b

与加法和减法一样,该操作以元素方式执行以产生相同长度的新向量。

a * b = (a1 * b1, a2 * b2, a3 * b3)

要么

ab = (a1b1, a2b2, a3b3)

Or, put another way:

c[0] = a[0] * b[0]
c[1] = a[1] * b[1]
c[2] = a[2] * b[2]

我们可以直接在 NumPy 中执行此操作。

# multiply vectors
from numpy import array
a = array([1, 2, 3])
print(a)
b = array([1, 2, 3])
print(b)
c = a * b
print(c)

该示例定义了两个向量,每个向量具有三个元素,然后将向量相乘。

首先运行该示例打印两个父向量,然后打印新向量。

[1 2 3]

[1 2 3]

[1 4 9]

向量分部

可以划分两个相等长度的向量。

c = a / b

与其他算术运算一样,此操作以元素方式执行,以产生相同长度的新向量。

a / b = (a1 / b1, a2 / b2, a3 / b3)

or

a / b = (a1b1, a2b2, a3b3)

Or, put another way:

c[0] = a[0] / b[0]
c[1] = a[1] / b[1]
c[2] = a[2] / b[2]

We can perform this operation directly in NumPy.

# divide vectors
from numpy import array
a = array([1, 2, 3])
print(a)
b = array([1, 2, 3])
print(b)
c = a / b
print(c)

该示例定义了两个向量,每个向量具有三个元素,然后将第一个除以第二个。

首先运行该示例打印两个父向量,然后是向量分割的结果。

[1 2 3]

[1 2 3]

[ 1\. 1\. 1.]

向量点产品

我们可以计算两个相同长度向量的相乘元素之和,得到一个标量。

这称为点积,由于在描述操作时使用的点运算符而命名。

点积是计算向量投影,向量分解和确定正交性的关键工具。名称点积来自用于表示它的符号。

c = a . b

该操作可用于机器学习以计算向量的加权和。

点积计算如下:

a . b = (a1 * b1 + a2 * b2 + a3 * b3)

or

a . b = (a1b1 + a2b2 + a3b3)

我们可以使用 NumPy 数组上的 dot()函数计算 Python 中两个向量之间的点积。

# dot product vectors
from numpy import array
a = array([1, 2, 3])
print(a)
b = array([1, 2, 3])
print(b)
c = a.dot(b)
print(c)

该示例定义了两个向量,每个向量包含三个元素,然后计算点积。

运行该示例首先打印两个父向量,然后打印标量点积。

[1 2 3]

[1 2 3]

14

向量标量乘法

向量可以乘以标量,实际上缩放向量的大小。

为了使符号简单,我们将使用小写“s”来表示标量值。

c = s * v

or

c = sv

对向量的每个元素执行乘法,以产生相同长度的新缩放向量。

s * v = (s * v1, s * v2, s * v3)

Or, put another way:

c[0] = a[0] * s
c[1] = a[1] * s
c[2] = a[2] * s

我们可以直接使用 NumPy 数组执行此操作。

# vector-scalar multiplication
from numpy import array
a = array([1, 2, 3])
print(a)
s = 0.5
print(s)
c = s * a
print(c)

该示例首先定义向量,然后标量将向量乘以标量。

首先运行示例打印父向量,然后打印标量,然后将两者相乘的结果。

[1 2 3]

0.5

[ 0.5 1\. 1.5]

类似地,向量标量加法,减法和除法可以以相同的方式执行。

扩展

本节列出了一些扩展您可能希望探索的教程的想法。

  • 使用您自己的数据使用每个操作创建 5 个示例。
  • 为定义为列表的向量手动实现每个向量操作。
  • 搜索机器学习论文并找到每个正在使用的操作的示例。

如果你探索任何这些扩展,我很想知道。

进一步阅读

如果您希望深入了解,本节将提供有关该主题的更多资源。

图书

API

用品

摘要

在本教程中,您发现了用于机器学习的线性代数向量。

具体来说,你学到了:

  • 什么是向量以及如何使用 NumPy 在 Python 中定义一个向量。
  • 如何执行加法,减法,乘法和除法等向量运算。
  • 如何使用标量执行点积和乘法等附加操作。

你有任何问题吗? 在下面的评论中提出您的问题,我会尽力回答。