Для недавнего соревнования Kaggle я (вручную) определил 10 дополнительных функций для своего тренировочного набора, которые затем будут использоваться для обучения классификатора случайных лесов. Я решил запустить PCA в наборе данных с новыми функциями, чтобы увидеть, как они сравниваются друг с другом. Я обнаружил, что ~ 98% дисперсии несет первый компонент (первый собственный вектор). Затем я несколько раз обучил классификатор, добавляя одну функцию за раз, и использовал перекрестную проверку и среднеквадратическую ошибку, чтобы сравнить качество классификации. Я обнаружил, что классификации улучшались с каждой дополнительной функцией, и что конечный результат (со всеми 10 новыми функциями) был намного лучше, чем первый запуск с (скажем) 2 функциями.
Учитывая, что PCA утверждает, что ~ 98% дисперсии было в первом компоненте моего набора данных, почему качество классификаций так улучшилось?
Будет ли это справедливо для других классификаторов? РЧ масштабируется по нескольким ядрам, поэтому тренироваться намного быстрее, чем (скажем) SVM.
Что, если я преобразовал набор данных в пространство «PCA» и запустил классификатор в преобразованном пространстве. Как бы изменились мои результаты?
Ответы:
При прогнозном моделировании вы пытаетесь объяснить вариацию в ответе, а не вариацию в функциях. Нет никаких оснований полагать, что включение как можно большего количества изменений в одну новую функцию будет захватывать большую часть прогнозирующей силы функций в целом.
Это часто объясняется как разница между регрессией главных компонент вместо частичных наименьших квадратов.
источник
Boruta
. Я тоже не нашел их полезными. Я считаю неразумным полагать, что любая конкретная функция не имеет никакого эффекта. Я могу поверить, что выделение определенных функций над другими может быть полезным, но базовый алгоритм randomForest уже делает это довольно хорошо. Если вы настолько глубоко погружены в моделирование и хотите повысить производительность, я бы посоветовал использовать другие алгоритмы, например несколько расширенных деревьев, с вашим randomForest.Первый основной компонент - это линейная комбинация всех ваших функций. Тот факт, что он объясняет почти всю изменчивость, просто означает, что большинство коэффициентов переменных в первом главном компоненте являются значительными.
Теперь сгенерированные вами деревья классификации - это тоже немного другое животное. Они выполняют двоичное разбиение на непрерывные переменные, которые лучше всего разделяют категории, которые вы хотите классифицировать. Это не совсем то же самое, что нахождение ортогональных линейных комбинаций непрерывных переменных, дающих направление наибольшей дисперсии. Фактически, мы недавно обсуждали документ по CV, где PCA использовался для кластерного анализа, и автор (ы) обнаружили, что существуют ситуации, когда наилучшее разделение обнаруживается не в первых нескольких основных компонентах, а в последних.
источник