Что такое позитивный класс? Предположим, у вас есть целевая переменная: смерть или не смерть, жизнь или не жизнь, крупная авария или не крупная авария и так далее. Как бы вы решили, что положительный класс получит правильные метрики, чтобы сообщить, насколько хорошо работает ваша модель бинарной классификации?

Проблема

Идея этой статьи возникла, когда я решал задачу бинарной классификации на онлайн-соревновании, в котором участвовал. Целевой переменной, представляющей интерес, была крупная авария по сравнению с незначительной аварией. Идея заключалась в том, чтобы определить, какие функции связаны с результатом, среди прочего, представляющего интерес.

Когда я смотрел на формулу полноты и точности, мне пришло в голову, что то, как вы кодируете свои двоичные значения, влияет на значения метрик классификации. Например, буду ли я обозначать крупную аварию = 1, а не крупную аварию = 0 или наоборот? Итак, я вышел протестировать и изменить значения целевой переменной, и результаты показали разницу в метриках.

Результаты

Приведенные ниже результаты показывают метрические результаты двух протестированных мной проектов машинного обучения. Я применил модель случайного леса с гиперпараметрами по умолчанию и методом случайной выборки, чтобы сбалансировать метки 0 и 1. Целевые метки «основной несчастный случай» и «аутизм» были вручную изменены либо на 0, либо на 1. Используемая версия scikit-learn 1.0.1 не имела pos_label (о которой я расскажу позже в этой статье, доступной в версии scikit-learn 1.0). .2)

Таблица 1 Результаты изменения положительных меток наиболее распространенных показателей с использованием классификатора случайного леса

Разница, наблюдаемая в таблице 1, связана с тем, как рассчитываются показатели. Решение этих результатов зависит от различных факторов и отраслей. Это выходит за рамки данной статьи. Таблица, однако, ясно показывает, что если вы выбрали неправильную целевую метку, например 1, или метка неправильно закодировала целевые значения, следствием может быть неверный вывод. Величина этой ошибки увеличивается с увеличением количества записей в используемом тестовом наборе. Чем больше набор тестов и показатели классификации ниже 0,9, тем выше величина неправильного вывода. Что ухудшает это, может быть используемый алгоритм классификатора. В таблице 2 ниже показаны математические формулы вышеуказанных показателей.

Таблица 2. Наиболее распространенные формулы и описание метрик бинарной классификации

Все вышеперечисленные показатели достигают своего наилучшего значения при 1, а наихудшего значения при 0. Приведенные выше формулы показывают, что полнота и точность сосредоточены в основном на истинно положительных результатах. Вопрос в том, каковы истинные плюсы в ваших данных? Матрица путаницы всегда используется для лучшего понимания формул. Мне нравится следующее изображение из статьи, которую я прочитал в «Towards Data Science».

Рисунок ниже, сделанный моим коллегой, красиво распаковывает вышеизложенное во что-то более понятное.

Вы можете легко увидеть, что из 12 элементов, помеченных как «1», 9 были предсказаны правильно, а 3 — неверно. Из 6 пунктов с пометкой «0» 5 были предсказаны правильно, а 1 неверно. Изображение помогает наглядно увидеть, сколько шаров было на самом деле «1» и «0», то есть 10 и 8 соответственно.

Что усложняет проблему

Соглашение об именах создает фундаментальную проблему: позитивы и минусы. Оказывается, синонимы слова положительный связаны с чем-то хорошим и, возможно, с хорошим исходом, а синонимы, связанные с отрицательным, связаны со словом плохой или плохой исход. Это сложно, если подумать; Как и в случае с мошенничеством, должны ли вы маркировать случай мошенничества как положительный или отрицательный, или смерть, должен ли он быть положительным или отрицательным? Итак, нам нужно выяснить, как еще мы можем это сделать.

Как определить положительный класс

Вы должны знать, что вас больше всего интересует или что вы исследуете. Простым примером для понимания может быть создание модели, которая может классифицировать транзакцию как мошенническую или немошенническую. С уверенностью могу сказать, что любой, кто строит эту модель, будет заинтересован в том, может ли модель классифицировать транзакции, которые являются мошенничеством, с большей точностью, чем не мошенничество. Таким образом, в этом случае вы должны обозначить мошенничество = 1 и не-мошенничество = 0. Другим простым для понимания примером может быть классификация крупной аварии по сравнению с незначительной аварией. В этом случае интерес для расследования представляли бы крупные аварии. Я уверен, что вы можете с уверенностью решить, что нужно пометить как 1 из этого примера. Библиотека показателей sklearn использует 1 в качестве положительного класса по умолчанию. Итак, если вы знаете, что исследуете, то пометка 1 поможет, если вы используете sklearn ‹ 1.0.2. Таким образом, любое другое значение, кроме 0 или 1, может вызвать ошибку, поэтому придерживайтесь только 0 или 1!

Использование других параметров

Библиотека sklearn.Используя библиотеку scikit-learn 1.0.2, вы можете вызвать pos_label = value, где value представляет желаемую положительную метку. Это может быть либо число, либо текст, в зависимости от того, как вы обработали категориальные столбцы. По умолчанию метрики sklearn в двоичной классификации принимают 1 в качестве положительного класса для расчета метрик. Код sklearn приведен ниже для точности, и он одинаков только для отзыва и оценки F1.

Если вы используете значения, отличные от 0 или 1, вы помещаете pos_label = «your_value», чтобы алгоритм знал, что использовать в качестве положительного класса.

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

Библиотека plot_metric — я наткнулся на эту библиотеку под названием plot_metric. Документация находится по этой ссылке. У него есть и другие графики, которые могут объединяться с разными алгоритмами. Меня заинтересовала Бинарная классификация. Итак, я проверил это. Как показано на изображении ниже, мне понравилось, как он может предоставить вам отчет о классификации и другие визуальные графики наиболее распространенных показателей бинарной классификации, которые включают показатели обоих классов. В приведенном ниже результате показаны оба результата, правильно помеченные как большой несчастный случай = 1, и неправильно помеченные как большой несчастный случай = 0 в проекте A.

Как видно из изображения, отчет о классификации дает разные значения для обоих классов, изменяя метку «majoraccident» = 0. На данный момент я не совсем уверен, как отчет вычисляет показатели неположительного класса. Я подробно расскажу об этом и других показателях в следующей статье.

Отправить сообщение

· Очень важно найти время, чтобы тщательно разобраться в своей проблеме. Это может помочь предотвратить принятие неверного решения.

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

· С проблемой классификации, возможно, стоит разобраться в других метриках. Я нашел эти метрики в Википедии для интеллектуального блогинга (действительно, правильная матрица путаницы!) Это больше, чем просто несколько метрик, которые мы используем.

Заключение

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

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

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