Хлеб с маслом прикладной статистики

Линейные модели действительно важны. Хотя существуют и другие линейные модели (иерархические, пропорциональные опасности и т. Д.), GL-модели представляют собой отличную отправную точку.

Во-первых, деловой аспект. Интерпретируемость является ключевым моментом для выработки рекомендаций и передачи результатов. Я не могу придумать более интерпретируемой модели машинного обучения (ML), чем GLM. Специалисты по частотности могут проверять гипотезы с помощью GLM для выполнения теста отношения правдоподобия, в то время как байесовцы могут получать апостериорные гипотезы, подбирая GLM с использованием априорных значений.

Во-вторых, технический аспект. Даже когда интерпретируемость не вызывает беспокойства, регуляризованная GLM, возможно, является наиболее часто используемой моделью ML. Часто это минимально жизнеспособный продукт для проекта по науке о данных, потому что его легко обучить и развернуть, но при этом он работает достаточно хорошо. Booking.com подробно рассказал, как они могут производить модели быстро и в больших масштабах, в этой статье (спойлер: она начинается с GLM). Если у вас есть много возможных проектов, может быть более целесообразным придерживаться GLM и возвращаться для улучшения моделей только после того, как вы выполнили все высокоприоритетные проекты.

Несколько лет назад появился вирусный твит:

Когда вы собираете средства, это искусственный интеллект.

Когда вы нанимаете, это ML.

Когда вы внедряете, это линейная регрессия.

Когда вы отлаживаете, это printf ().

И люди саркастически шутят:

Хотя эти утверждения не полностью основаны на фактах, в них есть доля правды. Конечно, для многих профессий требуется противоположный конец спектра: глубокое обучение. Удачи вам в попытках заниматься НЛП или компьютерным зрением с использованием линейной регрессии. Но разве глубокое обучение не представляет собой совокупность логистической регрессии? (Я шучу.)

Надеюсь, вы убедились, что GLM - важный навык, который нужно освоить в аналитике и науке о данных. Я хочу изложить суть GLM в этой короткой (хорошо, длинной) статье, чтобы вы могли хорошо понять, потратив 20 минут своего времени, а не читая весь учебник.

В этой статье сначала будет рассказано о логистической регрессии, потому что это наиболее распространенный и знакомый тип. Затем он будет использован в качестве примера для объяснения всеобъемлющих концепций GLM. Затем мы углубимся в другие типы GLM. Предполагается знание обычной регрессии методом наименьших квадратов (МНК).

Бинарные результаты: логистическая регрессия

Логистическая регрессия используется для двоичных ответов, закодированных как 1 или 0, истина или ложь. При агрегировании у нас могут быть пропорции или количество успехов в качестве переменной ответа. Мы предполагаем, что данные генерируются как подбрасывание монеты (биномиальное распределение), и мы хотим предсказать вероятность успеха в зависимости от предикторов.

Мы будем использовать набор данных Уплотнительные кольца Space Shuttle Challenger для демонстрации. В 1986 году космический шаттл распался вскоре после запуска, погибли все его пассажиры из-за неисправности уплотнительного кольца.

Инцидент можно было предотвратить. Инженеры выразили обеспокоенность и настоятельно рекомендовали отложить запуск из-за погодных условий, но предупреждения были проигнорированы руководством НАСА. В ночь перед запуском инженер Эбелинг сказал жене: «Он вот-вот взорвется».

Как инженеры узнали? Вот данные, которые у них были (точки немного дрожат):

При запуске внешняя температура составляла 31 ° F. Даже при визуальном осмотре мы должны встревожиться. Инженеры попросили подождать, пока температура не поднимется выше 53F. НАСА считало, что вероятность неудачного запуска составляет 0,001%. Насколько рискованным был запуск на самом деле?

Самый наивный способ ответить на этот вопрос - использовать регрессию OLS для прогнозирования вероятностей:

Однако в этой модели нет смысла. Во-первых, он может прогнозировать вероятности за пределами [0,1] или, в данном случае, ожидаемые значения за пределами [0,6]. Вместо прямой линии, как в OLS, логистическая регрессия соответствует логистической функции, форме сигмовидной (S-образной) функции:

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

Обратите внимание на отсутствие ε. Неприводимая ошибка возникает из-за биномиального распределения, которое является функцией p.

В R мы можем подогнать модель к одной функции:

model <- glm(
  damage/6 ~ temp, 
  data = faraway::orings, 
  family = 'binomial', 
  weights = rep(6, nrow(faraway::orings))
)

