exponenta event banner

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

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

Шаг 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) = log (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 является лучшим предиктором для новых данных.