Учебное пособие по работе с MindsDB и его использованию для понимания концепций машинного обучения.

Машинное обучение сейчас практически повсюду, почти каждая компания в настоящее время накапливает гигантские объемы данных и хотела бы извлечь из них как можно больше информации, чтобы улучшить свой бизнес и удовлетворенность клиентов, Facebook и Google пытаются подобрать вам идеальную рекламу, Netflix пытается предсказать, какой следующий фильм вы хотели бы посмотреть, а Spotify пытается найти музыку, которая вам понравится.

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

В этом примере MindsDB будет работать как посредник между вашим сервером и базой данных, вы можете запустить его с помощью докера, и он предоставит вам графический интерфейс и остальной API для связи с базой данных для создания прогнозов, он сохраняет обученные модели. и метаданные, необходимые в вашей базе данных, в отдельной таблице.

Начиная

В этом руководстве мы будем полностью независимыми от фреймворка в работе только с графическим интерфейсом и базой данных, но я сделаю другие сообщения, демонстрирующие работу с API, в следующих статьях.

Мы можем делать прогнозы на основе различных, более сложных данных, но в этом посте мы будем делать прогнозы с использованием набора данных Iris. Если вы когда-либо изучали ML, вы, вероятно, читали учебник с этим набором данных, это очень часто, поскольку его очень просто понять.
Набор данных Iris определяет 3 вида цветка Iris, с информацией об их размерах лепестков и чашелистиков, эти измерения были взяты для 150 разных цветов, поэтому у нас есть 5 столбцов и 150 строк данных, мы собираемся использовать эту информацию для классификации видов цветов с учетом размеров лепестков и чашелистиков.

Например, мы хотим сказать, что если у цветка ириса ширина чашелистика 3,5, длина чашелистика 5,1, длина лепестка 1,4 и ширина лепестка 0,2 - ›то ирис называется Iris-setosa.

Давайте начнем, сначала нам нужно будет выполнить несколько шагов, нам нужно создать базу данных, заполнить ее набором данных Iris, запустить MindsDB, подключить его к базе данных, а затем мы сможем делать прогнозы, это довольно просто, поэтому давайте Начните.

1. Запустите базу данных и заполните ее данными.

MindsDB поддерживает различные базы данных, включая MongoDB, MariaDB, PostgreSQL, MySQL и другие… вы можете выбрать удобную для вас базу данных, но для этого поста я буду использовать PostgreSQL.

Итак, я запускаю PostgreSQL локально и заполняю его набором данных Iris, я использую предварительно созданную команду SQL из this gist, чтобы быстро заполнить базу данных, ваша база данных должна выглядеть примерно так.

  • Вы можете пропустить этот шаг и использовать CSV-файл набора данных Iris напрямую, если вы просто хотите поиграть с MindsDB, используя кнопку загрузки в графическом интерфейсе, этот CSV-файл будет вашим набором данных.

2. Запустите MindsDB.

Я использую MindsDB как докер-контейнер, но, конечно, вы можете решить запустить его локально, руководство по установке находится здесь.

Я ожидаю, что на вашем компьютере уже запущен докер, если не просто установите и запустите его, как только он запустится, выполните следующие команды оболочки:

# pull the image
$ docker pull mindsdb/mindsdb
# run the image and expose port 47334
$ docker run -p 47334:47334 mindsdb/mindsdb

После запуска образа вы можете перейти по адресу http: // localhost: 47334, чтобы получить доступ к графическому интерфейсу MindsDB, он должен выглядеть примерно так:

3. Создайте набор данных.

Я буду подключать свой PostresQL к MindsDB, щелкнув значок базы данных, а затем «добавить базу данных»:

Теперь, когда наша база данных подключена, мы можем синхронизировать «Новый набор данных» и извлечь набор данных с помощью SQL-запроса. В моем случае мне нужны все столбцы из набора данных и все строки, поэтому нам достаточно простого SELECT * FROM iris.

Затем мы можем перейти к набору данных и увидеть две кнопки Обзор, где вы можете увидеть свой набор данных в таблице, и Качество, где вы можете оценить качество данных, давайте возьмем посмотрите на качество просмотра:

Здесь мы видим, что данные действительно хороши, здесь нет отсутствующих значений, во многих случаях вам может не хватать некоторой информации, в этих случаях MindsDB заполнит эти недостающие значения средними значениями для вас, чем больше данных отсутствует или несовместимо , чем хуже ваш набор данных, тем менее точным будет наш алгоритм машинного обучения.

4. Обучите предсказателя

Теперь мы можем создать предиктор, щелкнув «предикторы», а затем «обучить», решить, что вы хотите предсказать, и щелкнуть «обучить».

* Расширенный режим - вы можете использовать расширенный режим, чтобы внести некоторые изменения в предиктор, например, вы можете использовать режим временного ряда, группировать элементы и изменять границу выборки, в настоящее время у нас есть довольно простая проблема, и это простой пост, поэтому мы не будем его использовать - я включу это в будущий пост.

Мы можем нажать Предварительный просмотр на обученном предикторе, чтобы увидеть некоторую информацию о нем, и я объясню некоторые основные концепции машинного обучения, как вы видите в разделе Разделение и использование набора данных, наши данные разделяются и используются как Данные обучения и Тестовые данные , MindsDB случайным образом выбирает около 120 строк для обучения модели машинного обучения и около 30 строк для тестирования модели, это помогает определить точность предсказателя - обычно 20% данных используются для тестирования и 80 & для обучения моделей машинного обучения.

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

Следующая часть информации, которую мы получаем, - это матрица неточностей, матрица неточностей позволяет нам увидеть, насколько точны тестовые и обучающие данные для каждого прогноза (каждый вид радужной оболочки в нашем случае), то есть 100% точность »», Который мы видели на последнем рисунке, это означает, что при просмотре тестовых данных и их сопоставлении с моделью он правильно предсказал 100% цветов. Заметьте, 100% точность очень редка и в основном определяется качеством и размером имеющихся у нас данных.

5. Сделайте прогноз

Это последний шаг, нам просто нужно использовать наш предиктор, чтобы определить, как классифицировать новый цветок ириса, который мы только что нашли, мы можем перейти к «запросу» и щелкнуть «новый запрос», заполнить данные, полученные из нового цветок, который мы нашли, и пусть наш предсказатель определит, к какому его виду он относится.

Теперь мы можем увидеть прогноз, мы предсказали, что цветок с этими размерами - это Iris-setosa, и мы уверены в этом на 81%, чем больше наш набор данных, тем больше мы будем уверены в своих прогнозах (и я для этого предсказания в значительной степени использовались случайные числа).

Что дальше

Мы создали и обучили модель машинного обучения (предсказатель) и использовали ее для прогнозирования. Все это может занять минуту или две с MindsDB. Как видите, MindsDB действительно прост и прост в использовании.

Следующим шагом будет выполнение вызовов API к MindsDB для автоматизации извлечения набора данных, обучения модели и прогнозирования, мы сделаем это на разных языках в следующей публикации.