Светлана Суязова (Аксюк)
1 августа 2019
Светлана Андреевна Суязова (Аксюк) s.a.aksuk@gmail.com
\( Y \) – категориальная переменная, например, вид ириса:
\[ Y = \left\{ \begin{array}{lr} 1, & setosa \\ 2, & versicolor \\ 3, & virginica \\ \end{array} \right. \]
Вопросы:
\( Y \) – категория; 1, 2, 3 – метки
\( Y \) – категория; 1, 2, … – метки
Две категории – логистическая регрессия
Более двух категорий – нерегрессионные модели.
На примере данных по пассажирам Титаника 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 \) связаны нелинейно, поэтому:
На примере данных 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 – истинно положительные.
Обучающая выборка | Тестовая выборка |
\[ {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] \):
Сводные характеристики качества
Информативность (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 |
На что ориентироваться при выборе порога?
ROC – “радиочастотная характеристика приёмника” (receiver operating characteristic) – исторически сложившийся термин.
Кривая отражает зависимость чувствительности от специфичности в зависимости от порога отсечения вероятности.
AUC (area under the curve) – площадь под кривой, или общее качество классификатора.
AUC = 0.5 для бинарного классификатора – простое случайное угадывание, 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
titanic_train
и titanic_test
из пакета titanic
.