R - Логистическая регрессия

Создание модели регрессии

Добро пожаловать в мир логистической регрессии в R! В этом руководстве мы пройдемся по основам создания модели логистической регрессии с использованием R. Мы начнем с некоторых базовых концепций и затем перейдем к коду. Помните, что это предназначено для начинающих, у которых нет опыта программирования, поэтому не волнуйтесь, если вы чувствуете себя немного потерянным в начале. Давайте начнем!

R - Logistic Regression

Что такое логистическая регрессия?

Логистическая регрессия - это статистический метод, используемый для анализа данных и作出 прогнозы на основе одной или нескольких предсказательных переменных. Он часто используется для задач бинаренного классификации, где результат может быть либо "да" (1), либо "нет" (0). Основное различие между логистической регрессией и линейной регрессией заключается в том, что логистическая регрессия предсказывает вероятность возникновения результата, в то время как линейная регрессия предсказывает непрерывное значение.

Why Use Logistic Regression?

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

Создание модели логистической регрессии в R

Для создания модели логистической регрессии в R мы будем использовать функцию glm(), которая означает Generalized Linear Models (генерализованные линейные модели). Вот пошаговое руководство:

Шаг 1: Установите и загрузите необходимые библиотеки

Сначала вам нужно установить и загрузить необходимые библиотеки. Мы будем использовать библиотеку tidyverse для обработки данных и визуализации, а также библиотеку caret для моделирования.

install.packages("tidyverse")
install.packages("caret")

library(tidyverse)
library(caret)

Шаг 2: Загрузите данные

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

data(mtcars)
head(mtcars)

Шаг 3: Предварительная обработка данных

Before building the logistic regression model, we need to preprocess the data. This includes encoding categorical variables, handling missing values, and scaling features. In our case, we only have numerical variables, so we don't need to do any encoding or scaling. However, we'll create a new binary variable called is_sports_car to indicate whether a car is a sports car or not.

mtcars <- mtcars %>%
mutate(is_sports_car = ifelse(hp > 150, 1, 0))

Шаг 4: Разделите данные на обучающую и тестовую выборки

Важно разделить данные на обучающую и тестовую выборки, чтобы оценить производительность нашей модели. Мы будем использовать функцию createDataPartition() из пакета caret для создания разделения.

set.seed(123)
trainIndex <- createDataPartition(mtcars$is_sports_car, p = 0.8, list = FALSE)
trainSet <- mtcars[trainIndex, ]
testSet <- mtcars[-trainIndex, ]

Шаг 5: Создайте модель логистической регрессии

Теперь мы готовы создать нашу модель логистической регрессии. Мы будем использовать функцию glm() с аргументом family установленным в binomial, чтобы указать, что мы хотим выполнить логистическую регрессию.

model <- glm(is_sports_car ~ wt + hp, data = trainSet, family = binomial)
summary(model)

Функция summary() предоставляет обзор модели, включая коэффициенты, стандартные ошибки, значения z и p-значения. Эти статистики помогают нам понять важность каждой предсказательной переменной и являются ли они статистически значимыми.

Шаг 6: Сделайте прогнозы и оцените модель

Теперь, когда у нас есть модель, мы можем использовать ее для прогнозирования на тестовой выборке и оценки ее производительности. Мы будем использовать функцию predict() для генерации предсказанных вероятностей и затем преобразуем их в бинаренные результаты с порогом 0.5.

predictions <- predict(model, newdata = testSet, type = "response")
predicted_classes <- ifelse(predictions > 0.5, 1, 0)

Теперь давайте calculated the accuracy of our model by comparing the predicted classes to the actual classes in the test set.

accuracy <- mean(predicted_classes == testSet$is_sports_car) * 100
cat("Accuracy:", accuracy, "%")

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

Credits: Image by storyset