Технический KPI является обязательным в рамках Data Science Project

Специалист по данным — это человек, нанятый для решения бизнес-проблемы с использованием продуктов данных. Тем не менее, тенденции в курсе науки о данных сосредоточены на технологическом аспекте, а не на бизнес-точке зрения. Честно говоря, если ученые данных сначала изучат бизнес, а не технологии, их шансы быть нанятыми возрастут.

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

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

Бизнес и наука о данных

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

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



Каждому специалисту по обработке и анализу данных известно одно умение: смоделировать бизнес-проблему в виде технических требований. Каждый бизнес-проект начинается с бизнес-проблемы, которую бизнес-пользователь хочет решить с помощью специалистов по данным. Нам нужно обсудить каждый бизнес-аспект, который наш проект затронет в этой ситуации. Почему? Потому что на нашу модель будет влиять каждый бизнес-выбор.

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

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

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

Бизнес-симуляция для определения технических требований

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

import pandas as pd
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
train.info()

Данные поезда содержат 12 функций с 381 109 строками. Зависимая переменная (цель) — это переменная ответа. Тестовые данные включают 127037 строк с похожими функциями за вычетом ответа. Давайте посмотрим на целевое распределение переменных.

import seaborn as sns
#Target exploration
sns.countplot(train['Response'])

В наших данных есть случай дисбаланса; только 12% были заинтересованы в перекрестных продажах по данным поезда.

Я бы не стал приводить здесь все свои результаты исследования данных, так как это заняло бы много времени, но позже я прикреплю свой блокнот к своему GitHub. Я бы описал влияние функции на бизнес и то, как обрабатывать обучение/тестирование (текущие данные) с точки зрения бизнеса.

Теперь нам нужно сначала подумать о бизнес-процессе, прежде чем выбирать данные в реальном мире. Однако, в этом случае, давайте наоборот; из набора данных, который у нас был, нам нужно подумать о бизнес-процессе и последствиях использования набора данных.

Например, функция Driving_License; является функцией независимо от того, есть ли у клиента водительские права или нет. Как вы думаете, если бы эта функция могла помочь вам предсказать клиента для перекрестных продаж, вы бы ее использовали? Может быть, вы скажете да, но я бы сказал нет. Почему? с точки зрения бизнеса, особенно страхования, было бы неразумно предлагать страхование клиентам без водительских прав (по моему опыту). Я бы сказал, что эта функция становится фильтром, а не обучающими данными.

Я мог бы возразить, что функции Policy_Sales_Channel и Region_Code также могут создавать предвзятость. Некоторые каналы и регионы могут продавать больше, чем другие; Вы бы представили это модели? Я говорю «нет», потому что это косвенно приводит к исключению некоторых каналов и регионов.

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

Бизнес-моделирование

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

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

Более того, почему мы учитываем сроки проекта? Представьте, что модель предсказывает, что 50 000 клиентов будут заниматься перекрестными продажами. Выполнит ли агент всех 50000 клиентов за один день? Очевидно, что нет (за исключением случаев, когда на каждого клиента приходится 50 000 агентов), и у агента будут приоритетные клиенты, которым они будут звонить. Может быть, вы думаете, что мы могли бы позволить агенту добраться до потенциальных клиентов в любое время, пока мы предсказывали, что они будут совершать перекрестные продажи; проблема в том, что жизнь клиента со временем изменится, и прогноз в этой ситуации может оказаться неверным (дрейф данных). Вот почему сроки проекта влияют как на бизнес, так и на наши технические аспекты.

Давайте попробуем наметить, какую переменную в бизнесе нам нужно учитывать:

1. Бизнес-цель (исходя из этого проекта, какая бизнес-цель должна отслеживаться; часто это количество продаж или конверсия)
2. Стоимость подхода/звонка (все затраты, связанные с звонком, операционные расходы, советы агентам, и т. д.)
3. Номер агента
4. Сроки
5. Доход от успешной конверсии (сколько вклада в ANP от успешных перекрестных продаж)
6. Количество потенциальных клиентов (сколько лиды будут вызваны в течение временной шкалы)
7. Показатели модели

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

Бизнес-цель (BT) — это конечная цель, которую нам нужно достичь или превзойти в течение временной шкалы (T) в месяцах. В проекте после получения прогноза мы давали определенное количество потенциальных клиентов (L) для обработки в течение временной шкалы Агентом (A). Предположим, что каждому агенту нужно позвонить только для конверсии, поэтому нам нужно учитывать стоимость звонка (C). На каждый звонок будет влиять количество агентов и сроки проекта, где большее количество агентов и меньшие сроки будут увеличивать стоимость и наоборот. Наконец, доход от успешной конверсии (S) — это коэффициент для каждого успешного звонка. На общий доход будут влиять показатели модели (M) и количество потенциальных клиентов (сколько успешных вызовов из числа потенциальных клиентов, которое преобразуется в доход). Зачем моделировать метрики? Потому что не все звонки будут на 100% успешными.

