ホームページ  >  記事  >  テクノロジー周辺機器  >  機械学習デシジョンツリー実践演習

機械学習デシジョンツリー実践演習

WBOY
WBOY転載
2023-04-11 19:16:01990ブラウズ

翻訳者 | Zhu Xianzhong

##査読者 | Sun Shujuan

機械学習における意思決定木

現代の機械学習アルゴリズムは私たちの日常生活を変えています。たとえば、BERT のような大規模な言語モデルは Google 検索を強化しており、GPT-3 は多くの高級言語アプリケーションを強化しています。

一方で、複雑な機械学習アルゴリズムの構築は、今日ではかつてないほど簡単になっています。ただし、機械学習アルゴリズムがどれほど複雑であっても、それらはすべて次の学習カテゴリのいずれかに分類されます:

  • 教師あり学習
  • 教師なし学習
  • 半教師あり学習
  • 強化学習

実際、デシジョン ツリーは最も古い教師あり機械学習アルゴリズムの 1 つであり、現実世界のさまざまな問題を解決できます。研究によると、決定木アルゴリズムの最初の発明は 1963 年まで遡ることができます。

次に、このアルゴリズムの詳細を掘り下げて、このタイプのアルゴリズムが今日でも非常に人気がある理由を見てみましょう。

デシジョン ツリーとは何ですか?

デシジョン ツリー アルゴリズムは、複雑なデータ セットを処理する比較的単純な方法であるため、人気のある教師あり機械学習アルゴリズムです。デシジョン ツリーは、ツリーの構造に似ていることからその名前が付けられました。ツリー構造は、ノードとエッジの形をした根、枝、葉などのいくつかのコンポーネントで構成されます。これらは、if-else ベースの意思決定フローチャートと同様に、意思決定分析に使用され、意思決定によって望ましい予測が生成されます。デシジョン ツリーは、これらの if-else 決定ルールを学習してデータ セットを分割し、最終的にツリー状のデータ モデルを生成します。

デシジョン ツリーは、分類問題の離散結果の予測や回帰問題の連続数値結果の予測に使用されてきました。科学者は長年にわたり、CART、C4.5 などのさまざまなアルゴリズムや、ランダム フォレストや勾配ブースト ツリーなどのアンサンブル アルゴリズムを開発してきました。

機械学習デシジョンツリー実践演習# デシジョン ツリーのさまざまなコンポーネントの分析

デシジョン ツリー アルゴリズムの目標は、入力の結果を予測することです。データセット。ツリー データ セットは、属性、属性値、予測対象のタイプの 3 つの形式に分割されます。他の教師あり学習アルゴリズムと同様に、データ セットはトレーニング セットとテスト セットの 2 つのタイプに分類されます。その中で、トレーニング セットは、アルゴリズムが学習してテスト セットに適用する決定ルールを定義します。

デシジョン ツリー アルゴリズムのステップをまとめる前に、まずデシジョン ツリーのコンポーネントを理解しましょう:

    ルートノード: デシジョン ツリーの最上部にある開始ノードであり、すべての属性値が含まれます。ルート ノードは、アルゴリズムによって学習された決定ルールに基づいて決定ノードに分割されます。
  • ブランチ: ブランチは、属性値に対応するノード間のコネクタです。バイナリ分割では、分岐は真のパスと偽のパスを表します。
  • 意思決定ノード/内部ノード: 内部ノードは、ルート ノードとリーフ ノードの間の意思決定ノードであり、意思決定ルールとその回答パスに対応します。ノードは質問を表し、ブランチはそれらの質問に基づいて関連する回答へのパスを示します。
  • リーフ ノード: リーフ ノードは、ターゲット予測を表す終端ノードです。これらのノードはそれ以上分割されません。
  • #以下は、デシジョン ツリーとその上のコンポーネントを視覚的に表現したものです。デシジョン ツリー アルゴリズムは、次の手順を経て、目的の予測に到達します。

#アルゴリズムは、すべての属性値を持つルート ノードから開始されます。

  • ルート ノードは、トレーニング セットからアルゴリズムによって学習された決定ルールに基づいて決定ノードに分割されます。
  • 質問とその回答パスに基づいて、ブランチ/エッジを通じて内部意思決定ノードを渡します。
  • リーフ ノードに到達するか、すべての属性が使用されるまで、前の手順を続けます。
  • 各ノードで最適な属性を選択するために、次の 2 つの属性選択メトリックのいずれかが分割に使用されます。
    • ジニ係数 ジニ指数ジニ不純物の測定(##) #Gini Impurity) は、アルゴリズムがランダムなクラス ラベルを誤って分類する可能性を示します。
    • 情報利得 クラス 50/ 50 の予測を避けるために、セグメンテーション後のエントロピーの改善を測定します。スプリット。エントロピーは、特定のデータ サンプル内の 不純物 の数学的尺度です。デシジョン ツリー内の カオス状態 は、 50/50 に近い partition によって表されます。 決定木アルゴリズムを使用した花の分類ケース

    上記の基礎知識を理解した後、応用ケースの実装を開始しましょう。この記事では、Scikit Learning ライブラリを使用して、Python でデシジョン ツリー分類モデルを実装します。

    #データ セットについての簡単な説明

    このチュートリアルのデータ セットは、iris データ セットです。このデータセットはすでに Scikit オープン ソース ライブラリに組み込まれているため、開発者はそれを外部からロードする必要はありません。このデータセットには、合計 4 つのアヤメ属性と対応する属性値が含まれており、これらは 3 種類のアヤメの花のいずれかを予測するためにモデルに入力されます。

    データセット内の属性/特徴: がく片の長さ、がく片の幅、花弁の長さ、花弁の幅。

    • データセット内の予測ラベル/花の種類: Setosis、Versicolor、Virginica。
    • #次に、Python 言語に基づく決定木分類器のコードを段階的に説明します。

    ライブラリのインポート

    まず、次のコードを使用して、デシジョン ツリーの実装に必要なライブラリをインポートします。

    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 標準は「エントロピー」に設定されます ## #方法######。この標準 により、 は属性選択メトリックを (情報ゲイン) に設定できるようになります。次に、コードはモデルを属性とラベルのトレーニング セットと照合します。

    #应用决策树分类器
    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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。