Aan de slagGa gratis aan de slag

Een binaire voorspelling maken

In de vorige oefening heb je met de functie glm() een logistiek regressiemodel van donateursgedrag gebouwd. Net als bij veel Machine Learning-methoden in R kun je de functie predict() toepassen op het modelobject om toekomstig gedrag te voorspellen. Standaard geeft predict() voorspellingen in termen van log odds, tenzij je type = "response" opgeeft. Dit zet de log odds om naar kansen.

Omdat een logistiek regressiemodel de kans op de uitkomst schat, bepaal je zelf bij welke drempel de kans tot actie leidt. Je moet daarbij balanceren tussen te voorzichtig en te agressief zijn. Als je bijvoorbeeld alleen mensen zou benaderen met een donatiekans van 99% of hoger, mis je mogelijk veel mensen met lagere geschatte kansen die toch doneren. Deze balans is extra belangrijk bij sterk scheve uitkomsten, zoals in deze gegevensset waar donaties relatief zeldzaam zijn.

De gegevensset donors en het model donation_model zijn beschikbaar voor je om te gebruiken.

Deze oefening maakt deel uit van de cursus

Supervised Learning in R: Classificatie

Cursus bekijken

Oefeninstructies

  • Gebruik de functie predict() om ieders donatiekans te schatten. Gebruik het argument type om kansen te krijgen. Zet de voorspellingen in een nieuwe kolom donation_prob.
  • Bepaal de werkelijke kans dat een gemiddelde persoon doneert door de juiste kolom van de donors-dataframe aan de functie mean() door te geven.
  • Gebruik ifelse() om een donatie te voorspellen als hun voorspelde donatiekans groter is dan gemiddeld. Zet de voorspellingen in een nieuwe kolom donation_pred.
  • Gebruik de functie mean() om de nauwkeurigheid van het model te berekenen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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(___ == ___)
Code bewerken en uitvoeren