Как оценить и улучшить производительность Random Forest с сильно несбалансированными данными? Давайте посмотрим на пример схода лавин во французских Альпах.

Содержание

  • 1) Введение в показатели производительности для несбалансированных наборов данных
  • 2) Случайный лес (RF) для лавин во Французских Альпах: почему отзыв важнее точности?
  • 2.1) Снижение дискретизации для повышения производительности модели RF
  • 2.2) Выбор функций для повышения производительности модели RF
  • 2.3) Сбалансированный ВЧ для повышения производительности модели ВЧ
  • 3) Сводка результатов

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

класс большинства: класс, в котором слишком много наблюдений.

класс меньшинства: класс, представляющий лишь небольшой процент от всего набора данных.

1.1 Высокая точность обманчива

Классический пример - клинические исследования большинства болезней. Вы найдете людей с определенным заболеванием только у небольшой части населения (если вы не сосредоточитесь на Covid или ожирении в развитых странах). Итак, вы имеете дело с несбалансированным набором данных, и по умолчанию вы получите впечатляющую точность.

Когда только 4,7% населения диагностирован лейкоз, ваше предсказание о том, что у кого-то НЕТ лейкемии, будет иметь высокую точность, и вам даже не придется пачкать руки или клавиатуру с помощью алгоритмов машинного обучения. Вы можете просто руководствоваться здравым смыслом.

Счет 1.2 F1 управляет всем

Следовательно, при несбалансированном наборе данных вам следует больше обращать внимание на другие показатели, например Оценка F1. Оценка F1 не имеет ничего общего с Льюисом Хэмилтоном или Михаэлем Шумахером, это средневзвешенное значение точности и запоминания.

Предсказание лавины - это классическая проблема бинарной классификации со множеством нулей = отрицательные значения = примеры большинства классов «без лавины» и несколько единиц = положительные результаты = примеры "лавины" класса меньшинств.

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

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

Из упомянутых показателей я сосредоточусь в основном на взвешенном счете F1 и вспомню дни лавины.

2 Случайный лес для схода лавин во французских Альпах

Я буду использовать набор данных с более чем 540 тысячами записей, которые после обработки данных привели к компиляции различных снеговых и метеорологических переменных для каждого дня с октября 2010 года по сентябрь 2019 года в 22 различных массивах во Французских Альпах. Эти данные - мои независимые переменные (особенности машинного обучения). Наличие или отсутствие схода лавины в определенном массиве в определенный день - зависимая переменная (метка). Это очень несбалансированный набор данных, потому что лавины появлялись только в 0,4% от общего числа случаев.

Источник характеристик: данные Метеорологический анализ S2M и повторный анализ снежного покрова в горных районах Франции (1958 г. - настоящее время) для Французских Альп за отдельные годы.

Источник этикеток: наличие лавин от Data-Avalanche.org.

Напоминание или точность: что важнее?

При запуске Random Forest (RF) на неизмененной выборке с 540 тысячами записей взвешенный балл F1 составил 0,99793, что действительно хорошо. Но все еще есть точность и отзыв, о которых стоит разобраться более подробно. В моем случае я ценю отзыв выше точности. Более того, я больше ценю отзыв для класса меньшинства (день со сходом лавины), чем отзыв для класса большинства (день без лавины). Почему?

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

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

Весь код для предсказания лавин во Французских Альпах с моделью Random Forest можно найти в моем репозитории GitHub здесь.

В моей первой модели RF с показателем F1 0,99793 я получил значение отзыва 1 для дней без лавины и только 0,546 для дней со сходом лавины. Это означает, что я идеально предсказываю дни без лавины, но я могу правильно предсказывать только каждый второй день с лавиной. Эта модель наверняка не понравится горным спасателям.

2. 1 Техника недостаточной выборки для получения лучших результатов

Имея дело с несбалансированным набором данных, вы можете попытаться выполнить повторную выборку данных. Любимая уловка специалистов по обработке данных - попробовать методы передискретизации или недостаточной выборки.

Передискретизация: чрезмерное представительство класса меньшинства

Недостаточная выборка: недостаточное представительство класса большинства

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

Итак, я использовал недостаточную выборку, чтобы создать выборку с 50% случаев с лавиной и 50% случаев без лавины. Это привело к набору данных только с 4078 наблюдениями вместо предыдущих 540 000 из нормальной выборки. Взвешенный показатель F1 упал до 0,9019, а отзывчивость в дни без лавин упала до 0,87, но выросла в дни с лавинами до 0,94. Несмотря на то, что последнее число - это число, которое нас больше всего волнует, моя модель далека от реального мира.

Я использовал магический или, точнее, математический трюк, чтобы улучшить запоминание с неудовлетворительных 0,548 до великолепных 0,940. Что касается математики, то все в порядке, но не настолько, если принять во внимание статистику или науку о данных. На настоящих горных хребтах французских Альп лавины появляются не каждый второй день, даже если учесть, что некоторые из них остаются незамеченными и отсутствуют в какой-либо базе данных.

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

