Хабрахабр

Постановка Data Science задач и взаимодействие с бизнесом

image

В этот раз снова о Data Science. Привет, Хабр. Думаю, многим знакома методология CRISP-DM, о которой говорят на большинстве курсов, но вот про первый пункт (business understanding) информации достаточно мало, в зря, ведь он очень важный.

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

Нам нужна твоя помощь. Итак, представьте, что к вам пришел представитель бизнеса и описал следующую ситуацию:
«Привет. Мы тут обнаружили, что у неё успешность списания около 10%, нас это совсем не устраивает, так как мы платим за каждую попытку. У нас есть система, которой мы автоматически списываем деньги с карт наших должников (что-то вроде Uber, который после поездки сам списывает нужную сумму с карты). Сделаешь?» Нам нужно сделать успешность списания около 30% минимум.

image

Ух, как много всего в нескольких предложениях, сразу и не понять.

Тут мы столкнулись с первой задачей – понять, что вообще нужно

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

Окей, хотя бы теперь мы это знаем, но встаёт вопрос с точки зрения Data Science – какая же должна быть целевая переменная?

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

Важно уточнить целевую переменную с заказчиком

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

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

Не забывайте уточнить ожидаемые результаты и возможные риски

image

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

Но вот проблема – бизнес не знает, что такое ROC-кривая, и что такое PR-кривая тоже не знает. Допустим, вы построили модель и хотите рассказать бизнесу о её результатах, показывая прекрасную ROC или PR-кривую и говоря, как сильно это улучшит процент успешности и вообще весь бизнес в целом. В Python её очень легко сделать библиотекой scikitplot. Обычно в таком случае хорошо помогает confusion matrix.

image

Очень наглядно и понятно. Далее можно, например, сделать предсказания по новому месяцу, а потом объяснить, сколько по матрице у нас будет ошибок первого и второго рода (показывая прямо в количестве клиентов) или даже объяснить, что означают эти пресловутые Precision и Recall.

Выбор cut-off и подсчёт эффективности модели

Следующим пунктом обычно встает вопрос: «А сколько мы получим денег от внедрения этой модели?». И теперь самое время приступить к выбору оптимального порога отсечения.

Обычно этот порог равен 0. Порогом в данном случае называется вероятность (predict_proba вам в помощь), выше которой мы говорим, что наша целевая переменная равна 1, а ниже – 0. В нашем случае мы знаем, что, если: 5, однако это не всегда соответствует максимальной прибыли и сильно зависит от цен ошибок первого и второго рода.

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

image

Сделать это можно простой прогонкой различных значений cut-off в питоне или даже solver’ом Excel. Для поиска оптимального cut-off мы берем тестовый месяц и пытаемся найти порог, который принесёт нам больше всего денег. Но в данном кейсе мы забыли учесть еще одну важную вещь – если мы не делаем списание, у клиента есть вероятность (в нашем случае около 30%), что он отдаст деньги сам, что тоже необходимо учитывать.

Как видно, оптимальное значение 0. На приведённом графике показана общая сумма сбора в зависимости от порога (заметьте, что из-за последнего утверждения значения даже при пороге близком к 1 не равны нулю!). При таком значении мы получили бы около $170 000, при этом мы знаем, что в реальности получили $145 000. 41, его и берем. Это значение завышено, т.к. Итоговая ценность модели около 25 тысяч в месяц или 300 тысяч в год. модель вряд ли будет работать целый год с одинаковым качеством, но базовую оценку мы увидели.
image

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

  1. Понять, что нужно заказчику
  2. Уточнить целевую переменную
  3. Обсудить ожидаемые результаты и риски
  4. Выбрать cut-off и подсчитать эффективности модели

Надеюсь, этим примером я показал важность бизнес составляющей работы дата саентиста и кому-то она была полезна. До встречи!

S. P. Все значения в статье нереальны и взяты просто для примера.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть