Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт 4 лабораторная

.docx
Скачиваний:
4
Добавлен:
11.07.2024
Размер:
2.78 Mб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций

Российской Федерации Ордена Трудового Красного Знамени

федеральное государственное бюджетное образовательное

учреждение высшего образования

Московский технический университет связи и информатики

Кафедра «Математическая кибернетика и информационные технологии»

Лабораторная работа №4

по дисциплине

«Управление данными»

Выполнила: студентка гр. БСТ2104

Первухина Алиса Александровна

Проверила:

Тимофеева Анна Ивановна

Москва

2024

Разбор алгоритма Decision Tree

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

Ссылка на датасет: https://drive.google.com/file/d/1Si4EJ_RexI3Q7yZU8eLjgp4ORe_BXr4G

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

Датасет сформирован 3 групп признаков:

Объективные признаки:

  • Возраст (в днях)

  • Рост

  • Вес

  • Пол

Результаты измерения:

  • Артериальное давление верхнее и нижнее

  • Холестерин (три группы: норма, выше нормы, значительно выше нормы)

  • Глюкоза (три группы: норма, выше нормы, значительно выше нормы)

Субъективные признаки (бинарные):

  • Курение

  • Употребление Алкоголя

  • Физическая активность

Выведем первые строчки датасета

Определим имена столбцов, которые будут использоваться как признаки для обучения модели. Также преобразуем возраст в днях в возраст в годах.

Чтобы более наглядно смотреть, как обучается дерево решений возьмем только 5 объектов и 2 признака.

Обучим одно дерево решений с помощью sklearn’a. Инициализируем его для задачи классификации и обучим на признаках (X) и целевой переменной (y). По признакам модель будет запоминать закономерности, которые больше влияют на наличие сердечно-сосудистого заболевания.

Теперь визуализируем наше обученное дерево решений. Из себя дерево решений представлет набор вопросов к данным. Узлы (ноды), где как раз-таки находится вопрос - называются вершинами, в этом дереве у нас есть одна вершина, где хранится вопрос ap_hi <= 120.

Пояснение:

  • ap_hi <= 120.0: Это условие разделения (или узел решения), где ap_hi обозначает артериальное давление верхнее. Если значение ap_hi у объекта меньше или равно 120, то объект будет направлен в левую ветку дерева, в противном случае — в правую.

  • gini = 0.48: Индекс Джини — это мера неопределённости или чистоты узла. Значение 0.48 указывает на то, что узел довольно смешанный (значение 0 означает полную чистоту и отсутствие неопределённости).

  • samples = 5: В узле находится 5 объектов из набора данных.

  • value = [2, 3]: Это распределение классов в узле. У нас есть 2 объекта класса 'No Cardio' (предполагаемое значение 0) и 3 объекта класса 'Cardio' (предполагаемое значение 1). Левый листовой узел (оранжевый цвет):

  • gini = 0.0: Индекс Джини, равный 0, указывает на то, что все объекты в этом листе принадлежат одному классу, что делает его полностью "чистым".

  • samples = 2: В левой ветке находятся 2 объекта.

  • value = [2, 0]: Все 2 объекта в этом узле принадлежат классу 'No Cardio'. Правый листовой узел (жёлтый цвет):

  • gini = 0.0: Аналогично, индекс Джини, равный 0, указывает на полную чистоту этого листа.

  • samples = 3: В правой ветке находятся 3 объекта.

  • value = [0, 3]: Все 3 объекта в этом узле принадлежат классу 'Cardio'.

Определим, какие вопросы задает дерево решений.

Поработаем с признаком возраста.

Резюмируем по признаку возраста. Получили 3 валидных вопроса.

Поработаем с признаком ap_hi.

Итого, 3 вопроса про возраст и 4 вопроса про давление.

Начнем с подсчета энтропии в исходной выборке из 5 объектов. У нас два объекта 0 класса и три объекта 1 класса.

Разбор алгоритма Random Forest

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

В этой части мы предсказывали переменную class для предсказания классов автомобилей (unacc, acc, good, vgood).

  • Precision (Точность): показывает, какая доля объектов, отнесённых моделью к данному классу, действительно относится к этому классу.

  • Recall (Полнота): показывает, какая доля объектов из реально относящихся к данному классу была выявлена моделью.

  • F1-score: гармоническое среднее между точностью и полнотой, позволяет учесть обе характеристики одновременно.

  • Support: количество реальных случаев данного класса в вашем тестовом наборе.

  • accuracy: общая точность модели, показывает долю всех правильно классифицированных объектов.

  • macro avg (Среднее макро): среднее значение метрик, рассчитанное по всем классам, где каждый класс имеет равный вес.

  • weighted avg (Среднее взвешенное): среднее значение метрик, взвешенное в соответствии с количеством объектов в каждом классе.

  • acc: Точность 89%, полнота 81%, что говорит о том, что модель достаточно хорошо классифицирует этот класс, но пропускает около 19% истинных случаев.

  • good: Низкая точность 56% при высокой полноте 90%, что указывает на то, что многие объекты, не являющиеся good, ошибочно классифицируются как good.

  • unacc: Высокие значения точности и полноты (97%), модель очень хорошо справляется с этим классом.

  • vgood: Баланс между точностью и полнотой с обоими значениями 80%, довольно хороший результат, но есть пространство для улучшения.

Метрики macro avg и weighted avg выявляют разницу в производительности между классами, подсказывая, где возможно нуждаются улучшения.

В этом проекте мы создали Random Forest Classifier для прогнозирования безопасности автомобиля. мы строим две модели: одну с 10 деревьями решений, другую со 100 деревьями решений.

Показатель точности модели для 10 деревьев решений составляет около 0,92, а для 100 деревьев решений — 0,94. Итак, как и ожидалось, точность увеличивается с увеличением количества деревьев решений в модели.

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

Мы удалили переменную doors из модели, перестроили ее и проверили точность модели.

Вторая наименее важная модель — lug_boot. Если мы удалим его из модели и перестроим модель, то точность окажется равной в районе 0,85. Это существенное снижение точности. Поэтому мы не будем удалять его из модели.