Этот пост является четвертой частью серии постов, посвященных модулю 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/