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

    image

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

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

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

    image

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

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


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

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

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

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


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

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

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


    image

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

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

    image

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

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


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

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

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

    image

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

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

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

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

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

    P.S. Все значения в статье нереальны и взяты просто для примера.
    ID Finance
    Международная финтех-группа ID Finance

    Похожие публикации

    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое