Я хочу обучить классификатор, скажем SVM, или случайный лес, или любой другой классификатор. Одной из функций в наборе данных является категориальная переменная с 1000 уровнями. Каков наилучший способ уменьшить количество уровней в этой переменной. В R есть функция, называемая combine.levels()
в пакете Hmisc , которая объединяет нечастые уровни, но я искал другие предложения.
11
Ответы:
Как лучше всего сделать это будет изменяться чрезвычайно в зависимости от задачи , которую вы выполняете, так что нельзя сказать , что будет лучше в задачи независимым образом.
Есть две простые вещи, чтобы попробовать, если ваши уровни являются порядковыми:
Если уровни не являются порядковыми, вы можете кластеризовать уровни на основе других функций / переменных в вашем наборе данных и заменить идентификаторы кластера для предыдущих уровней. Существует так много способов сделать это, как и алгоритмов кластеризации, поэтому поле широко открыто. Когда я это читаю, это то, что
combine.levels()
мы делаем. Вы можете сделать то же самое, используяkmeans()
илиprcomp()
. (Вы могли / должны впоследствии обучить классификатор, чтобы предсказывать кластеры для новых точек данных.)источник