Data science Medium-сфера, у меня большие новости. Появилась радикально новая модель машинного обучения.

Представляем QLattice: Подберите совершенно новый тип модели для своей проблемы. Граф QLattice не является ни нейронной сетью, ни моделью на основе дерева решений. Можно сказать, что QLattice распаковывает нейронную сеть черного ящика и обеспечивает объяснимость / интерпретируемость, аналогичную дереву решений.

Прежде чем переходить к практическим вопросам, давайте взглянем на график QLattice:

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

В QLattice доступны следующие преобразования данных: умножение, линейное, синусоидальное, тангенциальное и гауссовское - вместе они охватывают практически все естественные зависимости. Это означает, что хорошо обученный график QLattice извлечет любой сигнал, который содержат ваши функции, при прогнозировании вашей целевой переменной. Однако настоящая красота всего этого не в высокой точности вашей модели. Дело в том, что у вас есть простое визуальное изображение вашей модели - вы можете очень подробно изучить, как обрабатываются ваши данные, чтобы в конечном итоге предоставить набор прогнозов. Ничего не скрыто в скрытом слое в вашей нейронной сети или в 117-м дереве решений в вашей модели ансамбля (см. Открытие черного ящика).

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

Заинтригованы? Следуйте этому краткому руководству о том, как применить QLattice (зарегистрируйтесь для своего собственного, чтобы следовать за ним).

Как применить вашу QLattice

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

Feyn (/ ˈfaɪn /) - это набор средств разработки программного обеспечения, который мы используем для взаимодействия с QLattice. Он назван в честь Ричарда Фейнмана - его работа над интегралами по путям сделала Q-решетку возможной.

Давай попробуем!

Нахождение случайного непрерывного целевого набора данных на Kaggle…

Аренда Airbnb! Какова подходящая цена для вашей квартиры на Airbnb в Нью-Йорке (Kaggle). Этот набор данных имеет хорошее сочетание непрерывных и категориальных функций для демонстрации (и в конце мы можем дать вам красивую визуализацию наших результатов). Пойдем!

Таким образом, мы прогнозируем цены на основе типа аренды, местоположения, обзора, популярности хоста и информации о доступности за прошлые периоды.

В этом посте мы аккуратно пропустим длительные задачи по изучению данных и разработке функций (важность которых, конечно, трудно переоценить, но они не являются предметом данной статьи). Однако требуется минимальная предварительная обработка, а именно удаление уникальных идентификаторов и нерелевантных функций. То же самое касается значений NaN и экстремальных выбросов.

Данные готовы - давайте разделим их. А пока займемся поездом и тестовым набором.

Пробуждение QLattice

Теперь мы готовы к игре. Сначала мы называем QLattice.

Чтобы продолжить, нам нужно сообщить QLattice, каковы входы и выходы моделей, которые она производит.

Мы присвоим каждой переменной в наборе данных семантический тип - имеем ли мы дело с числовыми или категориальными значениями? По умолчанию каждой переменной будет присвоено числовое значение и ожидаются числовые значения, поэтому мы указываем только категориальные переменные:

Благодаря этой функции категориальные переменные автоматически кодируются в QLattice. Ты это слышал? Больше никаких ручных операций однократного или аналогичного кодирования категориальных функций! Об этом позаботится в категориальном реестре. Аналогичным образом числовой регистр автоматически масштабирует данные в диапазоне [-1,1] с помощью стандартизации MinMaxScalar. Если у вас есть конкретные пожелания по масштабированию, вы можете вмешаться и выполнить числовое масштабирование самостоятельно.

QGraphs

Давайте запустим нашу QLattice на работу. Главное, что делает QLattice, - это создавать QGraphs. QGraph - это набор всех возможных моделей, соединяющих вход и выход. Однако из-за ограничений вычислений, а также памяти, QGraph не может содержать все возможные модели и поэтому с практической точки зрения является подмножеством бесконечного списка моделей (обычно пары тысяч моделей).

Нам нужно указать QLattice, какими должны быть входы и выходы модели. Мы включаем все переменные в метод ниже, а затем объявляем, какая из них будет нашим результатом.

Давайте покажем вам несколько случайных необученных моделей.

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

Эти модели похожи на нейронную сеть, но с меньшим количеством узлов и не типичным типом функции активации на узле. Сейчас мы применяем функции умножения, линейности, синуса и гаусса вместе с типичной функцией tanh.

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

Соответствовать

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

Метод соответствия QGraph должен принимать следующие аргументы:

  • Данные, на которых модели в QGraph должны быть обучены
  • Функция потерь, которую мы хотим оптимизировать для

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

Так что же здесь происходит? Мы обучаем каждую модель в подмножестве QGraph. В любой момент времени во время подгонки отображаемый график представляет собой модель с наименьшими среднеквадратичными потерями ошибок.

Сортировать

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

Обновлять

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

Теперь мы готовы к следующему рисованию графиков из QGraph. Давайте продолжим итеративно рассмотрим еще 5 обновлений, как показано ниже.

Подогнать, отсортировать, обновить, повторить…

... пока ваши потери не уменьшатся какое-то время (или вы просто не захотите больше продолжать).

Предсказывать

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

И в завершение блестками: фактические данные и прогнозы по широте и долготе Нью-Йорка.

Благодаря этому введению в решение проблемы регрессии с помощью QLattice мы надеемся, что вы получили общее представление о том, что такое QLattice, и что мы пробудили дополнительный интерес. В таком случае: поиграйте с QLattice на игровой площадке Abzu на www.abzu.ai или зарегистрируйтесь в своей собственной QLattice.

Спасибо за прочтение!