R - Decision Tree: A Beginner's Guide
Здравствуйте, будущие данные科学家ы! Сегодня мы отправимся в увлекательное путешествие в мир деревьев решений с использованием R. Не волнуйтесь, если вы никогда не программировали раньше - я буду вашим доброжелательным проводником на каждом шагу. К концу этого руководства вы создадите свои собственные деревья решений и будете чувствовать себя настоящим магом данных!
Что такое дерево решений?
Прежде чем мы погрузимся в код, давайте поймем, что такое дерево решений. Представьте, что вы пытаетесь решить, идти ли вам бегать или нет. Вы можете задать себе следующие вопросы:
- идет ли дождь?
- у меня есть достаточно времени?
- я чувствую себя энергичным?
На основе ваших ответов вы принимаете решение. Вот Exactly то, что делает дерево решений - оно принимает решения на основе серии вопросов!
Установка необходимых пакетов R
Сначала нам нужно equip ourselves с правильными инструментами. В R эти инструменты называются пакетами. Для нашего приключения с деревьями решений нам понадобятся два основных пакета: rpart
и rpart.plot
.
Установим их:
install.packages("rpart")
install.packages("rpart.plot")
Теперь загрузим эти пакеты:
library(rpart)
library(rpart.plot)
Отличная работа! Вы только что сделали свои первые шаги в программировании на R. Поздравьте себя!
Создание простого набора данных
Теперь, когда у нас есть инструменты, давайте создадим простой набор данных для работы. Представим, что мы пытаемся предсказать, купит ли кто-то мороженое на основе температуры и того, является ли это выходным днем.
# Создаем data frame
ice_cream_data <- data.frame(
temperature = c(68, 85, 72, 90, 60, 78, 82, 75, 68, 71),
is_weekend = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0),
buy_icecream = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0)
)
# Просматриваем данные
print(ice_cream_data)
В этом наборе данных:
-
temperature
указана в Фаренгейтах -
is_weekend
равен 1 для выходных, 0 для рабочx дней -
buy_icecream
равен 1, если они купили мороженое, 0, если нет
Построение нашего первого дерева решений
Теперь comes the exciting part - давайте построим наше дерево решений!
# Создаем модель дерева решений
ice_cream_tree <- rpart(buy_icecream ~ temperature + is_weekend,
data = ice_cream_data,
method = "class")
# Построим график дерева
rpart.plot(ice_cream_tree, extra = 106)
Давайте разберем, что происходит здесь:
-
rpart()
- это функция, которую мы используем для создания дерева решений. -
buy_icecream ~ temperature + is_weekend
tells R, что мы хотим предсказатьbuy_icecream
на основеtemperature
иis_weekend
. -
data = ice_cream_data
specifies our dataset. -
method = "class"
tells R, что мы выполняем задачу классификации (предсказание категории). -
rpart.plot()
создает визуальное представление нашего дерева.
Когда вы выполните этот код, вы увидите красивую схему дерева. Каждый узел показывает правило решения, а листья показывают прогнозы. Это как flowchart решений мороженого!
Понимание дерева
Давайте интерпретируем наше дерево мороженого:
- В верхнем узле (корне) показан первый разрез. Это может быть что-то вроде "temperature < 76".
- Если да (да), он идет к левому branch; если нет (нет), он идет к правому.
- Этот процесс продолжается до тех пор, пока не достигнет листового узла, который дает final prediction.
Цифры в узлах представляют:
- Предсказываемый класс (0 или 1)
- Вероятность этого класса
- Процент наблюдений в этом узле
Делаем прогнозы
Теперь, когда у нас есть наше дерево, давайте использовать его для прогнозов!
# Создаем новые данные
new_data <- data.frame(
temperature = c(70, 95),
is_weekend = c(1, 0)
)
# Делаем прогнозы
predictions <- predict(ice_cream_tree, new_data, type = "class")
# Просматриваем прогнозы
print(predictions)
Этот код предсказывает, купит ли кто-то мороженое на 70°F в выходной день и на 95°F в рабочx день.
Оценка модели
Чтобы увидеть, как хорошо наша модель работает, мы можем использовать матрицу ошибок:
# Делаем прогнозы на наших исходных данных
predictions <- predict(ice_cream_tree, ice_cream_data, type = "class")
# Создаем матрицу ошибок
confusion_matrix <- table(Actual = ice_cream_data$buy_icecream, Predicted = predictions)
# Просматриваем матрицу ошибок
print(confusion_matrix)
# Calculate accuracy
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("Accuracy:", accuracy))
Это дает нам быстрый обзор того, сколько прогнозов было правильными и неправильными.
Заключение
Поздравляю! Вы только что построили свое первое дерево решений в R. Вы прошли долгий путь - от установки пакетов доения making predictions, вы covered a lot of ground. Помните, что практика makes perfect, так что не бойтесь экспериментировать с различными наборами данных и параметрами.
Вот быстрый обзор методов, которые мы использовали:
Method | Description |
---|---|
install.packages() | Устанавливает пакеты R |
library() | Загружает установленные пакеты |
data.frame() | Создает data frame |
rpart() | Построение дерева решений |
rpart.plot() | Визуализирует дерево решений |
predict() | Делает прогнозы с использованием дерева |
table() | Создает матрицу ошибок |
Продолжайте исследовать, продолжайте учиться и, самое главное, получайте удовольствие от наук о данных!
Credits: Image by storyset