Бизнес-процесс будет состоять только из потенциальных клиентов, которые прогнозируют интерес, и являются теми, которые были вызваны.

Если мы превратим это в линейное уравнение, мы запишем его как:

BT <= (S * (L * M)) — (L*(C * (A/T))

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

Мы уже установили переменную и уравнение. Теперь нам нужно только заполнить его. Стоимость — это фиксированное число для бизнеса, которое мы могли бы настроить, но доход от успешной конверсии варьируется в зависимости от каждого успеха (за исключением случаев, когда вы хотите сказать, что продукт всегда дает фиксированный доход / ANP). В этом случае мы могли бы использовать исторические данные из ANP клиента, например, среднее значение или медиану. Для нашего случая возьмем среднегодовую премию за данные поезда.

#Rounding the ANP Average per cases
round(train['Annual_Premium'].mean())

В результате получится 30564 индийских рупии. Далее давайте определим функцию для наших смоделированных операций.

def business_target_simulation(S, L, M, C, A, T):
    revenue = (S*(L * M)) - (L * (C * (A/T)))
    return revenue

Давайте определим некоторые переменные (вы можете изменить их, так как это симуляция), у нас есть:

  • Бизнес-цель (БТ); Допустим, в этом году мы хотим получить 10 000 000 индийских рупий по программе перекрестных продаж.
  • Временная шкала (T) будет равна году, что означает 12 месяцев.
  • Стоимость звонка (C), скажем, 5000 индийских рупий.
  • Номер агента (А), скажем, 100
  • Доход от успеха (S) будет 30 564.
  • Количество лидов (L) будет связано с существующим населением, потому что это программа перекрестных продаж. Тестовые данные содержат 127037 человек. Из данных о поездах мы видим, что около 12% населения заинтересованы в продажах. Если мы возьмем 12% остальных данных в качестве потенциальных клиентов (при условии, что модель прогнозирования может следовать тому же распределению вероятностей), у нас будет 15244 клиента в качестве потенциальных клиентов.
  • Для метрики модели (M) предположим, что мы используем Точность, потому что нам нужно рассчитать истинно положительные случаи на основе прогнозируемого интереса к покупке. Поскольку бизнес-процесс будет вызывать только предсказанные заинтересованные лиды, нам нужно максимизировать точность класса 1 (заинтересованные). Почему? Поскольку ложное срабатывание слишком велико (низкая точность), делается слишком много вызовов без успешного получения дохода; Санс, дороже. Наши затраты связаны с положительными случаями (либо истинными, либо ложными).

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

def simulation_plot(metric_range, S, L, C, A, T, BT):
    result = []
    for score in metric_range:
        result.append(business_target_simulation(S=S, L=L, M = score, C=C, A=A, T=T))
    plt.figure(figsize = (8,8))
    img = plt.plot(metric_range, result, marker = 'o') 
    plt.axhline(BT, color  = 'red')
    return img

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

simulation_plot(metric_range = np.arange(0.7, 1.01, 0.01), S = 30564, L = 15244, C = 3000,  A = 100, T =12, BT = 10000000)

Наша бизнес-цель составляет 10 000 000 индийских рупий, и, судя по нашему моделированию, нам нужно достичь как минимум 82% точности, чтобы наша модель оказала влияние на бизнес. Число относительно велико, но, безусловно, возможно. Имея это в виду, когда мы настраиваем нашу модель и MLOps, мы должны убедиться, что Precision всегда выше 82%. Вы всегда можете изменить метрику на другую, такую ​​как точность, полнота и т. д., однако, нам нужно настроить уравнение, если мы это сделаем.

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

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

Что я хочу показать, так это силу моделирования, способную установить технические требования для бизнеса. С точностью 82% мы смогли достичь бизнес-цели; меньше этого нежелательно.

Ресурсы

Весь код для этой симуляции хранится на моей следующей странице GitHub.



Заключение

Великий специалист по данным — это тот, кто понимает бизнес-процессы. Понимание бизнеса приходит с опытом, но, безусловно, этому можно научиться.

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

Я надеюсь, что это помогает!

Посетите меня в моем LinkedIn или Twitter.

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

Если вы не подписаны как участник Medium, рассмотрите возможность подписки через моего реферала.