Телеграм бот для тех, кто хочет использовать 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

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

Так это ML или бот просто считает корреляцию одного параметра относительного другого?

2
Автор

Никита, в бета-версии показываем пока только влияние параметров на результат. Прогнозирование в процессе. Хочется понять в каком виде его удобнее для пользователей реализовывать — одним общим файлом грузить группу объектов или руками забивать параметры прямо в боте (случай, когда надо предсказать для единичного объекта). Что для вас более востребовано было бы? Можете, пожалуйста, рассказать для чего используете классификацию?

Антон, подскажите пожалуйста как лучше реализовать. Есть задача проверки корректности имён. В базе есть 10000 клиентов, но не все из них корректно заполнены.

К примеру, одно из некорректных имен: Ирина Красные волосы
Андрей Мелочный
ИРина ДОБрова

Пример из корректных:
Александр
Ирина Доброва

Какие нужны будут параметры?
Кол-во букв, наличие мат слов, более 2ух заглавных, более 2ух слов и т.д.

1

наличие мат словНаличие математических терминов? ;)

1
Автор

Султан, это задача из NLP и тут лучше взять библиотеку для анализа текста и применить для своих нужд. Рекомендую обратить внимание на Spacy. Примерно полгода назад сам на ней написал несложный анализатор текстов для своих задач. Там можно доставать часть речи и, если это прилагательное или глагол, то отсеивать. Но надо тестировать и дотачивать решение так как, кажется, что многие фамилии очень похожи на прилагательные и, как вариант, надо добавлять специальные шаблоны для дополнительной проверки.

Если нужна реализация "под ключ" - пишите в личку, попробуем что-нибудь придумать.

Бесспорно, идея хорошая) желаю Вам удачи)

1