- Вопрос или проблема
- Ответ или решение
- Модель для прогнозирования продолжительности на основе категориальных данных
- 1. Анализ текущего подхода
- 2. Улучшение модели
- 2.1. Модели машинного обучения
- 2.2. Кодирование категориальных переменных
- 2.3. Устойчивые методы оценки
- 3. Альтернативные подходы
- 3.1. Анализ выживаемости
- 3.2. Регрессия квантилей
- Заключение
Вопрос или проблема
Я работаю над моделью, которая позволит мне предсказать, сколько времени потребуется для завершения “работы”, основываясь на исторических данных. Каждая работа имеет несколько категориальных характеристик (все независимы), и некоторые исторические данные могут выглядеть следующим образом:
JobID Manager City Design ClientType TaskDuration
a1 George Brisbane BigKahuna Personal 10
a2 George Brisbane SmallKahuna Business 15
a3 George Perth BigKahuna Investor 7
До сих пор моя модель была относительно базовой, следуя этим основным шагам:
- Агрегировать исторические данные по каждой категории, вычисляя среднее и считая, сколько раз это происходит. Из предыдущего примера результат будет следующим:
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
- Для каждой работы в системе рассчитать продолжительность работы на основе вышеизложенного. Например:
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. Регрессия квантилей
Модели регрессии квантилей могут помочь, если вам нужно предсказать временные рамки для различных процентилей, что может быть особенно полезно, если задачи имеют разный уровень сложности или неопределённости.
Заключение
Чтобы улучшить вашу модель прогнозирования продолжительности задач, рекомендуем перейти к более сложным алгоритмам машинного обучения, правильному кодированию категориальных данных и использованию устойчивых методов оценки. Также не забывайте о возможности применения новых подходов, таких как анализ выживаемости и регрессия квантилей. Следуя данным рекомендациям, вы сможете существенно повысить точность ваших предсказаний и, как результат, улучшить эффективность управления проектами.