Визуализация весов в машинном обучении на примере алгоритма Random Forest и Decision Tree |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2023-05-03 15:00 Меня зовут Александр Серов, я Data Scientist и являюсь участником профессионального сообщества NTA. Сегодня загляну «под капот» алгоритмов, использующих в своей основе деревья решений. Один из самых мощных алгоритмов контролируемого машинного обучения на сегодня – градиентный бустинг (Catboost, XBGR), построен на столь казалось легком и базовом элементе, как бинарное дерево, или же дерево решений. Оно является строительным блоком данного алгоритма, в данном случае можно привести притчу про веник и его части, но в этом случае, иногда даже одно дерево решений способно выдать неплохой результат в решениях задач классификации и регрессии. Сегодня я рассмотрю его подробнее, на примере Decision Tree и Random Forest из библиотеки sklearn, а также визуализирую работу. В практике всегда возникает проблема верного выявления гипотез, в моей работе с этим помогают модели машинного обучения, но и их необходимо контролировать. Визуализация весов - один из способов это сделать. Обучать и тестировать модели буду на двух наборах данных, взятых из открытого источника - Kaggle.
DecisionTree - задача классификации Начну с задачи классификации. Набор данных основан на определенных диагностических измерениях, ограничен 1000 значений, где были выбраны женщины из индейского племени Пима. Изучим подробное описание каждого признака:
Цель, как указывалось выше, переменная "Outcome", то есть бинарный признак. В следующем шаге разделим набор данных на тренировочную выборку и тестовую, с пропорциями 71:29 (можете поэкспериментировать с данным показателем, допустим разброс, зависимый от количества данных и их разнообразия). После того, как подготовил данные, начну обучение с модели DecisionTreeClassifier. Это всё то же бинарное дерево решений, для автоматического подбора параметров модели используем GridSearchCV. Необходимо для нахождения оптимального решения и оптимизации затрат по времени. Точность на тренировочных данных: 74.31 Полученная точность нашей модели - 72%, что уже довольно неплохо, а это ведь только 1 дерево. К сведению, если применять данную модель в реальных условиях мы можем уменьшить порог для классификации положительного результата (tresholding), так как в жизни ложноположительный результат лучше, чем ложноотрицательный, потому что можно провести углубленные исследование. Но для этой модели сейчас важна абсолютная точность. Теперь попробуем визуализировать результат и посмотреть, как модель распределяла веса для классификации целевого признака. Нужно добавить немного теории, чтобы понять нашу визуализацию. Модель выбрала алгоритм работы на основе энтропии:
Также популярен другой вариант, это коэффициент Gini:
Но мне больше нравится другой способ визуализации c помощью библиотеки dtreeviz, давайте посмотрим на него. Инфографика процесса представлена более подробно. Видим, как дерево отбирает решения, максимизирует информацию. Глубина дерева получилось всего 3, где задействованы все признаки, а это отличный результат для анализа. Это действительно полезно, так как можем сравнить полученную информацию с медицинскими гипотезами, подтвердив точность своей модели. Судя из графиков, при высоком уровне сахара в крови - шанс наличия диабета повышен, что совпадает с общепринятыми данными. DecisionTree – задача регрессии Сейчас предлагаю рассмотреть вариант с задачей регрессии (предсказания). Для этого используем второй набор данных об успеваемости студентов на экзамене. Он состоит из полученных оценок по различным предметам.
Выберу целевой признак - оценки по математике (math score), метрику - абсолютную ошибку. Так как данные являются категориальными, необходимо их обработать и перевести в числовой формат, использую для этого LabelEncoder.
Обучу модель, применяя аналогичный подход с авто-параметрами. Средняя абсолютная ошибка на тестовых данных: 5.722
Дерево решений получилось глубже, чем в первом случае, так как задача регрессии здесь требует больше данных. Здесь алгоритмом работы бинарного дерева выступала средняя абсолютная ошибка. По визуализации весов можно сделать несколько выводов:
"*" - имеют очень малое влияние, поэтому бинарное дерево выбрало другие признаки Возможно, исключив оценки по другим предметам, были бы задействованы не вошедшие факторы, но пострадала бы и точность предсказания. В моем случае разброс +-6 баллов из 100. Random Forest И настал заключительный момент, проверить визуализации весов на алгоритме случайного леса. Он является ансамблевой моделью, то есть он использует для предсказания переменной несколько моделей внутри себя. В данном случае модель обучает несколько бинарных деревьев (со случайной генерацией random_seed) и усредняет их показатели, в результате повышается точность. Обучать буду модель классификации, после чего выведу визуализацию всех деревьев в его ансамбле.
Точность на тестовых данных: 77.8% Как можно увидеть - выросла точность предсказания с 72% до 77%, в общем итоге, в «лесу» 12 бинарных деревьев, в идеале можно вывести каждые из них и проанализировать. Для примера я вывел 5 первых деревьев, чтобы в общем рассмотреть их структуру. Сохранять изображение лучше в векторном формате «svg», чтобы можно было увеличить изображения без потери качества. Анализируя структуру вижу, что увеличилась глубина деревьев, она выросла до 7, также многие из них стали несимметричные (одна из веток имеет значительно больше разветвлений). Вывод Обобщу полученные в ходе работы результаты. Деревья решений - строительный блок более серьёзных и эффективных моделей, поэтому, контролируя его, аналитики повышают общие результаты работы. В нашем случае, визуализация помогает не только выполнять прямое назначение - видеть результаты работы весов внутри обученной модели, но и помогает создавать и подтверждать гипотезы, которые предлагает машинное обучение, как видно на примере классификации диабета. Проделанной работой можно повысить качество любого исследования, а также предоставить специалистам, не работающим с машинным обучением, полезную информацию. Источник: habr.com Комментарии: |
|