Понимание базовых моделей в машинном обучении

Важность, стратегии и применение к несбалансированным классам

Введение в базовые модели

Базовая модель — это простая модель, используемая для прогнозирования результатов данных. Он служит отправной точкой для анализа, позволяя нам оценить производительность более сложных моделей и влияние дополнительных функций. Существует два распространенных подхода к созданию базовой модели для классификации.

Классификатор классов большинства: где наиболее часто встречающийся класс данных прогнозируется для всех наблюдений. Например, если у нас есть 80 % наблюдений в классе A и 20 % в классе B для задачи бинарной классификации, базовая модель будет предсказывать класс A для всех экземпляров.

Rслучайный классификатор: случайное присвоение меток классам на основе распределения классов в данных. В вышеупомянутом сценарии бинарной классификации мы случайным образом назначаем класс A 80% наблюдений, а класс B — 20% наблюдений. Случайный классификатор особенно полезен, когда нет конкретных указаний или знаний для обоснованных прогнозов.

Важность базовых моделей в машинном обучении

Базовые модели служат ориентиром в задачах машинного обучения и предлагают несколько преимуществ. Вот основные причины использования базовых моделей:

  1. Производительность сравнение. Базовые модели служат основой для сравнения производительности более продвинутых моделей. Они помогают определить, приводит ли сложность модели к повышению производительности. Если модели не удается превзойти базовый уровень, это указывает на проблемы с подходом или данными.
  2. Минимальные требования к производительности. Базовые модели устанавливают минимальные требования к производительности для любой полезной модели. Если сложная модель не может превзойти базовую производительность, возможно, ее практическая реализация не имеет смысла.
  3. Принятие решений. Базовые модели помогают распределять ресурсы, выбирать модели и улучшать их. Если базовая модель уже обеспечивает удовлетворительную производительность, для построения более сложных моделей может не потребоваться дополнительное время и ресурсы.

Базовые модели для несбалансированных классов

Базовая модель, такая как фиктивный классификатор, полезна для обнаружения несбалансированных классов, предоставляя точку сравнения. Это позволяет нам оценить производительность более продвинутых моделей в контексте несбалансированных данных.

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

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

Базовый классификатор, такой как фиктивный классификатор со стратегией «наиболее часто встречающийся», подходит для обнаружения несбалансированных классов в двоичной классификации. Он предсказывает наиболее часто встречающийся класс для всех экземпляров, по существу игнорируя класс меньшинства и внося смещение в сторону класса большинства.

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

Стратегии фиктивного классификатора: изучение различных подходов

Класс DummyClassifier библиотеки scikit-learn предлагает различные стратегии для создания прогнозов. Эти стратегии предназначены для создания простых базовых моделей для сравнения с более продвинутыми моделями. Вот некоторые часто используемые стратегии:

  1. «стратифицированный»: эта стратегия случайным образом выбирает метки классов на основе распределения классов в обучающей выборке. Он направлен на сохранение того же распределения классов, что и обучающие данные, что делает его полезным для несбалансированных классов.
  2. «most_frequent»: эта стратегия всегда прогнозирует наиболее часто встречающийся класс в тренировочном наборе. Он подходит для несбалансированных наборов данных, где в распределении доминирует класс большинства. Он обеспечивает базовый уровень производительности на основе наиболее распространенного класса без учета входных характеристик.
  3. «uniform»: эта стратегия присваивает метки классов случайно и равномерно, без учета распределения классов в обучающих данных. Это полезно, когда нет определенного шаблона или информации для прогнозов.
  4. «constant»: эта стратегия всегда предсказывает метку класса констант, заданную постоянным параметром. Это помогает создать базовую модель, которая последовательно предсказывает определенный класс. Это помогает оценить влияние дисбаланса классов и сравнить производительность модели с фиксированным прогнозом.

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

Пример базового классификатора для набора данных рака молочной железы.

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.dummy import DummyClassifier
from sklearn.metrics import accuracy_score, classification_report

# Load the breast cancer dataset
data = load_breast_cancer()
X = data.data
y = data.target

# Split the dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create a baseline random classifier
dummy_clf = DummyClassifier(strategy='stratified', random_state=42)

# Fit the baseline classifier on the training data
dummy_clf.fit(X_train, y_train)

# Make predictions on the test data
y_pred = dummy_clf.predict(X_test)

# Calculate accuracy and other metrics
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)

# Print the results
print("Baseline Classifier Accuracy:", accuracy)
print("Classification Report:")
print(report)

вы можете проверить весь код здесь, на GitHub — Базовый классификатор