CART アルゴリズムの復号化: 原理から Python 実装まで

この記事では、CART (分類および回帰ツリー) アルゴリズムの中核となる原則、実装方法、およびアプリケーション シナリオについて詳しく説明します。この記事では、最初にデシジョン ツリーの基本知識を紹介し、次に、特徴の選択やツリーの構築など、CART アルゴリズムの動作メカニズムを詳細に分析します。次に、Python と PyTorch のコード例を使用して、実際の問題における CART アルゴリズムの適用を示します。最後に、この記事ではアルゴリズムの長所と短所を評価し、医療、金融、市場分析などのさまざまな分野での応用の可能性について説明します。

TechLead をフォローして、AI に関するあらゆる次元の知識を共有してください。著者は 10 年以上のインターネット サービス アーキテクチャ、AI 製品の研究開発、チーム管理の経験があり、復旦大学同済大学で修士号を取得し、復丹ロボット知能研究所のメンバーであり、Alibaba Cloud 認定の上級アーキテクトです。 、プロジェクト管理の専門家、AI 製品の研究開発で数億の収益を上げています。

ファイル

1. はじめに

CART (分類および回帰ツリー) アルゴリズムは、分類および回帰タスクに使用される決定木モデルです。このモデルは 1986 年に Breiman らによって提案され、現在ではさまざまなデータ マイニング タスクや機械学習の問題で広く使用されています。

CARTアルゴリズムの背景

CART アルゴリズムは、デシジョン ツリーに基づいた拡張機能です。決定木モデルは解釈性の高いモデルとして古くから広く使われてきました。CART アルゴリズムは、デシジョン ツリーのすべての利点を備えているだけでなく、Gini 不純物、ツリー枝刈りなどのより高度な最適化手法も導入しています。

例: 医療診断

医療診断の分野では、決定木を使用して、一連の条件 (特徴) に基づいて病気 (ラベル) を予測できます。CART アルゴリズムは、このプロセスをさらに最適化し、枝刈りによる過剰適合を回避し、モデルの汎化能力を向上させることができます。

アプリケーションシナリオ

CART アルゴリズムは、以下を含むがこれらに限定されない多くの分野で広く使用されています。

  • データマイニング
  • 自然言語処理
  • 画像の識別
  • 財務リスク管理

例: 財務リスク管理

金融リスク管理の分野では、CART アルゴリズムを使用してユーザーの信用格付けを評価できます。このモデルは、ユーザーの年齢、収入、消費習慣、その他の特性を分析することにより、ユーザーが債務不履行の危険にさらされているかどうかを予測できます。

定義と構成

CART アルゴリズムは基本的に 3 つの主要コンポーネントで構成されます。

  1. 決定木の構築: 学習データを使用して決定木を作成します。
  2. ツリーの枝刈り: デシジョン ツリーの一部を削除することで過剰適合を防止します。
  3. 決定と予測: データ分類または回帰予測に、構築および枝刈りされた決定木を使用します。

例: 電子メールの分類

スパムと正規の電子メールを区別するための電子メール分類子を構築するとします。CART アルゴリズムは、まず電子メールの特性 (送信者、件名、電子メール内容のキーワードなど) を観察して決定木を構築します。その後、過剰適合を防ぐために、デシジョン ツリー内の不要なノードや過度に複雑なノードを削除 (枝刈り) することがあります。最後に、この枝刈りされたデシジョン ツリーを使用して、新しく受信した電子メールを分類します。


2. デシジョンツリーの基本

CART アルゴリズムを深く理解する前に、まずその基礎であるデシジョン ツリー モデルを理解する必要があります。デシジョン ツリーは、意思決定または予測を行うために使用されるツリー構造です。これはノードとエッジで構成され、ルート ノードと複数のリーフ ノードがあります。

決定木とは何ですか

デシジョン ツリーは、主に分類タスクと回帰タスクに使用される一般的な機械学習アルゴリズムです。一連の「はいまたはいいえ」の質問を通じて決定や予測を行います。各内部ノードは特徴を表し、各ブランチは決定ルールを表し、各リーフ ノードは予測出力を表します。

例: 天気予報

明日が外出に適した時間かどうかを予測したいとします。天気 (晴れ、曇り、雨)、気温 (高、中、低) など、複数の特徴を観察できます。決定木はルート ノードから始まり、これらの特性に基づいて一連の決定を行い、最終的にリーフ ノードで予測 (外出に適しているか適さない) を与えます。

シンプルなデシジョンツリーを構築する方法