Есть два способа ввода сгруппированных биномиальных данных в glm R. Я предпочитаю этот, где ответ - это пропорция, а вес - количество попыток. Прогнозируемые средние значения с доверительным интервалом 95%:

Основываясь на предположениях модели, мы ожидаем, что в среднем 5 или 6 уплотнительных колец выйдут из строя в условиях запуска. Запуск был обречен.

Теперь, когда мы увидели наш первый пример, мы обсудим общие аспекты GLM, прежде чем переходить к другим дистрибутивам.

Теория: Функции связи

GLM предсказывают функции ссылок вместо необработанных наблюдений. Думайте о них как о способе привязки ваших наблюдений к вашей модели.

Лучший способ объяснить функцию связи - сравнить ее с функцией преобразования. Логарифмическое преобразование часто используется для работы со смещенными вправо остатками в регрессии OLS для прогнозирования E [ln (y) | X], условного ожидания функции. Использование гауссовской GLM со связью журнала вместо этого предсказывает ln (E [y | X]), функцию условного ожидания.

Разница становится более ясной, когда мы видим уравнения регрессии с ε, следующие нормальному распределению по предположению:

  • логарифмическое преобразование: ln (y) = Xβ + ε. Условное распределение y является логнормальным.
  • ссылка журнала: ln (y + ε) = Xβ. Условное распределение y нормальное.

В логарифмическом преобразовании exp (подогнанный) - это не прогнозируемое среднее, а режим. Ни один из них не лучше другого: они делают разные предположения.

Функции связывания демонстрируют свое великолепие в счетах и ​​двоичных наблюдениях. Мы часто используем функцию привязки журнала для моделирования подсчетов. Как часто вы разочаровывались из-за невозможности вести журнал (0)? В предположении Пуассона вы можете наблюдать 0, даже если условное среднее ненулевое. Журнал условного среднего не представляет проблемы.

Функция канонической связи в логистической регрессии - это функция логита (логарифма шансов).

Мы говорим каноническое, потому что это то, что мы получаем из самого биномиального распределения. Функция logit - удобный способ преобразования (0,1) → R, но есть много функций на выбор. Почему именно этот?

Видите что-нибудь знакомое? Мы называем logit (p) естественным параметром биномиального распределения, потому что это параметр, который взаимодействует с y. Упражнение: проделайте то же самое с Пуассоном, чтобы показать, почему ln (λ) является канонической ссылкой.

Конечно, никто не заставляет вас использовать каноническую ссылку. Например, ссылка пробит часто используется для моделирования редких событий.

Теория: как работают GLM

Существует несколько алгоритмов для соответствия GLM, но в этой статье речь пойдет только о методах наименьших квадратов с повторным взвешиванием (IRLS), поскольку он дает лучшую интуицию. Рассматривать это через призму градиентов - слишком абстрактно. Некоторые математические выкладки будут отклонены, чтобы мы могли сосредоточиться на интуиции. Начнем с решения OLS в закрытой форме:

В OLS все наблюдения считаются независимыми, а ошибки выводятся из одного и того же нормального распределения с общей дисперсией. Если бы наблюдения не были одинаково взвешенными, решение выглядело бы так:

В OLS W - это единичная матрица, поэтому она опускается. Но что, если это не тождество, как в взвешенных наименьших квадратах? Мы сохраняем предположение независимости, поэтому W диагональная матрица. Каждая запись на диагоналях должна быть точностью или отклонением 1 /.

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

В качестве более конкретного примера мы знаем, что стандартная ошибка выборочного среднего s может быть вычислена как

Что, если мы сгруппировали данные и предположим, что каждое отдельное наблюдение исходит из группового нормального распределения, которое имеет одинаковую дисперсию? Если у нас есть три группы, мы можем вычислить глобальное среднее как

В этом случае взвешенное по точности среднее - это то же самое, что и обычное взвешенное среднее. Помните об этой интуиции. W в GLM для ненормальных распределений становится более сложным, но записи по-прежнему являются точными.

Следующим шагом будет замена y на рабочую зависимую переменную z. Мы не пытаемся предсказать y напрямую, поэтому нам нужно изменить его для работы с функцией ссылки.

Здесь e - фактическая ошибка прогноза. В нашем примере логистической регрессии, если Xb = 1, то наша прогнозируемая вероятность inv.logit (1) = 0,73. Если мы наблюдаем успех, то e = 1 - 0,73 = 0,27. Значение σ взято из выбранного нами распределения. Поскольку логистическая регрессия использует биномиальную формулу, σ² = p (1 - p).

