Введение в регрессию Softmax

Мы обычно использовали много алгоритмов классификации для бинарной классификации. Теперь мы увидим метод классификации, который используется для классификации k классов. Этот метод называется регрессией softmax.

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

Глубокое погружение

Экспоненциальное семейство распределений по x при заданных параметрах η определяется как множество распределений вида

где x может быть скалярным или векторным и может быть дискретным или непрерывным. Здесь η называются естественными параметрами распределения, а u(x) — некоторая функция от x

Функцию g(η) можно интерпретировать как коэффициент, обеспечивающий нормализацию распределения.

Полиномиальное распределение для одного наблюдения x принимает вид

где x = (x 1,…,x N)T и µ = метки класса

Стандартное представление,

Выполнив несколько математических вычислений, приходим к окончательному уравнению:

Это называется функцией Softmax или нормализованной экспонентой. Таким образом, полиномиальное распределение принимает вид:

где M — количество параметров.

Эта модель, применяемая к задачам классификации с несколькими метками классов, называется регрессией Softmax.

Реализация в R:

Файл данных:

Файл данных, использованный в посте для объяснения, можно скачать по этой ссылке.

Код R и интерпретация:

#Data Structure
str(read_data)

read_data$NSPF <- as.factor(read_data$NSP)
#1-Normal Medical Condition #2 Suspect #3 Pathalogic

Преобразование метки класса в факторы.

read_data$out <- relevel(read_data$NSPF,ref = "1")

Поскольку у нашей метки класса NSP/NSPF есть 3 уровня, мы должны определить контрольный уровень. Итак, мы собираемся использовать 1 в качестве эталонного уровня (т.е. нормальный пациент).

#Multinomial Logistic regression
library(nnet)
read_data$out<-relevel(read_data$NSPF, ref="1")
model<-multinom(out~LB+AC+FM+UC+DL+DS+DP+ASTV+MSTV+ALTV+MLTV, data=read_data)

Мы видим, что модель начинается с очень высокой ошибки 2335,64, затем после 10 итераций она сходится к 1123,04 и, наконец, к ошибке 608,05.

Мы можем видеть коэффициенты для уровней 2 и 3, так как опорный уровень выбран равным 1. Остаточное отклонение говорит об ошибке, существующей в модели. Это похоже на ошибку суммы квадратов в линейной регрессии. Чем меньше значение, тем лучше модель. У нас также есть стандарт для уровней 2 и 3.

predict(model,read_data)

Модель предсказывает 1-го пациента как патологического, 2-го пациента как нормального и т. д. Но, сравнивая фактический результат, мы видим, что 1-й пациент прогнозируется как подозреваемый, но наша модель говорит, что пациент патологический. Так что есть некоторая ошибочная классификация.

predict(model,read_data,type="prob")

Итак, мы видим, что для каждого пациента существует 3 вероятности. Например, для 1-го пациента мы видим, что уровень 3 имеет максимальную вероятность, поэтому модель предсказывает, что 1-й пациент будет патологическим.

Допустим, нас интересует пациент 456 567 667.

predict(model,read_data[c(456,567,667),],type="prob")

Теперь у нас есть матрица путаницы, и мы можем рассчитать точность, добавив диагональные элементы и разделив ее на общее количество наблюдений. Итак, точность модели составляет 88,24%.

#2-tailed z test
z <- summary(model)$coefficients/summary(model)$standard.errors
p <- (1 - pnorm(abs(z), 0, 1)) * 2

Это дает нам p-значение для всех атрибутов, используемых в модели. Чем ниже p-значение, тем выше доверительный интервал, что означает, что атрибут играет важную роль в классификации. Атрибут MSTV уровня 2 имеет очень высокое значение p, равное 0,93, что указывает на очень меньший доверительный интервал, поэтому подразумевает, что MSTV не вносит значительного вклада в модель, когда уровень 1 является эталонным, а мы смотрим на уровень 2 для ответа. Та же идея может быть экстраполирована и на все другие атрибуты.

Удаление незначительной переменной MSTV и запуск модели повышают точность модели до 88,47%.

Метки: классифицировать k классов, R, Регрессия, регрессия softmax

Первоначально опубликовано на https://analyticsdefined.com 26 августа 2017 г.