Göra en binär förutsägelse
I föregående övning använde du funktionen glm() för att bygga en logistisk regressionsmodell av donatorernas beteende. Precis som med många av R:s maskininlärningsmetoder kan du använda funktionen predict() på modellobjektet för att förutsäga framtida beteende. Som standard returnerar predict() förutsägelser i form av log-odds, om inte type = "response" anges. Det konverterar log-odds till sannolikheter.
Eftersom en logistisk regressionsmodell skattar sannolikheten för ett utfall är det upp till dig att fastställa det tröskelvärde vid vilket sannolikheten motiverar en åtgärd. Man behöver balansera två ytterligheter: att vara för försiktig kontra för aggressiv. Om du till exempel bara kontaktar personer med minst 99 % donationssannolikhet kan du missa många med lägre skattad sannolikhet som ändå väljer att donera. Den här balansen är särskilt viktig att beakta när utfallet är kraftigt obalanserat – som i det här datasetet där donationer är relativt sällsynta.
Datasetet donors och modellen donation_model finns tillgängliga för dig att använda.
Den här övningen är en del av kursen
Övervakat lärande i R: Klassificering
Övningsinstruktioner
- Använd funktionen
predict()för att skatta varje persons donationssannolikhet. Använd argumentettypeför att få sannolikheter. Tilldela förutsägelserna till en ny kolumn som heterdonation_prob. - Ta reda på den faktiska sannolikheten att en genomsnittlig person donerar genom att skicka rätt kolumn från dataramen
donorstill funktionenmean(). - Använd
ifelse()för att förutsäga en donation om personens skattade donationssannolikhet är högre än genomsnittet. Tilldela förutsägelserna till en ny kolumn som heterdonation_pred. - Använd funktionen
mean()för att beräkna modellens träffsäkerhet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(___ == ___)