У меня есть набор данных с около 70 переменных, которые я хотел бы сократить. Я хочу использовать CV, чтобы найти наиболее полезные переменные следующим образом.
1) Случайно выберите, скажем, 20 переменных.
2) Используйте stepwise
/ LASSO
/ lars
/ etc для выбора наиболее важных переменных.
3) Повторите ~ 50x и посмотрите, какие переменные выбираются (не исключаются) чаще всего.
Это похоже на то, что randomForest
будет делать, но rfVarSel
пакет, кажется, работает только для факторов / классификации, и мне нужно предсказать непрерывную зависимую переменную.
Я использую R, поэтому любые предложения в идеале будут реализованы там.
Ответы:
Я считаю, что то, что вы описываете, уже реализовано в
caret
пакете. Посмотрите наrfe
функцию или виньетка здесь: http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdfСказав это, зачем вам сокращать количество функций? С 70 до 20 на самом деле не уменьшение на порядок. Я думаю, вам понадобится более 70 функций, прежде чем вы будете твердо уверены, что некоторые функции действительно и не имеют значения. Но опять же, вот где субъективный априор приходит, я полагаю.
источник
Нет причины, по которой частота выбора переменных предоставляет информацию, которую вы еще не получили из очевидного значения переменных в исходной модели. По сути это повтор первоначальной статистической значимости. вы также добавляете новый уровень произвола, когда пытаетесь выбрать частоту выбора. Выбор переменных при повторной выборке сильно повреждается коллинеарностью в дополнение к другим проблемам.
источник
Я пересмотрел свой ответ ранее сегодня. Теперь я сгенерировал некоторые примеры данных для запуска кода. Другие справедливо предложили вам изучить использование пакета карет, с которым я согласен. Однако в некоторых случаях вам может понадобиться написать собственный код. Ниже я попытался продемонстрировать, как использовать функцию sample () в R, чтобы случайным образом назначать наблюдения для перекрестных проверок. Я также использую циклы for, чтобы выполнить предварительный выбор переменной (используя одномерную линейную регрессию с минимальным значением p, равным 0,1) и построение модели (используя ступенчатую регрессию) для десяти обучающих наборов. Затем вы можете написать свой собственный код, чтобы применить полученные модели к сгибам проверки. Надеюсь это поможет!
Перед выполнением перекрестной проверки важно прочитать о ее правильном использовании. Эти две ссылки предлагают отличные обсуждения перекрестной проверки:
Эти документы предназначены для биостатистов, но были бы полезны для всех.
Кроме того, всегда имейте в виду, что использование ступенчатой регрессии опасно (хотя использование перекрестной проверки должно помочь облегчить переоснащение). Хорошее обсуждение поэтапной регрессии доступно здесь: http://www.stata.com/support/faqs/stat/stepwise.html .
Дайте мне знать, если у вас есть дополнительные вопросы!
источник
Я только что нашел что-то хорошее здесь: http://cran.r-project.org/web/packages/Causata/vignettes/Causata-vignette.pdf
Попробуйте это возможно при использовании пакета glmnet
источник