列挙型 | |
enum | f_ml_nb_type { F_ML_NB_GAUSSIAN = 1, F_ML_NB_MULTINOMIAL_MULTIVARIATE = 2, F_ML_NB_MULTINOMIAL = 3 } |
ナイーブベイズ分類器の尤度のタイプ [詳細] | |
enum | f_ml_nb_prior_type { F_ML_NB_PRIOR_UNIFORM = 0, F_ML_NB_PRIOR_PROPORTION = 1 } |
ナイーブベイズ分類器の事前分布のタイプ [詳細] | |
関数 | |
FHANDLE FVALGAPI | fnFIE_ml_do_train_naivebayes (FHANDLE hMl_sample, enum f_ml_nb_type likelihood_type, enum f_ml_nb_prior_type prior_type, DOUBLE alpha, INT preprocess, INT train_time_sec, INT *error_code) |
ナイーブベイズ分類器による機械学習 | |
INT FVALGAPI | fnFIE_ml_get_naivebayes_param (FHANDLE hMl, enum f_ml_nb_type *likelihood_type, enum f_ml_nb_prior_type *prior_type, DOUBLE *alpha, INT *preprocess) |
ナイーブベイズ分類器による学習パラメータを取得する | |
INT FVALGAPI | fnFIE_ml_naivebayes_predict_probability (FHANDLE hMl, DOUBLE *feature_vec, DOUBLE *responses) |
ナイーブベイズ分類器による、出力クラスの生起確率の予測 | |
INT FVALGAPI | fnFIE_ml_naivebayes_get_class_labels (FHANDLE hMl, INT **labels, INT *num_labels) |
ナイーブベイズ分類器の学習で使用されたクラスラベルの一覧を取得する | |
INT FVALGAPI | fnFIE_ml_naivebayes_get_class_prior (FHANDLE hMl, DOUBLE *prior) |
ナイーブベイズ分類器による、出力クラスの事前確率の取得 | |
INT FVALGAPI | fnFIE_ml_naivebayes_get_likelihood_params (FHANDLE hMl, INT label, INT feature_idx, DOUBLE **params, INT *num_params) |
ナイーブベイズ分類器で学習された尤度モデルのパラメータを取得する |
enum f_ml_nb_type |
enum f_ml_nb_prior_type |
FHANDLE FVALGAPI fnFIE_ml_do_train_naivebayes | ( | FHANDLE | hMl_sample, | |
enum f_ml_nb_type | likelihood_type, | |||
enum f_ml_nb_prior_type | prior_type, | |||
DOUBLE | alpha, | |||
INT | preprocess, | |||
INT | train_time_sec, | |||
INT * | error_code | |||
) |
ナイーブベイズ分類器による機械学習
hMl_sample で指定された教師データを用いてナイーブベイズ分類器による学習を行い、 その結果を保持した学習オブジェクトのハンドルを返します。
hMl_sample には、学習で用いる教師データを設定した教師データオブジェクトを 設定します。hMl_sample には2クラス以上の教師データが設定されている必要があります。 2クラス以上の教師データが設定されていない場合、返却されるハンドルはNULLとなります。 また、エラーコードには F_ERR_CALC_IMPOSSIBLE が出力されます。
likelihood_type は、学習で用いる尤度のタイプ(モデル)を指定します。以下の値にて指定してください。
教師データの属性については、 こちらを参照してください。 なお、特徴ベクトルの属性にカテゴリ属性を指定した場合、特徴ベクトルの値は全て整数値である必要があります。 そのため、特徴ベクトルに小数点以下の値が含まれていた場合、小数点以下の値は切り捨てられ、 整数値のベクトルとして扱われます。
その際、内部で教師データオブジェクトのコピーを作成し、そのデータに対して処理を行います。 そのため、入力の hMl_sample は変更されません。
prior_type は、学習で用いる事前分布のタイプを指定します。以下の値にて指定してください。
alpha は、特定の条件で出力確率が0となる問題に対応するためのスケーリング係数αを指定します。 尤度として多変量多項分布または多項分布を指定した場合に使用されます。 0以上の実数を指定可能であり、推奨値は1となります。 詳細については、 特徴量が一定値になる場合の対策を参照してください。
preprocess は学習を開始する前に、与えられた教師データに行う前処理を指定します。
値は以下のdefineをORで指定します。それ以外の値は無視されるので注意してください。 また、前処理が不要な場合は0を指定してください。
教師データの特徴ベクトルがカテゴリ属性で合った場合は、事前処理の指定は無視されます。
なお、教師データに対する前処理を行う際は、内部で教師データオブジェクトのコピーを 作成し、そのデータに対して処理を行います。そのため、入力の hMl_sample は変更されません。
train_time_sec は 学習時間の上限値を秒単位で設定します。この値が設定されていた場合、 内部で学習開始からの経過時間の監視を行います。指定された時間を経過した場合、 学習を打ち切り、処理を終了します。学習の打ち切りが発生した場合、返却されるハンドルはNULLとなります。 また、エラーコードには F_ERR_TIMEOUT が出力されます。
学習時間の監視が不要な場合は train_time_sec に0を設定します。このときは、 終了条件が成立するまで、無制限に学習を続けます。
error_code には、学習を行った際のエラーコードが出力されます。学習が正常終了した場合は F_ERR_NONE が 出力されます。なお、エラーコードを受け取る必要が無い場合はNULLを指定してください。
[in] | hMl_sample | 学習に用いる教師データ教師データオブジェクトのハンドル |
[in] | likelihood_type | 尤度のタイプ |
[in] | prior_type | 事前分布のタイプ |
[in] | alpha | スケーリング係数α (0 <= alpha) |
[in] | preprocess | 学習の前処理指定パラメータ |
[in] | train_time_sec | 学習時間の上限値(単位:秒) 指定しない場合は0 |
[out] | error_code | エラー発生時のエラーコード エラーコードを受け取る必要の無い場合は、NULLを指定します。
|
INT FVALGAPI fnFIE_ml_get_naivebayes_param | ( | FHANDLE | hMl, | |
enum f_ml_nb_type * | likelihood_type, | |||
enum f_ml_nb_prior_type * | prior_type, | |||
DOUBLE * | alpha, | |||
INT * | preprocess | |||
) |
ナイーブベイズ分類器による学習パラメータを取得する
hMl で指定したナイーブベイズ分類器のパラメータを取得します。
取得できるパラメータは、尤度のタイプ、事前分布のタイプ、 スケーリング係数α、学習時の前処理指定パラメータです。 出力先のパラメータのうち必要のないものはNULLを指定してください。
[in] | hMl | 情報を取得するナイーブベイズ分類器オブジェクト |
[out] | likelihood_type | 尤度のタイプ |
[out] | prior_type | 事前分布のタイプ |
[out] | alpha | スケーリング係数α |
[out] | preprocess | 学習時に指定した前処理指定パラメータ |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 入力された教師データオブジェクトが不正 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_ml_naivebayes_predict_probability | ( | FHANDLE | hMl, | |
DOUBLE * | feature_vec, | |||
DOUBLE * | responses | |||
) |
ナイーブベイズ分類器による、出力クラスの生起確率の予測
hMl で指定したナイーブベイズ分類器オブジェクトの学習内容に基づいて、 入力された特徴ベクトルに対するクラスごとの生起確率を予測し、その確率値を responses に出力します。
入力する特徴ベクトルは、feature_vec で指定します。特徴ベクトルの次元数、 すなわち feature_vec の配列のサイズは、hMl の学習で用いた特徴ベクトルの サイズ以上でなければなりません。 学習で用いた特徴ベクトルのサイズは、 fnFIE_ml_get_common_param() にて 取得することができます。
生起確率は学習で用いたすべてのクラスについて出力されます。 そのため responses の配列のサイズは、hMl の学習で用いたクラス数以上でなければなりません。
生起確率の出力順は、クラスラベルの昇順となります。 すなわち responses のi番目の要素には、i番目に小さなクラスラベルをもつクラスに対する生起確率が格納されます。
[in] | hMl | ナイーブベイズ分類器オブジェクト |
[in] | feature_vec | 確率計算の対象とするベクトル |
[out] | responses | クラスごとの生起確率 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 入力されたパラメータが不正 | |
F_ERR_INVALID_OBJECT | 入力された教師データオブジェクトが不正 | |
F_ERR_NOMEMORY | メモリ不足のため計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_ml_naivebayes_get_class_labels | ( | FHANDLE | hMl, | |
INT ** | labels, | |||
INT * | num_labels | |||
) |
ナイーブベイズ分類器の学習で使用されたクラスラベルの一覧を取得する
hMl で指定したナイーブベイズ分類器オブジェクトの学習で使用された クラスラベルの一覧を labels に、クラス数を num_labels に出力します。
クラスラベルの出力順は昇順となります。 すなわち *labels のi番目の要素には、i番目に小さなクラスラベルが格納されます。
*labels に出力する配列に必要なメモリは、関数内部で確保します。そのため、*labels は NULLでなければなりません。また、*labels は、不要になった場合は fnOAL_free() にて 確実に解放してください。
[in] | hMl | ナイーブベイズ分類器オブジェクト |
[out] | labels | クラスラベルの一覧 |
[out] | num_labels | 学習で使用されたクラス数 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 入力されたパラメータが不正 | |
F_ERR_INVALID_OBJECT | 入力された教師データオブジェクトが不正 | |
F_ERR_NOMEMORY | メモリ不足のため計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_ml_naivebayes_get_class_prior | ( | FHANDLE | hMl, | |
DOUBLE * | prior | |||
) |
ナイーブベイズ分類器による、出力クラスの事前確率の取得
hMl で指定したナイーブベイズ分類器オブジェクトの学習内容に基づいて、 クラスごとの事前確率をprior に出力します。
事前確率は学習で用いたすべてのクラスについて出力されます。 そのため prior の配列のサイズは、hMl の学習で用いたクラス数以上でなければなりません。
事前確率の出力順は、クラスラベルの昇順となります。 すなわち prior のi番目の要素には、i番目に小さなクラスラベルをもつクラスに対する事前確率が格納されます。
[in] | hMl | ナイーブベイズ分類器オブジェクト |
[out] | prior | クラスごとの事前確率 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 入力されたパラメータが不正 | |
F_ERR_INVALID_OBJECT | 入力された教師データオブジェクトが不正 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_ml_naivebayes_get_likelihood_params | ( | FHANDLE | hMl, | |
INT | label, | |||
INT | feature_idx, | |||
DOUBLE ** | params, | |||
INT * | num_params | |||
) |
ナイーブベイズ分類器で学習された尤度モデルのパラメータを取得する
hMl で指定したナイーブベイズ分類器オブジェクトの尤度分布モデルのパラメータを params に出力します。
分布パラメータは、クラスラベルごと、特徴要素ごとに出力されます。 label でクラスラベルを、 feature_idx で特徴要素を指定します。 学習ラベルに含まれないクラスラベルや、特徴次元の範囲を超えた要素を指定した場合はエラーとなります。
出力される尤度分布パラメータは、このナイーブベイズ分類器の学習で指定した尤度分布のタイプによって異なります。 分布パラメータの詳細については ナイーブベイズ分類器の学習 を参照してください。 パラメータの個数もタイプによって異なるため、個数が num_params に出力されます。 タイプごとのパラメータの詳細は次の通りです。
*params に出力する配列に必要なメモリは、関数内部で確保します。そのため、*params は NULLでなければなりません。また、*params は、不要になった場合は fnOAL_free() にて 確実に解放してください。
[in] | hMl | ナイーブベイズ分類器オブジェクト |
[in] | label | 対象となるクラスラベル |
[in] | feature_idx | 対象となる特徴要素の番号 |
[out] | params | 対象となる尤度パラメータを保持した配列 |
[out] | num_params | params の配列サイズ |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 入力されたパラメータが不正 | |
F_ERR_INVALID_OBJECT | 入力された教師データオブジェクトが不正 | |
F_ERR_NOMEMORY | メモリ不足のため計算不能エラー | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |