Пассивно-агрессивный классификатор в машинном обучении
Пассивно-агрессивный классификатор относится к категории алгоритмов онлайн-обучения в машинном обучении. Он работает, пассивно реагируя на правильные классификации и агрессивно реагируя на любые просчеты. В этой статье я расскажу вам, что такое пассивно-агрессивный классификатор в машинном обучении, и покажу вам его реализацию с использованием Python.
Пассивно-агрессивный классификатор в машинном обучении
Пассивно-агрессивный классификатор – это алгоритм классификации, который относится к категории онлайн-обучения в машинном обучении. Так что же такое онлайн-обучение? Если вы никогда раньше не слышали об «онлайн-обучении», вы, должно быть, слышали, что контролируемое и неконтролируемое обучение являются основными категориями машинного обучения.
Помимо контролируемого и неконтролируемого, есть и другие категории машинного обучения, такие как:
- Обучение с подкреплением
- Пакетное обучение
- Онлайн-обучение
- Обучение на основе экземпляров
- Обучение на основе модели
Как новичок в машинном обучении, вы решаете задачи только с использованием алгоритмов контролируемого и неконтролируемого обучения. Это причина, по которой большинство практиков считают, что контролируемое и неконтролируемое обучение – единственные категории машинного обучения.
Итак, как уже упоминалось выше, пассивно-агрессивный классификатор – это алгоритм онлайн-обучения, в котором вы обучаете систему постепенно, загружая ее экземпляры последовательно, отдельно или небольшими группами, называемыми мини-партиями.
При онлайн-обучении модель машинного обучения обучается и развертывается в производственной среде таким образом, чтобы обучение продолжалось по мере поступления новых наборов данных. Таким образом, мы можем сказать, что такой алгоритм, как Пассивно-Агрессивный Классификатор, лучше всего подходит для систем, которые получают данные в непрерывном потоке.
Пассивно-агрессивный классификатор с использованием Python
Надеюсь, вы поняли, что такое пассивно-агрессивный классификатор в машинном обучении. Проще говоря, он остается пассивным для правильных прогнозов и агрессивно реагирует на неправильные прогнозы. Теперь давайте посмотрим, как реализовать пассивно-агрессивный классификатор с помощью языка программирования Python.
Чтобы реализовать алгоритм пассивно-агрессивной классификации с использованием Python, я буду использовать набор данных фейковых новостей, где наша задача будет заключаться в обучении модели обнаружению фейковых новостей. Я начну эту задачу с импорта необходимых библиотек Python и набора данных:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set() data = pd.read_csv('news.csv') print(data.head())
Подготовка данных:
Теперь давайте возьмем целевые значения из набора данных и посмотрим, одинаково ли они распределены или нет:
labels = data.label print(labels.head()) target = data.label.value_counts() print(target) sns.countplot(data.label) plt.title("Distribution of Real and Fake News") plt.show()
Результат:
0 FAKE
1 FAKE
2 REAL
3 FAKE
4 REAL
Name: label, dtype: object
REAL 3171
FAKE 3164
Как видите, набор данных одинаково распределен с настоящими и фальшивыми новостями, давайте разделим данные на обучающий и тестовый наборы:
# spliting the dataset from sklearn.model_selection import train_test_split xtrain, xtest, ytrain, ytest = train_test_split(data['text'], labels, test_size=0.2, random_state=7)
Поскольку мы работаем с набором данных, который содержит текстовые данные, необходимо удалить стоп-слова перед обучением модели:
from sklearn.feature_extraction.text import TfidfVectorizer tfidf = TfidfVectorizer(stop_words='english', max_df=0.7) train = tfidf.fit_transform(xtrain) test = tfidf.transform(xtest)
Теперь давайте обучим модель обнаружения фейковых новостей с помощью алгоритма пассивной агрессии и проверим точность модели:Обучающий пассивно-агрессивный алгоритм:
from sklearn.linear_model import PassiveAggressiveClassifier pac = PassiveAggressiveClassifier(max_iter=50) pac.fit(train, ytrain) ypred = pac.predict(test) from sklearn.metrics import accuracy_score, confusion_matrix accuracy = accuracy_score(ytest, ypred) print(f'Accuracy Score of Passive Aggresive Scassifier: {round(accuracy*100,2)}%')
Результат:
Оценка точности пассивно-агрессивного классификатора: 93,05%
Как видите, мы получили хорошую оценку точности около 93%, и это неплохо. Итак, мы заканчиваем это руководство распечаткой матрицы смешения нашей модели:
print(confusion_matrix(ytest, ypred, labels=["FAKE", "REAL"]))
Результат:
[[589 49]
[ 39 590]]
Надеюсь, вам понравилась эта статья о том, что такое пассивно-агрессивный алгоритм в машинном обучении и его реализация с использованием Python.