Запуск, например, cv.glmnet для набора данных дает мне (по умолчанию) 100 различных моделей.Теперь, если в моем наборе данных отсутствовали данные, я мог бы сделать несколько вменений (скажем, 10 вменений) и запустить cv.glmnet для каждого из вменений.
Если я игнорирую фактические значения коэффициентов для каждой из моделей, ипросто посмотрите на выбранные функции (то есть наборы имен столбцов), некоторые модели являются подмоделями других.
Код, подобный этому, несколько имитирует результаты:
usevars<-paste("var", 1:100, sep="")
mdls<-replicate(1000, {
numVars<-sample.int(length(usevars), 1)
sample(usevars, numVars)
})
names(mdls)<-paste("mdl", 1:1000, sep="")
Теперь достаточно простополучить отношения родитель-потомок для подмоделей в этом отношении.Также возможно включить только «прямое родительство» (т. Е. Если модель A является дочерней по отношению к B, а B является дочерней по отношению к C, тогда не включайте связь между A и C).
Наконец, я прихожук моей проблеме: я использовал igraph, чтобы построить эти модели и их (прямые) отношения.Однако я не нашел компоновку, которая могла бы сгруппировать узлы на основе другой переменной (в данном случае размера модели): в этой настройке кажется хорошей идеей создать этот график, содержащий «полосы» моделей с той же моделью.size (количество переменных в модели).
То, что я в итоге сделал, было более или менее рассчитать позиции каждого узла самостоятельно через кучу кода (который я слишком смущен, чтобы публиковать здесь), но я всегда задавался вопросом, пропустил ли я лучшее / нестандартное решение.
Мой собственный код привел к появлению таких графиков (вы можете игнорировать цвета и метки - просто знайте,что горизонтальная ось соответствует размеру модели):
Предложения по достижению такого графа более элегантно, чем выполнение всей тяжелой работы самостоятельно, с благодарностью.