Запрос относительно неожидного резкого повышения точности модели машинного обучения

Вопрос или проблема

Я реализовал все основные модели машинного обучения (Логистическая регрессия, Наивный байес, SVM, KNN, Дерево решений, Случайный лес, Ада Буст и XGBoost) на своем датасете. Мои оценки стратифицированной кросс-валидации находятся в диапазоне от 70% до 80%. Когда я применял свои модели с помощью сеточного поиска, моя точность возросла и теперь составляет от 90% до 95%. Является ли это резкое увеличение точности аномальным и подозрительным?

Мой код GridSearch CV для Логистической регрессии–>

from sklearn.datasets import make_blobs, make_classification
from sklearn.model_selection import GridSearchCV
scaled_inputs, targets = make_classification(n_samples=1000, n_classes=2, random_state=43)  
#n_samples=количество тестовых записей, рассматриваемых в каждой итерации 
x_train, x_test, y_train, y_test = train_test_split(scaled_inputs, targets, test_size=0.25, random_state=43)

parameter_grid = {'C':[0.001,0.01,0.1,1,10],   
                  'penalty':['l1', 'l2']  
                  }

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(random_state=43)
estimator = GridSearchCV(estimator=lr, param_grid=parameter_grid, \
scoring='accuracy', cv=10, n_jobs=-1)

estimator.fit(x_train, y_train)

print(estimator.best_params_)
print(estimator.best_estimator_)
print(estimator.best_score_)

**Результат - {'C': 0.1, 'penalty': 'l2'}
LogisticRegression(C=0.1, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class="auto", n_jobs=None, penalty='l2',
                   random_state=43, solver="lbfgs", tol=0.0001, verbose=0,
                   warm_start=False)
0.9279999999999999**

best_penalty = estimator.best_params_['penalty']
best_C = estimator.best_params_['C']

clf_lr = LogisticRegression(penalty=best_penalty, C=best_C)
clf_lr.fit(x_train, y_train)

predictions = clf_lr.predict(x_test)
from sklearn.metrics import accuracy_score
print(f'Accuracy',accuracy_score(y_test, predictions))

**Результат -->Точность 0.932**

Это связано с определением Сеточного поиска. Сеточный поиск используется для поиска оптимальных гиперпараметров модели, что приводит к наиболее «точным» прогнозам. Я не думаю, что с окончательным прогнозом связано что-либо аномальное.

Тем не менее точность – это не единственная метрика для оценки наших классификационных моделей. Используйте Матрицу неточностей для оценки вашей модели.

from sklearn.metrics import confusion_matrix
print('Матрица ошибок : \n' + str(confusion_matrix(y_test,y_pred)))

После выполнения приведенного выше кода импортируйте отчет о классификации. Это даст вам детальный отчет, и вы сможете проверить, есть ли на самом деле что-то подозрительное или нет.

Ответ или решение

Заголовок: Увеличение точности модели машинного обучения при использовании Grid Search: норма или аномалия?

Вопрос о резком увеличении точности моделей машинного обучения после применения метода Grid Search является актуальным и требует внимательного анализа. Обсудим, что могло повлиять на получение таких результатов и как правильно интерпретировать эти данные.

Grid Search — это популярный метод для гиперпараметрической настройки моделей машинного обучения. Он позволяет исследовать комбинации различных гиперпараметров и выявлять те, которые обеспечивают наилучшие результаты. В вашем случае использование Grid Search с логистической регрессией привело к увеличению точности с 70-80% до 90-95%. Это увеличение может быть объяснено несколькими факторами:

  • Подбор гиперпараметров: Grid Search поможет выбрать оптимальные значения для гиперпараметров модели (в вашем случае C и penalty). Это может значительно повысить производительность модели.
  • Улучшение точности: При исследовании различных комбинаций гиперпараметров можно найти такие, которые лучше подходят для вашего конкретного набора данных, что также объясняет рост точности.

2. Возможные источники аномалий

Несмотря на то, что резкое увеличение точности не всегда указывает на аномалию, важно учесть несколько моментов:

  • Переобучение (overfitting): Высокая точность на тестовых данных может указывать на то, что модель слишком хорошо изучила особенности обучающего набора данных, что может привести к ухудшению ее производительности на новых данных. Используйте валидацию через k-кратную перекрестную проверку, чтобы снизить риск переобучения.
  • Различие между обучающей и тестовой выборками: Важно убедиться, что данные для тестирования и обучения адекватно отражают одну и ту же распределение. Если данные были случайным образом отобраны или содержат искусственные закономерности, то это также может повлиять на результаты.
  • Разнообразие классов: Как вы уже упоминали, помимо точности, следует также учитывать другие метрики, такие как полнота (recall) и точность (precision). В случае сильно несбалансированных классов, высокая точность может быть вводящей в заблуждение.

3. Рекомендации по дальнейшему анализу

Чтобы удостовериться в достоверности результатов и выявить возможные проблемы, обратите внимание на следующие рекомендации:

  • Использование матрицы путаницы: Это позволит визуализировать ошибки вашей модели и понять, как распределяются предсказания в отношении истинных меток данных. Пример:

    from sklearn.metrics import confusion_matrix
    predictions = clf_lr.predict(x_test)
    conf_matrix = confusion_matrix(y_test, predictions)
    print('Матрица путаницы:\n', conf_matrix)
  • Отчет по классификации: Он даст вам детализированную информацию о производительности модели в разных аспектах, включая меру f1, полноту и точность.

    from sklearn.metrics import classification_report
    print(classification_report(y_test, predictions))
  • Проверка на переобучение: Используйте метрики на валидационных данных, чтобы убедиться, что ваша модель демонстрирует сопоставимые результаты как на обучающем, так и на валидационном наборе данных.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...