Что, если мы предположим нормальное распределение с тождественной связью g (x) = x? Тогда последний член

что и есть формула стандартизации! Таким образом, наша рабочая зависимая переменная - это наше прогнозируемое значение плюс то, сколько стандартных отклонений от нас - это наше фактическое значение.

Мы вооружены 1) весами для получения нашего средневзвешенного значения и 2) «стандартизированной» переменной, по которой мы хотим взять среднее значение.

Последний шаг - понять, что W и σ зависят от прогнозируемого значения и наоборот. Два приведенных выше уравнения выглядят рекурсивными, да? Фактически, выборочное среднее и выборочная дисперсия независимы тогда и только тогда, когда выборки происходят из нормального распределения. Это глубокое утверждение - ни одно другое распределение, кроме нормального, не обладает этим свойством, поэтому мы можем решить OLS за один шаг.

Мы можем рассматривать IRLS как алгоритм максимизации ожидания. Мы удерживаем предсказанные значения фиксированными и вычисляем W и z. Затем удерживайте W и z фиксированными, чтобы вычислить новые предсказанные значения. Повторяйте до схождения.

И вот оно. Интуитивно GLM представляет собой алгоритм, позволяющий разумно вычислять взвешенное с высокой точностью среднее значение.

Диагностика: отклонение

Отклонение, -2 log правдоподобия (+ некоторая константа, которая игнорируется), должно соответствовать распределению χ², если модель хорошо подходит. Как показывает опыт, если отклонение слишком далеко от степеней свободы модели, то модель может не соответствовать данным. Будьте осторожны при работе с сгруппированными данными, поскольку R выводит неверное отклонение, и вам следует рассчитать его вручную. Простая демонстрация:

dat <- data.frame(
  y = 5:7 / 10,
  n = rep(10, 3),
  x = 1:3
)
model <- glm(
  y~x, 
  data = dat, 
  weights = n, 
  family = 'binomial'
)
summary(model)

R ошибочно считает, что 3 строки = 3 наблюдения, хотя у нас 30 наблюдений. Остаточное отклонение должно иметь 28 степеней свободы.

binom_deviance <- -2 * sum(
  log(choose(dat$n, dat$y * dat$n)) + 
    log(fitted(model)) * dat$y * dat$n + 
    log(1-fitted(model)) * (1-dat$y) * dat$n 
)
pchisq(
  q = binom_deviance, 
  df = sum(dat$n) - length(model$coefficients),
  lower.tail = FALSE
)

Поскольку p-значение огромно, 0,9999, мы не можем отвергнуть нулевую гипотезу о том, что модель хорошо подходит.

Диагностика: остатки Пирсона

Чтобы визуально проверить GLM, я предлагаю посмотреть на остатки Пирсона, которые представляют собой остаток, деленный на теоретическое стандартное отклонение, например sqrt (p × (1-p)) для бинома и sqrt (λ) для Пуассона. Поскольку дисперсия зависит от подобранного значения, это позволяет получить все остатки в одной шкале единиц, и вы можете взглянуть на это, используя эмпирическое правило стандартной нормы. Только несколько остатков Пирсона должны выходить за пределы (-2, 2) и очень редко должны выходить за пределы (-3,3).

set.seed(123)
x_val <- rnorm(100)
y_poisson <- sapply(
  x_val, 
  function(x) rpois(n = 1, lambda = exp(x))
)
y_negbin <- sapply(
  x_val, 
  function(x) rnbinom(n = 1, size = 0.8, mu = exp(x))
)
model_correct <- glm(y_poisson~x_val, family = 'poisson')
model_wrong <- glm(y_negbin~x_val, family = 'poisson')
plot(
  fitted(model_correct), 
  residuals(model_correct, type = 'pearson'),
  main = 'Good fit',
  ylab = 'Pearson residuals',
  xlab = 'Fitted values'
)

В общем, мы не ожидаем, что остатки Пирсона будут следовать нормальному распределению, потому что условное распределение членов ошибок обычно искажено - счетчики не могут опускаться ниже 0, а вероятности ограничены между 0 и 1. Таким образом, нормальный график QQ бесполезен на первый взгляд. ценить.

Однако, если вы возьмете абсолютное значение остатков Пирсона, они должны напоминать полунормальное распределение, если модель хорошо подходит. Быстрый и хитрый способ сделать это - сделать вторую копию остатков Пирсона, перевернуть знак и построить нормальный график QQ.

