R - Decision Tree: A Beginner's Guide

Здравствуйте, будущие данные科学家ы! Сегодня мы отправимся в увлекательное путешествие в мир деревьев решений с использованием R. Не волнуйтесь, если вы никогда не программировали раньше - я буду вашим доброжелательным проводником на каждом шагу. К концу этого руководства вы создадите свои собственные деревья решений и будете чувствовать себя настоящим магом данных!

R - Decision Tree

Что такое дерево решений?

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

  1. идет ли дождь?
  2. у меня есть достаточно времени?
  3. я чувствую себя энергичным?

На основе ваших ответов вы принимаете решение. Вот 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)

Давайте разберем, что происходит здесь:

  1. rpart() - это функция, которую мы используем для создания дерева решений.
  2. buy_icecream ~ temperature + is_weekend tells R, что мы хотим предсказать buy_icecream на основе temperature и is_weekend.
  3. data = ice_cream_data specifies our dataset.
  4. method = "class" tells R, что мы выполняем задачу классификации (предсказание категории).
  5. rpart.plot() создает визуальное представление нашего дерева.

Когда вы выполните этот код, вы увидите красивую схему дерева. Каждый узел показывает правило решения, а листья показывают прогнозы. Это как flowchart решений мороженого!

Понимание дерева

Давайте интерпретируем наше дерево мороженого:

  1. В верхнем узле (корне) показан первый разрез. Это может быть что-то вроде "temperature < 76".
  2. Если да (да), он идет к левому branch; если нет (нет), он идет к правому.
  3. Этот процесс продолжается до тех пор, пока не достигнет листового узла, который дает 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