実行
[決定木]


列挙型

enum  f_ml_dtree_pruning_type {
  F_ML_DTREE_NO_PRUNING = 0, F_ML_DTREE_REDUCED_ERROR,
  F_ML_DTREE_COST_COMPLEXITY, F_ML_DTREE_COST_COMPLEXITY_1SE
}
 決定木の枝刈りのタイプ [詳細]

関数

FHANDLE FVALGAPI fnFIE_ml_do_train_dtree (FHANDLE hMl_sample, INT max_depth, INT min_node_sample, INT k_fold, INT pruning_type, INT var_type, INT preprocess, INT train_time_sec, INT *error_code)
  [[OSS]] 決定木による機械学習

列挙型

決定木の枝刈りのタイプ

決定木において、木の枝狩りの方法の指定する定数です

列挙型の値:
F_ML_DTREE_NO_PRUNING  枝刈り無し 学習で構成された決定木がそのまま出力されます
F_ML_DTREE_REDUCED_ERROR  エラー減少枝刈り 交差検定を用いて、テストデータでの誤識別率が低下する限り枝刈りを行います
F_ML_DTREE_COST_COMPLEXITY  コスト複雑度枝刈り 交差検定を用いて、木の複雑さと誤識別とのトレードオフを考慮した枝刈りを行う
F_ML_DTREE_COST_COMPLEXITY_1SE  1-SE(Standard Error)ルールによる枝刈り コスト複雑度枝刈りと、誤識別率の標準誤差を用いた枝刈りを行う


関数

FHANDLE FVALGAPI fnFIE_ml_do_train_dtree ( FHANDLE  hMl_sample,
INT  max_depth,
INT  min_node_sample,
INT  k_fold,
INT  pruning_type,
INT  var_type,
INT  preprocess,
INT  train_time_sec,
INT *  error_code 
)

[[OSS]] 決定木による機械学習

hMl_sample で指定された教師データを用いて決定木による学習を行い、 その結果を保持した学習オブジェクトのハンドルを返します。

hMl_sample には、学習で用いる教師データを設定した教師データオブジェクトを 設定します。hMl_sample には2クラス以上の教師データが設定されている必要があります。 hMl_sample に2クラス以上の教師データが設定されていない場合は、返却されるハンドルはNULLとなり、 後述の error_code が設定されていた場合は、F_ERR_CALC_IMPOSSIBLE が出力されます。
また、学習において枝刈りを行う場合、hMl_sample のサンプル数は k_fold 以上で ある必要があります。

max_depth は木を生長させたときの、最大の深さを指定します。成長中の木のノードが この深さまで達した場合、そのノードの成長を終了し、葉ノードとします。
max_depth を0に指定した場合、木の深さに関しては無制限となります。つまり、 他の終了条件を満たすまで、無制限に成長を続けます。

min_node_sample は、木の各ノードに割り振られる教師データの最小数を指定します。 成長中のノードに割り振られたデータが、この値以下になった場合、そのノードの成長を 終了し、葉ノードとします。

k_fold は、後述の pruning_type で枝刈りを指定した際の交差検証数を指定します。 枝刈りを行う場合、この値は2以上でなければいけません。また、枝刈りを指定しない場合は、 この値は無視されます。

pruning_type は、決定木の学習で用いる枝刈りのタイプを指定します。以下の値にて指定してください。

  • F_ML_DTREE_NO_PRUNING
    枝刈り未使用。このパラメータを指定されたときは枝刈りを行わず、停止条件を満たした最大の決定木がそのまま出力されます。

枝刈りの詳細と、交差検証については、 こちらを参照してください。

var_type は、 hMl_sample で指定した教師データの特徴ベクトルが 数値属性であるか、カテゴリ属性であるかを指定します。以下の値にて指定してください

教師データの属性については、 こちらを参照してください。 なお、特徴ベクトルの属性にカテゴリ属性を指定した場合、特徴ベクトルの値は全て整数値である必要があります。 そのため、特徴ベクトルに小数点以下の値が含まれていた場合、小数点以下の値は切り捨てられ、 整数値のベクトルとして扱われます。
その際、内部で教師データオブジェクトのコピーを作成し、そのデータに対して処理を行います。 そのため、入力の hMl_sample は変更されません。

preprocess は学習を開始する前に、与えられた教師データに行う前処理を指定します。
値は以下のdefineをORで指定します。それ以外の値は無視されるので注意してください。 また、前処理が不要な場合は0を指定してください。

決定木の学習では、まずは事前処理を指定せずに学習を行い、パラメータの調整で精度を上げていく事を推奨します。 教師データの特徴ベクトルがカテゴリ属性で合った場合は、事前処理の指定は無視されます。
なお、教師データに対する前処理を行う際は、内部で教師データオブジェクトのコピーを 作成し、そのデータに対して処理を行います。そのため、入力の hMl_sample は変更されません。

train_time_sec は 学習時間の上限値を秒単位で設定します。この値が設定されていた場合、 内部で学習開始からの経過時間の監視を行います。指定された時間を経過した場合、 学習を打ち切り、処理を終了します。学習の打ち切りが発生した場合、 返却されるハンドルはNULLとなります。また、後述の error_code が設定されていた場合は、 F_ERR_TIMEOUT が設定されます。

pruning_type にて枝刈りが指定されていた場合、各交差検証木や、出力用の木の学習ごとに この時間が適応されます。そのため、エラー減少枝刈りの場合は、最大で train_time_sec * k_fold 、 コスト複雑度枝刈り(1-SEルールも含む)の場合は、最大で train_time_sec * ( k_fold + 1 ) だけ 学習時間がかかります(枝刈りに関する試行錯誤の時間は含まれません)。 なお、学習中タイムアウトが1回でも発生した場合は、エラー扱いとなります。

学習時間の監視が不要な場合は train_time_sec に0を設定します。このときは、 終了条件が成立するまで、無制限に学習を続けます。

error_code には、学習を行った際のエラーコードを設定されます。学習が正常終了した場合は F_ERR_NONE が 設定されます。なお、エラーコードを受け取る必要が無い場合はNULLを指定してください。

引数:
[in] hMl_sample 学習に用いる教師データ教師データオブジェクトのハンドル
[in] max_depth 決定木の最大の深さ(0 <= max_depth 0で深さ無制限)
[in] min_node_sample ノードに割り振られる最小サンプル数 (1 <= min_node_sample )
[in] k_fold 枝刈りの交差検証数 (2 <= k_fold 枝刈りを行わない場合は未使用)
[in] pruning_type 枝刈りのタイプ
[in] var_type 教師データの特徴ベクトルの属性
[in] preprocess 学習の前処理指定パラメータ
[in] train_time_sec 学習時間の上限値(単位:秒) 指定しない場合は0
[out] error_code エラー発生時のエラーコード エラーコードを受け取る必要の無い場合は、NULLを指定します。
  • F_ERR_NONE 正常終了
  • F_ERR_INVALID_PARAM 入力されたパラメータが不正
  • F_ERR_INVALID_OBJECT 入力された教師データオブジェクトが不正
  • F_ERR_TIMEOUT 指定された学習時間内で学習が終了しなかった
  • F_ERR_NOMEMORY メモリ不足による領域確保エラー
  • F_ERR_CALC_IMPOSSIBLE 計算不能エラー
  • F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
戻り値:
確保された機械学習オブジェクトのハンドル エラーにより学習に失敗した場合はNULLを返します
参照:
fnFIE_ml_predict()


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:48 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2