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

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

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

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

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