翻訳者 | Zhu Xianzhong
##査読者 | Sun Shujuan
機械学習における意思決定木現代の機械学習アルゴリズムは私たちの日常生活を変えています。たとえば、BERT のような大規模な言語モデルは Google 検索を強化しており、GPT-3 は多くの高級言語アプリケーションを強化しています。
一方で、複雑な機械学習アルゴリズムの構築は、今日ではかつてないほど簡単になっています。ただし、機械学習アルゴリズムがどれほど複雑であっても、それらはすべて次の学習カテゴリのいずれかに分類されます:
実際、デシジョン ツリーは最も古い教師あり機械学習アルゴリズムの 1 つであり、現実世界のさまざまな問題を解決できます。研究によると、決定木アルゴリズムの最初の発明は 1963 年まで遡ることができます。
次に、このアルゴリズムの詳細を掘り下げて、このタイプのアルゴリズムが今日でも非常に人気がある理由を見てみましょう。
デシジョン ツリーとは何ですか?デシジョン ツリー アルゴリズムは、複雑なデータ セットを処理する比較的単純な方法であるため、人気のある教師あり機械学習アルゴリズムです。デシジョン ツリーは、ツリーの構造に似ていることからその名前が付けられました。ツリー構造は、ノードとエッジの形をした根、枝、葉などのいくつかのコンポーネントで構成されます。これらは、if-else ベースの意思決定フローチャートと同様に、意思決定分析に使用され、意思決定によって望ましい予測が生成されます。デシジョン ツリーは、これらの if-else 決定ルールを学習してデータ セットを分割し、最終的にツリー状のデータ モデルを生成します。
デシジョン ツリーは、分類問題の離散結果の予測や回帰問題の連続数値結果の予測に使用されてきました。科学者は長年にわたり、CART、C4.5 などのさまざまなアルゴリズムや、ランダム フォレストや勾配ブースト ツリーなどのアンサンブル アルゴリズムを開発してきました。
# デシジョン ツリーのさまざまなコンポーネントの分析
デシジョン ツリー アルゴリズムの目標は、入力の結果を予測することです。データセット。ツリー データ セットは、属性、属性値、予測対象のタイプの 3 つの形式に分割されます。他の教師あり学習アルゴリズムと同様に、データ セットはトレーニング セットとテスト セットの 2 つのタイプに分類されます。その中で、トレーニング セットは、アルゴリズムが学習してテスト セットに適用する決定ルールを定義します。デシジョン ツリー アルゴリズムのステップをまとめる前に、まずデシジョン ツリーのコンポーネントを理解しましょう:
#アルゴリズムは、すべての属性値を持つルート ノードから開始されます。
#データ セットについての簡単な説明
このチュートリアルのデータ セットは、iris データ セットです。このデータセットはすでに Scikit オープン ソース ライブラリに組み込まれているため、開発者はそれを外部からロードする必要はありません。このデータセットには、合計 4 つのアヤメ属性と対応する属性値が含まれており、これらは 3 種類のアヤメの花のいずれかを予測するためにモデルに入力されます。データセット内の属性/特徴: がく片の長さ、がく片の幅、花弁の長さ、花弁の幅。
ライブラリのインポート
まず、次のコードを使用して、デシジョン ツリーの実装に必要なライブラリをインポートします。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
虹彩データ セットのロード
次のコードは、load_iris 関数を使用して、data_set 変数に格納されている sklearn.dataset ライブラリに虹彩データをロードする方法を示しています。セット。次の 2 行のコードは、虹彩のタイプと特性情報を出力します。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])
実際、X_att 変数の値を DataFrame 関数に追加することで、データ セット内のいくつかの属性値を表示するビジュアル テーブルを作成することもできます。パンダ図書館です。
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()
データ セットの分割
次のコードは、train_test_split 関数を使用してデータ セットをトレーニング セットとテスト セットの 2 つの部分に分割する方法を示しています。その中で、この関数のrandom_stateパラメータは、関数が実行されるたびに指定されたデータセットに対して同じ結果を提供するためのランダムシードを提供するために使用されます;test_sizeはテストセットのサイズを示します;0.25はテストデータが分割後は 25%、トレーニング データが 75% を占めます。#数据集拆分为训练集和测试集两部分 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 関数 a デシジョン ツリーを実装するための分類モデル、classification 標準は「エントロピー」に設定されます ## #方法######。この標準 により、 は属性選択メトリックを (情報ゲイン) に設定できるようになります。次に、コードはモデルを属性とラベルのトレーニング セットと照合します。 下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。 当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域: 作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。 与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。 朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。 原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis#应用决策树分类器
clf_dt = DecisionTreeClassifier(criterion = 'entropy')
clf_dt.fit(X_att_train, y_label_train)
计算模型精度
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)))
真实世界中的决策树应用程序
如何改进决策树?
译者介绍
以上が機械学習デシジョンツリー実践演習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。