Летняя школа статистики 2019 :)

Светлана Суязова (Аксюк)
1 августа 2019

День 3:

Логистическая регрессия

Светлана Андреевна Суязова (Аксюк)
s.a.aksuk@gmail.com

План

- Если \( Y \) бинарный: логистическая регрессия

  • Показатели качества модели бинарной классификации
  • Оценка качества: ROC-кривая
  • Ограничения модели

Двоичное судоку

ru-xkcd.livejournal.com/75022.html

Почему не обычная регрессия?

\( Y \) – категориальная переменная, например, вид ириса:

\[ Y = \left\{ \begin{array}{lr} 1, & setosa \\ 2, & versicolor \\ 3, & virginica \\ \end{array} \right. \]

Вопросы:

  1. Расстояние между категориями?
  2. Порядок категорий?

\( Y \) – категория; 1, 2, 3 – метки

Почему не обычная регрессия?

\( Y \) – категория; 1, 2, … – метки

Две категориилогистическая регрессия

  • \( Y \) – бинарный (0 – отсутствие признака; 1 – наличие признака). \( Y \) интерпретируется как принадлежность одному из классов; нужно задать порог отсечения.
  • \( Y \) – оценка вероятности (частость), \( Y \in [0, 1] \). \( Y \) интерпретируется как вероятность принадлежности одному из классов.

Более двух категорий – нерегрессионные модели.

Логистическая регрессия

На примере данных по пассажирам Титаника titanic_train{titanic}

В обучающей выборке данные по 891 пассажирам. Переменные, которые будем использовать:

  • Survived – выжил ли пассажир (1 – да, 0 – нет);
  • Pclass – в каком классе плыл пассажир (1, 2 или 3);
  • Sex – пол (male / female);
  • Age – возраст, лет;
  • SibSp – число братьев, сестёр, супругов на борту;
  • Parch – число родителей, детей на борту;
  • Fare – стоимость билета;
  • Embarked – порт, в котором пассажир сел на борт.

Логистическая регрессия

Данные по пассажирам Титаника titanic_train

    Survived Pclass    Sex Age SibSp Parch     Fare Embarked
598        0      3   male  49     0     0   0.0000        S
737        0      3 female  48     1     3  34.3750        S
808        0      3 female  18     0     0   7.7750        S
399        0      2   male  23     0     0  10.5000        S
276        1      1 female  63     1     0  77.9583        S
312        1      1 female  18     2     2 262.3750        C

Задача: предсказать Survived по остальным переменным.

Логистическая регрессия

Зависимая переменная модели – условная вероятность:

\[ Y = P(\mathrm{Survived} = \mathrm{1} | \mathrm{X = x}) \]

\[ P(X) = \hat{\beta}_0 + \hat{\beta}_1 \cdot X \]

Логистическая функция возвращает для любого X значение из интервала от 0 до 1:

\[ P(X) = {e^{\hat{\beta}_0 + \hat{\beta}_1 \cdot X} \over 1 + e^{\hat{\beta}_0 + \hat{\beta}_1 \cdot X}} \]

Выжил ~ Класс билета


    Pearson's Chi-squared test

data:  table(df.train$Survived, df.train$Pclass)
X-squared = 72.67, df = 2, p-value < 2.2e-16

Выжил ~ Пол


    Pearson's Chi-squared test with Yates' continuity correction

data:  table(df.train$Survived, df.train$Sex)
X-squared = 113.87, df = 1, p-value < 2.2e-16

Выжил ~ Возраст


    Welch Two Sample t-test

data:  df.train$Age[df.train$Survived == 0] and df.train$Age[df.train$Survived == 1]
t = 1.4755, df = 357.99, p-value = 0.141
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.6943441  4.8667893
sample estimates:
mean of x mean of y 
 30.74219  28.65596 

Выжил ~ Братья и супруги


    Pearson's Chi-squared test

data:  table(df.train$Survived, df.train$SibSp)
X-squared = 15.206, df = 5, p-value = 0.009518

Выжил ~ Родители и дети


    Pearson's Chi-squared test

data:  table(df.train$Survived, df.train$Parch)
X-squared = 14.303, df = 6, p-value = 0.02643

Выжил ~ Цена билета


    Welch Two Sample t-test

data:  df.train$Fare[df.train$Survived == 0] and df.train$Fare[df.train$Survived == 1]
t = -5.4217, df = 202.13, p-value = 1.674e-07
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -43.66535 -20.37511
sample estimates:
mean of x mean of y 
 22.82266  54.84289 

Выжил ~ Порт посадки


    Pearson's Chi-squared test

data:  table(df.train$Survived, df.train$Embarked)
X-squared = 20.304, df = 2, p-value = 3.901e-05

Выжил ~ Возраст

Обычная линейная регрессия Логистическая регрессия

Логистическая регрессия

\[ P(X) = {e^{\hat{\beta}_0 + \hat{\beta}_1 \cdot X} \over 1 + e^{\hat{\beta}_0 + \hat{\beta}_1 \cdot X}} \Leftrightarrow \\ \Leftrightarrow {P(X) \over 1 - P(X)} = e^{\hat{\beta}_0 + \hat{\beta}_1 \cdot X} \]

\( {P(X) \over 1 - P(X)} \in (0, \infty) \) – риск события:

Например: если \( P(X) = 0.8 \), это означает, что 8 из 10 человек выживут с риском: \[ {P(X) \over 1 - P(X)} = {0.8 \over 1 - 0.8} = 4 \]

Логистическая регрессия

\[ \mathrm{ln} \bigg( {P(X) \over 1 - P(X)} \bigg) = \hat{\beta}_0 + \hat{\beta}_1 \cdot X \]

\( \mathrm{ln} \bigg( {P(X) \over 1 - P(X)} \bigg) \) – логарифм риска, или логит.

\( P(X) \) и \( X \) связаны нелинейно, поэтому:

  • коэффициент \( \hat{\beta}_1 \) не отражает изменение \( P(X) \), вызванное увеличением \( X \) на 1;
  • скорость изменения \( P(X) \) с изменением \( X \) на 1 зависит от текущего значения \( X \);
  • направление связи интерпретируется как в линейной регрессии: если \( \hat{\beta}_1 > 0 \), то \( X \uparrow \uparrow P(X) \); если \( \hat{\beta}_1 < 0 \), то \( X \uparrow \downarrow P(X) \).

На примере данных titanic_train

            Estimate Std. Error z value Pr(>|z|)
(Intercept)  -0.0946       0.23   -0.41   0.6805
Age          -0.0104       0.01   -1.48   0.1392
<...> 
AIC: 576.7

\[ \mathrm{ln} \bigg( {P(X) \over 1 - P(X)} \bigg) = -0.0946 -0.0104 \cdot \mathrm{Age} \]

На примере данных titanic_train

            Estimate Std. Error z value Pr(>|z|)
(Intercept)   4.4705       0.70    6.38   0.0000
Pclass2      -1.1170       0.42   -2.67   0.0076
Pclass3      -2.5376       0.44   -5.77   0.0000
Sexmale      -2.5988       0.30   -8.80   0.0000
Age          -0.0398       0.01   -3.69   0.0002
SibSp        -0.2992       0.17   -1.79   0.0731
Parch        -0.2407       0.17   -1.46   0.1453
Fare          0.0017       0.00    0.53   0.5935
EmbarkedQ    -0.6372       0.77   -0.83   0.4090
EmbarkedS    -0.5533       0.37   -1.48   0.1390
<...> 
AIC: 391.82

есть незачимые регрессоры

На примере данных titanic_train

            Estimate Std. Error z value Pr(>|z|)
(Intercept)   4.3844       0.69    6.35   0.0000
Pclass2      -1.1573       0.42   -2.79   0.0053
Pclass3      -2.6220       0.43   -6.05   0.0000
Sexmale      -2.4833       0.28   -8.81   0.0000
Age          -0.0396       0.01   -3.69   0.0002
SibSp        -0.3466       0.16   -2.12   0.0337
Fare          0.0008       0.00    0.28   0.7821
EmbarkedQ    -0.6318       0.76   -0.83   0.4060
EmbarkedS    -0.5563       0.37   -1.49   0.1363
<...> 
AIC: 392.12

есть незачимые регрессоры

На примере данных titanic_train

            Estimate Std. Error z value Pr(>|z|)
(Intercept)   4.4744       0.61    7.30   0.0000
Pclass2      -1.2011       0.38   -3.12   0.0018
Pclass3      -2.6767       0.39   -6.92   0.0000
Sexmale      -2.4893       0.28   -8.86   0.0000
Age          -0.0398       0.01   -3.72   0.0002
SibSp        -0.3414       0.16   -2.11   0.0353
EmbarkedQ    -0.6519       0.76   -0.86   0.3894
EmbarkedS    -0.5793       0.36   -1.59   0.1116
<...> 
AIC: 390.19

есть незачимые регрессоры

На примере данных titanic_train

            Estimate Std. Error z value Pr(>|z|)
(Intercept)   4.2107       0.58    7.24   0.0000
Pclass2      -1.4118       0.36   -3.89   0.0001
Pclass3      -2.8542       0.37   -7.66   0.0000
Sexmale      -2.4981       0.28   -8.92   0.0000
Age          -0.0418       0.01   -3.94   0.0001
SibSp        -0.3638       0.16   -2.26   0.0237
<...> 
AIC: 388.79

Все параметры значимы:

\[ \mathrm{ln} \bigg( {P(X) \over 1 - P(X)} \bigg) = 4.2107 -1.4118 \cdot \mathrm{Pclass2} - \]

\[ -2.8542 \cdot \mathrm{Pclass3} -2.4981 \cdot \mathrm{Sexmale} -0.0418 \cdot \mathrm{Age} - \]

\[ -0.3638 \cdot \mathrm{SibSp} \]

Прогнозы на обучающую выборку

    Прогноз
Факт   0   1
   0 221  35
   1  45 126

Это матрица неточностей для бинарного \( Y \):

Предсказанное значение \( \hat{Y} \)
– \( (H_0) \) + \( (H_1) \)
Истинное значение \( Y \) – \( (H_0) \) TN FP
+ \( (H_1) \) FN TP

“+” означает наличие признака; “–” – отсутствие признака.
TN – истинно отрицательные случаи, FP – ложноположительные, FN – ложноотрицательные, TP – истинно положительные.

План

  • Если \( Y \) бинарный: логистическая регрессия

- Показатели качества модели бинарной классификации

  • Оценка качества: ROC-кривая
  • Ограничения модели

Точность модели – частота ошибок:

Обучающая выборка Тестовая выборка

\[ {1 \over n} \cdot \sum \limits_{i=1}^{n} I(y_i \neq \hat{y}_i) \]

\[ {1 \over n_{TEST}} \cdot \sum \limits_{i \in TEST} I(y_i \neq \hat{y}_i) \]
\[ I(y_i \neq \hat{y}_i) = \begin{cases} 0, & y_i = \hat{y}_i, \\ 1, & y_i \neq \hat{y}_i. \end{cases} \]

В примере с титаником:

  • обучающая выборка – 427 наблюдений из titanic_train (60%, отобраны случайно)

  • тестовая выборка – 185 наблюдений из titanic_train (40% оставшихся от обучающей)

  • выборка для прогноза (\( Y \) неизвестен) – 331 наблюдение, таблица titanic_test

Показатели точности

Предсказанное значение \( \hat{Y} \)
– \( (H_0) \) + \( (H_1) \)
Истинное значение \( Y \) – \( (H_0) \) TN FP
+ \( (H_1) \) FN TP

Чувствительность (sensitivity, TP rate):
\[ TPR = P(\textrm{модель:} + | \, \textrm{факт:} +) = {TP \over (TP + FN)} \]

Специфичность (specificity, TN rate):
\[ SPC = P(\textrm{модель:} - | \, \textrm{факт:} -) = {TN \over (FP + TN)} \]

Предсказанное значение \( \hat{Y} \)
– \( (H_0) \) + \( (H_1) \)
Истинное значение \( Y \) – \( (H_0) \) TN FP
+ \( (H_1) \) FN TP

Ценность положительного прогноза (positive predictive value, precision):

\[ PPV = P(\textrm{факт:} + | \, \textrm{модель:} +) = {TP \over (TP + FP)} \]

Ценность отрицательного прогноза (negative predictive value):

\[ NPV = P(\textrm{факт:} - | \, \textrm{модель:} -) = {TN \over (FN + TN)} \]

Ошибки

Доля ложноотрицательных исходов (FN rate):

\[ FNR = 1 - TPR \]

Доля ложных срабатываний (fall-out rate, FP rate):

\[ FPR = 1 - SPC \]

Доля ложного обнаружения (false discovery rate):

\[ FDR = 1 - PPV \]

чем ниже, тем лучше

Сводные характеристики качества

Точность, или верность (Accuracy):

\[ Acc = P(y_i = j \, | \, y_i \in \omega_j) = {(TP + TN) \over (TP + FP + TN + FN)} \]

F-мера – гармоническое среднее точности и чувствительности:

\[ F1 = {2 \cdot TP \over (2 \cdot TP + FP + FN)} \]

чем выше, тем лучше

Сводные характеристики качества

Корреляция Мэтьюса (\( \phi \)-коэффициент):

\[ MCC = {TP \cdot TN - FP \cdot FN \over \sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}} \]