double_resid <- c(
  residuals(model_correct, type = 'pearson'),
  -residuals(model_correct, type = 'pearson')
)
qqnorm(double_resid, main = 'Good fit')
qqline(double_resid)

Проверка гипотез: проверка отношения правдоподобия

Тестирование с GLM может быть выполнено через LRT. Обратитесь к моей предыдущей статье для подробного объяснения. Основная идея состоит в том, что мы хотим сравнить две модели, одну вложенную в другую. Предикторы меньшей модели являются подмножеством предикторов более крупной модели. Семейство, данные, функция связи и т. Д. Должны быть одинаковыми. Мы сравниваем разницу в отклонении от распределения χ² с df = количеством оцененных дополнительных параметров:

dat <- data.frame(
  x1 = rnorm(10),
  x2 = rnorm(10)
)
dat$y <- dat$x1 + dat$x2 + rnorm(10)
model_small <- glm(y~x1, data = dat)
model_large <- glm(y~x1+x2, data = dat)
pchisq(
  q = model_small$deviance - model_large$deviance,
  df = model_small$df.residual - model_large$df.residual,
  lower.tail = FALSE
) # Likelihood Ratio Test
summary(model_large)$coefficients # Wald test

В этом случае LRT вычисляет p-значение H0: coef (x2) = 0. Это предпочтительнее p-значения, содержащегося в сводке регрессии, которое является удобным приближением с помощью теста Вальда. (и, в зависимости от формулы регрессии, может даже не ответить на правильный вопрос). Байесовцы могут провести параллель с ошибкой квадратичного приближения.

На практике: регуляризация и перекрестная проверка

Когда вам важны p-значения и несмещенные оценки (при допущениях модели), вы используете ванильную GLM. Но если вы заботитесь о том, чтобы делать более точные прогнозы, вы используете регуляризованную GLM. И когда у вас больше предикторов, чем наблюдений (p ›n), вы в любом случае вынуждены использовать регуляризацию, потому что MLE не существует.

Говорить о регуляризации сложно, потому что разные пакеты имеют разную формулировку. Хотя конечные результаты эквивалентны, параметры определяются по-разному (C или λ). Я буду придерживаться документации R по glmnet.

GLM сводит к минимуму отклонения. Регуляризованный GLM минимизирует отклонение (умноженное на константу, от которой я отмахиваюсь) + штрафной член:

  • lasso добавляет норму L1 в качестве штрафа. Вы суммируете абсолютное значение коэффициентов (кроме точки пересечения) и умножаете его на константу λ.
  • Ридж добавляет норму L2 в качестве штрафа. Вы суммируете квадраты коэффициентов (кроме точки пересечения) и умножаете ее на постоянную λ.
  • elasticnet использует своего рода средневзвешенное значение двух штрафов. Вы выбираете константу α и устанавливаете штрафной член как α × L1 + (1-α) / 2 × L2.

Норма L1 поощряет разреженность и может устанавливать многие коэффициенты равными 0, в то время как Ридж сжимает коэффициенты до 0, но никогда не достигает этого. Думайте о термине λ как об установлении «бюджета», чтобы каждый коэффициент не мог тратить слишком щедро (будучи огромным по величине).

Вам необходимо стандартизировать предикторы (glmnet делает это по умолчанию), чтобы справедливо распределять бюджет. Если один прогнозирующий показатель выражается в граммах, а другой - в килограммах, возможно, имеет смысл увеличить бюджет в килограммах. (Сколько лепешек мы можем изготовить? Может быть, +1 за каждый килограмм муки, но +0,001 за каждый грамм сахара.) Стандартизация ставит все предикторы по одной шкале.

Следует отметить одну вещь, которую многие люди могут упустить: с регуляризацией вы должны кодировать все уровни предикторов. Если у вас есть категориальный предиктор с k возможными значениями, традиционное фиктивное кодирование отбрасывает один в качестве опорного уровня, а затем создает столбцы индикатора k-1. При регуляризации вы должны создать k столбцов индикатора. Перехват не наказывается. Поскольку упавший уровень поглощается перехватом, коэффициенты будут меняться в зависимости от того, какой уровень упал - нежелательно.

Нам еще нужно задать гиперпараметры λ и α. Самый простой подход - использовать поиск по сетке для α (поскольку он находится между 0 и 1, легко выполнять равномерно распределенные интервалы) и k-кратную перекрестную проверку для λ. Конкретные подробности о резюме можно найти в другом месте.

