モジュール | |
説明 | |
列挙型 | |
enum | f_ml_svm_type { F_ML_SVM_TYPE_C_SVM = 1 } |
サポートベクターマシンのタイプ [詳細] | |
enum | f_ml_svm_kernel_type { F_ML_SVM_KERNEL_LINEAR = 1, F_ML_SVM_KERNEL_POLYNOMIAL, F_ML_SVM_KERNEL_RBF } |
サポートベクターマシンのカーネル関数のタイプ [詳細] | |
関数 | |
FHANDLE FVALGAPI | fnFIE_ml_do_train_svm (FHANDLE hMl_sample, INT svm_type, DOUBLE margin, DOUBLE stop_rate, INT kernel_type, DOUBLE gamma, DOUBLE coeff_0, UINT degree, INT preprocess, INT train_time_sec, INT *error_code) |
サポートベクターマシンによる機械学習 | |
INT FVALGAPI | fnFIE_ml_get_svm_param (FHANDLE hMl, INT *svm_type, DOUBLE *margin, DOUBLE *stop_rate, INT *kernel_type, DOUBLE *gamma, DOUBLE *coeff_0, UINT *degree, INT *preprocess) |
サポートベクターマシンのパラメータを取得する |
enum f_ml_svm_type |
enum f_ml_svm_kernel_type |
FHANDLE FVALGAPI fnFIE_ml_do_train_svm | ( | FHANDLE | hMl_sample, | |
INT | svm_type, | |||
DOUBLE | margin, | |||
DOUBLE | stop_rate, | |||
INT | kernel_type, | |||
DOUBLE | gamma, | |||
DOUBLE | coeff_0, | |||
UINT | degree, | |||
INT | preprocess, | |||
INT | train_time_sec, | |||
INT * | error_code | |||
) |
サポートベクターマシンによる機械学習
hMl_sample で指定された教師データを用いて、サポートベクターマシン(SVM)による 学習を行い、その結果を保持した学習オブジェクトのハンドルを返します。
hMl_sample には、学習で用いる教師データを設定した教師データオブジェクトを 設定します。hMl_sample には2クラス以上の教師データが設定されている必要があります。 hMl_sample に2クラス以上の教師データが設定されていない場合は、返却されるハンドルはNULLとなります。 また、後述の error_code が設定されていた場合は、F_ERR_CALC_IMPOSSIBLE が出力されます。
svm_type には、学習で用いるSVMのタイプ(モデル)を指定します。以下の値にて指定してください。
margin はソフトマージンおける誤分類の許容パラメータです。svm_type で指定したSVMのタイプによって、パラメータの意味や 取りうる値の範囲、ディフォルト値は以下のようになります。
stop_rate はSVMの学習を終了する収束条件の値を設定します。この値を大きくすると、学習時間は短くなりますが、 識別精度は悪くなります。通常、この値はディフォルト値から変更する必要はありません。(ディフォルト値 : 0.001)
kernel_type はSVMで用いるカーネル関数のタイプを指定します。以下の値にて指定してください。
gamma , coeff_0 , degree は上記カーネル関数の変数 ,
,
の値となります。 式中に現れない変数は、実行時には無視されます。
gamma は 0 < gamma となる実数を設定します。ディフォルト値は、kernel_type の設定に応じて、以下のようになります。
coeff_0 は 0 <= coeff_0 となる実数を設定します。ディフォルト値は1.0です。
degree は 1 <= degree となる整数を設定します。ディフォルト値は3です。
preprocess は学習を開始する前に、与えられた教師データに行う前処理を指定します。 前処理を適切に行うことで、学習時間の短縮や、識別精度の向上が期待できます。
値は以下のdefineをORで指定します。それ以外の値は無視されるので注意してください。 また、前処理が不要な場合は0を指定してください。
SVMでは「 F_ML_PRE_SCALE_VECTOR 」を指定しておくことを推奨します。
なお、教師データに対する前処理を行う際は、内部で教師データオブジェクトのコピーを 作成し、そのデータに対して処理を行います。そのため、入力の hMl_sample は変更されません。
train_time_sec は 学習時間の上限値を秒単位で設定します。この値が設定されていた場合、 内部で学習開始からの経過時間の監視を行います。指定された時間を経過した場合、 学習を打ち切り、処理を終了します。学習の打ち切りが発生した場合、 返却されるハンドルはNULLとなります。また、後述の error_code が設定されていた場合は、 F_ERR_TIMEOUT が設定されます。
3クラス以上の多クラス識別の場合、各クラス同士のペアの学習毎にこの時間が 適応されます。よって、Nクラスでの学習の場合、最大で train_time_sec * ( N(N-1) / 2 ) だけ 学習が行われます。タイムアウトが1回でも発生した場合は、エラー扱いとなります。
学習時間の監視が不要な場合は train_time_sec に0を設定します。このときは、 終了条件が成立するまで、無制限に学習を続けます。
error_code には、学習を行った際のエラーコードを設定されます。学習が正常終了した場合は F_ERR_NONE が 設定されます。なお、エラーコードを受け取る必要が無い場合はNULLを指定してください。
[in] | hMl_sample | 学習に用いる教師データ教師データオブジェクトのハンドル |
[in] | svm_type | サポートベクターマシンのタイプ |
[in] | margin | ソフトマージンにおける許容パラメータ |
[in] | stop_rate | 学習を終了する収束条件 |
[in] | kernel_type | 使用するカーネル関数の種類 |
[in] | gamma | カーネル関数パラメータ ![]() |
[in] | coeff_0 | カーネル関数パラメータ 定数項 ![]() |
[in] | degree | カーネル関数パラメータ 次数 ![]() |
[in] | preprocess | 学習の前処理指定パラメータ |
[in] | train_time_sec | 学習時間の上限値(単位:秒) 指定しない場合は0 |
[out] | error_code | エラー発生時のエラーコード エラーコードを受け取る必要の無い場合は、NULLを指定します。
|
INT FVALGAPI fnFIE_ml_get_svm_param | ( | FHANDLE | hMl, | |
INT * | svm_type, | |||
DOUBLE * | margin, | |||
DOUBLE * | stop_rate, | |||
INT * | kernel_type, | |||
DOUBLE * | gamma, | |||
DOUBLE * | coeff_0, | |||
UINT * | degree, | |||
INT * | preprocess | |||
) |
サポートベクターマシンのパラメータを取得する
hMl で指定したサポートベクターマシンのパラメータを取得します。
取得できるパラメータは、サポートベクターマシンのタイプ、指定マージン、停止条件、 カーネル関数のタイプ、カーネル関数に指定した各パラメータ値、学習の前処理指定パラメータです。
出力先の引数は全てNULLポインタチェックがされるため、必要の無いものについてはNULL指定が可能です。 このとき、 hMl 以外のパラメータがNULLであっても、エラーにはならず正常終了します。
[in] | hMl_sample | 情報を取得するサポートベクターマシンオブジェクト |
[out] | svm_type | サポートベクターマシンのタイプ |
[out] | margin | ソフトマージンにおける許容パラメータ |
[out] | stop_rate | 学習を終了する収束条件 |
[out] | kernel_type | 使用するカーネル関数の種類 |
[out] | gamma | カーネル関数パラメータ ![]() |
[out] | coeff_0 | カーネル関数パラメータ 定数項 ![]() |
[out] | degree | カーネル関数パラメータ 次数 ![]() |
[out] | preprocess | 学習の前処理指定パラメータ |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 入力された学習オブジェクトが不正 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |