exponenta event banner

Регуляризация Лассо

В этом примере показано, как lasso идентифицирует и отбрасывает ненужные предикторы.

Создайте 200 выборок пятимерных искусственных данных X из экспоненциальных распределений различными средствами.

rng(3,'twister') % For reproducibility
X = zeros(200,5);
for ii = 1:5
    X(:,ii) = exprnd(ii,200,1);
end

Создание данных ответа Y = X * r + eps , где r имеет только два ненулевых компонента, и шум eps нормальное со стандартным отклонением 0,1.

r = [0;2;0;-3;0];
Y = X*r + randn(200,1)*.1;

Подгонка перекрестно проверенной последовательности моделей с помощью lasso и постройте график результата.

[b,fitinfo] = lasso(X,Y,'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 7 objects of type line. These objects represent LambdaMinMSE, Lambda1SE, B1, B2, B3, B4, B5.

График показывает ненулевые коэффициенты в регрессии для различных значений Lambda параметр регуляризации. Большие значения Lambda появляются в левой части графа, что означает большую регуляризацию, что приводит к меньшему количеству ненулевых коэффициентов регрессии.

Пунктирные вертикальные линии представляют Lambda значение с минимальной среднеквадратичной ошибкой (справа) и Lambda значение с минимальной среднеквадратичной ошибкой плюс одно стандартное отклонение. Это последнее значение является рекомендуемой настройкой для Lambda . Эти строки появляются только при выполнении перекрестной проверки. Перекрестная проверка путем установки 'CV' аргумент пары имя-значение. В этом примере используется 10-кратная перекрестная проверка.

В верхней части графика показаны степени свободы (df), означающие количество ненулевых коэффициентов в регрессии, как функция Лямбды. Слева большое значение Лямбда приводит к тому, что все коэффициенты, кроме одного, равны 0. Справа все пять коэффициентов ненулевые, хотя график ясно показывает только два. Остальные три коэффициента настолько малы, что визуально их нельзя отличить от 0.

Для малых значений Лямбда (справа на графике) значения коэффициентов близки к оценке наименьших квадратов.

Найти Lambda значение минимальной перекрестно подтвержденной среднеквадратичной ошибки плюс одно стандартное отклонение. Осмотрите MSE и коэффициенты посадки при этом Lambda .

lam = fitinfo.Index1SE;
fitinfo.MSE(lam)
ans = 0.1398
b(:,lam)
ans = 5×1

         0
    1.8855
         0
   -2.9367
         0

lasso хорошо поработал над поиском вектора коэффициентов r .

Для сравнения найдите оценку наименьших квадратов r .

rhat = X\Y
rhat = 5×1

   -0.0038
    1.9952
    0.0014
   -2.9993
    0.0031

Оценка b(:,lam) имеет несколько больше среднеквадратичной ошибки, чем среднеквадратичной ошибки rhat .

res = X*rhat - Y;     % Calculate residuals
MSEmin = res'*res/200 % b(:,lam) value is 0.1398
MSEmin = 0.0088

Но b(:,lam) имеет только два ненулевых компонента и, следовательно, может обеспечить лучшие прогнозные оценки для новых данных.

См. также

| | | |

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