Бінарне передбачення
У попередній вправі ви використали функцію glm() для побудови моделі логістичної регресії поведінки донорів. Як і для багатьох методів машинного навчання в R, до об'єкта моделі можна застосувати функцію predict() для прогнозування майбутньої поведінки. Типово predict() повертає передбачення у вигляді логарифмів шансів (log odds), якщо не вказано 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(___ == ___)