Как предварительно обработать данные класса (с большим количеством уникальных значений) перед подачей их в модель машинного обучения?
Допустим, у меня есть большие данные с игровой онлайн-платформы (например, steam), у которой есть 'date, user_id, number_of_hours_played, no_of_games', и мне нужно написать модель, чтобы предсказать, сколько часов пользователь будет играть в будущем для данной даты. Теперь user_id имеет большое количество уникальных значений (в миллионах). Я знаю, что для данных классов мы можем использовать одну горячую кодировку, но не уверен, что делать, когда у меня есть миллионы уникальных классов. Кроме того, предложите, если мы можем использовать любой другой метод для предварительной обработки данных.
1 ответ
Непосредственное использование идентификатора пользователя в модели не очень хорошая идея, поскольку это приведет, как вы сказали, к большому количеству функций, но также к переобучению, поскольку вы получите один идентификатор на строку (если я правильно понял ваши данные). Это также сделает вашу модель бесполезной в случае нового идентификатора пользователя, и вам придется переучивать свою модель каждый раз, когда у вас появляется новый пользователь.
В первую очередь я бы порекомендовал удалить эту переменную и попытаться построить модель только с другими переменными.
Еще одна идея, которую вы можете попробовать, - выполнить кластеризацию пользователей, которых вы основали на других функциях, а затем передать кластер как функцию вместо идентификатора пользователя, но я не знаю, хорошая ли это идея, поскольку я не не знаю, какие данные у вас есть.
Кроме того, вы говорите о прогнозировании на конкретную дату. Описанные вами данные не предполагают, что если у вас есть количество часов на несколько дат, это ближе к проблеме прогнозирования временных рядов, которая отличается от "классической" проблемы регрессии.