k-ближайших соседей с временными рядами – как получить оценщики для всего временного периода

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

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

Моя таблица выглядит примерно так:

Дата         Имя      Действие  Кол-воОбработанных   Смена      Команда
01/10/2017   MMouse   Пайка       1000           Смена А   Команда А
01/10/2017   MMouse   Сварка      3000           Смена А   Команда А
01/10/2017   DDuck    Пайка       4000           Смена А   Команда B
01/10/2017   DDuck    Сварка      1000           Смена А   Команда B
...
02/11/2017   MMouse   Пайка       1100           Смена А   Команда А
02/11/2017   MMouse   Сварка      2900           Смена А   Команда А
02/11/2017   DDuck    Пайка       4010           Смена А   Команда B
02/11/2017   DDuck    Сварка      900            Смена А   Команда B

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

Для краткости я опустил значения для Смены B, но по сути члены команды Смены B (обычно) будут работать в другие дни, чем Смена А, но доля выполняемых задач обычно будет похожа на соответствующую Команду в Смене А – Команду А или Команду B.

Проблема, которую я хочу решить: у меня есть дата, действие и количество обработанных единиц – а также различные другие переменные – для другого оператора, “GOofy”. Но я не знаю, в какой смене/команде работает г-н GOofy. Поэтому я использую данные для г-на MMouse и г-на DDuck (разумеется, в реальности для множества людей), чтобы попытаться обучить kNN корректно угадывать паттерн смены и команды для каждого Имени, учитывая поля Дата, Действие и Количество обработки, среди прочих.

Моя идея заключается в следующем:

а) Нет особой ценности в том, чтобы держать Команду и Смену отдельно, поэтому я должен создать объединенный столбец, который соединяет их оба

б) Если я создам отдельные столбцы для “Пайка”, “Сварка” и других действий, у меня будет количество обработанных единиц за каждый день для каждого действия по дате. Учитывая, что вид выполняемого действия (я предполагаю) является сильным предиктором комбинации смены/команды, я тогда смогу обучить распознавать смену/команду на основе как даты этой строки (возможно, преобразованной в числовую дату), так и относительных значений для каждой строки пайки, сварки и т. д.

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

Два подхода, которые я могу придумать:

Вариант 1: использовать kNN для генерации оценок для смены/команды для каждой комбинации оператор/день, где переменными x будут дата, количество пайки и количество сварки за день, а затем подсчитать для каждого оператора долю раз “Смена А, Команда А”, “Смена А, Команда B” и т. д. были назначены этому оператору – так что если DDuck назначается “Смена А, Команда А” в 90% дней, это кажется наиболее вероятным, что DDuck действительно “Смена А, Команда А”.

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

Является ли какой-либо из этих подходов допустимым? Существует ли широко используемый альтернативный подход для этого?

Обратите внимание, что это не дубликат предыдущих вопросов, связанных с kNN и временными рядами, так как те касались прогнозирования, а я пытаюсь проанализировать ретроспективные данные.

Есть ли у вас больше числовых признаков? KNN работает на основе расстояний (евклидово, L1 и т.д.), что требует числовых данных. Он не принимает категориальные данные. Ваш признак действия не будет работать с KNN, и даже преобразование даты, скажем, в целое число просто создаст временной ряд, который не будет хорошо работать с KNN. Я думаю, вы неправильно подходите к этому. Попробуйте логистическую регрессию. Она примет как категориальные, так и числовые признаки.

Нет особой ценности в том, чтобы держать Команду и Смену отдельно, поэтому я должен создать объединенный столбец, который соединяет их оба.

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

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

.

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

Для решения задачи классификации смены и команды для оператора «GOofy» на основе временных рядов ваших данных, вы рассматриваете использование метода k-ближайших соседей (kNN). Однако, возможно, стоит рассмотреть другое решение, учитывая особенности ваших данных.

Преимущества и недостатки k-Nearest Neighbours (kNN):

Преимущества:

  1. Простота: kNN является довольно простым и интуитивно понятным методом, так как не требует обучения в явном виде.
  2. Наглядность: Хорошо подходит для данных с явным разделением классов, когда схожие образцы расположены близко друг к другу.

Недостатки:

  1. Чувствительность к масштабу: Метод kNN работает на расстояниях, таких как евклидово расстояние, что требует значительной обработки данных для масштабирования признаков.
  2. Проблемы с временными рядами: Временные ряды, особенно их сложные зависимости, могут быть сложно учтены без тщательной обработки данных.
  3. Категориальные данные: kNN менее эффективен для данных с несколькими категориальными признаками без их предварительной обработки в числовые значения.

Альтернативный подход: Логистическая регрессия

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

  • Работает с категориальными признаками: Позволяет обрабатывать как числовые, так и категориальные данные.
  • Более стабильна для временных данных: Хотя ни kNN, ни логистическая регрессия не являются методами прогнозирования для временных рядов, логистическая регрессия может лучше справляться с характеристиками временных данных благодаря своей возможности напрямую использовать временную метку как категориальный или порядковый признак.
  • Специализация по категориям: Вы можете создать две модели — одну для смены, другую для команды. Это позволит каждой модели сосредоточиться на меньшем числе классов, что увеличит точность предсказаний.

Рекомендации по реализации:

  1. Предварительная обработка данных:

    • Создайте объединённый столбец для смены и команды, если это необходимо, для упрощения анализа.
    • Преобразуйте категориальные признаки (например, имя, вид деятельности) в числовые, например, использованием метода One-Hot Encoding.
  2. Модель логистической регрессии:

    • Разделите вашу задачу на две: предсказание смены и команды отдельно.
    • Используйте логистическую регрессию, чтобы выявить вероятности каждой смены и команды.
  3. Оптимизация параметров модели:

    • Используйте кросс-валидацию для оценки и улучшения производительности модели, регулируя такие параметры, как порог вероятности.
  4. Анализ результатов:

    • Проверьте результаты на наборе данных валидации или тестовом наборе, чтобы оценить точность и надёжность вашей модели.

Заключение

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

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

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