Этот пример показывает, как идентифицировать и удалить избыточные предикторы из обобщенной линейной модели.
Создайте данные с 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, который является значением, используемым, чтобы сгенерировать данные.