Регрессор randomforest со всеми независимыми переменными в качестве категориальных - PullRequest
0 голосов
/ 03 апреля 2020

Я застрял в процессе построения модели. В основном у меня есть 10 параметров, все из которых являются категориальными переменными. Даже категории имеют большое количество уникальных значений (одна категория имеет 1335 уникальных значений из 300 000 записей), и значение y, которое должно быть предсказано, является числом дней (числовым). Я использую randomforestregressor и получаю точность около 55-60%. Я не уверен, является ли это максимальным пределом или мне действительно нужно изменить сам алгоритм. Я гибок с любыми решениями.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Наличие до 1335 категорий для категориального измерения может вызвать случайный лесной регрессор (или классификатор), что вызовет некоторую головную боль в зависимости от того, как категориальные измерения обрабатываются внутри, и все будет также зависеть от частот распределения категорий. Какую библиотеку вы используете для регрессии случайных лесов?

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

У вас есть категориальное измерение x1 с категориями [c11, c12, ..., c1n] Мы легко сопоставляем эти категории с числовыми значениями, говоря, что x1 имеет значение 1, если это категория c11, или значение 2, если это категория, или значение или i для категории c1i et c. Используйте это новое некатегориальное измерение в качестве входного измерения для обучения (позже вам придется соответствующим образом изменить свой вход для регрессора). Вы можете go дальше, чем это. Перемешайте (случайным образом) порядок категорий x1, чтобы получить случайный порядок, например [c13, c19, c1n, c1i, ..., c12]. Сделайте то же самое, что и выше, и у вас будет другое новое некатегоричное входное измерение (учтите, что вам придется помнить порядок перемешивания для регрессии позже). Мне любопытно, если добавление нескольких (где-то от 1 до 100 или любое другое число) размеров, подобных этому, может улучшить вашу производительность. Пожалуйста, посмотрите, как меняется производительность для разных количеств таких измерений. (Но имейте в виду, что больше таких измерений будет стоить вам времени предварительной обработки при регрессии)

В приведенном ниже кодовом блоке потребуется объединить несколько категориальных измерений одновременно. Рассматривайте это только для вдохновения.

Another idea would be to check if some form of linear classifier with the hot-encodings for each individual category for multiple categorical dimensions might be able improve things (This can help you find useful orderings more quickly than the approach above).
0 голосов
/ 05 апреля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...