번역가 | Zhu Xianzhong
리뷰어 | Sun Shujuan
현대 머신러닝 알고리즘이 우리의 일상을 바꾸고 있습니다. 예를 들어 BERT와 같은 대규모 언어 모델은 Google 검색을 지원하고 GPT-3는 많은 고급 언어 애플리케이션을 지원합니다.
반면에 복잡한 기계 학습 알고리즘을 구축하는 것은 그 어느 때보다 훨씬 쉬워졌습니다. 그러나 기계 학습 알고리즘이 아무리 복잡하더라도 모두 다음 학습 범주 중 하나에 속합니다.
사실 의사결정 트리는 가장 오래된 지도 머신러닝 알고리즘 중 하나이며 광범위한 실제 문제를 해결할 수 있습니다. 연구에 따르면 의사결정 트리 알고리즘의 최초 발명은 1963년으로 거슬러 올라갑니다.
다음으로, 이 알고리즘의 세부 사항을 자세히 살펴보고 이러한 유형의 알고리즘이 오늘날에도 여전히 인기가 있는 이유를 살펴보겠습니다.
의사결정 트리 알고리즘은 복잡한 데이터 세트를 처리하는 상대적으로 간단한 방법 때문에 널리 사용되는 지도 기계 학습 알고리즘입니다. 의사결정 트리는 트리 구조와 유사하기 때문에 이름이 붙여졌습니다. 트리 구조는 노드와 가장자리 형태의 뿌리, 가지, 잎과 같은 여러 구성 요소로 구성됩니다. 이는 결정이 원하는 예측을 생성하는 if-else 기반 결정 흐름 차트와 유사한 결정 분석에 사용됩니다. 의사결정 트리는 if-else 의사결정 규칙을 학습하여 데이터 세트를 분할하고 최종적으로 트리와 같은 데이터 모델을 생성할 수 있습니다.
분류 문제에 대한 이산 결과 예측과 회귀 문제에 대한 연속 수치 결과 예측에 결정 트리가 적용되었습니다. 수년에 걸쳐 과학자들은 CART, C4.5와 같은 다양한 알고리즘과 랜덤 포레스트 및 그래디언트 부스트 트리와 같은 앙상블 알고리즘을 개발했습니다.
의사결정 트리 알고리즘의 목표는 입력 데이터 세트의 결과를 예측하는 것입니다. 트리 데이터 세트는 속성, 속성값, 예측 유형의 세 가지 형태로 구분됩니다. 지도 학습 알고리즘과 마찬가지로 데이터 세트는 훈련 세트와 테스트 세트의 두 가지 유형으로 나뉩니다. 그 중 훈련 세트는 알고리즘이 학습하여 테스트 세트에 적용하는 결정 규칙을 정의합니다.
의사결정 트리 알고리즘의 단계를 모으기 전에 먼저 의사결정 트리의 구성요소를 이해하겠습니다.
다음은 의사 결정 트리와 위 구성 요소를 시각적으로 표현한 것입니다. 의사 결정 트리 알고리즘은 다음 단계를 거쳐 원하는 예측에 도달합니다.
각 노드에서 가장 좋은 속성을 선택하기 위해 분할은 다음 두 가지 속성 선택 측정 방법 중 하나를 기반으로 합니다.
데이터 세트에 대한 간략한 설명
이 튜토리얼의 데이터 세트는 붓꽃 데이터 세트입니다. 이 데이터 세트는 이미 Scikit 오픈 소스 라이브러리에 내장되어 있으므로 개발자는 이를 외부에서 로드할 필요가 없습니다. 이 데이터 세트에는 총 4개의 붓꽃 속성과 해당 속성 값이 포함되어 있으며, 이는 세 가지 유형의 붓꽃 중 하나를 예측하기 위해 모델에 입력됩니다.
라이브러리 가져오기
먼저 다음 코드를 통해 의사결정 트리 구현을 실행하는 데 필요한 라이브러리를 가져옵니다.import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
data_set = load_iris()
print('Iris plant classes to predict: ', data_set.target_names)
print('Four features of iris plant: ', data_set.feature_names)
별도의 속성과 태그
다음 코드 줄은 꽃의 특성과 종류 정보를 구분하여 해당 변수에 저장합니다. 그 중, Shape[0] 함수는 X_att 변수에 저장되는 속성의 개수를 결정하는 역할을 하며, 데이터 세트에 포함된 속성 값의 총 개수는 150개입니다.#提取花的特性和类型信息
X_att = data_set.data
y_label = data_set.target
print('数据集中总的样本数:', X_att.shape[0])
data_view=pd.DataFrame({
'sepal length':X_att[:,0],
'sepal width':X_att[:,1],
'petal length':X_att[:,2],
'petal width':X_att[:,3],
'species':y_label
})
data_view.head()
#数据集拆分为训练集和测试集两部分
X_att_train, X_att_test, y_label_train, y_label_test = train_test_split(X_att, y_label, random_state = 42, test_size = 0.25)
DecisionTreeClassifier 함수를 사용하여 분류 모델을 생성하여 결정 트리를 구현합니다. 표준 "엔트로피" way로 설정합니다. 표준 을 사용하면 이 속성 선택 측정항목을 정보 이득(정보 이득)으로 설정할 수 있습니다. 그런 다음 코드는 모델을 속성 및 레이블의 훈련 세트와 일치시킵니다.
#应用决策树分类器 clf_dt = DecisionTreeClassifier(criterion = 'entropy') clf_dt.fit(X_att_train, y_label_train)
下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。
print('Training data accuracy: ', accuracy_score(y_true=y_label_train, y_pred=clf_dt.predict(X_att_train))) print('Test data accuracy: ', accuracy_score(y_true=y_label_test, y_pred=clf_dt.predict(X_att_test)))
当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域:
作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。
与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis
위 내용은 기계 학습 결정 트리 실습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!