Talendによる機械学習の促進 – 決定木について

article in English

決定木は、使いやすく、解釈しやすく、運用化しやすいことから、機械学習で幅広く使用されています。Bデータサイエンスと機械学習を対象とするサイトとして高い評価を受けているKD Nuggetsが最近発表した記事では、機械学習に役立つ「上位10」のアルゴリズムの1つとして決定木が選ばれています。

ほとんどの決定木アルゴリズムは、理解、使用、運用化が簡単であるだけでなく、次のような非常に便利な機能を含んでいます。

  •  連続及び分類データの入力をサポートする
  •  重要な変数を明示する
  •  分類に必要な計算を最小限に抑える
  •  欠損値を自動処理する

I機械学習の知識を持たない場合、これらの概念のいくつかは見慣れないものかもしれません。 Tこのブログでは、TalendとApache Sparkを使って決定木の基本を説明します。

詳細な分析については、下記の参考文献を参照してください。(2) ここで示す概念の一部は、これらの資料に基づいています。

機械学習の定義

この記事で使用するいくつかの用語については、簡単に説明しておく必要があります。

  •  トレーニングデータ - モデルをトレーニングするために使用されるデータのセット。ベクトル入力変数(特徴)と既知の結果(ターゲット)で構成されます。
  •  テストデータ - トレーニング後にモデルのパフォーマンスをテストするために使用されるデータのセット。
  •  特徴 - モデルをトレーニングするために使用されるトレーニングデータ入力変数
  •  目標 - トレーニングされたモデルからの出力

決定木のアルゴリズム

決定木の実装には複数あり、次の3つが最も一般的です。

  • ID3:
    •  1979年にロス・キンランが開発
    •  木を上から下へと構築
    •  情報利得を使用して最も有用な属性を選択
    •  分類木向けの設計
    •  貪欲アルゴリズムはデータに過剰適合する傾向
  • C4.5:
    •  枝刈りと呼ばれるボトムアップ手法により過剰適合に対応
    •  不完全なデータポイントを処理
    •  分類または連続データを処理
    •  ID3を拡張するためにキンランが開発
  • CART - Classification and Regression Trees
    •  カリフォルニア大学バークレー校とスタンフォード大学の4人の統計学者が開発(1974~1984年)
    •  データの雑音(異常値と欠損値)が大きい場合に正確な評価に焦点を当てる
    •  分類または連続データを従属変数の関数として処理

はじめに

これら3つの実装のうち、最も一般的に使用されているのがCARTです。 Classification and Regression Trees(分類木及び回帰木)という名称が示すとおり、CARTはターゲット変数が年齢や髪の色等の有限リストとして表現される場合(分類)、または年間降水量のように連続している場合(回帰)に使用できます。 *注:木のタイプを決定するのはターゲット変数です。

以下では、機械学習コミュニティでよく知られているデータを使用して、簡単な分類木を示します。 脊柱後弯データセット(3)は、矯正脊柱手術後に脊柱後弯(kyphosis)が残る小児について報告しています。  以下は、決定木モデルのトレーニングに使用するための脊柱後弯データセットのサンプリングです:

  •  Kyphosis - 手術後における「脊柱後弯」状態の有無
  •  Age - 患者の月齢
  •  Number - 関与する椎骨の数
  •  Start - 手術対象となった最初(一番上)の椎骨の番号

特徴変数は、1が Age、2が Number、3が Startです。ターゲット変数は、Kyphosisが示します。 ターゲット変数は、Kyphosisが示します。

決定木の構造

脊柱後弯データセットを使用してトレーニングされた分類木は、以下のような図で示されます

決定木の主要コンポーネント(4):

  •  ルートノード – 内部ノードの最上位
  •  枝 – テスト結果
  •  内部ノード – 変数に対する決定
  •  葉ノード – 分類ラベル
  •  深さ - ルートからノードに到達するために必要な最小ステップ数

決定木は、次の擬似コードで簡単に記述できる再帰分割アルゴリズムを使用して構築されます。(2)

  1. 入力される特徴変数ごとに、データを2つ以上のサブグループに分割する最良の方法を評価します。最良の分割を選択し、データを分割により定義されたサブグループに分けます。
  2. サブグループの1つを選択し、ステップ1を繰り返します。サブグループごとに繰り返します。
  3. 分割後の全てのレコードが同じターゲット変数に属するか、または別の停止条件を満たすまで、分割を続行します。

最良の分割」の概念は、決定木の構築方法に関連します。最良の分割とは、その均質性(情報利得)または不均質性(エントロピー)の尺度となるノードの純度(P)を指します。

ルートノードを例にとります。

ルートノード:P (Kyphosis = “absent”) = 47/60 = 78%(脊柱後弯が「absent」のクラスの純度)

この情報を使用して、全てのサブグループで決定木アルゴリズムが繰り返され、次の最良の分割が見つかります。 ここでは、値が12以上となる特徴「Start」が最良の分割として選択されました。

内部ノード1の左の枝: P (Kyphosis = “absent”) = 32/34 = 94%(脊柱後弯が「absent」のクラスの純度)「57%」とは、このノードで使用された観察数の割合です。

ノードの純度は、エントロピー及び情報利得と呼ばれる、より複雑な計算の入力として、決定木アルゴリズムで使用されます。しかし、情報利得の目標は、分割前の親ノードの純度と分割後の純度を比較することです。  情報利得が最大となる特徴が、最も有益であると考えられ、分割時に使用されます。(4)  上記の例では、「Start」が12以上のときに最初の内部ノードの最も有益な特徴が示されています。

決定木の運用化

先に述べたように、決定木は直感的で説明が簡単です。 また、条件文をサポートするプログラミング言語を使用して実装するのも非常に簡単です。決定木を使用して、条件付きロジックのルールをいくつか定義してみましょう。

  1. if (Start >= 12) then (Kyphosis=”absent”)
  2. if (Start<12) and (Age< 86) and (Number< 4.5) then (Kyphosis=”absent”)
  3. if (Start < 12) and (Age< 86) and (Number >= 4.5) and (Start<7.5) then (Kyphosis=”present”)
  4. その他

決定木モデルの実装は、概念的には単純明快です。  しかし、モデルのトレーニング、テスト、運用化に課題がないわけではありません。

そのような課題の1つがモデルの保守と維持です。  機械学習の「学習」部分は、モデルがデータとともに進化する必要があるという事実を示しています。. これによりモデルの再トレーニングが必要となり、ビジネスのユースケース次第で非常に頻繁に発生することがあります。

効率を最大化するために、モデルのトレーニング、再トレーニング、及び運用化を自動化する必要があり、Talendはこれを容易にしています。

データ駆動型エンタープライズの実現

Talendは、継続的で自動化された方法で機械学習をデータ統合作業フローに統合するためのツールとテクノロジーの包括的なエコシステムを提供します。  これにより、組織はビジネス成果に一層集中し、最も貴重な資産であるデータの価値をより迅速に実現できます。

しかし、この言葉をただ信じるのではなく、実際に見て確認してください。実際的なチュートリアル(Machine Learning 101 – Decision Trees)を今すぐ開始しましょう。 

いつもどおり、このトピックに関する皆さんの意見をお待ちしています。

参考文献

[1] Le, J. (August, 2016). The 10 Algorithms Machine Learning Engineers Need to Know. Accessed from URL

[2] Abbott, D. (2014).  Applied Predictive Analytics.  Indianapolis: Wiley

[3] John M. Chambers and Trevor J. Hastie eds. (1992) Statistical Models in S, Wadsworth and Brooks/Cole, Pacific Grove, CA 1992. Kyphosis data set

[4] Diertrich, D. Heller B, Yang, B. (2015). Data Science and Big Data Analytics. Indianapolis: Wiley

Share

Leave a comment

コメントを追加

More information?