наївний Баєсів класифікатор

Наївний Баєсів класифікатор - це простий, але ефективний алгоритм машинного навчання для задач класифікації. Він ґрунтується на Теоремі Баєса і припущенні про незалежність ознак.

У наївному Баєсовому класифікаторі вхідні ознаки розглядаються як незалежні між собою, незалежно від наявності цього припущення у реальних даних. Незалежність ознак спрощує обчислення імовірностей, необхідних для класифікації.

Ось приклад, як використовувати наївний Баєсів класифікатор для визначення, чи є електронний лист спамом чи не спамом:

python


У цьому прикладі


import numpy as np


class NaiveBayesClassifier:

    def __init__(self):

        self.classes = None

        self.class_priors = None

        self.feature_probs = None


    def fit(self, X, y):

        self.classes, class_counts = np.unique(y, return_counts=True)

        self.class_priors = class_counts / y.size


        self.feature_probs = []

        for c in self.classes:

            X_c = X[y == c]

            feature_probs_c = np.mean(X_c, axis=0)

            self.feature_probs.append(feature_probs_c)


    def predict(self, X):

        posteriors = []

        for i, c in enumerate(self.classes):

            class_prior = np.log(self.class_priors[i])

            feature_probs_c = self.feature_probs[i]

            log_likelihoods = np.log(feature_probs_c)

            log_likelihoods_complement = np.log(1 - feature_probs_c)


            log_posteriors = np.sum(X * log_likelihoods + (1 - X) * log_likelihoods_complement, axis=1) + class_prior

            posteriors.append(log_posteriors)


        posteriors = np.array(posteriors).T

        predictions = np.argmax(posteriors, axis=1)

        return self.classes[predictions]


# Приклад використання


# Згенеруємо випадкові дані

X = np.random.randint(2, size=(1000, 10))  # Ознаки (0 або 1)

y = np.random.randint(2, size=1000# Мітки (0 або 1)


# Ініціалізуємо і навчаємо класифікатор

classifier = NaiveBayesClassifier()

classifier.fit(X, y)


# Передбачення на нових даних

new_data = np.random.randint(2, size=(5, 10))

predictions = classifier.predict(new_data)

print(predictions) 

Теорема Баєса - це теорема з теорії ймовірностей, яка дозволяє оновлювати апріорні імовірності після отримання нових доказів. Вона названа на честь Томаса Баєса, британського математика, який сформулював цю теорему.

Формально, Теорема Баєса виглядає наступним чином:

P(AB)=P(BA)⋅P(A)/P(B)

де:

Теорема Баєса використовується для оновлення апріорних імовірностей, коли маємо нові докази або інформацію. Вона дозволяє обчислити умовну імовірність події A за умови події B, враховуючи апріорні імовірності та відношення імовірностей B до A.

Теорема Баєса має широке застосування в багатьох галузях, включаючи статистику, машинне навчання, обробку природної мови, комп'ютерний зір та інші галузі, де необхідно вирішувати проблеми на основі доказів та імовірностей.