列挙型 | |
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) |
![]() |
決定木の枝刈りのタイプ
決定木において、木の枝狩りの方法の指定する定数です
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 | |||
) |
決定木による機械学習
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 は、決定木の学習で用いる枝刈りのタイプを指定します。以下の値にて指定してください。
枝刈りの詳細と、交差検証については、 こちらを参照してください。
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を指定します。
|