Модель для предсказания продолжительности на основе категориальных данных

Вопрос или проблема

Я работаю над моделью, которая позволит мне предсказать, сколько времени потребуется для завершения “работы”, основываясь на исторических данных. Каждая работа имеет несколько категориальных характеристик (все независимы), и некоторые исторические данные могут выглядеть следующим образом:

JobID   Manager     City        Design          ClientType      TaskDuration
a1      George      Brisbane    BigKahuna       Personal        10
a2      George      Brisbane    SmallKahuna     Business        15
a3      George      Perth       BigKahuna       Investor        7

До сих пор моя модель была относительно базовой, следуя этим основным шагам:

  1. Агрегировать исторические данные по каждой категории, вычисляя среднее и считая, сколько раз это происходит. Из предыдущего примера результат будет следующим:
Category        Value           Mean    Count
Manager         George          10.66   3
City            Brisbane        12.5    2
City            Perth           7       1
Design          BigKahuna       8.5     2
Design          SmallKahuna     15      1
ClientType      Personal        10      1
ClientType      Business        15      1
ClientType      Investor        7       1
  1. Для каждой работы в системе рассчитать продолжительность работы на основе вышеизложенного. Например:
JobID   Manager     City        Design          ClientType
b5      George      Brisbane    SmallKahuna     Investor

Category        Value           CalculatedMean      CalculatedCount     Factor (Mean * Count)
Manager         George          10.66               3                   31.98
City            Brisbane        12.5                2                   25
Design          SmallKahuna     15                  1                   15
ClientType      Investor        7                   1                   7       

TaskDuration    = SUM(Factor) / SUM(CalculatedCount)
                = 78.98 / 7
                = 11.283
                ~= 11 дней

После тестирования моей модели на нескольких сотнях завершенных работ за последние четыре месяца я вычислил средние отклонения, колеблющиеся от -15% до +25%.

В моей реальной модели 15 категорий, и я использую исторические данные примерно по 400 работам.

Я думаю, что самой большой проблемой (среди прочих) является простота моей модели. Существуют ли лучшие/хорошо установленные методы расчета значения на основе категориальных данных? И если нет, как я могу улучшить свои прогнозы?

Связанный вопрос здесь.

Итак, судя по тому, что я понимаю из вопроса, вы спрашиваете, как моделировать продолжительность работы, учитывая вводимые данные (которые включают City и ClientType).

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

При представлении каждой из категориальных переменных мы используем то, что называется one-hot кодирование. Затем мы объединяем эти категориальные переменные в один n-мерный вектор ввода, который представляет все характеристики для одного примера.

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

Ответ или решение

Модель для прогнозирования продолжительности на основе категориальных данных

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

1. Анализ текущего подхода

Ваш текущий метод, основанный на усреднении значений по категориям и использовании их для предсказания продолжительности задач, имеет свои достоинства, однако он также сталкивается с определенными ограничениями:

  • Чувствительность к выбросам: Средние значения могут быть сильно искажены выбросами в данных.
  • Недостаточная сложность: Простые усреднения не учитывают потенциальные взаимодействия между различными категориальными переменными.
  • Ограниченное количество наблюдений: При 400 заданиях с 15 категориями, некоторые категории могут иметь слишком малое количество наблюдений, что увеличивает вероятность ошибок в предсказании.

2. Улучшение модели

2.1. Модели машинного обучения

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

  • Деревья решений и ансамблевые методы (например, Random Forest или Gradient Boosting). Эти модели хорошо работают с категориальными данными и предоставляют возможность учитывать взаимодействия между переменными.
  • Нейронные сети. Использование многослойной перцептронной сети может позволить модели изучать нелинейные зависимости, которые могут не быть очевидными в ваших исходных данных.

2.2. Кодирование категориальных переменных

Правильное кодирование категориальных переменных будет критичным для улучшения вашей модели. Рассмотрите использование:

  • One-hot кодирования: Преобразует каждую категорию в бинарный вектор, что позволяет модели лучше понимать структуру данных.
  • Целевого кодирования: Заменяет категории их средними значениями целевой переменной, что может повысить предсказательную способность модели, особенно при небольшом количестве уникальных значений.

2.3. Устойчивые методы оценки

Ваши текущие подходы к оценке, такие как расчёт средних отклонений, могут быть дополнены более продвинутыми метриками, такими как:

  • Кросс-валидация: Позволяет проверить модель на разных подмножествах данных, что помогает предотвратить переобучение.
  • Метрики оценки: Рассмотрите использование MSE (среднеквадратичная ошибка) или MAE (средняя абсолютная ошибка) для более точной оценки качества предсказания.

3. Альтернативные подходы

3.1. Анализ выживаемости

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

3.2. Регрессия квантилей

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

Заключение

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

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

Капча загружается...