Автор оригинала: Pankaj Kumar.
Точность и вспомнить в Python
Давайте поговорим о точном и вспоминании в современной статье. Всякий раз, когда мы реализуем задачу классификации (то есть Деревья решений ) Для классификации точек данных есть точки, которые часто ошибочно классифицируются.
Несмотря на то, что точность дает общую идею о том, насколько хороша модель, нам нужны более надежные метрики для оценки нашей модели.
Давайте рассмотрим пример.
Предположим, вы являетесь ученым данных, работающими в фирме, и вам присваивалось задача для определения транзакции мошенничества, когда она происходит. Теперь вы должны построить модель, которая, кажется, дает хорошую точность, но есть поймать.
Я хотел бы, чтобы вы представили два сценария в этой проблеме.
- Сценарий 1 : Ваша модель классифицировала транзакцию не мошенничество в качестве мошенничества.
- Сценарий 2 : Ваша модель классифицировала транзакцию мошенничества как не мошенничество.
Среди этих двух сценариев, которая является наиболее важной ситуацией, чтобы обратить внимание на то, что транзакции мошенничества могут придать огромные потери?
Я надеюсь, что вы догадались правильно.
Это сценарий 2. Если ваша модель классифицирует транзакции по мошенничеству как немогите, он может заставить вашу организацию страдать значительным количеством потери. Вы не хотите этого, ты? 🙂.
Точность не предоставляет никаких средств для решения таких проблем.
В этой статье мы увидим, как мы можем иметь дело с такими проблемами, набрав знания о точности и вспоминании.
Понимание путаницы матрицы
Перед погружением в точность и вспомните, что мы должны знать путаницу матрицы.
Матрица путаницы для проблемы бинарной классификации выглядит так. Где мы либо классифицируем точки правильно, либо нет, но эти неправильно классифицированные точки могут быть дополнительно разделены как ложные положительные и ложные отрицательные.
Давайте понять терминологию сейчас.
- Истинный положительный (к): фактический положительный класс прогнозируется положительный.
- Истинный отрицательный (TN): фактический отрицательный класс прогнозируется негативным.
- Ложный положительный (FP): фактический класс отрицательный, но предсказан как положительный.
- Ложный отрицательный (FN): фактический класс положительный, но прогнозируется как отрицательный.
Оба Точность и Напомним можно интерпретировать из путаницы матрицы. Посмотрим, что они есть.
Что вы подразумеваете под точностью?
В простейших условиях точность – это соотношение между истинными позитивами и всеми точками, которые классифицируются как позитивы.
Для расчета точности модели нам нужны положительные и отрицательные числа из матрицы путаницы.
Точность/(TP + FP)
Хорошо посмотреть на точность, мы просто видим это как какое-то необычное математическое соотношение, но то, что в мире это значит?
Ссылаясь на нашу мошенническую пример транзакции сверху. Это будет означать, что среди всех транзакций, которые были классифицированы как положительные (мошенничество), сколько на самом деле позитивно.
Что вы подразумеваете под вспомните?
Чтобы просто поставить его, отзыв – это мера нашей модели правильно идентифицируя истинные позитивы. Это также называется истинной положительной скоростью.
Это соотношение истинного положительного и суммы истинного положительного и ложного отрицательного. Это означает, что из всех точек, которые на самом деле являются позитивными, какая фракция мы правильно предсказали как позитивные?
Напомним/(TP + FN)
Ссылаясь на наш пример раньше. Мы говорим, что среди всех транзакций, которые были фактически мошенничеством, сколько из них мы предсказывали как мошенничество.
Что такое балл F1?
F1-оценка – это гармоническое среднее значение точности и вспоминает
Это может быть рассчитано как:
F1-оценка – лучшая метрика, когда есть несбалансированные классы. Это необходимо, когда вы хотите искать баланс между точностью и вспомнить.
В большинстве задач реальной классификации существует распределение дисбалансированного класса, и, таким образом, F1-оценка является лучшей метрикой для оценки нашей модели.
Вычисляя точность и отзыв в Python
Давайте посмотрим, как мы можем рассчитать точность и вспомнить, используя Python в задаче классификации.
Мы будем использовать модуль Sklearn.Metrics.
#Importing the required libraries from sklearn import datasets import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import precision_recall_curve from sklearn.metrics import plot_precision_recall_curve from sklearn.metrics import precision_score from sklearn.metrics import recall_score import matplotlib.pyplot as plt #Loading the data data = datasets.load_breast_cancer() df = pd.DataFrame(data.data, columns=data.feature_names) df['target'] = data.target #Splitting the data into training and test set X_train, X_test, y_train, y_test = train_test_split( df.iloc[:,:-1], df.iloc[:,-1], test_size=0.3, random_state=42) # Initialize and fit the Model model = LogisticRegression() model.fit(X_train, y_train) #Make prediction on the test set pred = model.predict(X_test) #calculating precision and reall precision = precision_score(y_test, pred) recall = recall_score(y_test, pred) print('Precision: ',precision) print('Recall: ',recall) #Plotting Precision-Recall Curve disp = plot_precision_recall_curve(model, X_test, y_test)
Precision: 0.963963963963964 Recall: 0.9907407407407407
Precision_Score ()
и Recall_score ()
Функции от Sklearn.metrics
Модуль требует настоящих меток и предсказанных этикеток в качестве входных аргументов и возвращает прецизионные и отзывы баллов соответственно.
Заключение
Возможность иметь высокие значения на точности и вспомнить всегда желательна, но трудно получить это. В зависимости от типа применения нам нужно либо увеличить точность, либо отзыв. Эта статья была все о том, что понять две очень важные метрики оценки модели.
Счастливое обучение!