exponenta event banner

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

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

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

load carbig

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

X = [Acceleration Displacement Horsepower Weight];

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

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

Постройте график результата.

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

Figure contains 2 axes. Axes 1 with title Trace Plot of Coefficients Fit by Lasso is empty. Axes 2 with title Trace Plot of Coefficients Fit by Lasso contains 6 objects of type line. These objects represent LambdaMinMSE, Lambda1SE, B1, B2, B3, B4.

Рассчитайте корреляцию предикторов. Сначала устраните 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);

Figure contains 2 axes. Axes 1 with title Trace Plot of Coefficients Fit by Elastic Net (Alpha = 0.5) is empty. Axes 2 with title Trace Plot of Coefficients Fit by Elastic Net (Alpha = 0.5) contains 6 objects of type line. These objects represent LambdaMinMSE, Lambda1SE, Acceleration, Displacement, Horsepower, Weight.

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

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

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

См. также

| | | |

Связанные темы