library(tidyverse)
library(knitr)
library(ISLR2)
theme_set(theme_bw())
Classification is the process by which we divide observations into groups. Common examples include “Is this spam”, “Is this fraudulent”, “Is this a real person”.
Question 1 what is the Bayes decision boundary (\(\delta_1(x)=\delta_2(x)\)) if K=2 and \(\pi_1=\pi_2\)
\(~\)
(modified from Professor Wells Slides in addition to the textbook)
library(e1071)
nb_mod <- naiveBayes(Y ~ X1 + X2, data = training_data) #Fit
my_preds <- predict(nb_mod, data = test_data) #Predict
my_probs<- predict(nb_mod, data = test_data, type = "raw") #Estimates
Work with your partner
We will continue to use the Smarket data from Tuesday
Question 3 4.7.5 Fit a Naive Bayes classifier to Direction given Lag 1 and Lag 2. Verify your solution with the text AFTER you work on this on your own.
Question 4 4.8.9 Odds
Question 5 If time, don’t turn in. Using the Titanic dataset
library(rsample)
Titanic=data.frame(Titanic)%>%mutate(Survived = as.factor(Survived))
Titanic_split <- initial_split(Titanic)
Titanic_train <- training(Titanic_split)
Titanic_test <- testing(Titanic_split)
Part A: Exploratory Analysis. What trends are apparent? Are the predictors independent given the response?
library(GGally)
Titanic_train %>% select(Survived, Age, Class, Sex) %>% ggpairs(aes(color = Survived))
Part B: Fit a logistic model to predict survived given age, pclass, embarked, and sex
Part C: Fit a Naive Bayes model to predict survived given age, pclass, embarked, and sex
Part D: Create a results dataframe (Survived, predictions, probabilities) for both B and C
Part E: Compute the accuracy, sensitivity, and specificity for both models
library(yardstick)
my_metrics <- metric_set(accuracy, sensitivity, specificity)
my_metrics(resultsDF, truth = obs, estimate = preds)
This week we discussed Logistic Regression and Classification:
\(~\)
Answers
Question 1 What is the probability that you selected the double-headed coin?
Question 2
\[x\frac{\mu_2}{\sigma^2}-\frac{\mu_2^2}{2\sigma^2}+log(\pi)=\delta_2(x)=\delta_1(x)=x\frac{\mu_1}{\sigma^2}-\frac{\mu_1^2}{2\sigma^2}+log(\pi)\] \[\implies x\frac{\mu_2}{\sigma^2}-\frac{\mu_2^2}{2\sigma^2}=x\frac{\mu_1}{\sigma^2}-\frac{\mu_1^2}{2\sigma^2}\] \[\implies x\frac{\mu_2}{\sigma^2}-x\frac{\mu_1}{\sigma^2}=\frac{\mu_2^2}{2\sigma^2}-\frac{\mu_1^2}{2\sigma^2}\] \[\implies x\left(\frac{\mu_2}{\sigma^2}-\frac{\mu_1}{\sigma^2}\right)=\frac{1}{2}\left(\frac{\mu_2^2}{\sigma^2}-\frac{\mu_1^2}{\sigma^2}\right)\] \[\implies x(\mu_2-\mu_1)=\frac{1}{2}(\mu_2^2-\mu_1^2)\] \[\implies x=\frac{1}{2}\frac{\mu_2^2-\mu_1^2}{\mu_2-\mu_1}=\frac{1}{2}\frac{(\mu_2-\mu_1)(\mu_2+\mu_1)}{\mu_2-\mu_1}=\frac{\mu_1+\mu_2}{2}\]
Question 5 DEF
library(e1071)
nb_fit <- naiveBayes(Survived ~ Age + Class + Sex, data = Titanic_train)
my_preds <- predict(nb_fit, Titanic_test)
my_probs <- predict(nb_fit, Titanic_test, type = "raw")
nb_results <- data.frame(obs = Titanic_test$Survived, preds = my_preds, probs = my_probs)
library(yardstick)
my_metrics <- metric_set(accuracy, sensitivity, specificity)
my_metrics(nb_results, truth = obs, estimate = preds)
## # A tibble: 3 × 3
## .metric .estimator .estimate
## <chr> <chr> <dbl>
## 1 accuracy binary 0.375
## 2 sensitivity binary 0.25
## 3 specificity binary 0.5