Приложение машинного обучения

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

Что такое Precision and Recall и как вы их используете?

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

Введение

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

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

Что такое несбалансированные данные?

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

Данные

Для этого проекта я использовал набор данных обнаружения мошенничества с кредитными картами Kaggle. Этот набор данных является открытым исходным кодом. Набор данных содержит 284 807 транзакций, из которых только 492 являются мошенническими. То есть лишь 0,172% всех транзакций являются мошенническими! Этот набор данных крайне несбалансирован, поэтому обучение моделей для классификации мошенничества будет представлять собой сложную задачу.

Метрики для несбалансированных данных

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

Точность против отзыва

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

Следовательно, нам нужны лучшие показатели для измерения производительности наших моделей:

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

Отзыв: отзыв данного класса - это количество правильно классифицированных образцов этого класса, деленное на общее количество образцов в этом классе.

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

На изображении выше 4 правильно классифицированных кота и всего 7 котов, что означает отзыв 4/7. Классификатор классифицировал 6 точек данных как кошек, что означает точность 2/3.

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

F-бета-оценки

Многие из вас наверняка слышали о счете F-1. Оценка F-1 представляет собой комбинацию полноты и точности, и она очень часто используется в литературе.

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

F-1 — это частный случай показателя F-бета, где бета = 1. F-1 может быть не лучшим показателем для несбалансированных наборов данных, поскольку он одинаково взвешивает точность и полноту. Вместо этого мы можем установить бета на более высокое значение, чтобы придать большее значение отзыву. В зависимости от вашей проблемы для вас может быть важнее полнота или точность, и вам придется адаптировать бета-версию в соответствии с вашими потребностями.

Пороги

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

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

Как правило, если вероятность выше 50%, мы называем транзакцию мошеннической, если она ниже 50%, мы называем ее немошеннической.

Мы можем изменить этот порог, чтобы все образцы с более низким значением (например, 10%) классифицировались как мошеннические. Это значительно увеличит количество образцов, которые мы помечаем как мошеннические, но также снизит нашу уверенность в том, насколько правильными будут наши прогнозы.

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

Оглядываясь назад на показатели F-бета, случай слева, вероятно, будет иметь более высокий показатель F1, чем случай справа. Это связано с тем, что F-1 взвешивает точность и равенство отзывов. Однако случай справа может иметь более высокий балл F-10, чем случай слева, поскольку случай справа может иметь увеличение отзыва, которое компенсирует снижение точности, достаточное для увеличения балла F-10.

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

Применение: Обнаружение мошенничества

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

Исследовательский анализ данных

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

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

  • Свойства: размер, типы (несоответствия?), параметры распределения, такие как средние значения, стандартные отклонения, минимум, максимум.
  • Дубликаты: есть ли повторяющиеся строки, нужно ли их удалять?
  • Уникальности (для категорийных значений)
  • Отсутствующие значения (можно делать тепловые карты или гистограммы, если вы пишете отчет)

Для этого набора данных не было дубликатов, уникальных или отсутствующих значений.

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

Модели машинного обучения

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

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

Недостаточная выборка.Недостаточная выборка просто означает, что мы случайным образом уменьшаем выборку класса с наибольшим количеством выборок до того же размера, что и класс с наименьшим количеством выборок. Что касается мошеннических транзакций, то обучающая выборка насчитывала в общей сложности 343 мошеннических транзакции и около 200 000 немошеннических транзакций. Я уменьшил выборку немошеннических транзакций, чтобы они имели тот же размер, что и мошеннические транзакции. Из-за недостаточной выборки я теряю большую часть своих данных, и поэтому часто это не лучший подход.

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

Выбирая эти веса, я уравновешиваю разницу в количестве выборок каждого класса. В наборе данных о мошеннических транзакциях немошеннические транзакции имеют вес 0,5, а мошеннические — 289.

Полученные результаты

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

На приведенных выше рисунках каждая линия представляет компромисс модели в отношении точности и полноты, когда я изменяю порог в классификации. Чем ближе модель к правому верхнему углу, тем выше ее оценка F1. Для анализа я выбрал 3 модели (красную, черную и зеленую). Красная модель имеет самый высокий балл F1, черная модель имеет более высокий отзыв и по-прежнему хорошую точность, зеленая модель имеет самый высокий отзыв и самую низкую точность из 3 моделей.

На рис. 4 показаны матрицы путаницы трех выбранных мной моделей. Красная модель имеет самый высокий балл F1 и, следовательно, наименьшую сумму ложноотрицательных и ложноположительных результатов. Количество ошибочно классифицированных образцов невелико. Однако модель неправильно классифицировала 21 из 149 мошеннических транзакций. Если мы пожертвуем некоторой точностью, мы можем уменьшить это число.

Если вы посмотрите на черную модель, она неправильно классифицирует 16 из 149 мошеннических транзакций. Зеленый только неправильно классифицирует 10/149. Однако уменьшение ложноотрицательных результатов сопровождается большим увеличением ложноположительных результатов. Черная модель предсказала 88 немошеннических образцов как мошеннические, а зеленая — 2492!

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

Бонусный контент: закон Бенфорда

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

Закон Белфорда — это кривая, которая появляется повсюду в математике. Он появляется в последовательности Фибоначчи и в гипотезе Коллатца. Если вы возьмете первую цифру суммы, проведенной немошенническими транзакциями, вы увидите, что распределение первых цифр соответствует оранжевой кривой. Если вы попытаетесь сделать то же самое для мошеннических данных, это просто не будет так хорошо следовать закону Белфорда. Можно было бы внедрить это в свою модель, например, применив некоторое взвешивание к транзакциям, например, по номеру, с которого они начинаются, но я оставлю это вам для изучения!

Заключение

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

Поддержите меня 👏

Надеюсь, это помогло вам, если вам понравилось, вы можете подписаться на меня!

Вы также можете стать средним участником, используя мою реферальную ссылку, получить доступ ко всем моим статьям и многому другому: https://diegounzuetaruedas.medium.com/membership

Другие статьи, которые могут вам понравиться

Теория информации в применении к Wordle

Обучение с подкреплением: введение

Дополнительные очки улучшения

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