デシジョン ツリーを構築するための基本的な手順は次のとおりです。

  1. 最適なフィーチャを選択: データセットからフィーチャを現在のノードとして選択します。
  2. データセットを分割する: 選択したフィーチャのさまざまな値に基づいて、データセットを複数のサブセットに分割します。
  3. 決定または再帰: サブセットに同様のデータが既に含まれている場合は、それをリーフ ノードとしてマークします。それ以外の場合は、サブセットに対して再帰的に決定木を構築します。

例: 動物の分類

さまざまな動物とその特徴 (「羽毛がある」、「飛べる」、「哺乳類である」など) を含むデータ セットがあるとします。あなたの仕事は、これらの動物を分類するための決定木を構築することです。

  1. まず、「フェザリング」機能に基づいてデータ セットをセグメント化することから始めます。
  2. 「羽毛のある」サブセットの場合は、「飛行」の特徴に基づいてさらにセグメント化できます。
  3. 最終的に、各リーフ ノードには同じ種類の動物 (「鳥」や「哺乳類」など) が含まれるようになります。

デシジョン ツリー アルゴリズムの種類

デシジョン ツリー アルゴリズムには主に 3 つのタイプがあります。

  1. ID3 (反復二分法 3) : 特徴選択の基準として情報利得を使用します。
  2. C4.5 : ID3 の改良版であり、特徴選択の基準として情報利得比を使用します。
  3. CART (分類および回帰ツリー) : 特徴選択の基準としてジニ不純物または二乗誤差を使用し、分類タスクと回帰タスクの両方に使用できます。

例: スパム分類

スパム分類器を構築しているとします。

  1. ID3 を使用すると、最も多くの情報が得られる (スパムと非スパムを最もよく区別できる) 単語をノードとして選択できます。
  2. C4.5 を使用すると、各単語の出現頻度を考慮し、情報利得率が最も高い単語を選択します。
  3. CART を使用すると、Gini 不純度を使用して各単語の分類能力を測定できます。

これらの定義と例を通じて、デシジョン ツリーの基本概念をより深く理解し、CART アルゴリズムを深く理解する準備をすることができます。


3. CARTアルゴリズムの詳細説明

決定木の基礎知識を理解した後、CART (分類および回帰木) アルゴリズムを詳しく紹介します。CART アルゴリズムは、高い柔軟性と精度を備えた分類と回帰のためのツリー モデルです。

機能と利点

CART アルゴリズムには次のような顕著な特徴があります。

  1. 分類と回帰に使用可能: 分類のみに使用されるデシジョン ツリー アルゴリズム (ID3、C4.5 など) とは異なり、CART は分類タスクと回帰タスクの両方に適用できます。
  2. バイナリ ツリー構造: CART は常にバイナリ ツリーを生成します。つまり、各ノードには 2 つの子ノードがあります。
  3. プルーニング テクノロジ: CART はコストの複雑さによるプルーニングを使用して、過剰適合を回避します。

例: 住宅価格の予測

住宅価格予測 (回帰問題) では、CART アルゴリズムは、複数の特性 (エリア、場所、築年数など) に基づいて住宅価格を予測するモデルを構築できます。同時に、このアルゴリズムは、住宅が短期的に売れるかどうかを予測するなど、分類問題にも使用できます。

CART デシジョン ツリーを構築する

CART デシジョン ツリーを構築する主な手順は次のとおりです。

  1. 特徴の選択: CART では、ジニ不純物または二乗誤差が特徴の選択に使用される一般的な基準です。
  2. データ分割: データ セットは、選択した特徴に基づいて 2 つのサブセットに分割されます。
  3. 再帰と終了: 特定の終了条件 (ノード内のサンプル数が所定のしきい値未満になるなど) が満たされるまで、サブセットのツリーを再帰的に構築します。

例: 生徒の採点

学校が複数の特性 (成績、出席状況、行動成績など) に基づいて生徒を採点する必要があるとします。CART アルゴリズムは、最初に最も重要な特徴 (おそらく成績) を選択し、次にこの特徴に基づいてデータ セットを分割します。その後、アルゴリズムは各サブセットに対してこのプロセスを再帰的に続行します。

木の剪定

ツリーの剪定は CART アルゴリズムの非常に重要なステップであり、主に以下が含まれます。

  1. コストの複雑さのパラメーター: コストの複雑さのパラメーター (通常は ( \alpha ) として表されます) を調整することで、ツリーの複雑さを制御できます。
  2. コスト関数の最小化: 目標は、コスト関数を最小化することによって得られる最適なサブツリーを見つけることです。

例: 電子商取引製品の推奨事項

