Упорядочите логистическую регрессию

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

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

Загрузите данные ionosphere. Ответ Y является массивом ячеек символов 'b' или 'g'. Преобразуйте ячейки в логические значения с 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.

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

Функция 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 является лучшим предиктором для новых данных.

Для просмотра документации необходимо авторизоваться на сайте