\( MCC \in [-1, \, 1] \):

  • -1 – предсказанные классы противоположны истинным;
  • 0 – предсказанные классы не связаны с истинными (случайны);
  • 1 – предсказанные классы идеально совпадают с истинными.

Сводные характеристики качества

Информативность (informedness):

\[ TPR + SPC - 1 \]

Сводная прогностическая ценность (markedness):

\[ PPV + NPV - 1 \]

чем выше, тем лучше

Пример на обучающей выборке, модель со всеми значимыми регрессорами

    Прогноз
Факт   0   1
   0 221  35
   1  45 126

Наличие признака: выжил (Survived = 1).

Чувствительность: \( TPR = {126 \over 126 + 45} = 0.737 \) – доля истинных выживших, обнаруженных классификатором.

Специфичность: \( SPC = {221 \over 35 + 221} = 0.863 \) – доля правильно идентифицированных пассажиров, которые не выжили.

Пример на обучающей выборке, модель со всеми значимыми регрессорами

    Прогноз
Факт   0   1
   0 221  35
   1  45 126

Точность модели на обучающей выборке:

\[ Acc = {(221 + 126) \over (221 + 35 + 126 + 45)} = 0.813 \]

Ошибка на обучающей выборке: \( 1 - Acc = 0.187 \)

Доля класса выживших в обучающей выборке: \( \hat{\pi}_{\mathrm{1}} = 0.4 \)

Ошибка нулевого классификатора (Survived = 0): \( 1 - \hat{\pi}_{\mathrm{1}} = 0.6 \)

Как повысить чувствительность?

В текущей модели выживший – пассажир, для которого вероятность выжить превышает 50%:

\[ P(\mathrm{Survived = 1 |} X = x) > 0.5 \]

Снизим порог отсечения:

\[ P(\mathrm{Survived = 1 |} X = x) > 0.3 \]

Теперь выживший – пассажир, для которого вероятность выжить превышает 30%.

Пример на обучающей выборке, модель со всеми значимыми регрессорами, порог 0.3

    Прогноз
Факт   0   1
   0 175  81
   1  27 144

Чувствительность: \( TPR = {144 \over 144 + 27} = 0.842 \)

Специфичность: \( SPC = {175 \over 81 + 175} = 0.684 \)

Показатель P отсечения = 0.5 P отсечения = 0.3
Чувствительность 0.737 0.842
Специфичность 0.863 0.684
PPV 0.783 0.64
NPV 0.831 0.866
Точность (Acc) 0.813 0.747

На что ориентироваться при выборе порога?

План

  • Если \( Y \) бинарный: логистическая регрессия
  • Показатели качества модели бинарной классификации

