Построение бинарного прогноза
В предыдущем упражнении вы использовали функцию glm() для построения модели логистической регрессии, описывающей поведение доноров. Как и во многих других методах машинного обучения в R, к объекту модели можно применить функцию predict() для прогнозирования будущего поведения. По умолчанию predict() возвращает прогнозы в виде логарифма шансов, если не указан аргумент type = "response". Этот аргумент преобразует логарифм шансов в вероятности.
Поскольку модель логистической регрессии оценивает вероятность события, вам необходимо самостоятельно выбрать порог, при достижении которого вероятность считается достаточной для принятия решения. Здесь важно соблюсти баланс: быть слишком осторожным так же нежелательно, как и слишком агрессивным. Например, если обращаться только к тем, у кого вероятность пожертвования составляет 99% и выше, можно упустить многих людей с более низкой расчётной вероятностью, которые всё равно сделали бы пожертвование. Этот баланс особенно важен при работе с сильно несбалансированными данными — как в нашем наборе данных, где пожертвования встречаются сравнительно редко.
Набор данных donors и модель donation_model уже доступны для работы.
Это упражнение является частью курса
Обучение с учителем в R: классификация
Инструкции к упражнению
- С помощью функции
predict()оцените вероятность пожертвования для каждого человека. Используйте аргументtype, чтобы получить вероятности. Сохраните прогнозы в новый столбец с именемdonation_prob. - Вычислите фактическую вероятность того, что средний человек сделает пожертвование, передав функции
mean()соответствующий столбец из фрейма данныхdonors. - С помощью функции
ifelse()сформируйте прогноз о пожертвовании для тех, чья расчётная вероятность превышает среднее значение. Сохраните прогнозы в новый столбец с именемdonation_pred. - Используйте функцию
mean()для вычисления точности модели.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Estimate the donation probability
donors$donation_prob <- predict(___, type = "___")
# Find the donation probability of the average prospect
mean(___)
# Predict a donation if probability of donation is greater than average (0.0504)
donors$donation_pred <- ifelse(___ > 0.0504, ___, ___)
# Calculate the model's accuracy
mean(___ == ___)