Menu
CoddyTech

트리 깊이

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 29번째.

트리는 모든 훈련 데이터 행이 각자의 답을 가질 때까지 계속 질문할 수 있습니다. 그러면 학습한 것이 아니라 외워버린 것입니다:

노이즈가 있는 반달형 데이터에서 깊이 1부터 12까지 트리의 훈련 및 테스트 정확도. 훈련 정확도는 깊이 8에서 1.0까지 상승하며, 암기로 표시되어 있습니다. 테스트 정확도는 깊이 6에서 0.907로 정점을 찍고 점선으로 표시된 다음, 약 0.87까지 떨어집니다.

깊은 트리는 자체 학습 행의 잡음까지 학습하므로 테스트 정확도는 정점에 도달한 뒤 떨어집니다. 여러 깊이를 시도해 보세요:

train = []
test = []
for d in range(1, 13):
    tree = DecisionTreeClassifier(max_depth=d, random_state=0)
    tree.fit(X_train, y_train)
    train.append(tree.score(X_train, y_train))
    test.append(tree.score(X_test, y_test))

이 달들에서는 깊이 6이 새 행에서 가장 좋은 성능을 보입니다. 지금은 그대로 두세요. 깊이 8부터는 트리가 기억한 행에서는 완벽하지만, 나머지 행에서는 성능이 더 나쁩니다.

challenge icon

챌린지

중급

망원경 관측 조사에서는 천체를 별과 은하로 분류합니다. 시작 코드는 데이터를 나누고 차트를 설정합니다.

  1. depths의 각 깊이에 대해 트리를 학습시키고(random_state=0) 두 정확도를 모두 저장하세요.
  2. 아래와 같이 테스트 정확도가 가장 높은 깊이를 출력하세요.
  3. 두 선을 train과 test로 표시해 그린 다음, 점선 ax.axvline으로 최적 깊이를 표시하고 범례를 추가한 뒤 표시하세요.

망고 분류기의 경우:

Best depth: 5, test accuracy 0.867

그러면 Coddy가 차트를 설명합니다. Coddy의 차트는 다음과 같습니다.

Ripe or Not?라는 제목의 차트. 가로축에는 트리 깊이 1부터 10까지 표시되어 있습니다. 파란색 train 선은 약 0.98까지 상승하고, 주황색 test 선은 깊이 5에서 약 0.87로 정점을 찍으며, 해당 지점에 점선 수직선이 표시되어 있고 범례가 있습니다.

직접 해보기

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# 망원경 관측 자료에서 천체 하나당 한 행: galaxy에서 1은 은하, 0은 별을 뜻합니다
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)

fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러