- Оценка качества: ROC-кривая

  • Ограничения модели

ROC-кривая

ROC – “радиочастотная характеристика приёмника” (receiver operating characteristic) – исторически сложившийся термин.

Кривая отражает зависимость чувствительности от специфичности в зависимости от порога отсечения вероятности.

AUC (area under the curve) – площадь под кривой, или общее качество классификатора.

AUC = 0.5 для бинарного классификатора – простое случайное угадывание, ROC-кривая – биссектриса первой четверти.

ROC-кривая

План

  • Если \( Y \) бинарный: логистическая регрессия
  • Показатели качества модели бинарной классификации
  • Оценка качества: ROC-кривая

- Ограничения модели

Допущения

  • связь логарифма риска с \( X \) линейна;

  • случайная составляющая распределена нормально.

Ограничения

  • если классы идеально разделены, модель неустойчива;

  • затруднена оценка эффектов регрессоров на \( Y \);

  • если объясняющие переменные слабо объясняют \( Y \), мы получим прогнозные вероятности в окрестностях 0.5.

Альтернативы

  • линейный дискриминантный анализ, квадратичный дискриминантный анализ: работают если классы идеально разделяются, но хуже интерпретируются; нет проверки гипотез

  • kNN, или классификация по k ближайшим соседям: непараметический метод, нет проверки гипотез; плохо интерпретируется; когда увеличивается количество регрессоров, быстрее других методов теряет точность.

Сравнение нескольких моделей с p = 0.5

                                AIC.train TPR.test SPC.test
S ~ Age                            576.70     0.00     1.00
S ~ .                              391.82     0.68     0.86
S ~ . - Parch                      392.12     0.66     0.85
S ~ . - Parch - Fare               390.19     0.66     0.85
S ~ . - Parch - Fare - Embarked    388.79     0.71     0.83
                                Acc.test MSE.test
S ~ Age                             0.63     0.37
S ~ .                               0.79     0.21
S ~ . - Parch                       0.78     0.22
S ~ . - Parch - Fare                0.78     0.22
S ~ . - Parch - Fare - Embarked     0.78     0.22

Прогноз на выборку для прогноза для порога 0.5, модель со всеми предикторами

  Pclass    Sex  Age SibSp Parch    Fare Cabin Embarked P.S.1 Прогноз
1      3   male 34.5     0     0  7.8292              Q  0.07       0
2      3 female 47.0     1     0  7.0000              S  0.27       0
3      2   male 62.0     0     0  9.6875              Q  0.09       0
4      3   male 27.0     0     0  8.6625              S  0.09       0
5      3 female 22.0     1     1 12.2875              S  0.52       1
6      3   male 14.0     0     0  9.2250              S  0.15       0

Прогноз.test
    0     1 
0.607 0.393 
Прогноз
    0     1 
0.632 0.368 

Источники

  1. Джеймс Г., Уиттон Д., Хасти Т., Тибширани Р. Введение в статистическое обучение с примерами на языке R. Пер. с англ. С.Э. Мастицкого – М.: ДМК Пресс, 2016 – 450 с.
  2. James G., Witten D., Hastie T. and Tibshirani R. An Introduction to Statistical Learning with Applications in R. URL: http://www-bcf.usc.edu/~gareth/ISL/ISLR%20First%20Printing.pdf
  3. Данные titanic_train и titanic_test из пакета titanic.