電子商取引の製品推奨では、元の決定木が非常に複雑で、多くの不必要なユーザー特性が考慮されている可能性があります。枝刈りを通じて、いくつかの重要でないノードを削除することができ、その結果、良好な推奨結果を維持しながら、よりシンプルで解釈しやすいモデルが得られます。


4.Pythonの実戦

理論的な部分では、CART アルゴリズムの中核となる概念と特性を詳細に理解します。ここで、具体的な Python の実践例を通じて CART アルゴリズムを実装する方法を見てみましょう。

シナリオの説明: 銀行融資の承認

私たちが銀行のデータ サイエンス チームで、ローン申請を自動的に承認するための機械学習モデルを開発する任務を負っているとします。年収、信用スコア、勤続年数、融資額の4つの特徴を持つデータセットがあります。目的は、ローンが返済されるかどうかを予測することです。

入出力

  • 入力: 各申請者の年収、信用スコア、勤続年数、融資額を含むデータセット。
  • 出力: 融資が承認されるべきかどうかを示す予測。

データの前処理

モデルを構築する前に、データの前処理が必要です。これには通常、NULL パディング、データ正規化などが含まれます。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 加载数据
data = pd.read_csv('loan_data.csv')

# 数据预处理
scaler = StandardScaler()
data[['Annual_Income', 'Credit_Score', 'Years_in_Job', 'Loan_Amount']] = scaler.fit_transform(data[['Annual_Income', 'Credit_Score', 'Years_in_Job', 'Loan_Amount']])

# 分割数据
X = data[['Annual_Income', 'Credit_Score', 'Years_in_Job', 'Loan_Amount']]
y = data['Loan_Status']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

CARTモデルの構築

DecisionTreeClassifierライブラリを使用してsklearn.tree、CART モデルを構築およびトレーニングします。

from sklearn.tree import DecisionTreeClassifier

# 创建CART分类模型
cart_model = DecisionTreeClassifier(criterion='gini')

# 模型训练
cart_model.fit(X_train, y_train)

モデルの評価

モデルの評価基準として精度を使用します。

from sklearn.metrics import accuracy_score

# 预测
y_pred = cart_model.predict(X_test)

# 模型评估
accuracy = accuracy_score(y_test, y_pred)
print(f'Model Accuracy: {
      
      accuracy}')

出力:

Model Accuracy: 0.88

5. メリットとデメリット

CART アルゴリズムとその Python 実装を深く理解した後、このアルゴリズムの長所と短所をまとめてみましょう。

アドバンテージ

1. 高い柔軟性

CART アルゴリズムは分類問題と回帰問題の両方に適用できるため、さまざまな種類の問題を非常に柔軟に解決できます。

例:健康診断と株価予測

たとえば、医療および健康の分類問題では、CART アルゴリズムを使用して、患者が特定の病気に罹患しているかどうかを予測できます。同時に、CARTアルゴリズムは金融分野における株価予測(回帰問題)にも利用できます。

2.分かりやすく説明しやすい

CART はツリー構造のモデルを生成するため、モデルの結果は通常、解釈および理解が容易であり、モデルの決定を説明する必要がある状況で非常に役立ちます。

例: クレジットの承認

与信承認シナリオでは、モデルが高精度である必要があるだけでなく、ローンの承認または拒否の理由を説明できる必要もあります。CART アルゴリズムによって生成されたデシジョン ツリーは、これらのロジックを視覚的に示すことができます。

3. 欠損値や外れ値を処理できる

CART は堅牢性が高く、複雑なデータの前処理を必要とせずに欠損値や外れ値を効果的に処理できます。

例: センサーデータ

工業生産では、センサーの故障やノイズの可能性により、収集されたデータに欠損値や外れ値が含まれる場合があります。CART アルゴリズムは、この状況でも良好に実行できます。

欠点がある

1. オーバーフィットしやすい

CART アルゴリズムは枝刈りテクノロジを提供しますが、枝刈りパラメータが正しく設定されていないか、トレーニング データ自体にノイズが多い場合、モデルは依然として過学習する傾向があります。

例: 株式市場の予測

株式市場の予測では、市場が絶えず変化するため、CART アルゴリズムを使用するとデータ内のノイズが容易に取り込まれ、過剰適合が発生する可能性があります。

2. 非線形関係に対する他のアルゴリズムほど強力ではありません

CART アルゴリズムは特定の非線形関係をキャプチャできますが、そのパフォーマンスは、非常に複雑な非線形システムのカーネル メソッドやニューラル ネットワークに基づくアルゴリズムほど良くない可能性があります。

例:画像認識

