Apache Spark BatchのtRandomForestModelプロパティ - 7.2

Machine Learning

Version
7.2
Language
日本語 (日本)
Product
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > サードパーティーシステム > 機械学習コンポーネント
データガバナンス > サードパーティーシステム > 機械学習コンポーネント
データクオリティとプレパレーション > サードパーティーシステム > 機械学習コンポーネント

このプロパティはSpark Batchジョブフレームワークで実行されているtRandomForestModelを設定するために使います。

Spark Batch tRandomForestModelコンポーネントは、機械学習ファミリーに属しています。

このコンポーネントは、ビッグデータ対応のTalend Platform製品およびTalend Data Fabricで利用できます。

基本設定

[Label column] (ラベルカラム)

分類ラベルを提供するために使う入力カラムを選択します。このカラムのレコードは、分類されるエレメントのクラス名(分類の対象)として使われます。

[Feature column] (機能カラム)

機能を提供するために使う入力カラムを選択します。多くの場合、このカラムはtModelEncoderによって実行された機能エンジニアリング計算の出力です。

[Save the model on file system] (モデルをファイルシステムに保存)

特定のファイルシステムにモデルを保管するには、このチェックボックスをオンにします。オフの場合、モデルはメモリに保管されます。参照用のボタンはSpark [Local] (ローカル)モードでは機能しません。Spark YarnまたはSpark [Standalone] (スタンドアロン)モードを使用している場合は、同じジョブ内のtHDFSConfigurationなどの設定コンポーネントで接続を適切に設定したことを確認する必要があります。

[Number of trees in the forest] (フォレスト内のツリーの数)

tRandomForestModelで構築するデシジョンツリーの数を入力します。

各デシジョンツリーは、ランダムなフィーチャーのサンプルを使用して個別にトレーニングされます。

この数字を大きくすると、予測の分散を減らすことで精度を向上させることができますが、トレーニング時間が長くなります。

[Maximum depth of each tree in the forest] (フォレスト内の各ツリーの最大深度)

トレーニングが新しいノードの追加を停止するようにしたいデシジョンツリーの深度を入力します。新しいノードは、内部ノードの機能に関する詳細テストと、葉ノードが持つクラスラベルを表します。

深度nのツリーの場合、内部ノードの数は2n - 1です。たとえば、深度1は内部ノード1、プラス葉ノード2を意味します。

一般に、深度の大きいデシジョンツリーはわかりやすく、そのため、より正確な予測ができる可能性があります。ただし、リソース消費量が多く、オーバーフィットの原因になります。

詳細設定

[Subsampling rate] (サブサンプリングレート)

数値を入力して、フォレスト内の各ツリーのトレーニングに使う入力データセットの比率を指定します。デフォルト値の1.0が推奨されています。これはテストの目的でデータセット全体を取得することを意味します。

[Subset strategy] (サブセット戦略)

この内部ノード(実際には、このノードの機能のトレーニングセットまたはサブセット)をもっと小さなサブセットに適当に分割するため、各内部ノードで考慮する機能の数に関する戦略を選択します。これらのサブセットは、子ノードを構築するために使用されます。

戦略では、それぞれ分割するフィーチャーで最適ポイントを見つけるために、異なるフィーチャーについて考慮します。たとえば、カテゴリーフィーチャーの[age] (年齢)について35をポイントにできます。

  • [auto] (自動): この戦略は[Basic settings] (基本設定)ビューの[Number of trees in the forest] (フォレストのツリー数)で設定したツリーの数に基づいています。この戦略がデフォルトとして使用されます。

    ツリーの数が1の場合、戦略は実際には[all] (すべて)になります。この数値が1より大きい場合、戦略は[sqrt] (平方根)になります。

  • all: 特徴の合計数が分割対象となります。

  • sqrt: 特徴の合計数の平方根が特徴の数として考慮されます。

  • log2: 考慮する機能の数は、log2(M)の結果です。ここでMは機能の合計数です。

[Set Checkpoint Interval] (チェックポイント間隔の設定)

チェックポイントの頻度を設定します。これはデフォルト値(10)をそのまま使用することが推奨されています。

このパラメーターの値を設定する前に、チェックポイントをアクティブにし、[Run] (実行)ビューの[Spark configuration] (Spark設定)タブでチェックポイントディレクトリーを設定します。

チェックポイントの詳細は、Apache Sparkジョブのロギングとアクティビティのチェックポインティングを参照してください。

