Введение в регрессию 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 г.