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