Ловите арканом и эластичная сеть с перекрестной проверкой

Этот пример показывает, как предсказать пробег (MPG) автомобиля на основе его веса, смещения, лошадиной силы и ускорения, с помощью лассо и эластичных сетевых методов.

Загрузите набор данных carbig.

load carbig

Извлеките непрерывные (некатегориальные) предикторы (лассо не обрабатывает категориальные предикторы).

X = [Acceleration Displacement Horsepower Weight];

Выполните подгонку лассо с 10-кратной перекрестной проверкой.

[b fitinfo] = lasso(X,MPG,'CV',10);

Постройте результат.

lassoPlot(b,fitinfo,'PlotType','Lambda','XScale','log');

Вычислите корреляцию предикторов. Устраните NaNs сначала.

nonan = ~any(isnan([X MPG]),2);
Xnonan = X(nonan,:);
MPGnonan = MPG(nonan,:);
corr(Xnonan)
ans = 4×4

    1.0000   -0.5438   -0.6892   -0.4168
   -0.5438    1.0000    0.8973    0.9330
   -0.6892    0.8973    1.0000    0.8645
   -0.4168    0.9330    0.8645    1.0000

Поскольку некоторые предикторы высоко коррелируются, выполняют эластичный сетевой подбор кривой. Используйте Alpha = 0.5.

[ba fitinfoa] = lasso(X,MPG,'CV',10,'Alpha',.5);

Постройте результат. Назовите каждый предиктор, таким образом, можно сказать, который кривая который.

pnames = {'Acceleration','Displacement','Horsepower','Weight'};
lassoPlot(ba,fitinfoa,'PlotType','Lambda','XScale','log',...
    'PredictorNames',pnames);

Когда вы активируете Data Cursor и и кликаете по графику, вы видите имя предиктора, коэффициента, значения Lambda и индекса той точки, имея в виду столбец в b, сопоставленном с той подгонкой.

Здесь, эластичная сеть и результаты лассо не очень похожи. Кроме того, эластичный сетевой график отражает известное качественное свойство эластичного сетевого метода. Эластичная сеть сохраняет три ненулевых коэффициента, когда Lambda увеличивается (к левым графика), и эти три коэффициента достигают 0 приблизительно в том же значении Lambda. Напротив, график лассо показывает два из этих трех коэффициентов, становящихся 0 в том же значении Lambda, в то время как другой коэффициент остается ненулевым для более высоких значений Lambda.

Это поведение иллюстрирует общий шаблон. В целом эластичная сеть имеет тенденцию сохранять или пропускать группы очень коррелированых предикторов, когда Lambda увеличивается. Напротив, лассо имеет тенденцию пропускать меньшие группы или даже отдельные предикторы.

Для просмотра документации необходимо авторизоваться на сайте