Вопрос или проблема
Нужен совет по лучшему способу представления представленных ниже данных для подачи в алгоритм машинного обучения (который еще предстоит выбрать).
Это связано с процессом онлайн-заказов. Заказ состоит из набора переменного количества товаров. Каждый товар может находиться в разных складах, и это также переменное количество. Весь заказ с несколькими товарами и товарами с несколькими складами на каждый товар должен обрабатываться как один обучающий образец. Цель – изучить функцию, которая выводит склады, откуда товары могут быть забраны в соответствии с определенными правилами/условиями, чтобы минимизировать затраты на обработку. Количество товаров может достигать миллионов, а складов – тысячи.
Я рассматривал представление этих данных как инвариантные по перестановке наборы – есть ли более простой способ, или это правильный путь к решению?
В машинном обучении вам действительно нужны хорошие примеры, а затем данные, для которых вы не знаете результата. Вы учитесь на хороших примерах и затем применяете это «знание» к примерам, для которых хотите узнать результат.
Я согласен с тем, что математическая оптимизация, вероятно, будет лучшим маршрутом в подобной задаче.
В качестве альтернативы, если вы хотите подразумевать какую-то связь между наборами, вы можете создать категориальную (фиктивную) переменную, которая обозначает это. Если я вас правильно понимаю, вот пример:
item1 item2 basket1 basket2 basket3 GroundTruth (target)
заказ 1 Банан Яблоко Истина Ложь Ложь склад1
заказ 2 Игрушка Морковка Ложь Истина Ложь склад2
заказ 3 Картина Туфли Ложь Ложь Истина склад3
Вы также можете включить товары на складах аналогичным образом, но если у вас много разных товаров, много складов, много корзин и недостаточно обучающих примеров, это быстро станет довольно разреженным.
Ответ или решение
Чтобы правильно представить наборы данных в контексте машинного обучения (ML) для задачи, связанной с обработкой онлайн-заказов, необходимо учитывать уникальные характеристики информации. Ваше описание указывает на модели, содержащие переменное количество товаров и складов, что создает определенные сложности в представлении данных. Рассмотрим несколько методов и подходов к структуре данных, которые можно использовать для решения данной задачи.
1. Переменные наборы и инвариантность перестановок
Неправильная структура данных может привести к потере значимой информации в модели. Вы упомянули представление данных как переменные наборы (пермутационно инвариантные множества). Это правильный подход, так как он обеспечивает обработку наборов товаров, где порядок элементов не имеет значения. Это можно реализовать с помощью методов, таких как:
- Сетевое представление: Реализуйте множество товаров и их складов как граф. Каждый товар будет узлом, а связи между товарами и складами будут ребрами. Это может помочь учитывать взаимосвязи и сопоставлять их для последующей обработки.
2. Кросс-признаки (связь между набором объектов)
Как вы уже отметили, можно создать категориальные переменные, которые обозначают наличие или отсутствие товара на складе. Это может быть реализовано следующим образом:
Товар1 Товар2 Склад1 Склад2 Склад3 Правильный ответ
Заказ 1 Банан Яблоко True False False Склад1
Заказ 2 Игрушка Морковь False True False Склад2
Заказ 3 Картина Тапочки False False True Склад3
Этот метод позволяет использовать бинарные переменные для представления наличия или отсутствия товара на конкретных складах. Однако, как вы справедливо заметили, данный подход может привести к разреженным данным, если количество товаров и складов велико.
3. Подход со сверткой
Другим методом обработки пермутационно инвариантных множеств является использование сверток. Сверточные нейронные сети (CNN) хорошо справляются с задачами, связанными с структурированными данными, благодаря своей способности извлекать особенности из входного множества данных, что может быть полезно для работы с множествами товаров и складов.
4. Использование графов
Ваша проблема может быть решена также с использованием алгоритмов графов, где товары и склады представляют собой узлы, а их отношения — ребра. Это позволит использовать такие подходы, как графовые нейросети (GNN), которые сейчас становятся популярными в задачах, связанных с множествами и графами.
Заключение
Ваша задача по обучению функции, которая выводит склады для обработки товаров, требует тщательного выбора представления данных. Рассмотренные подходы — и переменные наборы, и кросс-признаки, и свертки — все имеют свои преимущества и недостатки, и правильный выбор может во многом зависеть от конкретного характера ваших данных и объема доступной информации.
Важно тщательно протестировать каждый из предложенных методов на небольших подмножествах данных, чтобы понять, какой из них даст наилучшие результаты для вашей задачи. Используйте те данные, которые уже есть, чтобы создать мощную модель, которая сможет находить оптимальные решения для обработки заказов с минимальными затратами.