画像認識の問題では、ピクセル間の関係が複雑であるため、CART アルゴリズムは畳み込みニューラル ネットワーク (CNN) などのより複雑なモデルほどパフォーマンスが良くないことがよくあります。


6. 応用シナリオ

CART アルゴリズムは、その柔軟性と解釈の容易さで人気があり、さまざまなアプリケーション シナリオがあります。このセクションでは、これらのアプリケーション シナリオについて詳しく説明します。

1. 医学的診断

CART アルゴリズムを使用すると、患者の医療記録を分析し、さまざまなパラメーターに基づいて病気のリスクを予測できます。

例: 心臓病のリスク予測

CART アルゴリズムは、患者の年齢、血圧、コレステロール値、その他の要因を分析することで、患者の将来の心臓病のリスクを予測できます。これは早期の予防治療に非常に役立ちます。

2. 財務リスクの管理

金融業界では、ローンまたはクレジット カードの申請者の信用リスクを評価するために CART アルゴリズムが使用されます。

例: 信用スコアリング モデル

同銀行はCARTアルゴリズムを利用して申込者の年収、勤続年数、過去の信用履歴などを分析し、債務不履行の可能性を予測する。これに基づいて、銀行はローンまたはクレジット カードの申請を承認するかどうかを決定できます。

3. 市場分析

CART アルゴリズムは、市場分析、特に顧客のセグメンテーションおよび推奨システムでも広く使用されています。

例: パーソナライズされた推奨事項

電子商取引 Web サイトは、CART アルゴリズムを使用してユーザーの購入履歴やページの閲覧行動などを分析し、購入する可能性が最も高い商品を推奨します。

4. 天然資源の保護

CART アルゴリズムには、環境科学や天然資源管理にも応用できる可能性があります。

例: 野生動物の生息地評価

CART アルゴリズムは、土壌の種類、気候条件、植生被覆などの要因を分析することで、特定の野生生物の生息地としての地域の適合性を評価できます。

5. 工業生産

工業生産では、CART アルゴリズムを使用して、生産プロセスや障害検出などを最適化できます。

例:生産品質管理

CART アルゴリズムは、生産ライン上のさまざまなセンサー データをリアルタイムで分析することで、製品に品質上の問題が発生するかどうかを予測し、タイムリーな調整を行うことができます。


7. まとめ

前の章で詳細に説明した後、CART アルゴリズムが非常に強力で柔軟な機械学習アルゴリズムであることを理解するのは難しくありません。分類問題や回帰問題に適用でき、解釈可能性が高く、さまざまな業界で幅広く応用できます。

ただし、どのアルゴリズムも特効薬ではないことに注意してください。CART アルゴリズムはいくつかの側面では良好に機能しますが、過剰適合の傾向や複雑な非線形問題の処理における制限などの制限もあります。したがって、アルゴリズムを選択する際には、特定のアプリケーション シナリオとニーズに基づいて総合的な評価を行う必要があります。

  1. 解釈可能性と複雑性のトレードオフ: 現実世界のアプリケーション、特に高リスクまたは高価値の分野 (ヘルスケア、金融など) では、モデルの解釈可能性が予測パフォーマンスと同じくらい重要になる場合があります。CART アルゴリズムは、この 2 つのバランスを効果的に取る方法を提供します。

  2. データ駆動型の特徴エンジニアリング: 従来の特徴エンジニアリングは多くの場合、ドメインの知識と経験に依存していますが、CART アルゴリズムは、重要な特徴と分割ポイントを自動的に選択することで、データ駆動型の意思決定を強力にサポートします。

  3. アンサンブル手法の基礎: CART アルゴリズムは、アンサンブル手法 (ランダム フォレストや勾配ブースティング ツリーなど) の基礎としてよく使用され、さまざまな複雑な問題を処理する際のその有効性と拡張性がさらに証明されています。

  4. 不均衡なデータに対する感度: CART アルゴリズムには利点もありますが、不均衡なデータに対して特に敏感であり、一部のアプリケーション シナリオでは問題となる可能性があります。したがって、CART アルゴリズムを使用する前に、データを適切に前処理するか、適切な評価指標を使用することが非常に必要です。

TechLead をフォローして、AI に関するあらゆる次元の知識を共有してください。著者は 10 年以上のインターネット サービス アーキテクチャ、AI 製品の研究開発、チーム管理の経験があり、復旦大学同済大学で修士号を取得し、復丹ロボット知能研究所のメンバーであり、Alibaba Cloud 認定の上級アーキテクトです。 、プロジェクト管理の専門家、AI 製品の研究開発で数億の収益を上げています。

Guess you like

Origin blog.csdn.net/magicyangjay111/article/details/133556940