R - 결정 트리: 초보자 가이드
안녕하세요, 미래의 데이터 과학자 여러분! 오늘 우리는 R를 사용하여 결정 트리의 세계에 흥미로운 여정을 떠납니다. 코드를 작성한 적이 없어도 걱정 마세요 - 나는 친절한 안내자로서 모든 단계에서 당신을 안내할 것입니다. 이 튜토리얼의 끝까지 따라오면, 자신만의 결정 트리를 만들고 진정한 데이터 마법사처럼 느낄 수 있을 것입니다!
결정 트리는 무엇인가요?
코드에 들어가기 전에, 결정 트리가 무엇인지 이해해 보겠습니다. 당신이 달리기 여부를 결정해야 한다고 가정해 봅시다. 당신은 다음과 같은 질문을 스스로에게 물을 수 있습니다:
- 비가 오고 있나요?
- 충분한 시간이 있나요?
- 에너지가 충분하나요?
당신의 답변에 따라 결정을 내립니다. 이는 결정 트리가 하는 일입니다 - 질문의 연속을 기반으로 결정을 내립니다!
필요한 R 패키지 설치
먼저, 우리는 적절한 도구를 갖추어야 합니다. R에서는 이러한 도구를 패키지라고 부릅니다. 우리의 결정 트리 모험을 위해 두 가지 주요 패키지가 필요합니다: rpart
와 rpart.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)
여기서 무슨 일이 일어나고 있는지 설명해 보겠습니다:
-
rpart()
함수는 결정 트리를 생성합니다. -
buy_icecream ~ temperature + is_weekend
는buy_icecream
을temperature
와is_weekend
를 기반으로 예측하겠다는 뜻입니다. -
data = ice_cream_data
는 우리의 데이터셋을 지정합니다. -
method = "class"
는 우리가 분류 작업을 하고 있음을 알립니다. -
rpart.plot()
는 우리의 트리를 시각적으로 표현합니다.
이 코드를 실행하면 아름다운 트리 다이어그램을 볼 수 있습니다. 각 노드는 결정 규칙을 보여주고, 잎은 예측을 보여줍니다. 아이스크림 결정의 플로차트와 같습니다!
트리 이해하기
우리의 아이스크림 결정 트리를 해석해 보겠습니다:
- 최상위 노드(루트)는 첫 번째 분할을 보여줍니다. 예를 들어 "temperature < 76"과 같을 수 있습니다.
- 참이면 왼쪽 분지로 간다; 거짓이면 오른쪽 분지로 간다.
- 이 과정이 잎 노드에 도달할 때까지 계속됩니다. 잎 노드는 최종 예측을 제공합니다.
노드에 있는 숫자는 다음을 나타냅니다:
- 예측된 클래스(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