dot 快速的未来即将在您所在的城市举行活动。

加入我们参加 Redis 发布会

Redis-ML 简介 (第四部分)

这篇文章是介绍 Redis-ML 模块的一系列文章中的第四篇。 本系列的第一篇文章可以在 这里 找到。 

在这篇文章中,我们将研究 Redis-ML 模块提供的矩阵运算,并展示一些使用 Redis 数据库处理矩阵数据的示例。

技术要求

这篇文章中的示例代码是用 Python 编写的,需要运行 Redis-ML 的 Redis 实例。 有关设置 Redis 的说明可以在本系列的 第一部分第二部分 中找到。 

Redis 中的矩阵

来自 Wikimedia 矩阵乘法文章的矩阵乘法图

矩阵在机器学习、统计、金融和其他领域很常见,因此它们是 Redis 的一个自然补充。 Redis-ML 模块将矩阵添加为 Redis 的原生数据类型。 它还提供了将矩阵组合起来以创建新值的数学运算。

读取和写入矩阵值是通过 ML.MATRIX.SET 和 ML.MATRIX.GET 命令执行的,它们具有以下语法

ML.MATRIX.SET key n m entry11 .. entrynm
ML.MATRIX.GET key

在使用 Redis-ML 模块时,请记住,命令使用 行优先 格式。 乘法和加法由 ML.MATRIX.MULTIPLY 和 ML.MATRIX.ADD 命令支持。

ML.MATRIX.MULTIPLY a b result
ML.MATRIX.ADD a b result

这些命令将两个已经存在于 Redis 中的矩阵组合起来,并将结果存储在一个新的键中。

如果我想计算一个基本的矩阵方程,例如 y = Ax + b,使用 Redis-ML 模块,我会在 Redis CLI 中输入以下命令

127.0.0.1:6379> ML.MATRIX.SET a 3 3 4 0 0 0 2 0 0 0 1
127.0.0.1:6379> ML.MATRIX.SET x 3 1 1 4 1
127.0.0.1:6379> ML.MATRIX.SET b 3 1 1 1 1
127.0.0.1:6379> ML.MATRIX.MULTIPLY a x tmp
127.0.0.1:6379> ML.MATRIX.ADD tmp b y
127.0.0.1:6379> ML.MATRIX.GET y

1) (integer) 3
2) (integer) 1
3) "5"
4) "9"
5) "2"

Redis 将结果返回给我们的客户端,其中包含矩阵的形状(在本例中为 3 行 1 列),以及矩阵中每个元素的行优先顺序。

我也可以使用以下代码计算矩阵方程 A' = cA(其中 c 是一个标量值)

127.0.0.1:6379> ML.MATRIX.SET a 3 3 4 0 0 0 2 0 0 0 1
127.0.0.1:6379> ML.MATRIX.SCALE a 3
127.0.0.1:6379> ML.MATRIX.GET a

 1) (integer) 3
 2) (integer) 3
 3) "12"
 4) "0"
 5) "0"
 6) "0"
 7) "6"
 8) "0"
 9) "0"
10) "0"
11) "3"

矩阵用于广泛的应用,从线性变换到表示多元概率分布。 在下一篇文章中,我们将研究决策树和随机森林,这是 Redis 支持的另外两种分类模型。

如果您对本系列文章或之前文章有任何疑问,请在 Twitter 上联系我 (@tague)。