R - 결정 트리: 초보자 가이드

안녕하세요, 미래의 데이터 과학자 여러분! 오늘 우리는 R를 사용하여 결정 트리의 세계에 흥미로운 여정을 떠납니다. 코드를 작성한 적이 없어도 걱정 마세요 - 나는 친절한 안내자로서 모든 단계에서 당신을 안내할 것입니다. 이 튜토리얼의 끝까지 따라오면, 자신만의 결정 트리를 만들고 진정한 데이터 마법사처럼 느낄 수 있을 것입니다!

R - Decision Tree

결정 트리는 무엇인가요?

코드에 들어가기 전에, 결정 트리가 무엇인지 이해해 보겠습니다. 당신이 달리기 여부를 결정해야 한다고 가정해 봅시다. 당신은 다음과 같은 질문을 스스로에게 물을 수 있습니다:

  1. 비가 오고 있나요?
  2. 충분한 시간이 있나요?
  3. 에너지가 충분하나요?

당신의 답변에 따라 결정을 내립니다. 이는 결정 트리가 하는 일입니다 - 질문의 연속을 기반으로 결정을 내립니다!

필요한 R 패키지 설치

먼저, 우리는 적절한 도구를 갖추어야 합니다. R에서는 이러한 도구를 패키지라고 부릅니다. 우리의 결정 트리 모험을 위해 두 가지 주요 패키지가 필요합니다: rpartrpart.plot.

이제 설치해 보겠습니다:

install.packages("rpart")
install.packages("rpart.plot")

이제 이 패키지를 로드해 보겠습니다:

library(rpart)
library(rpart.plot)

훌륭합니다! 당신은 R 프로그래밍의 첫 걸음을 뗐습니다. 자신을 칭찬해 주세요!

간단한 데이터셋 생성

이제 도구가 준비되었으므로, 간단한 데이터셋을 만들어 작업해 보겠습니다. 상상해 봅시다. 우리는 온도와 주말 여부를 기반으로 누군가가 아이스크림을 살지 않을지 예측하고 있습니다.

# 데이터 프레임 생성
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입니다.
  • buy_icecream은 아이스크림을 샀으면 1, 안 샀으면 0입니다.

우리의 첫 결정 트리 만들기

이제 흥미로운 부분으로 넘어가겠습니다 - 우리의 결정 트리를 만들어 보겠습니다!

# 결정 트리 모델 생성
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_weekendbuy_icecreamtemperatureis_weekend를 기반으로 예측하겠다는 뜻입니다.
  3. data = ice_cream_data는 우리의 데이터셋을 지정합니다.
  4. method = "class"는 우리가 분류 작업을 하고 있음을 알립니다.
  5. rpart.plot()는 우리의 트리를 시각적으로 표현합니다.

이 코드를 실행하면 아름다운 트리 다이어그램을 볼 수 있습니다. 각 노드는 결정 규칙을 보여주고, 잎은 예측을 보여줍니다. 아이스크림 결정의 플로차트와 같습니다!

트리 이해하기

우리의 아이스크림 결정 트리를 해석해 보겠습니다:

  1. 최상위 노드(루트)는 첫 번째 분할을 보여줍니다. 예를 들어 "temperature < 76"과 같을 수 있습니다.
  2. 참이면 왼쪽 분지로 간다; 거짓이면 오른쪽 분지로 간다.
  3. 이 과정이 잎 노드에 도달할 때까지 계속됩니다. 잎 노드는 최종 예측을 제공합니다.

노드에 있는 숫자는 다음을 나타냅니다:

  • 예측된 클래스(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 평일에 누군가가 아이스크림을 살지 않을지 예측합니다.

모델 평가

우리 모델이 얼마나 잘 작동하는지 확인하기 위해 혼란 행렬을 사용할 수 있습니다:

# 원본 데이터에 대한 예측
predictions <- predict(ice_cream_tree, ice_cream_data, type = "class")

# 혼란 행렬 생성
confusion_matrix <- table(Actual = ice_cream_data$buy_icecream, Predicted = predictions)

# 혼란 행렬 보기
print(confusion_matrix)

# 정확도 계산
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("정확도:", accuracy))

이렇게 하면 우리의 예측이 얼마나 정확한지 빠르게 확인할 수 있습니다.

결론

축하합니다! 당신은 R에서 첫 결정 트리를 만들었습니다. 패키지 설치에서 예측까지, 많은 내용을 다루었습니다. 연습이 완벽을 만든다는 것을 기억하며, 다른 데이터셋과 매개변수를 실험해 보지 마세요.

여기서 우리가 사용한 방법의 요약입니다:

방법 설명
install.packages() R 패키지 설치
library() 설치된 패키지 로드
data.frame() 데이터 프레임 생성
rpart() 결정 트리 생성
rpart.plot() 결정 트리 시각화
predict() 트리를 사용하여 예측
table() 혼란 행렬 생성

계속 탐구하고, 배우고, 데이터 과학에乐趣을 느껴보세요!

Credits: Image by storyset