Архив рубрики ~Лента новостей~

Объяснение ROC AUC: руководство для начинающих по оценке моделей классификации

Объяснение ROC AUC: руководство для начинающих по оценке моделей классификации

Узнайте, как кривые ROC и AUC помогают вам выйти за рамки точности с помощью наглядных пособий и примеров.

Делиться

ddc4b217a29d1b3fc366cdfd227bfb7a

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

Мы оценили модель классификации, используя различные показатели, такие как точность, правильность и т. д.

Теперь, в моделях бинарной классификации, у нас есть еще один способ оценки модели, и это ROC AUC .

В этой статье мы обсудим, зачем нам еще одна метрика и когда ее следует использовать.

Для детального изучения ROC AUC мы рассмотрим набор данных IBM HR Analytics.

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

Всего имеется 34 характеристики, описывающие каждого сотрудника.

У нас также есть целевой столбец «Убыль» , который имеет значение «Да», если сотрудник покинул компанию, и «Нет», если сотрудник остался.

Давайте посмотрим на распределение классов целевого столбца.

f37ad938251b978c63e98c2eb12949ed

Из приведенного выше распределения классов мы можем заметить, что набор данных несбалансирован .

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

Поскольку это задача бинарной классификации (Да/Нет), давайте применим к этим данным алгоритм логистической регрессии.

Код:

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.preprocessing import StandardScaler from sklearn.metrics import confused_matrix, classification_report # Загрузка набора данных df = pd.read_csv(«C:/HR-Employee-Attrition.csv») # Удаление неинформативных столбцов df.drop(['EmployeeNumber', 'Over18', 'EmployeeCount', 'StandardHours'], axis=1, inplace=True) # Кодирование целевого столбца df['Attrition'] = df['Attrition'].map({'Yes': 1, 'No': 0}) # Кодирование категориальных признаков методом прямого кодирования df = pd.get_dummies(df, drop_first=True) # Разделить признаки и цель X = df.drop('Attrition', axis=1) y = df['Attrition'] # Разделить на обучение и тестирование X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, stratify=y, random_state=42 ) # Масштабирование признаков scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # Обучить модель логистической регрессии model = LogisticRegression(max_iter=1000) model.fit(X_train_scaled, y_train) # Прогнозировать на тестовых данных y_pred = model.predict(X_test_scaled) # Прогнозировать вероятности для положительного класса y_prob = model.predict_proba(X_test_scaled)[:, 1] # Матрица путаницы и отчет о классификации conf_matrix = confused_matrix(y_test, y_pred) report = classification_report(y_test, y_pred) # Отображение результатов print(«Матрица путаницы:n», conf_matrix) print(«nОтчет о классификации:n», report)

Матрица путаницы и отчет о классификации

b21f785b646e193794e3d7c2b297804b

Из вышеприведенного отчета по классификации следует, что точность составляет 86%. Однако полнота для «1» (убыль = Да, то есть сотрудник уволился) составляет 0,34, что указывает на то, что модель правильно идентифицировала только 34% сотрудников, уволившихся с работы.

Показатель полноты для «0» (отсев = нет, т.е. сотрудник остался на работе) составляет 0,96, что говорит о том, что модель правильно определила 96% оставшихся сотрудников.

Это происходит из-за несбалансированного набора данных. Точность данных в данном случае может быть обманчива.

Означает ли это, что нам нужно изменить наш алгоритм? Нет.

Нам необходимо изменить способ оценки нашей модели, а наилучшим способом оценки моделей классификации с несбалансированным набором данных является ROC AUC .

Источник: towardsdatascience.com

✅ Найденные теги: новости, Объяснение
Читайте также
Архив рубрики ~Обо всем~ В июньском обновлении Microsoft исправила 198 ошибок Windows, 3 из которых являются уязвимостями нулевого дня. Архив рубрики ~Обо всем~ NuCS против Choco: решатель ограничений на чистом Python встречается с ветераном JVM. Архив рубрики ~Обо всем~ Почему создание орбитальных центров обработки данных сложнее, чем считают в Кремниевой долине Архив рубрики ~Обо всем~ Подкаст Engadget: Мысли о WWDC 2026 из Apple Park Архив рубрики ~Обо всем~ Я протестировал множество настольных программ для работы с ИИ, но Hermes с Ollama — мой новый фаворит, и вот почему. Архив рубрики ~Обо всем~ Теперь пользователи Pinterest смогут совершать покупки напрямую в магазинах Amazon. Архив рубрики ~Обо всем~ Как рефакторить код с помощью Claude Code Архив рубрики ~Обо всем~ В следующем месяце Microsoft Office 2019 для Mac станет доступен только для чтения. Архив рубрики ~Коротко из Telegram~ Госдума приняла нормы, предусматривающие штрафы за нарушение новых требований к… Архив рубрики ~Обо всем~ Лучшие предложения на роботы-пылесосы в рамках Prime Day, которые я бы купил сейчас, после тестирования десятков вариантов. Архив рубрики ~Обо всем~ Мы профессионально отслеживаем выгодные предложения: вот лучшие предложения, которые нашли наши эксперты CNET на этой неделе. Архив рубрики ~Обо всем~ Как обучить модель оценки в эпоху искусственного интеллекта Архив рубрики ~Коротко из Telegram~ 🤖 Промышленным компаниям помогут внедрить ИИ На Архитектурном совете кластера… Архив рубрики ~Коротко из Telegram~ Шопоголикам выписали плацебо Любопытный тренд пришел из Южной Кореи. Там… Архив рубрики ~Обо всем~ В июньском обновлении Microsoft исправила 198 ошибок Windows, 3 из которых являются уязвимостями нулевого дня. Архив рубрики ~Обо всем~ NuCS против Choco: решатель ограничений на чистом Python встречается с ветераном JVM. Архив рубрики ~Обо всем~ Почему создание орбитальных центров обработки данных сложнее, чем считают в Кремниевой долине Архив рубрики ~Обо всем~ Подкаст Engadget: Мысли о WWDC 2026 из Apple Park Архив рубрики ~Обо всем~ Я протестировал множество настольных программ для работы с ИИ, но Hermes с Ollama — мой новый фаворит, и вот почему. Архив рубрики ~Обо всем~ Теперь пользователи Pinterest смогут совершать покупки напрямую в магазинах Amazon. Архив рубрики ~Обо всем~ Как рефакторить код с помощью Claude Code Архив рубрики ~Обо всем~ В следующем месяце Microsoft Office 2019 для Mac станет доступен только для чтения. Архив рубрики ~Коротко из Telegram~ Госдума приняла нормы, предусматривающие штрафы за нарушение новых требований к… Архив рубрики ~Обо всем~ Лучшие предложения на роботы-пылесосы в рамках Prime Day, которые я бы купил сейчас, после тестирования десятков вариантов. Архив рубрики ~Обо всем~ Мы профессионально отслеживаем выгодные предложения: вот лучшие предложения, которые нашли наши эксперты CNET на этой неделе. Архив рубрики ~Обо всем~ Как обучить модель оценки в эпоху искусственного интеллекта Архив рубрики ~Коротко из Telegram~ 🤖 Промышленным компаниям помогут внедрить ИИ На Архитектурном совете кластера… Архив рубрики ~Коротко из Telegram~ Шопоголикам выписали плацебо Любопытный тренд пришел из Южной Кореи. Там…

Подписка на рассылку

Получайте свежие новости и идеи на почту. Без спама — только самое интересное.

Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.