В этом руководстве мы собираемся обучить модель классификатора текста, которая способна непрерывно учиться без повторного обучения со всеми данными снова и снова. Это называется онлайн / инкрементальным обучением. Этот метод также называется пакетным обучением, поскольку вы можете понять его по названию, когда он полезен для обучения, когда у нас очень большой объем данных. Мы можем просто разделить наши данные на небольшие фрагменты и постепенно обучать нашу модель фрагмент за фрагментом.

При классическом способе обучения модели машинного обучения мы используем все данные, которые у нас есть, а когда мы получаем больше данных, мы объединяем новые данные со старыми данными и полностью переобучаем модель с нуля, в отличие от инкрементального обучения. Таким образом, мы можем использовать это для обучения и постоянного развития нашей модели с текущими данными в реальном времени.

В этом уроке мы собираемся использовать Python для обучения нашей модели. Но вместо использования Scikit-Learn мы собираемся использовать модуль Creme-Ml для дополнительных возможностей обучения. Установим этот модуль:

pip install creme

Мы собираемся использовать этот набор данных в качестве примера. Вы можете проверить раздел api reference в документации Creme-ML, чтобы узнать о других функциях, но в этом примере я расскажу вам, что меня больше всего волнует в Creme-ML и это объект конвейер.

Используя объект Pipeline Creme, мы можем объединить наши шаги предварительной обработки, обучения… и т.д. в один объект Python следующим образом:

import pandas as pd
from creme import compose
from creme import feature_extraction
from creme import naive_bayes
# Read dataset
df = pd.read_csv("7allV03.csv")
# Convert dataframe to list of tuples
docs = df.to_records(index=False)
# Creating the pipeline
# 1st function is creating the bag of words
# 2nd function is the naive bayes predictor
model = compose.Pipeline(
    ('tokenize', feature_extraction.BagOfWords(lowercase=False)),
    ('nb', naive_bayes.MultinomialNB(alpha=1))
)
# Training the model row by row
for sentence, label in docs:
    model = model.fit_one(sentence, label)

Теперь мы успешно обучили нашу модель. Вы можете делать такие прогнозы:

model.predict_one("text to predict category")

Или вы можете увеличить модель следующим образом:

model = model.fit_one("new text to increment model", "label for new text")

Итак, у вас есть модель машинного обучения для классификации новостей. И вы можете увеличивать эту модель, не требуя старых данных.

Я надеюсь, что этот урок вам подойдет. Просто скажите мне, если у вас возникнут проблемы с подпиской.

Спасибо за чтение.