Первая модель, обученная на нормальном образце, дала нам 0,546 отзыва за лавинообразные дни. Эта модель (обученная на неполной выборке, но использовавшаяся на нормальной выборке) была незначительным улучшением; вспомните 0,548 за сутки со сходом лавины. Лучше да, но ничего особенного. Что еще мы можем попытаться улучшить запоминание?

2.2 Выбор функций и разработка

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

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

Теперь я решил также удалить «более высокие выбросы», записи с высотой более 3600 метров (ограниченная высота), избавиться от записей о летних месяцах (без лета) и вместо этого Для разделения объектов на 22 различных горных массива во Французских Альпах я попытался игнорировать массивы и использовать только данные из Французских Альп в целом (без массивов).

Я тестировал модель RF со всеми тремя вариантами (ограниченная высота, без лета, без массивов) по отдельности, а затем также в сочетании с лучшим вариантом из этих трех. Лучшее запоминание, которое я достиг для дней со сходом лавины, было 0,575 для варианта без лета, тогда как вариант без массивов фактически снижает отзыв до 0,528. Комбинация ограниченной высоты и отсутствия лета привела к меньшему отзыву, чем от отдельных вариантов. Комбинация без массивов и без лета закончилась с отзывом 0,559. Поэтому наиболее предпочтительной моделью будет модель случайного леса без летних месяцев.

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

Я не говорил о взвешенной оценке F1, потому что все модели с выбранными функциями смогли иметь относительно высокие показатели от 0,997 до 0,998, и поэтому не было смысла отдавать предпочтение одной по сравнению с другой только на основе оценки F1.

2.3 Модификация модели случайного леса

Конечно, вы всегда можете выйти из случайного леса и попробовать другую модель машинного обучения. Но у РФ есть еще одна уловка для несбалансированных данных в рукаве: Сбалансированный случайный лес (BFR). В документации говорится, что эта модель случайным образом занижает выборку каждой выборки ускоренного набора, чтобы сбалансировать ее. Если это объяснение все еще немного нечеткое, мы можем сказать:

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

Для этой модели вам нужно сначала установить библиотеку imbalanced-learn, и тогда все готово. После его запуска я улучшил запоминание в течение нескольких дней с лавиной до 0,91, но точность резко снизилась до 0,03. Кроме того, взвешенная оценка F1 упала до 0,939 для BFR на выборке без выбора функций. Большинство горных спасательных команд, вероятно, одобрили бы эту модель, потому что она прежде всего сводит к минимуму ложноотрицательные результаты.

С другой стороны, эта модель дает нам очень большое количество ложных срабатываний. Более 19 тысяч ошибочно предсказанных дней со сходом лавины, когда никакой угрозы не было. Все остальные модели имели значительно меньшее количество ложных срабатываний, всего от 0 до 3 ложных срабатываний. Так что у меня такое чувство, что когда владельцы горнолыжных курортов могли присоединиться к дискуссии с горноспасательными командами, они решительно продвинули бы модель RF без лета с отзывом 0,58 для лавинных дней и превосходным результатом F1.

3 Сводка результатов прогноза лавины

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

  • 1) РЧ-модель, обученная на неполной выборке, использованная на нормальной выборке: результат был незначительным улучшением запоминания для лавинных дней с 0,546 (модель, обученная на нормальной выборке) до 0,548. Обе модели RF имели взвешенный балл F1 0,998.
  • 2) Выбор характеристик: я использовал 3 различных изменения характеристик: A) образец без летних месяцев, B) образец с ограниченной высотой (не более 3600 метров) и C) образец без разделения массива. Также я проверил комбинацию A + B и A + C. Все пять моделей дали одинаковые баллы F1 0,997–0,998, но лучше всего запомнился вариант A. Выборка без летних месяцев имела 0,58 отзыва для лавинных дней, поэтому будет наиболее предпочтительным вариантом.
  • 3) Сбалансированная модель RF: эта модель машинного обучения действительно обеспечивала отзыв 0,91 для лавинных дней, но ее показатель F1 упал до 0,939, а точность для лавинных дней была трагической 0,03 (все ранее упомянутые модели имели точность 1 или как минимум близко к 1). Также эта модель использует в некотором смысле аналогичный метод, как недовыборка, только для каждого бутстрапа, поэтому ее производительность в реальном времени была бы сомнительной. Это означает, что те же возражения, что и у нас с простой недостаточной дискретизацией 50%: 50%, справедливы и для сбалансированной модели RF.

Заключение: я бы выбрал модель RF на выборке без летних месяцев, потому что у нее второй лучший отзыв для лавинных дней 0,58 и приемлемый результат F1. Сбалансированная модель RF с лучшим отзывом 0,91 не была выбрана из-за ее более низкого балла F1, ужасной точности и возможных проблем при применении в реальном мире.

Проект реализован во время Fullstack Data Science Bootcamp, организованного компанией Jedha.

Ссылки и цитаты: