Упорядочение логистической регрессии

Этот пример показывает, как упорядочить биномиальную регрессию. Функция канонической ссылки по умолчанию для биномиальной регрессии является логистической функцией.

Шаг 1. Подготовьте данные.

Загрузите ionosphere данные. Ответ на Y - массив ячеек из 'g' или 'b' персонажи. Преобразуйте камеры в логические значения с true представление 'g'. Удалите первые два столбца X потому что они имеют некоторые неловкие статистические свойства, которые выходят за возможности этого обсуждения.

load ionosphere
Ybool = strcmp(Y,'g');
X = X(:,3:end);

Шаг 2. Создайте перекрестную проверку подгонки.

Создайте регуляризованную биномиальную регрессию с помощью 25 Lambda значения и 10-кратная перекрестная валидация. Этот процесс может занять несколько минут.

rng('default') % for reproducibility
[B,FitInfo] = lassoglm(X,Ybool,'binomial',...
    'NumLambda',25,'CV',10);

Шаг 3. Исследуйте графики, чтобы найти соответствующую регуляризацию.

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

lassoPlot(B,FitInfo,'PlotType','CV');
legend('show','Location','best') % show legend

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

lassoPlot(B,FitInfo,'PlotType','Lambda','XScale','log');

График трассировки показывает ненулевые коэффициенты модели как функцию от параметра регуляризации Lambda. Поскольку существует 32 предиктора и линейная модель, существует 32 кривых. Как Lambda увеличивается налево, lassoglm устанавливает различные коэффициенты в нуль, удаляя их из модели.

График трассировки несколько сжат. Изменение масштаба для получения дополнительной информации.

xlim([.01 .1])
ylim([-3 3])

Как Lambda увеличивается к левой части графика, остается меньше ненулевых коэффициентов.

Найдите количество ненулевых коэффициентов модели в Lambda значение с минимальным отклонением плюс одна стандартная точка отклонения. Регуляризованные коэффициенты модели указаны в столбце FitInfo.Index1SE от B матрица.

indx = FitInfo.Index1SE;
B0 = B(:,indx);
nonzeros = sum(B0 ~= 0)
nonzeros =

    14

Когда вы задаете Lambda на FitInfo.Index1SE, lassoglm удаляет более половины из 32 исходных предикторов.

Шаг 4. Создайте регуляризованную модель.

Постоянный член находится в FitInfo.Index1SE ввод FitInfo.Intercept вектор. Вызывайте это значение cnst.

Модель logit (mu) = журнал (mu/( 1 - mu)) = X*B0 + cnst . Поэтому для предсказаний mu = exp(X*B0 + cnst)/(1+exp(x*B0 + cnst)).

The glmval функция оценивает предсказания модели. Это принимает, что первый коэффициент модели относится к постоянному члену. Поэтому сначала создайте вектор коэффициентов с постоянным членом.

cnst = FitInfo.Intercept(indx);
B1 = [cnst;B0];

Шаг 5. Исследуйте невязки.

Постройте график обучающих данных относительно предсказаний модели для регуляризованных lassoglm модель.

preds = glmval(B1,X,'logit');
histogram(Ybool - preds) % plot residuals
title('Residuals from lassoglm model')

Шаг 6. Альтернатива: Используйте идентифицированные предикторы в обобщенной линейной модели методом наименьших квадратов.

Вместо использования смещенных предсказаний из модели можно сделать объективную модель, используя только идентифицированные предикторы.

predictors = find(B0); % indices of nonzero predictors
mdl = fitglm(X,Ybool,'linear',...
    'Distribution','binomial','PredictorVars',predictors)
mdl = 


Generalized linear regression model:
    y ~ [Linear formula with 15 terms in 14 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE        tStat        pValue  
                   _________    _______    ________    __________

    (Intercept)      -2.9367    0.50926     -5.7666    8.0893e-09
    x1                 2.492    0.60795       4.099    4.1502e-05
    x3                2.5501    0.63304      4.0284     5.616e-05
    x4               0.48816    0.50336      0.9698       0.33215
    x5                0.6158    0.62192     0.99015        0.3221
    x6                 2.294     0.5421      4.2317    2.3198e-05
    x7               0.77842    0.57765      1.3476        0.1778
    x12               1.7808    0.54316      3.2786     0.0010432
    x16            -0.070993    0.50515    -0.14054       0.88823
    x20              -2.7767    0.55131     -5.0365    4.7402e-07
    x24               2.0212    0.57639      3.5067    0.00045372
    x25              -2.3796    0.58274     -4.0835    4.4363e-05
    x27              0.79564    0.55904      1.4232       0.15467
    x29               1.2689    0.55468      2.2876      0.022162
    x32              -1.5681    0.54336     -2.8859     0.0039035


351 observations, 336 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 262, p-value = 1e-47

Постройте график невязок модели.

plotResiduals(mdl)

Как ожидалось, невязки от модели с наименьшими квадратами немного меньше, чем у регуляризованной модели. Однако это не значит, что mdl является лучшим предиктором для новых данных.