Этот пример показывает, как идентифицировать и удалить избыточные предикторы из обобщенной линейной модели.
Создайте данные с 20 предикторами и откликами Пуассона, используя всего три предиктора плюс константа.
rng('default') % for reproducibility X = randn(100,20); mu = exp(X(:,[5 10 15])*[.4;.2;.3] + 1); y = poissrnd(mu);
Создайте перекрестную проверенную регуляризацию лассо регрессионой модели Пуассона данных.
[B,FitInfo] = lassoglm(X,y,'poisson','CV',10);
Исследуйте график перекрестной проверки, чтобы увидеть эффект Lambda
параметр регуляризации.
lassoPlot(B,FitInfo,'plottype','CV'); legend('show') % show legend
Зеленый круг и штриховая линия определяют местоположение Lambda
с минимальной ошибкой перекрестной проверки. Синий круг и штриховая линия определяют местоположение точки с минимальной ошибкой перекрестной валидации плюс одно стандартное отклонение.
Найдите ненулевые коэффициенты модели, соответствующие двум идентифицированным точкам.
minpts = find(B(:,FitInfo.IndexMinDeviance))
minpts = 7×1
3
5
6
10
11
15
16
min1pts = find(B(:,FitInfo.Index1SE))
min1pts = 3×1
5
10
15
Коэффициенты из минимальной плюс одной стандартной точки ошибки являются именно теми коэффициентами, которые используются для создания данных.
Найдите значения коэффициентов модели в минимальной плюс одной стандартной точке ошибки.
B(min1pts,FitInfo.Index1SE)
ans = 3×1
0.2903
0.0789
0.2081
Значения коэффициентов, как и ожидалось, меньше исходного [0.4,0.2,0.3]
. Лассо работает с помощью «усадки», которая смещает коэффициенты предиктора к нулю.
Постоянный член находится в FitInfo.Intercept
вектор.
FitInfo.Intercept(FitInfo.Index1SE)
ans = 1.0879
Постоянный термин близок к 1, что является значением, используемым для генерации данных.