Одно из основных различий, которое я замечаю между статистикой и информатикой, заключается в том, как они выбирают λ (или C) из резюме. Реализации в Python возвращают λ, которая дает минимальную целевую функцию (lambda.min), и у вас нет выбора. В R у вас есть выбор между lambda.min и наибольшим λ, которое находится в пределах одной стандартной ошибки от минимума (lambda.1se).

По закону экономичности (бритва Оккама) некоторые предпочитают lambda.1se, поскольку в результате получается более простая модель, которая работает примерно так же, как lambda.min. Кроме того, лямбда.1se имеет тенденцию быть более стабильной. Повторная рандомизация данных в k складок может дать совершенно другой lambda.min, но более похожий lambda.1se.

Любые разговоры могут сбивать с толку, поэтому давайте установим лассо, чтобы увидеть его в действии. Код R:

library(glmnet)
# The 0+ makes Species not drop a reference level
X <- model.matrix(Sepal.Length~0+., data = iris)
y <- iris$Sepal.Length
set.seed(123)
train <- sample(1:nrow(X), floor(nrow(X) * 2/3))
model_cv <- cv.glmnet(X[train,], y[train])
plot(model_cv)
model_1se <- glmnet(
  X[train,], 
  y[train], 
  lambda = model_cv$lambda.1se
)
model_min <- glmnet(
  X[train,], 
  y[train], 
  lambda = model_cv$lambda.min
)
mse <- function(pred, actual){
  mean((actual - pred)^2)
}
# while sometimes model_min yields lower MSE
# generally model_1se performs better in this example
mse(predict(model_1se, X[-train,]), y[-train]) # 0.09685109
mse(predict(model_min, X[-train,]), y[-train]) # 0.1022131

Да, вы можете вздохнуть, потому что мы использовали набор данных Iris. Мы хотим спрогнозировать Sepal.Length, используя все остальные переменные. Функция plot () возвращает

Здесь log (lambda.min) составляет около -7, а log (lambda.1se) составляет около -5, как показано пунктирными линиями. Не стесняйтесь пробовать разные начальные значения для сравнения MSE, но обычно lambda.1se работает лучше. (Я не знаю, почему это не значение по умолчанию, а не lambda.min в Python. Вручную писать перекрестную проверку для получения lambda.1se сложно.)

Я разделил данные на наборы для обучения и тестирования, чтобы проиллюстрировать производительность на удерживаемых данных, но на практике вам не следует не делать это разделение. Ошибки из резюме заслуживают большего доверия, чем из набора тестов. Сделайте CV для всех данных, чтобы выбрать λ, а затем повторно примените для всего набора данных.

Обратите внимание на оценочные коэффициенты:

Коэффициент для разноцветного цвета равен 0, потому что это среднее значение. Лассо научился поглощать разноцветный, а не другие виды в перехват.

Интуитивно понятно, что если {virginica, versicolor, setosa} равно {1, 2, 3} и мы отбрасываем versicolor, то коэффициенты MLE будут {-1, /, 1} и они уменьшатся одинаково. Но если мы отбросим сетосу, потому что мы идем в алфавитном порядке, тогда коэффициенты MLE будут {-2, -1, /}, а -2 будет меньше -1. Это не имеет смысла, поскольку ничего не изменилось ни в данных, ни в реальном мире. Мы не хотим, чтобы прогнозы зависели от того, какой уровень мы опускаем вручную.

Теперь, когда у нас есть твердое представление о GLM, мы продолжим рассмотрение других типов. Они будут рассмотрены только кратко, потому что они основаны на том, что мы обсуждали ранее.

Данные подсчета: Пуассон и отрицательная биномиальная регрессия

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

Как упоминалось ранее, магия ссылки журнала позволяет нам использовать ln (), даже если счетчики могут быть равны 0.

Иногда нас интересует скорость, а не количество из-за разных единиц воздействия. Если мы хотим смоделировать, сколько людей заболело в каждом городе, только из-за численности населения в городе со 100 000 жителей должно быть больше, чем в небольшом городе с 1 000 жителей.

В логистической регрессии мы использовали аргумент весов, но в регрессии Пуассона весов практически нельзя трогать. Вместо этого мы используем смещение. Где y - количество инцидентов, мы меняем уравнение регрессии:

Смещение просто означает, что мы не оцениваем наклон, а фиксируем его на 1, например ln (n) в правой части. В R:

