マクロ定義 | |
#define | F_ML_BOOST_STOPRATE_INVALID (-1) |
列挙型 | |
enum | f_ml_boost_type { F_BOOST_TYPE_DISCRETE = 1, F_BOOST_TYPE_REAL = 2 } |
ブースティングのタイプ [詳細] | |
関数 | |
FHANDLE FVALGAPI | fnFIE_ml_do_train_boost (FHANDLE hMl_sample, INT var_type, INT boost_type, INT predictor_num, DOUBLE stop_error_rate, INT preprocess, INT train_time_sec, INT *error_code) |
Boostingによる機械学習 | |
INT FVALGAPI | fnFIE_ml_get_boost_param (FHANDLE hMl, INT *var_type, INT *boost_type, INT *predictor_num, DOUBLE *stop_error_rate, INT *preprocess, INT *create_predictor_num, DOUBLE *train_error_rate) |
Boostingによる学習パラメータを取得する |
#define F_ML_BOOST_STOPRATE_INVALID (-1) |
ブースティング 誤識別率による停止を考慮しない
enum f_ml_boost_type |
FHANDLE FVALGAPI fnFIE_ml_do_train_boost | ( | FHANDLE | hMl_sample, | |
INT | var_type, | |||
INT | boost_type, | |||
INT | predictor_num, | |||
DOUBLE | stop_error_rate, | |||
INT | preprocess, | |||
INT | train_time_sec, | |||
INT * | error_code | |||
) |
Boostingによる機械学習
hMl_sample で指定された教師データを用いてBoostingによる学習を行い、 その結果を保持した学習オブジェクトのハンドルを返します。本ライブラリは 高さ1の決定木構造を弱識別器とする、AdaBoostによる学習を実装しています。
hMl_sample には、学習で用いる教師データを設定した教師データオブジェクトを 設定します。hMl_sample にはちょうど2クラスの教師データが設定されている必要があります。 それ以外のクラス数の教師データが設定いた場合は、返却されるハンドルはNULLとなり、 後述の error_code が設定されていた場合は、F_ERR_CALC_IMPOSSIBLE が出力されます。
var_type は、 hMl_sample で指定した教師データの特徴ベクトルが 数値属性であるか、カテゴリ属性であるかを指定します。以下の値にて指定してください
教師データの属性については、 こちらを参照してください。 なお、特徴ベクトルの属性にカテゴリ属性を指定した場合、特徴ベクトルの値は全て整数値である必要があります。 そのため、特徴ベクトルに小数点以下の値が含まれていた場合、小数点以下の値は切り捨てられ、 整数値のベクトルとして扱われます。
その際、内部で教師データオブジェクトのコピーを作成し、そのデータに対して処理を行います。 そのため、入力の hMl_sample は変更されません。
boost_type は、AdaBoostのタイプを指定します。以下の値にて指定してください。
各々のアルゴリズムについては こちらを参照してください。
predictor_num は、学習で作成する弱識別器の数を指定します。強識別器を構成する弱識別器の数が この値に達した場合、学習を終了します。
stop_error_rate は、学習を停止する、教師データに対する誤識別率を指定します。 学習中、弱識別器を追加する度に、教師データに対する現在の強識別器の誤識別率を計算し、 その値がパラメータで指定した値以下になった場合は学習を終了します。
誤識別率による学習の終了を行わない場合は、 F_ML_BOOST_STOPRATE_INVALID を指定してください。 このときは、predictor_num で指定した弱識別器の数に達するまで学習を継続します。
preprocess は学習を開始する前に、与えられた教師データに行う前処理を指定します。
値は以下のdefineをORで指定します。それ以外の値は無視されるので注意してください。 また、前処理が不要な場合は0を指定してください。
教師データの特徴ベクトルがカテゴリ属性で合った場合は、事前処理の指定は無視されます。
なお、教師データに対する前処理を行う際は、内部で教師データオブジェクトのコピーを 作成し、そのデータに対して処理を行います。そのため、入力の hMl_sample は変更されません。
train_time_sec は 学習時間の上限値を秒単位で設定します。この値が設定されていた場合、 内部で学習開始からの経過時間の監視を行います。指定された時間を経過した場合、 学習を打ち切り、処理を終了します。学習の打ち切りが発生した場合、 返却されるハンドルはNULLとなります。また、後述の error_code が設定されていた場合は、 F_ERR_TIMEOUT が設定されます。
学習時間の監視が不要な場合は train_time_sec に0を設定します。このときは、 終了条件が成立するまで、無制限に学習を続けます。
経過時間の確認は、1つの弱識別器の学習が終了する度に行います。そのため、経過時間が指定した 学習時間の上限に達した場合でも、すぐに学習が打ち切られないケースがある事に注意して下さい。
error_code には、学習を行った際のエラーコードを設定されます。学習が正常終了した場合は F_ERR_NONE が 設定されます。なお、エラーコードを受け取る必要が無い場合はNULLを指定してください。
[in] | hMl_sample | 学習に用いる教師データ教師データオブジェクトのハンドル |
[in] | var_type | 教師データの特徴ベクトルの属性 |
[in] | boost_type | AdaBoostのタイプ |
[in] | predictor_num | 作成する弱識別器の上限値 (1 <= predictor_num) |
[in] | stop_error_rate | 学習を終了する教師データに対する誤識別率 (0.0 <= stop_error_rate <= 1.0 または F_ML_BOOST_STOPRATE_INVALID ) |
[in] | preprocess | 学習の前処理指定パラメータ |
[in] | train_time_sec | 学習時間の上限値(単位:秒) 指定しない場合は0 |
[out] | error_code | エラー発生時のエラーコード エラーコードを受け取る必要の無い場合は、NULLを指定します。
|
INT FVALGAPI fnFIE_ml_get_boost_param | ( | FHANDLE | hMl, | |
INT * | var_type, | |||
INT * | boost_type, | |||
INT * | predictor_num, | |||
DOUBLE * | stop_error_rate, | |||
INT * | preprocess, | |||
INT * | create_predictor_num, | |||
DOUBLE * | train_error_rate | |||
) |
Boostingによる学習パラメータを取得する
hMl で指定したBoostingのパラメータを取得します。
取得できるパラメータは、特徴ベクトルのタイプ、Boostingのタイプ、 指定した弱識別器の上限数、指定した停止条件となる誤識別率、 学習時の前処理指定パラメータ、学習した結果生成された弱識別器の数、 学習した強識別器の教師データに対する誤識別率です。
出力先の引数は全てNULLポインタチェックがされるため、必要の無いものについてはNULL指定が可能です。 このとき、 hMl 以外のパラメータがNULLであっても、エラーにはならず正常終了します。
[in] | hMl | 情報を取得するBoostingオブジェクト |
[out] | var_type | 学習時に指定した特徴ベクトルのタイプ |
[out] | boost_type | 学習時に指定したBoostingのタイプ |
[out] | predictor_num | 学習時に指定した弱識別器の上限数 |
[out] | stop_error_rate | 学習時に指定した停止条件となる誤識別率 |
[out] | preprocess | 学習時に指定した前処理指定パラメータ |
[out] | create_predictor_num | 学習した結果生成された弱識別器の数 |
[out] | train_error_rate | 学習した強識別器の教師データに対する誤識別率 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 入力された教師データオブジェクトが不正 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |