Аналитика больших данных - наивный байесовский классификатор
Наивный Байес - вероятностный метод построения классификаторов. Характерное допущение наивного байесовского классификатора состоит в том, чтобы считать, что значение конкретной характеристики не зависит от значения любой другой характеристики с учетом переменной класса.
Несмотря на излишне упрощенные предположения, упомянутые ранее, наивные байесовские классификаторы дают хорошие результаты в сложных реальных ситуациях. Преимущество наивного байесовского метода состоит в том, что для оценки параметров, необходимых для классификации, требуется лишь небольшой объем обучающих данных, а также возможность постепенного обучения классификатора.
Наивный байесовский метод - это модель с условной вероятностью: задан экземпляр проблемы, который необходимо классифицировать, представленный вектором x= (x 1 ,…, x n ), представляющий некоторые n характеристик (независимых переменных), он присваивает этому экземпляру вероятности для каждого из K возможных результатов или классов.
$$ p (C_k | x_1, ....., x_n) $$
Проблема с приведенной выше формулировкой заключается в том, что если количество признаков n велико или если признак может принимать большое количество значений, то основывать такую модель на таблицах вероятности невозможно. Поэтому мы переформулируем модель, чтобы сделать ее проще. Используя теорему Байеса, условную вероятность можно разложить как -
$$ p (C_k | x) = \ гидроразрыва {p (C_k) p (x | C_k)} {p (x)} $$
Это означает, что при сделанных выше предположениях о независимости условное распределение по переменной класса C равно -
$$ p (C_k | x_1, ....., x_n) \: = \: \ frac {1} {Z} p (C_k) \ prod_ {i = 1} ^ {n} p (x_i | C_k) $$
где свидетельство Z = p (x) - коэффициент масштабирования, зависящий только от x 1 ,…, x n , который является константой, если известны значения переменных признаков. Одно из общих правил - выбирать наиболее вероятную гипотезу; это известно как максимальное апостериорное правило или правило принятия решения MAP. Соответствующий классификатор, байесовский классификатор, является функцией, которая присваивает метку класса $ \ hat {y} = C_k $ для некоторого k следующим образом:
$$ \ hat {y} = argmax \: p (C_k) \ prod_ {i = 1} ^ {n} p (x_i | C_k) $$
Реализация алгоритма на R - простой процесс. В следующем примере показано, как обучить наивный байесовский классификатор и использовать его для прогнозирования в задаче фильтрации спама.
Следующий сценарий доступен в bda/part3/naive_bayes/naive_bayes.R файл.
# Install these packages
pkgs = c("klaR", "caret", "ElemStatLearn")
install.packages(pkgs)
library('ElemStatLearn')
library("klaR")
library("caret")
# Split the data in training and testing
inx = sample(nrow(spam), round(nrow(spam) * 0.9))
train = spam[inx,]
test = spam[-inx,]
# Define a matrix with features, X_train
# And a vector with class labels, y_train
X_train = train[,-58]
y_train = train$spam
X_test = test[,-58]
y_test = test$spam
# Train the model
nb_model = train(X_train, y_train, method = 'nb',
trControl = trainControl(method = 'cv', number = 3))
# Compute
preds = predict(nb_model$finalModel, X_test)$class
tbl = table(y_test, yhat = preds)
sum(diag(tbl)) / sum(tbl)
# 0.7217391
Как видно из результата, точность модели Наивного Байеса составляет 72%. Это означает, что модель правильно классифицирует 72% экземпляров.