Clasificador Naive Bayes en Programación R

Naive Bayes es un algoritmo de clasificación no lineal supervisado en programación R. Los clasificadores Naive Bayes son una familia de clasificadores probabilísticos simples basados ​​en la aplicación del teorema de Baye con fuertes suposiciones de independencia (Naive) entre las características o variables. El algoritmo Naive Bayes se llama «Naive» porque supone que la aparición de una determinada característica es independiente de la aparición de otras características.
 

Teoría

El algoritmo Naive Bayes se basa en el teorema de Bayes. El teorema de Bayes da la probabilidad condicional de un evento A dado que ha ocurrido otro evento B.
 

donde, 
P(A|B) = Probabilidad condicional de A dado B. 
P(B|A) = Probabilidad condicional de B dado A. 
P(A) = Probabilidad del evento A. 
P(B) = Probabilidad del evento B.

Para muchos predictores, podemos formular la probabilidad posterior de la siguiente manera:
 

P(A|B) = P(B1|A) * P(B2|A) * P(B3|A) * P(B4|A) …

Ejemplo 
 

Consider a sample space:
          {HH, HT, TH, TT}
where,
H: Head
T: Tail

P(Second coin being head given  = P(A|B)
first coin is tail) = P(A|B)  
= [P(B|A) * P(A)] / P(B)
= [P(First coin is tail given second coin is head) * 
   P(Second coin being Head)] / P(first coin being tail)
= [(1/2) * (1/2)] / (1/2)
= (1/2) 
= 0.5

El conjunto de datos

El conjunto de datos de Iris consta de 50 muestras de cada una de las 3 especies de Iris (Iris setosa, Iris virginica, Iris versicolor) y un conjunto de datos multivariado introducido por el estadístico y biólogo británico Ronald Fisher en su artículo de 1936 El uso de múltiples medidas en problemas taxonómicos. Se midieron cuatro características de cada muestra, es decir, la longitud y el ancho de los sépalos y pétalos y, basándose en la combinación de estas cuatro características, Fisher desarrolló un modelo discriminante lineal para distinguir las especies entre sí. 
 

Python3

# Loading data
data(iris)
  
# Structure
str(iris)

Realización de Naive Bayes en un conjunto de datos

Usando el algoritmo Naive Bayes en el conjunto de datos que incluye 11 personas y 6 variables o atributos
 

Python3

# Installing Packages
install.packages("e1071")
install.packages("caTools")
install.packages("caret")
 
# Loading package
library(e1071)
library(caTools)
library(caret)
 
# Splitting data into train
# and test data
split <- sample.split(iris, SplitRatio = 0.7)
train_cl <- subset(iris, split == "TRUE")
test_cl <- subset(iris, split == "FALSE")
 
# Feature Scaling
train_scale <- scale(train_cl[, 1:4])
test_scale <- scale(test_cl[, 1:4])
 
# Fitting Naive Bayes Model
# to training dataset
set.seed(120)  # Setting Seed
classifier_cl <- naiveBayes(Species ~ ., data = train_cl)
classifier_cl
 
# Predicting on test data'
y_pred <- predict(classifier_cl, newdata = test_cl)
 
# Confusion Matrix
cm <- table(test_cl$Species, y_pred)
cm
 
# Model Evaluation
confusionMatrix(cm)

Producción:

  • Modelo clasificador_cl:
     

  • La probabilidad condicional para cada característica o variable es creada por modelo por separado. También se calculan las probabilidades a priori que indican la distribución de nuestros datos.
  • Array de confusión:
     

  • Entonces, 20 Setosa se clasifican correctamente como Setosa. De 16 Versicolor, 15 Versicolor se clasifican correctamente como Versicolor y 1 se clasifica como virginica. De 24 vírgenes, 19 vírgenes se clasifican correctamente como vírgenes y 5 se clasifican como Versicolor.
  • Evaluación del modelo: 
     

  • El modelo logró una precisión del 90 % con un valor p inferior a 1. Con sensibilidad, especificidad y precisión equilibrada, la construcción del modelo es buena.

Por lo tanto, Naive Bayes se usa ampliamente en el análisis de sentimiento, categorización de documentos, filtrado de correo no deseado, etc. en la industria.
 

Publicación traducida automáticamente

Artículo escrito por dhruv5819 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *