Этот пост является четвертой частью серии постов, посвященных модулю Redis-ML. Первую статью цикла можно найти здесь.

В этом посте мы рассмотрим матричные операции, предоставляемые модулем Redis-ML, и покажем несколько примеров того, как обрабатывать данные матрицы с использованием базы данных Redis.

Технические требования

Пример кода в этом посте написан на Python и требует наличия экземпляра Redis с запущенным Redis-ML. Инструкции по настройке Redis можно найти либо в первой, либо во второй части этой серии.

Матрицы в Redis

Диаграмма умножения матриц из статьи Wikimedia Matrix Multiplication

Матрицы распространены в машинном обучении, статистике, финансах и множестве других областей, поэтому они стали естественным дополнением к Redis. Модуль Redis-ML добавляет матрицы как собственный тип данных Redis. Он также предоставляет математические операции, которые объединяют матрицы для создания новых значений.

Чтение и запись значений матрицы выполняется с помощью команд ML.MATRIX.SET и ML.MATRIX.GET, которые имеют следующий синтаксис:

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

При работе с модулем Redis-ML помните, что команды используют формат row-major. Умножение и сложение поддерживаются командами 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:

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.

Пожалуйста, свяжитесь со мной в Твиттере (@tague), если у вас есть вопросы относительно этого или предыдущих постов в этой серии.

Познакомьтесь с Redis Enterprise на нашем новом веб-сайтеredislabs.com — и испытайте самую быструю и продуктивную базу данных в мире!

Этот блог изначально был размещен по адресу: https://redislabs.com/blog/introduction-redis-ml-part-four/

Если вы хотите просмотреть прошлые статьи Redis Watch или подписаться на Redis Watch, посетите нас здесь: https://redislabs.com/resources/redis-watch-archive/