Телеграм бот для тех, кто хочет использовать ML в работе, но не готов писать код

Я работаю менеджером продуктов. В рамках рабочих и личных проектов время от времени делаю аналитику данных. Одни из самых популя��ных задач для меня во время анализа — поиск зависимостей, прогнозирование, деление клиентов на группы, поиск аномалий/инсайтов. То есть стандартные задачи ML. Для этого я беру готовые ML-библиотеки немного причесываю данные, запускаю обучение модели и затем работаю с ней. Это относительно несложный, но утомительный процесс. У меня есть несколько шаблонов кода для разных ситуаций. Но даже тут надо запускать среду разработки, писать код и прочее. В итоге я пришел к идее еще больше автоматизировать процесс работы с ML и, заодно, дать инструмент для тех, кто не готов писать код, но хочет так же иметь возможность решать схожие задачи в своих проектах. Так родилась идея сделать no-code сервис "ML для домохозяек"👵., который в последствии получил название goML.

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

Команда

Я, конечно, могу сам руками писать код, разворачивать его в докере на сервере и прочее, но я не профессионал в этом. И поэтому у меня это обычно занимает много времени, которое я провожу за чтением документации, Stackoverflow и тематических чатов. В data science я тоже далек от тех, кто занимается этим профессионально каждый день. Поэтому решил привлечь к проекту фрилансера. Мне посчастливилось найти прекрасного исполнителя, который как раз недавно закончил похожий проект, поэтому располагал всем необходимым стеком. Плюс Сергей (а именно так зовут фрилансера) загорелся идеей и много сам проактивно предлагал и исследовал. В общем, я рад нашей dream team, так как хорошая команда - один из главных залогов успешности продукта.

MVP

Для простоты и скорости реализации решили делать первую версию в формате бота для Телеграм. Для MVP взяли только одну ML задачу - классификацию. Суть задачи - научиться предсказывать класс/категорию. Примеры таких задач:

  • Определять, является ли письмо спамом или нет. Тут классы/категории - "спам/не спам".
  • Определять по характеристикам клиента, оформит он подписку или нет (тут классы "купит/не купит").
  • Определять, относится ли операция по банковской карте к мошеннической или нет (мошенник/не мошенник).
  • По симптомам и характеристикам пациентов определять заболевание. Тут категорий может быть много.

В нашем MVP определяемых категорий может быть от 2 до 10.

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

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

Сейчас у нас бета-версия. То есть, работающий (местами с багами) функционал. Качество пока "на пути к идеалу". Надо дотачивать автоматическую предобработку входных данных, выбор модели и улучшать клиентскую часть.

На данном этапе хочется собрать обратную связь, услышать потребности рынка, подумать о, так называемом, product market fit и... протестировать наш бэкенд;)

Давайте я покажу на примере как работает бот. Так будет более понятно.

Пример работы бота goML

Для демонстрации я возьму один из самых популярных датасетов — данные о пассажирах Титаника с информацией о том, кто выжил, а кто нет. Давайте попробуем разобраться, что влияло на то, что пассажир выживет или нет. Заходим в бота.

Начало

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

Для обучения используются первые 10 тысяч строк из файла (оптимизация нагрузки в бета-версии). Но в большинстве случаев этого достаточно, чтобы обучить модель на приемлемом уровне.

Телеграм бот для тех, кто хочет использовать ML в работе, но не готов писать код

Обучение модели

После загрузки файла надо выбрать, какую колонку/параметр хотим научиться предсказывать. Модель может прогнозировать от 2 до 10 вариантов категории. По моему опыту, в 80% случаев встречается классификация в рамках двух вариантов (да - нет, 1 - 0, болеет - здоров, купит - не купит и так далее). В случае с Титаником категорий так же две - выжил (в датасете обозначен как "1") и умер ("0"). Обучение может занять до 2-3 минут. Модель для Титаника учится примерно 10 секунд.

Для обучения используем свое решение на базе CatBoost от Яндекса. Пока не идеально работает, есть проблемы с автоопределением типов параметров и предобработкой данных. Хотим добавить еще XGBoost, LightGBM и сделать симбиоз адаптирующийся под конкретный набор данных и кейс. Предварительные исследования показали, что это может заметно улучшить качество модели и снизить время обучения.

Когда обучение закончится, появится информация о качестве предсказательной модели. Что именно значат эти метрики можно узнать в разделе бота "Что это все значит?".

Телеграм бот для тех, кто хочет использовать ML в работе, но не готов писать код

Знания о данных, полученных моделью. Предсказание

Предсказания в бета-версии пока нет. Но зато есть информация о данных, которая на самом деле часто не менее важна.

Можно посмотреть топ параметров по их влиянию на предсказываемый параметр. В разделе "Инсайты" можно посмотреть как именно они влияют. В случае с Титаником заметнее всего влиял пол пассажира (первый скрин ниже). Что интересно, женский пол заметно увеличивал шанс выжить (второй скрин).

Телеграм бот для тех, кто хочет использовать ML в работе, но не готов писать код

Обратная связь

Если вы столкнулись с проблемой или у вас есть идея, предложение - пишите, пожалуйста, прямо через форму обратной связи в боте (раздел "Оставить отзыв или предложение"). Если вы хотите лично со мной пообщаться, то на старте бота есть мой аккаунт в Телеграм. Ну а если просто хочется следить за развитием проекта, то подписывайтесь на мой канал.

Телеграм бот для тех, кто хочет использовать ML в работе, но не готов писать код

Что дальше

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

В ближайшем бэклоге:

  • добавить возможность делать предс��азания
  • расширить инсайты и вытаскивать "переломные значения"
  • расширить пул библиотек в беке и сделать что-то вроде auto-ML
  • улучшить качество моделей на выходе
  • прогнозировать не только категорийные параметры (например, цену)

Но все это будет сильно зависеть от реакции и фидбэка. Поэтому:

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

Для развития проекта хочу еще привлечь веб-разработчика и, возможно, UX-дизайнера. Нужен middle+ уровень с релевантным бэкграундом. Если среди читателей есть такие, то присылайте в личку портфолио, рейт, сколько времени можете уделять в неделю проекту.

Прошу не судить строго, это первая версия беты, написанная в свободное от работы время (по ночам и выходным) менеджером проектов и фрилансером студентом.

#machinelearning#ML#bots#product#nocode#analytics#productmanagement#MVP

11
13 комментариев