Eine binäre Vorhersage treffen
In der vorherigen Übung hast du die Funktion glm()
verwendet, um ein logistisches Regressionsmodell für das Spenderverhalten zu erstellen. Wie bei vielen der maschinellen Lernmethoden in R kannst du die Funktion predict()
auf das Modellobjekt anwenden, um das zukünftige Verhalten vorherzusagen. Standardmäßig gibt predict()
Vorhersagen in Form von logarithmischen Quoten aus, es sei denn, type = "response"
wurde angegeben. Damit werden die logarithmischen Quoten in Wahrscheinlichkeiten umgewandelt.
Da ein logistisches Regressionsmodell die Wahrscheinlichkeit des Ergebnisses schätzt, liegt es an dir, den Schwellenwert zu bestimmen, bei dem die Wahrscheinlichkeit zum Handeln führt. Man muss zwischen den Extremen "zu vorsichtig" und "zu aggressiv" abwägen. Wenn du zum Beispiel nur die Personen mit einer Spendenwahrscheinlichkeit von 99 % oder mehr ansprichst, entgehen dir möglicherweise viele Personen mit einer geringeren geschätzten Wahrscheinlichkeit, die sich trotzdem zum Spenden entschließen. Diese Ausgewogenheit ist besonders wichtig für stark unausgewogene Ergebnisse, wie in diesem Datensatz, in dem Spenden relativ selten sind.
Der Datensatz donors
und das Modell donation_model
stehen dir zur Verfügung.
Diese Übung ist Teil des Kurses
Überwachtes Lernen in R: Klassifikation
Anleitung zur Übung
- Verwende die Funktion
predict()
, um die Spendenwahrscheinlichkeit jeder Person zu schätzen. Verwende das Argumenttype
, um Wahrscheinlichkeiten zu erhalten. Ordne die Vorhersagen einer neuen Spalte namensdonation_prob
zu. - Finde die tatsächliche Wahrscheinlichkeit, dass eine durchschnittliche Person spenden würde, indem du der Funktion
mean()
die entsprechende Spalte desdonors
Datenrahmens übergibst. - Nutze
ifelse()
, um eine Spende vorherzusagen, wenn ihre vorhergesagte Spendenwahrscheinlichkeit größer als der Durchschnitt ist. Ordne die Vorhersagen einer neuen Spalte namensdonation_pred
zu. - Verwende die Funktion
mean()
, um die Genauigkeit des Modells zu berechnen.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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(___ == ___)