人工知能の分野では、データから学習し適切な決定を下すアルゴリズムを開発するための、さまざまなアプローチがあります。Pedro Domingosは彼の著書「The Master Algorithm」で、機械学習の分野における主要なアルゴリズムを5つ紹介しています。
この記事では、 Symbolistsの一部である 意思決定ツリー(Decision tree) について掘り下げていきます。意思決定ツリーは、Symbolistsの中で最も直感的に理解しやすく、広く使用されているため、これを取り上げました。 意思決定ツリーを利用することで、意思決定のプロセスとその結果をツリー構造で表現することができ、データに基づいた意思決定を簡単に実現することができます。
意思決定ツリーは、入力された特徴量データ(Input features data)に基づいてラベルデータ(Label data)の値を予測するための強力な機械学習アルゴリズムで、機械学習の分野で広く使われるアルゴリズムの一つです。意思決定ツリーでは、複雑な意思決定プロセスをシンプルで理解しやすいステップまで分解し、それを元にツリー構造を構築することで意思決定を行います。
意思決定ツリーは、ノード(node)とそれぞれのノードを連結するブランチ(branch)で構成され、ツリー構造を形成します。ここでは、ノードの種類とその機能を説明します。
意思決定ツリーのそれぞれのノードは、以下のような重要な情報を含んでいます。
意思決定ツリーは、 Root nodeから始まり、ツリーを下向きに進みながら意思決定アルゴリズムを作ります。以下は、その動作プロセスです。
① データセット全体を表すRoot Nodeからスタートします。
② ノードの決定ルールを基準にしてデータを二つのブランチに分割します。各ブランチは、ノードの基準に対する真または偽の結果を表します。
③ データをDecision Nodesで分割するプロセスを、すべてのデータポイントが分類されるまで繰り返します。Terminal Nodeに到達した時点でこのプロセスを停止します。
④ それ以上分割できなくなったノードが、最終的な分類や予測を表します。
典型的な意思決定ツリーの図は、ノードとノードの間がブランチで接続されている構造を示して、各 Decision Nodesは二つのブランチに分かれ、左のブランチは基準が真である結果を、右のブランチは基準が偽である結果を表します。 ツリー構造の視覚化は、Pythonのライブラリであるscikit-learnの「graphviz」アルゴリズムを使用して行うことができます。また、「DecisionTreeClassifier」アルゴリズムを使用することで、視覚化されたツリー構造内の各ノードの基準を分析し、データセットの分類基準を数学的に表現することができます。
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
import graphviz
# X_train, X_test, y_train, y_test, data_delta_scaledは事前に定義されていると仮定する。
# 学習
dt_clf = DecisionTreeClassifier()
dt_clf.fit(X_train, y_train)
# Defining feature、target namesを定義。
data_delta_scaled.columns
data_delta_scaled.feature_names = ['delta_20_60', 'delta_60_100']
data_delta_scaled.target_names = ['cluster1', 'cluster2', 'cluster3']
# 学習された意思決定ツリーを可視化
export_graphviz(dt_clf, out_file="tree.dot", class_names=data_delta_scaled.target_names,
feature_names=data_delta_scaled.feature_names, impurity=True, filled=True)
with open("tree.dot") as f:
dot_graph = f.read()
graphviz.Source(dot_graph)
#参照元:Uhmb, T. H., & Michibayashi, K. (2023). Relationships between intensity of deformation induced Cr–Al chemical zoning and geometrical properties of spinel: An approach applying machine learning analyses. Journal of Structural Geology, 177, 104977.
意思決定ツリーを含むほとんどの機械学習モデルを設計する際には、学習データセットと評価データセットの分離、さまざまな評価方法を通じたモデルの評価(精度、適合率、再現率、F1スコアなど)、モデル評価に基づいたハイパーパラメータの調整が必要です。しかし、この記事では意思決定ツリーの紹介に重点を置いているため、コード部分ではモデルの設計と可視化の方法のみを提供いたします。
意思決定ツリーの動作を説明するために、例のデータセットで考えてみます。このデータセットはUhmb et al.(2023)で利用した特徴量データとラベルデータで構成されており、これらを使って意思決定ツリーを訓練しました。
特徴量データは「∆CA (Delta CA)」、「∆CE (Delta CE)」で構成され、Standard scalerで標準化されているデータです。「∆CA」、「∆CE」は-3.5から3間の数値を持っており、 意思決定ツリーはこの数値を基準にしてモデルを作成します。
ラベルデータはMean-shiftクラスタリング(Uhmb et al., 2023)によって決定された「Cluster 1」、「Cluster 2」、「Cluster 3」の3つのグループで構成されています。それぞれの特徴量データのデータポイントはこれらのグループのいずれかに割り当てられます。
意思決定ツリーは、前のSectionで話した特徴量データ(∆CAおよび∆CE)とラベルデータ(Cluster 1、Cluster 2、Cluster 3)に基づいて構築されます。この例のツリー構造は以下のような11個の様々なノードで構成されています。
それぞれのClusterは、6つのTerminal Nodesのうちの1つによって分類されます。Clusterの分類を担当するノードは以下のFigureに示されており、 Terminal Nodesは4、8、9、10、11、7ノードになります。
ツリー構造における重要なノードは、 Root Node、Terminal NodeまたはDecision Nodeであり、多くのSample数と低いGini Scoreを持つノードになります。今からはそれぞれのラベルデータカテゴリー(cluster1、cluster2、cluster3)に対する重要ノードについて説明します。
重要ノードから考察した各Clusterにおける分割基準は、次のように表現できます。
このように、clusteringで分類され明確な基準がなかったCluster 1、Cluster 2、Cluster 3は、意思決定ツリーを用いて分類モデルを構築することで、数学的な分類基準を確認することができます。
人工知能の分野では、データから学習し意思決定を行う様々なアルゴリズムがあり、Pedro Domingosの「The Master Algorithm」では5つの主要なアルゴリズムを紹介しています。(Symbolists、Connectionists、Evolutionaries、Bayesians、Analogizers)この記事では、Symbolistsに属する意思決定ツリーに焦点を当てました。
意思決定ツリーは、データを分割しながら予測や分類を行うツリー構造を持つアルゴリズムです。このツリーはRoot nodeから始まり、Decision nodeを経て、Terminal nodeで最終的な予測を行います。各ノードは分割基準やGini scoreなどの重要な情報を持ち、データに基づいてモデルを作ります。意思決定ツリーは、ルートノードから始まり、決定ノードを通過して終端ノードに到達するまで進みます。各ノードはデータを2つのbranchesに分割する基準を適用します。左のブランチは基準が真である結果を、右のブランチは基準が偽である結果を表します。このプロセスはすべてのデータポイントが特定のカテゴリーを表すTerminal nodeのいずれかに分類されるまで続きます。
意思決定ツリーの最大の利点は、その直感的でわかりやすい構造にあります。ツリー構造は、データの分岐と分類の過程を視覚的に表現するため、複雑なデータ分析を簡単に理解できます。また、意思決定ツリーはデータに基づいて明確なルールを提供するため、モデルの解釈が容易であり、さまざまな用途において有効な手段となっています。