Apache Sparkジョブのアクティビティにおけるチェックポインティングの詳細は、Talend Help Center(https://help.talend.com)のドキュメントを参照してください。

[Max bins] (最大ビン)

機能の分割に使用されるBinの最大数を示す数値を入力します。

継続的機能は序列化離散機能に自動的に変換されます。

[Min info gain] (最小情報ゲイン)

子ノードが親ノードからの取得を予想できる情報獲得の最小数を入力します。情報獲得の数が最小数を下回ると、ノードの分割は停止します。

情報獲得の最小数は、デフォルト値が0.0です。これは、特定のノードを分割しても、それ以上の情報が得られないことを意味します。その結果、分割が停止する場合があります。

情報獲得の計算方法は、SparkのドキュメンテーションでImpurity and Information gainをご覧ください。

[Min instances per node] (ノードあたりの最小インスタンス)

分割の継続を有効にするためにノードが持つ必要のあるトレーニングインスタンスの最小数を入力します。

デフォルト値は1です。これは、ノードのトレーニングデータの行数が1しかない場合、分割が停止することを意味します。

[Impurity] (混合)

分割の各セットから最適な分割を選択するために使用する指標を選択します。

  • [gini]: エレメントに対し、分割内で正しくないラべリングが許容される頻度です。

  • [entropy] (エントロピ): 各分割内の情報の予測困難度です。

各測定値の計算方法は、SparkのドキュメンテーションでImpurity measuresをご覧ください。

[Set a random seed] (ランダムシードの設定)

ブートストラップと機能サブセットの選択に使用するランダムシード番号を入力します。

使用方法

使用ルール

このコンポーネントは終了コンポーネントとして使用され、入力リンクを必要とします。

各デシジョンツリーの最大深度、Bin分割の最大数、または情報獲得の最小数などの停止条件を調節することで、トレーニングプロセスの加速が可能になります。ただし、トレーニングの停止が早すぎるとパフォーマンスに影響が生じるおそれがあります。

[Model evaluation] (モデル評価)

設定する必要があるパラメーターは自由パラメーターであるため、値は以前の実験や経験的推測などによって提供される場合があります。すべてのデータセットに適用できる最適値はありません。

したがって、最適な混同行列が得られるまで、さまざまなパラメーター値のセットを使って生成する分類子モデルをトレーニングする必要があります。ただし、モデルをスコアでランク付けするには、自分で評価コードを記述する必要があります。

分類子モデルのトレーニングに使うアルゴリズムに応じて、使うスコアを選択する必要があります。これにより、最も適切な混同行列を作成できます。

混同行列を分類用の Talend ジョブに使う方法の例は、Creating a classification model to filter spamをご覧ください。

混同行列に関する一般的な説明は、Wikipediaのhttps://en.wikipedia.org/wiki/Confusion_matrixをご覧ください。

[Spark Connection] (Spark接続)

[Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、ジョブ全体でのSparkクラスターへの接続を定義します。また、ジョブでは、依存jarファイルを実行することを想定しているため、Sparkがこれらのjarファイルにアクセスできるように、これらのファイルの転送先にするファイルシステム内のディレクトリーを指定する必要があります。
  • Yarnモード(YarnクライアントまたはYarnクラスター):
    • Google Dataprocを使用している場合、[Spark configuration] (Spark設定)タブの[Google Storage staging bucket] (Google Storageステージングバケット)フィールドにバケットを指定します。

    • HDInsightを使用している場合、[Spark configuration] (Spark設定)タブの[Windows Azure Storage configuration] (Windows Azure Storage設定)エリアでジョブのデプロイメントに使用するブロブを指定します。

    • Altusを使用する場合は、[Spark configuration] (Spark設定)タブでジョブのデプロイにS3バケットまたはAzure Data Lake Storageを指定します。
    • Quboleを使用する場合は、ジョブにtS3Configurationを追加し、QuboleでS3システム内に実際のビジネスデータを書き込みます。tS3Configurationを使用しないと、このビジネスデータはQubole HDFSシステムに書き込まれ、クラスターをシャットダウンすると破棄されます。
    • オンプレミスのディストリビューションを使用する場合は、クラスターで使用されているファイルシステムに対応する設定コンポーネントを使用します。一般的に、このシステムはHDFSになるため、https://help.talend.com/access/sources/content/topic?pageid=thdfsconfiguration&mapid=hdfs&afs:lang=ja&EnrichVersion=7.2を使用します。

  • [Standalone mode] (スタンドアロンモード): tHDFSConfigurationtS3Configurationなど、クラスターで使われているファイルシステムに対応する設定コンポーネントを使用します。

    ジョブ内に設定コンポーネントがない状態でDatabricksを使用している場合、ビジネスデータはDBFS (Databricks Filesystem)に直接書き込まれます。

この接続は、ジョブごとに有効になります。