Вопрос или проблема
Это то, что кажется очень простым для решения, но я не смог найти никаких подсказок – возможно, я задаю неправильный вопрос в Google.
Допустим, вы владеете интернет-компанией. У вас есть общий объем потребления вашего клиента в текущем месяце, а также объем потребления за прошлый месяц и месяц до этого. Вы хотите создать функцию под названием “month_consumption_variation” и “2month_consumption_variation”, первая – это результат деления потребления в текущем месяце на потребление в прошлом месяце, затем мы вычитаем один из результата. То же самое делается для второй функции, но с месяцем, предшествующим последнему (~отставание 2).
В основном, я предполагаю, что если клиент снижает или увеличивает свое потребление, это знак того, что он меняет своего интернет-провайдера или нет. Однако здесь есть две ситуации: (1) клиент не потреблял ничего в прошлом месяце – или месяцем ранее -, хотя он уже был клиентом; (2) клиент не был моим клиентом в то время. Что я имею в виду, это то, что мой делитель может быть нулевым или пустым. Если я использую делитель, я получу сообщение об ошибке.
Какие решения могут быть применены здесь? Есть ли какие-либо отличия между решением для (1) и для (2)?
Вы описываете данные временных рядов. Значения с отставанием обычно не делятся. Значения с отставанием обычно вычитаются, поэтому нулевые значения могут быть проблемой.
Изменения временных рядов часто моделируются с помощью авторегрессионной интегрированной скользящей средней (ARIMA).
Чтобы обработать ситуации, которые вы упомянули, где делитель в ваших функциях “month_consumption_variation” и “2month_consumption_variation” может быть нулевым или пустым, вот что мы можем сделать:
-
Для ситуации (1) – Когда у клиента было нулевое потребление в предыдущем месяце:
- Один из вариантов – избежать деления на ноль, присвоив конкретное значение для вариации, когда потребление в прошлом месяце равно нулю. Вы можете установить это значение, например, на уровне -1, что покажет значительное снижение потребления. Это поможет указать на то, что клиент не использовал никаких услуг в этом месяце. Другой вариант – полностью исключить этих клиентов из расчета за этот период, в зависимости от ваших аналитических нужд.
-
Для ситуации (2) – Когда клиент не был вашей компанией в то время:
- В этом случае вы имеете дело с отсутствующими данными. Одно из решений – присвоить специальный флаг, например “новый_клиент”, чтобы обозначить, что они не были с вами в прошлом месяце, отличая это от нулевого потребления. Вы также можете выбрать оценить (импутировать) значение на основе средних показателей для новых клиентов, если это имеет смысл для вашего случая использования.
Ключевое отличие:
В первом случае клиент был, но не использовал услугу, так что речь идет о том, чтобы распознать это снижение использования. Во втором случае клиент даже не был частью ваших данных, и вы имеете дело с отсутствующим значением. Как вы относитесь к каждому из случаев, зависит от того, какую историю вы пытаетесь рассказать в своем анализе.
Ответ или решение
Когда вы разрабатываете функцию для анализа потребления интернет-услуг, может возникнуть проблема деления на ноль, особенно когда вы работаете с показателями изменения потребления за месяц и два месяца. В данной ситуации есть две основные проблемы: (1) когда предыдущий месяц имеет нулевое потребление, и (2) когда клиент не был вашим абонентом в этот период. Рассмотрим подробно, как решить эти проблемы.
Ситуация 1: Нулевое потребление в предыдущем месяце
Когда клиент имеет нулевое потребление в предыдущем месяце, деление на ноль приведет к ошибке. Вот несколько возможных решений:
-
Присвоение значения для вариации: Вы можете установить фиксированное значение для изменения потребления в случае, если потребление за предыдущий месяц равно нулю. Например, установить значение на уровне -1, чтобы отметить, что клиент не использовал услуги. Это даст понять, что произошла значительная потеря потребления. Данная стратегия может использоваться при анализе, чтобы понять, что клиент резко уменьшил свое потребление.
-
Исключение таких клиентов из расчетов: Если это соответствует вашей аналитике, вы можете решить исключить клиентов с нулевым потреблением из расчётов. Это позволит избежать ошибок деления и сосредоточиться на тех клиентах, которые имеют активное потребление.
Ситуация 2: Клиент не был вашим абонентом
Когда клиент не был зарегистрирован в предыдущем месяце, необходимо правильно обработать отсутствующие данные:
-
Использование флага "новый клиент": Присвоение специального флага, например "новый клиент", поможет вам различать таких клиентов в ваших данных. Это позволяет выделить их как особую группу, что полезно для последующего анализа изменения потребления среди новых абонентов.
-
Импутация данных: Если это имеет смысл для вашей аналитики, вы также можете использовать методику импутации, чтобы оценить значение потребления для новых клиентов на основе средних значений. Например, вы можете проанализировать потребление аналогичных клиентов и использовать это число для анализа.
Ключевое различие между ситуациями
Различие между первой и второй ситуацией заключается в том, что в первом случае клиент был вашим абонентом, но не использовал услуги, а во втором случае он еще не был вашим клиентом. Способы обработки этих ситуаций должны быть выбраны в зависимости от истории, которую вы хотите рассказать с помощью вашего анализа.
Заключение
Чтобы успешно разработать функционал для расчета "month_consumption_variation" и "2month_consumption_variation", важно правильно обрабатывать случаи с нулевым и отсутствующим потреблением. Выбор правильной стратегии зависит от бизнес-целей, поставленных перед вами. Рассмотренные решения помогут избежать ошибок деления на ноль и предоставят вам более полное представление о поведении клиентов с точки зрения их потребления интернет-услуг.