Логистическая регрессия в программировании на R
Логистическая регрессия в программировании на R - это алгоритм классификации, используемый для определения вероятности успешного и неудачного события. Логистическая регрессия используется, когда зависимая переменная является двоичной (0/1, Истина / Ложь, Да / Нет) по своей природе. Функция логита используется как функция связи в биномиальном распределении.
Логистическая регрессия также известна как биномиальная логистическая регрессия . Он основан на сигмоидной функции, где выход - это вероятность, а вход может быть от -infinity до + infinity.
Теория
Логистическая регрессия также известна как обобщенная линейная модель. Поскольку он используется в качестве метода классификации для прогнозирования качественного ответа, значение y варьируется от 0 до 1 и может быть представлено следующим уравнением:
p
- вероятность интересующей характеристики. Отношение шансов определяется как вероятность успеха по сравнению с вероятностью неудачи. Это ключевое представление коэффициентов логистической регрессии, которое может принимать значения от 0 до бесконечности. Отношение шансов 1 - это когда вероятность успеха равна вероятности неудачи. Отношение шансов 2 - это когда вероятность успеха в два раза больше, чем вероятность неудачи. Отношение шансов 0,5 - это когда вероятность неудачи в два раза больше вероятности успеха.
Поскольку мы работаем с биномиальным распределением (зависимой переменной), нам нужно выбрать функцию связи, которая лучше всего подходит для этого распределения.
Это функция логита . В приведенном выше уравнении круглые скобки выбраны, чтобы максимизировать вероятность наблюдения значений выборки, а не минимизировать сумму квадратов ошибок (как обычная регрессия). Логит также известен как журнал шансов. Функция logit должна быть линейно связана с независимыми переменными. Это из уравнения A, где левая часть представляет собой линейную комбинацию x. Это похоже на предположение OLS о том, что y линейно связано с x.
Переменные b0, b1, b2… и т. Д. Неизвестны и должны быть оценены по имеющимся обучающим данным. В модели логистической регрессии умножение b1 на одну единицу изменяет логит на b0. Изменение P из-за изменения на одну единицу будет зависеть от умноженного значения. Если b1 положительно, то P будет увеличиваться, а если b1 отрицательно, то P будет уменьшаться.
Набор данных
mtcars
) включает в себя расход топлива, характеристики и 10 аспектов автомобильной конструкции для 32 автомобилей. Он поставляется с dplyr
пакетом dplyr в R.
# Installing the package install.packages( "dplyr" ) # Loading package library(dplyr) # Summary of dataset in package summary(mtcars) |
Выполнение логистической регрессии для набора данных
Логистическая регрессия реализована в R с использованием glm()
путем обучения модели с использованием функций или переменных в наборе данных.
# Installing the package install.packages( "caTools" ) # For Logistic regression install.packages( "ROCR" ) # For ROC curve to evaluate model # Loading package library(caTools) library(ROCR) # Splitting dataset split < - sample.split(mtcars, SplitRatio = 0.8 ) split train_reg < - subset(mtcars, split = = "TRUE" ) test_reg < - subset(mtcars, split = = "FALSE" ) # Training model logistic_model < - glm(vs ~ wt + disp, data = train_reg, family = "binomial" ) logistic_model # Summary summary(logistic_model) # Predict test data based on model predict_reg < - predict(logistic_model, test_reg, type = "response" ) predict_reg # Changing probabilities predict_reg < - ifelse(predict_reg > 0.5 , 1 , 0 ) # Evaluating model accuracy # using confusion matrix table(test_reg$vs, predict_reg) missing_classerr < - mean(predict_reg ! = test_reg$vs) print (paste( 'Accuracy =' , 1 - missing_classerr)) # ROC-AUC Curve ROCPred < - prediction(predict_reg, test_reg$vs) ROCPer < - performance(ROCPred, measure = "tpr" , x.measure = "fpr" ) auc < - performance(ROCPred, measure = "auc" ) auc < - auc@y.values[[ 1 ]] auc # Plotting curve plot(ROCPer) plot(ROCPer, colorize = TRUE, print .cutoffs.at = seq( 0.1 , by = 0.1 ), main = "ROC CURVE" ) abline(a = 0 , b = 1 ) auc < - round (auc, 4 ) legend(. 6 , . 4 , auc, title = "AUC" , cex = 1 ) |
wt положительно влияет на зависимые переменные, и увеличение веса на одну единицу увеличивает логарифм шансов для vs = 1 на 1,44. disp отрицательно влияет на зависимые переменные, и увеличение disp на одну единицу уменьшает логарифм шансов для vs = 1 на 0,0344. Нулевое отклонение составляет 31,755 (соответствие зависимой переменной с перехватом), а остаточное отклонение - 14,457 (соответствие зависимой переменной со всеми независимыми переменными). Значение AIC (критерий щелочной информации) составляет 20,457, т.е. чем меньше, тем лучше для модели. Точность составляет 0,75, т. Е. 75%.
Модель оценивается с использованием матрицы неточностей, кривой AUC (площадь под кривой) и ROC (рабочие характеристики приемника). В матрице неточностей мы должны искать не всегда точность, но также чувствительность и специфичность. Построена кривая ROC и AUC.
Выход:
- Оценка точности модели с использованием матрицы неточностей:
Имеется 0 ошибок типа 2, т.е. невозможно отклонить ошибку, если она ложна. Кроме того, есть 3 ошибки типа 1, т.е. отклонение, когда оно истинно.
- Кривая ROC:
В кривой ROC, чем больше площадь под кривой, тем лучше модель.
- Кривая ROC-AUC:
AUC составляет 0,7333, поэтому чем больше AUC, тем лучше работает модель.