glm(y~x+offset(log(n)), family = 'poisson')

На практике регрессии Пуассона недостаточно. Многие данные демонстрируют чрезмерную дисперсию - дисперсия наблюдений выше, чем предполагает распределение Пуассона. Это можно обнаружить, исследуя остатки Пирсона; многие из них будут лежать за пределами (-2, 2).

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

Отрицательный бином действительно хорош. Если вы усредняете распределения Пуассона, у каждого из которых есть λ, который изменяется в соответствии с гамма-распределением, то вы получаете отрицательный бином. Другими словами, мы явно моделируем, что даже если два устройства могут иметь одинаковый X, их λ может отличаться. Это хороший способ объяснить чрезмерную дисперсию, поскольку у вас есть отклонения как от Пуассона, так и от гаммы.

Иногда нулей намного больше, чем можно было бы предположить с помощью Пуассона или отрицательного бинома. Если у вас есть представление о процессе генерации данных, вы можете использовать нулевую регрессию или модель препятствий (хотя это требует больших вычислительных ресурсов). Обратитесь к этой ветке для интуиции.

Таблицы непредвиденных обстоятельств: лог-линейные модели

Если у нас есть набор пуассоновских случайных величин и ограничить их общее количество фиксированным, то мы получим полиномиальное распределение. Таким образом, даже несмотря на то, что кажется, что таблицы непредвиденных обстоятельств должны быть смоделированы как полиномиальные, регрессия Пуассона может помочь. Вы должны быть довольны, потому что работать с полиномами - это боль.

Логлинейная модель - это причудливый термин для регрессии Пуассона, где все предикторы категоричны - в данном случае, какие бы категории ни были в ваших таблицах непредвиденных обстоятельств. Я уже писал об этом раньше, поэтому, если вас интересует дополнительная информация, обратитесь к разделу G-test.

Категорический результат: полиномиальная регрессия

Полиномиальная регрессия - это логистическая регрессия, расширенная для прогнозирования не только двоичных результатов. Фактически, это несколько объединенных воедино логистических регрессий. В логистической регрессии мы прогнозируем логарифмические шансы, где шансы p / (1-p). В полиномиальной регрессии мы делаем то же самое, за исключением того, что выбираем ссылочную категорию для вычисления шансов.

Предположим, у нас есть три категории A, B и C. Если мы используем A в качестве эталонной категории, мы подбираем две модели логистической регрессии:

Первая модель обучается только на данных с ответом A или B, а вторая модель обучается только на данных, где ответом является A или C. Мы передаем прогнозы в функцию softmax, чтобы получить

1 выглядит так неуместно, но помните, что log (pA / pA) = log (1) = 0.

Функция softmax - это просто логистическая функция, обобщенная более чем на две категории. Его часто используют для удобного превращения прогнозов в вероятности, но здесь это более чем удобно: это имеет смысл. Предположим, у нас нет никаких предикторов, кроме перехвата, и мы наблюдаем 70 A, 20 B и 10 C. Тогда:

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

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

Порядковый результат: порядковая регрессия

Лично я считаю порядковый регресс совершенно не интуитивным. Вы хотите закодировать y как 1, 2, 3,…, k и хотите предсказать вероятность y = i, где i - целое число от 1 до k. Мы используем функцию накопительной ссылки:

Наше уравнение регрессии выглядит как

где я только доходит до k-1. Помните, что P (y ›k) равно 0. В уравнении регрессии β не включает точку пересечения. И мы делаем прогнозы, используя основной факт

и работая в обратном направлении от

Итак, что означают все эти уравнения? Мы подбираем сигмовидную функцию для прогнозирования условия CDF от X. В уравнении регрессии β фиксируется для всех i, но θ изменяется вместе с i. Когда X фиксирован, мы подбираем единственную функцию, в то время как θ определяет точки отсечки.

Вот в чем проблема и интуиция. Вероятность должна быть равна 1. Представьте себе палку длины 1, и у нас есть порядковая переменная y в {1, 2, 3, 4, 5}. Мы хотим разбить палку на 5 частей, длина каждой из которых соответствует вероятности попадания в определенную категорию. Самое простое решение - выбрать 4 точки, чтобы сделать разрез: k-1 тэта.

Дополнительные ресурсы

Я большой поклонник этого веб-сайта курса, который послужил мне хорошим компаньоном в моем путешествии по самообучению. И, как всегда, дайте мне знать, если у вас есть предложения по улучшению.