기술나눔

의사결정 트리 알고리즘, 원리 및 사례 구현 소개

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

의사결정 트리 알고리즘은 분류 및 회귀 작업에 사용할 수 있는 매우 널리 사용되는 기계 학습 알고리즘입니다. 다음은 원칙과 사례 구현, 해당 Python 코드를 포함하여 의사결정 트리 알고리즘에 대한 자세한 소개입니다.

의사결정 트리 알고리즘 소개

기본 사상

의사결정 트리는 데이터의 분류 또는 회귀에 사용되는 트리 구조입니다. 이는 노드와 에지로 구성되며, 각 내부 노드는 기능 테스트를 나타내고, 각 분기는 테스트 결과를 나타내며, 각 리프 노드는 범주 또는 회귀 값을 나타냅니다.

빌드 프로세스

의사결정 트리 구성 프로세스에는 일반적으로 다음 단계가 포함됩니다.

  1. 최고의 기능을 선택하세요: 특정 기준(예: 정보 획득, 지니 지수 등)에 따라 데이터 세트를 분할하는 데 가장 적합한 기능을 선택합니다.
  2. 노드 생성: 최고의 기능을 사용하여 데이터 세트를 분할하고 각 분기에 대해 새 노드를 생성합니다.
  3. 재귀적으로 하위 트리 구축: 중지 조건(노드 순도가 특정 수준에 도달하거나 트리의 깊이가 미리 설정된 값에 도달하는 등)이 충족될 때까지 각 하위 노드에 대해 최상의 기능을 선택하고 데이터 세트를 분할하는 프로세스가 반복됩니다.
  4. 리프 노드 구축: 리프 노드는 분할이 더 이상 필요하지 않을 때 생성됩니다. 일반적으로 분류 트리의 대다수 클래스 레이블 또는 회귀 트리의 하위 집합에 있는 모든 데이터 포인트의 평균입니다.
분할 기준
  • 정보 획득: 특성에 의해 설정된 데이터 분류의 불확실성 감소를 측정합니다.
  • 지니지수: 데이터 세트의 순도를 측정합니다. 지니 지수가 작을수록 데이터 세트의 순도가 높아집니다.
  • 최소 평균 제곱 오차(MSE): 회귀 트리의 분할 기준입니다.

사례 구현

다음은 Python과 scikit-learn 라이브러리를 이용하여 구현한 의사결정트리 분류 사례이다. 우리는 세 가지 붓꽃(Setosa, Versicolour, Virginica)의 특징과 범주를 포함하는 유명한 Iris 데이터세트를 사용할 것입니다.

1. 데이터 준비
  1. from sklearn.datasets import load_iris
  2. from sklearn.model_selection import train_test_split
  3. # 加载数据集
  4. iris = load_iris()
  5. X, y = iris.data, iris.target
  6. # 拆分数据集为训练集和测试集
  7. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
의사결정 트리 모델 학습
  1. from sklearn.tree import DecisionTreeClassifier
  2. # 初始化决策树分类器
  3. clf = DecisionTreeClassifier()
  4. # 训练模型
  5. clf.fit(X_train, y_train)
평가모델
  1. from sklearn.metrics import accuracy_score
  2. # 预测测试集
  3. y_pred = clf.predict(X_test)
  4. # 计算准确率
  5. accuracy = accuracy_score(y_test, y_pred)
  6. print(f"Accuracy: {accuracy:.2f}")
시각적 의사결정 트리
  1. import matplotlib.pyplot as plt
  2. from sklearn.tree import plot_tree
  3. # 可视化决策树
  4. plt.figure(figsize=(12, 12))
  5. plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
  6. plt.show()

요약하다:

위 코드는 scikit-learn 라이브러리를 사용하여 Iris 데이터세트를 로드하고, 의사결정 트리 분류기를 훈련하고, 모델 성능을 평가하고, 의사결정 트리를 시각화하는 방법을 보여줍니다. 이 사례를 통해 의사결정나무가 어떻게 작동하는지, 실제 응용에서는 어떻게 활용하는지 확인할 수 있습니다.

모두 마음에 드셨으면 좋아요와 저장 부탁드립니다.