bayesml.hiddenmarkovnormal package#
モジュール内容#
このモジュールではガウス・ウィシャート事前分布およびディリクレ事前分布を用いた隠れマルコフモデルを利用できます。
確率的データ生成モデル#
確率的データ生成モデルは以下の通りです:
\(K \in \mathbb{N}\): 潜在クラスの数
\(\boldsymbol{z} \in \{ 0, 1 \}^K\): 潜在クラス(潜在変数)を表すone-hotベクトル
\(\boldsymbol{\pi} \in [0, 1]^K\):潜在クラスのパラメータ(\(\sum_{k=1}^K \pi_k=1\))
\(a_{j,k} \in [0,1]\) : 潜在状態 j における潜在状態 k への遷移確率
\(\boldsymbol{a}_j = [a_{j,1}, a_{j,2}, \dots , a_{j,K}]\in [0,1]^K\)、遷移確率のベクトル(\(\sum_{k=1}^K a_{j,k}=1\))
\(\boldsymbol{A}=(a_{j,k})_{1\leq j,k\leq K} \in [0, 1]^{K\times K}\): 遷移確率行列
\(D \in \mathbb{N}\): データの次元
\(\boldsymbol{x} \in \mathbb{R}^D\): データ点
\(\boldsymbol{\mu}_k \in \mathbb{R}^D\): パラメータ
\(\boldsymbol{\mu} = \{ \boldsymbol{\mu}_k \}_{k=1}^K\)
\(\boldsymbol{\Lambda}_k \in \mathbb{R}^{D\times D}\) : パラメータ(正定値行列)
\(\boldsymbol{\Lambda} = \{ \boldsymbol{\Lambda}_k \}_{k=1}^K\)
\(| \boldsymbol{\Lambda}_k | \in \mathbb{R}\): \(\boldsymbol{\Lambda}_k\) の行列式
事前分布#
事前分布は以下の通りです:
\(\boldsymbol{m}_0 \in \mathbb{R}^{D}\): ハイパーパラメータ
\(\kappa_0 \in \mathbb{R}_{>0}\): ハイパーパラメータ
\(\nu_0 \in \mathbb{R}\): ハイパーパラメータ(\(\nu_0 > D-1\))
\(\boldsymbol{W}_0 \in \mathbb{R}^{D\times D}\): ハイパーパラメータ(正定値行列)
\(\boldsymbol{\eta}_0 \in \mathbb{R}_{> 0}^K\): ハイパーパラメータ
\(\boldsymbol{\zeta}_{0,j} \in \mathbb{R}_{> 0}^K\): ハイパーパラメータ
\(\mathrm{Tr} \{ \cdot \}\): 行列のトレース
\(\Gamma (\cdot)\): ガンマ関数
ここで、\(B(\boldsymbol{W}_0, \nu_0)\) および \(C(\boldsymbol{\eta}_0)\) は次のように定義されます:
事後分布#
変分ベイズ法の \(t\) 回目の反復における近似事後分布は、以下の通りです:
\(\boldsymbol{x}^n = (\boldsymbol{x}_1, \boldsymbol{x}_2, \dots , \boldsymbol{x}_n) \in \mathbb{R}^{D\times n}\): 与えられたデータ
\(\boldsymbol{z}^n = (\boldsymbol{z}_1, \boldsymbol{z}_2, \dots , \boldsymbol{z}_n) \in \{ 0, 1 \}^{K \times n}\): 与えられたデータの潜在クラス
\(\boldsymbol{m}_{n,k}^{(t)} \in \mathbb{R}^{D}\): ハイパーパラメータ
\(\kappa_{n,k}^{(t)} \in \mathbb{R}_{>0}\): ハイパーパラメータ
\(\nu_{n,k}^{(t)} \in \mathbb{R}\): ハイパーパラメータ \((\nu_n > D-1)\)
\(\boldsymbol{W}_{n,k}^{(t)} \in \mathbb{R}^{D\times D}\): ハイパーパラメータ(正定値行列)
\(\boldsymbol{\eta}_n^{(t)} \in \mathbb{R}_{> 0}^K\): ハイパーパラメータ
\(\boldsymbol{\zeta}_{n,j}^{(t)} \in \mathbb{R}_{> 0}^K\): ハイパーパラメータ
ハイパーパラメータの更新ルールは以下の通りです。
潜在変数 \(q^{(t+1)}(z^n)\) の近似事後分布は、フォワード・バックワードアルゴリズムによって次のように計算されます。
予測分布#
近似予測分布は以下の通りです:
\(\boldsymbol{x}_{n+1}\in \mathbb{R}^d\): 新たなデータ点
\((a_{\mathrm{p},j,k})_{1\leq j,k\leq K} \in [0, 1]^{K\times K}\): 潜在クラスの予測遷移確率のパラメータです(\(\sum_{k=1}^K a_{\mathrm{p},j,k}=1\))。
\(\boldsymbol{\mu}_{\mathrm{p},k} \in \mathbb{R}^D\): 予測分布のパラメータ
\(\boldsymbol{\Lambda}_{\mathrm{p},k} \in \mathbb{R}^{D \times D}\): 予測分布のパラメータ(正定値行列)
\(\nu_{\mathrm{p},k} \in \mathbb{R}_{>0}\): 予測分布のパラメータ
ここで、パラメータは予測分布のハイパーパラメータから次のように求められます:
GitHubスターのお願い#
クラス#
- class bayesml.hiddenmarkovnormal.GenModel(c_num_classes, c_degree, *, pi_vec=None, a_mat=None, mu_vecs=None, lambda_mats=None, h_eta_vec=None, h_zeta_vecs=None, h_m_vecs=None, h_kappas=None, h_nus=None, h_w_mats=None, seed=None)#
ベースクラス:
Generative確率的データ生成モデルと事前分布
- パラメータ:
- c_num_classesint
正の整数
- c_degreeint
正の整数
- pi_vecnumpy.ndarray, optional
\([0, 1]\) の実数のベクトルで、デフォルトでは [1/c_num_classes, 1/c_num_classes, ..., 1/c_num_classes] となります。その要素の和は 1.0 でなければなりません。
- a_matnumpy.ndarray, optional
実数の行列で、範囲は \([0, 1]\) です。デフォルトでは、[1/c_num_classes, 1/c_num_classes, ..., 1/c_num_classes] を積み重ねて得られる行列となります。各行ベクトルの要素の和は 1.0 でなければなりません。単一のベクトルが入力された場合、ブロードキャストされます。
- mu_vecsnumpy.ndarray, optional
実数のベクトルで、デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- lambda_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列です。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- h_eta_vecnumpy.ndarray, optional
正の実数のベクトル。デフォルトでは [1/2, 1/2, ..., 1/2] です。
- h_zeta_vecsnumpy.ndarray, optional
正の数のベクトル。デフォルトでは、要素がすべて 1/2 であるベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- h_m_vecsnumpy.ndarray, optional
実数のベクトル。デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- h_kappasfloat or numpy.ndarray, optional
正の実数。デフォルトでは [1.0, 1.0, ..., 1.0] です。単一の実数が入力された場合、それはブロードキャストされます。
- h_nusfloat or numpy.ndarray, optional
「c_degree-1」より大きい実数。デフォルトでは [c_degree, c_degree, ..., c_degree] です。単一の実数が入力された場合、ブロードキャストされます。
- h_w_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列です。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- seed{None, int}, optional
numpy.random.default_rng() を初期化するシード値です。デフォルトでは None
メソッド
事前分布からパラメータを生成します。
gen_sample(sample_length)確率的データ生成モデルからサンプルを生成します。
GenModel の定数を取得します。
事前分布のハイパーパラメータを取得します。
確率的データ生成モデルのパラメータを取得します。
load_h_params(filename)h_paramsにハイパーパラメータをロードします。
load_params(filename)save_paramsに保存されたパラメータをロードします。save_h_params(filename)python
pickleモジュールを使ってハイパーパラメータを保存します。save_params(filename)python の
pickleモジュールを使ってパラメータを保存します。save_sample(filename, sample_length)生成されたサンプルを NumPy
.npzフォーマットで保存します。set_h_params([h_eta_vec, h_zeta_vecs, ...])事前分布のハイパーパラメータを設定します。
set_params([pi_vec, a_mat, mu_vecs, lambda_mats])確率的データ生成モデルのパラメータを設定します。
visualize_model([sample_length])確率的データ生成モデルと生成されたサンプルを可視化します。
- get_constants()#
GenModel の定数を取得します。
- set_params(pi_vec=None, a_mat=None, mu_vecs=None, lambda_mats=None)#
確率的データ生成モデルのパラメータを設定します。
- パラメータ:
- pi_vecnumpy.ndarray, optional
\([0, 1]\) の実数のベクトルで、デフォルトでは [1/c_num_classes, 1/c_num_classes, ..., 1/c_num_classes] となります。その要素の和は 1.0 でなければなりません。
- a_matnumpy.ndarray, optional
実数の行列で、範囲は \([0, 1]\) です。デフォルトでは、[1/c_num_classes, 1/c_num_classes, ..., 1/c_num_classes] を積み重ねて得られる行列となります。各行ベクトルの要素の和は 1.0 でなければなりません。単一のベクトルが入力された場合、ブロードキャストされます。
- mu_vecsnumpy.ndarray, optional
実数のベクトルで、デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- lambda_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列です。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- set_h_params(h_eta_vec=None, h_zeta_vecs=None, h_m_vecs=None, h_kappas=None, h_nus=None, h_w_mats=None)#
事前分布のハイパーパラメータを設定します。
- パラメータ:
- h_eta_vecnumpy.ndarray, optional
正の実数のベクトル。デフォルトでは [1/2, 1/2, ..., 1/2] です。
- h_zeta_vecsnumpy.ndarray, optional
正の数のベクトル。デフォルトでは、要素がすべて 1/2 であるベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- h_m_vecsnumpy.ndarray, optional
実数のベクトル。デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- h_kappasfloat or numpy.ndarray, optional
正の実数。デフォルトでは [1.0, 1.0, ..., 1.0] です。単一の実数が入力された場合、それはブロードキャストされます。
- h_nusfloat or numpy.ndarray, optional
「c_degree-1」より大きい実数。デフォルトでは [c_degree, c_degree, ..., c_degree] です。単一の実数が入力された場合、ブロードキャストされます。
- h_w_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列です。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- get_params()#
確率的データ生成モデルのパラメータを取得します。
- 返り値:
- params{str:float, numpy.ndarray}
"pi_vec":self.pi_vecの値"a_mat":self.a_matの値"mu_vecs":self.mu_vecsの値"lambda_mats":self.lambda_matsの値
- get_h_params()#
事前分布のハイパーパラメータを取得します。
- 返り値:
- h_params{str:float, np.ndarray}
"h_eta_vec":self.h_eta_vecの値"h_zeta_vecs":self.h_zeta_vecsの値"h_m_vecs":self.h_m_vecsの値"h_kappas":self.h_kappasの値"h_nus":self.h_nusの値"h_w_mats":self.h_w_matsの値
- gen_params()#
事前分布からパラメータを生成します。
生成された値を確認するには、self.get_params() を使用してください。
- gen_sample(sample_length)#
確率的データ生成モデルからサンプルを生成します。
- パラメータ:
- sample_lengthint
正の整数
- 返り値:
- xnumpy ndarray
形状が
(sample_length,c_degree)である2次元配列です。その要素は実数です。- znumpy ndarray
形状が
(sample_length,c_num_classes)で、各行がone-hotベクトルからなる2次元配列です。
- save_sample(filename, sample_length)#
生成されたサンプルを NumPy
.npzフォーマットで保存します。キーワード「x」、「z」を指定して、NpzFileとして保存されます。
- パラメータ:
- filenamestr
サンプルを保存するファイル名。ない場合は
.npzが追加されます。- sample_lengthint
正の整数
- visualize_model(sample_length=200)#
確率的データ生成モデルと生成されたサンプルを可視化します。
- パラメータ:
- sample_lengthint, オプション
正の整数、デフォルトは100
例
>>> from bayesml import hiddenmarkovnormal >>> import numpy as np >>> model = hiddenmarkovnormal.GenModel( c_num_classes=2, c_degree=1, mu_vecs=np.array([[5],[-5]]), a_mat=np.array([[0.95,0.05],[0.1,0.9]])) >>> model.visualize_model() pi_vec: [0.5 0.5] a_mat: [[0.95 0.05] [0.1 0.9 ]] mu_vecs: [[ 5.] [-5.]] lambda_mats: [[[1.]] [[1.]]]
- class bayesml.hiddenmarkovnormal.LearnModel(c_num_classes, c_degree, *, h0_eta_vec=None, h0_zeta_vecs=None, h0_m_vecs=None, h0_kappas=None, h0_nus=None, h0_w_mats=None, seed=None)#
ベースクラス:
Posterior,PredictiveMixin事後分布と予測分布
- パラメータ:
- c_num_classesint
正の整数。
- c_degreeint
正の整数。
- h0_eta_vecnumpy.ndarray, optional
正の実数のベクトルで、デフォルトでは [1/2, 1/2, ..., 1/2] です。実数が入力された場合、ブロードキャスト処理が行われます。
- h0_zeta_vecsnumpy.ndarray, optional
正の数のベクトル。デフォルトでは、すべての要素が 1.0 であるベクトルです。実数または単一のベクトルが入力された場合、ブロードキャスト処理が行われます。
- h0_m_vecsnumpy.ndarray, optional
実数のベクトル。デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- h0_kappasfloat or numpy.ndarray, optional
正の実数。デフォルトでは [1.0, 1.0, ..., 1.0] です。単一の実数が入力された場合、ブロードキャストされます。
- h0_nusfloat or numpy.ndarray, optional
c_degree-1 より大きい実数(デフォルトは c_degree)。単一の実数が入力された場合、ブロードキャストされます。
- h0_w_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列となります。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- seed{None, int}, optional
numpy.random.default_rng()を初期化するためのシード。デフォルトはNone。
- 属性:
- h0_w_mats_invnumpy.ndarray
h0_w_mats の逆行列
- hn_eta_vecnumpy.ndarray
正の実数のベクトル
- hn_zeta_vecsnumpy.ndarray
正の数のベクトル
- hn_m_vecsnumpy.ndarray
実数のベクトル
- hn_kappasnumpy.ndarray
正の実数
- hn_nusnumpy.ndarray
c_degree-1 より大きい実数
- hn_w_matsnumpy.ndarray
正定値対称行列
- hn_w_mats_invnumpy.ndarray
hn_w_mats の逆行列
- vlfloat
実数
- p_mu_vecsnumpy.ndarray
実数のベクトル
- p_nusnumpy.ndarray
正の実数
- p_lambda_matsnumpy.ndarray
正定値対称行列
メソッド
予測分布のパラメータを計算します。
estimate_latent_vars(x[, loss, viterbi])指定された基準に基づいて潜在変数を推定します。
estimate_latent_vars_and_update(x[, loss, ...])潜在変数を推定し、事後分布を逐次的に更新します。
estimate_params([loss])与えられた基準に基づいたパラメータ推定
LearnModel の定数を取得します。
事前分布のハイパーパラメータを取得します。
事後分布のハイパーパラメータを取得します。
予測分布のパラメータを取得します。
load_h0_params(filename)h0_paramsにハイパーパラメータをロードします。
load_hn_params(filename)hn_paramsにハイパーパラメータをロードします。
make_prediction([loss])与えられた基準の下で、新しいデータ点を予測します。
overwrite_h0_params()事後分布のハイパーパラメータの初期値を学習した値で上書きします。
pred_and_update(x[, loss, max_itr, ...])逐次的に新しいデータ点を予測し、事後分布を更新します。
reset_hn_params()事後分布のハイパーパラメータを初期値に戻します。
save_h0_params(filename)python
pickleモジュールを使ってハイパーパラメータを保存します。save_hn_params(filename)python
pickleモジュールを使ってハイパーパラメータを保存します。set_h0_params([h0_eta_vec, h0_zeta_vecs, ...])事前分布のハイパーパラメータを設定します。
set_hn_params([hn_eta_vec, hn_zeta_vecs, ...])事後分布のハイパーパラメータを設定します。
update_posterior(x[, max_itr, num_init, ...])訓練データを用いて事後分布を更新します。
パラメータの事後分布を可視化します。
- get_constants()#
LearnModel の定数を取得します。
- set_h0_params(h0_eta_vec=None, h0_zeta_vecs=None, h0_m_vecs=None, h0_kappas=None, h0_nus=None, h0_w_mats=None)#
事前分布のハイパーパラメータを設定します。
- パラメータ:
- h0_eta_vecnumpy.ndarray, optional
正の実数のベクトルで、デフォルトでは [1/2, 1/2, ..., 1/2] です。実数が入力された場合、ブロードキャスト処理が行われます。
- h0_zeta_vecsnumpy.ndarray, optional
正の数のベクトル。デフォルトでは、すべての要素が 1.0 であるベクトルです。実数または単一のベクトルが入力された場合、ブロードキャスト処理が行われます。
- h0_m_vecsnumpy.ndarray, optional
実数のベクトル。デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- h0_kappasfloat or numpy.ndarray, optional
正の実数。デフォルトでは [1.0, 1.0, ..., 1.0] です。単一の実数が入力された場合、ブロードキャストされます。
- h0_nusfloat or numpy.ndarray, optional
c_degree-1 より大きい実数(デフォルトは c_degree)。単一の実数が入力された場合、ブロードキャストされます。
- h0_w_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列となります。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- get_h0_params()#
事前分布のハイパーパラメータを取得します。
- set_hn_params(hn_eta_vec=None, hn_zeta_vecs=None, hn_m_vecs=None, hn_kappas=None, hn_nus=None, hn_w_mats=None)#
事後分布のハイパーパラメータを設定します。
- パラメータ:
- hn_eta_vecnumpy.ndarray, optional
正の実数のベクトルで、デフォルトでは [1/2, 1/2, ..., 1/2] です。実数が入力された場合、ブロードキャスト処理が行われます。
- hn_zeta_vecsnumpy.ndarray, optional
正の数のベクトル。デフォルトでは、すべての要素が 1.0 であるベクトルです。実数または単一のベクトルが入力された場合、ブロードキャスト処理が行われます。
- hn_m_vecsnumpy.ndarray, optional
実数のベクトル。デフォルトではゼロベクトルです。単一のベクトルが入力された場合、ブロードキャストされます。
- hn_kappasfloat or numpy.ndarray, optional
正の実数。デフォルトでは [1.0, 1.0, ..., 1.0] です。単一の実数が入力された場合、ブロードキャストされます。
- hn_nusfloat or numpy.ndarray, optional
c_degree-1 より大きい実数(デフォルトは c_degree)。単一の実数が入力された場合、ブロードキャストされます。
- hn_w_matsnumpy.ndarray, optional
正定値対称行列。デフォルトでは単位行列となります。単一の行列が入力された場合、ブロードキャスト処理が行われます。
- get_hn_params()#
事後分布のハイパーパラメータを取得します。
- update_posterior(x, max_itr=100, num_init=10, tolerance=1.0E-8, init_type='subsampling')#
訓練データを用いて事後分布を更新します。
- パラメータ:
- xnumpy.ndarray
(sample_length, c_degree) 次元の ndarray です。すべての要素は実数でなければなりません。
- max_itrint, オプション
反復回数の最大値(デフォルトは100)
- num_initint, オプション
初期化の回数(デフォルトは10)
- tolerancefloat, optional
変分下界の収束基準。デフォルトは 1.0E-8 です
- init_typestr, optional
'サブサンプリング':各潜在クラスについて、サイズがint(np.sqrt(x.shape[0]))となる部分サンプルを抽出します。そして、その平均と共分散行列をhn_m_vecsおよびhn_lambda_matsの初期値として使用します。'random_responsibility': gamma_vecs に負担率をランダムに割り当てます
初期化の種類。デフォルトは
'subsampling'です
- estimate_params(loss='squared')#
与えられた基準に基づいたパラメータ推定
この基準は、
pi_vec、a_mat、mu_vecs、および``lambda_mats``の推定にそれぞれ個別に適用される点にご注意ください。したがって、loss="KL" を指定した場合、ディリクレ分布、スチューデントのt分布、およびウィシャートの分布のタプルが返されます。- パラメータ:
- lossstr, optional
ベイズリスク関数の基礎となる損失関数で、デフォルトは「xxx」です。この関数では、「squared」、「0-1」、および「KL」がサポートされています。
- 返り値:
- Estimatestuple of {numpy ndarray, float, None, or rv_frozen}
pi_vec_hat:pi_vec の推定値a_mat_hat:a_mat の推定値mu_vecs_hat:mu_vecs の推定値lambda_mats_hat:lambda_mats の推定値
指定された損失関数に基づく推定値です。存在しない場合は、`np.nan`が返されます。損失関数が「KL」の場合、事後分布そのものがscipy.statsのrv_frozenオブジェクトとして返されます。
- visualize_posterior()#
パラメータの事後分布を可視化します。
例
>>> from bayesml import hiddenmarkovnormal >>> gen_model = hiddenmarkovnormal.GenModel( >>> c_num_classes=2, >>> c_degree=1, >>> mu_vecs=np.array([[2],[-2]]), >>> a_mat=np.array([[0.95,0.05],[0.1,0.9]]) >>> x,z = gen_model.gen_sample(100) >>> learn_model = hiddenmarkovnormal.LearnModel(c_num_classes=2, c_degree=1) >>> learn_model.update_posterior(x) >>> learn_model.visualize_posterior() hn_alpha_vec: [153.65657765 47.34342235] E[pi_vec]: [0.76446059 0.23553941] hn_zeta_vecs: [[147.64209251 5.51848792] [ 5.51448518 42.3249344 ]] E[a_mat] [[0.96396927 0.03603073] [0.11527074 0.88472926]] hn_m_vecs (equivalent to E[mu_vecs]): [[ 1.99456861] [-2.15581846]] hn_kappas: [154.15657765 47.84342235] hn_nus: [154.15657765 47.84342235] hn_w_mats: [[[0.00525177]] [[0.02569298]]] E[lambda_mats]= [[[0.8095951 ]] [[1.22924015]]]
- get_p_params()#
予測分布のパラメータを取得します。
- 返り値:
- p_paramsdict of {str: numpy.ndarray}
"p_v_mat":``self.p_v_mat``の値"p_mu_vecs":self.p_mu_vecsの値"p_nus":self.p_nusの値"p_lambda_mats":self.p_lambda_matsの値
- calc_pred_dist()#
予測分布のパラメータを計算します。
- make_prediction(loss='squared')#
与えられた基準の下で、新しいデータ点を予測します。
- パラメータ:
- lossstr, optional
ベイズリスク関数の基礎となる損失関数で、デフォルトでは「squared」です。この関数は「squared」と「0-1」をサポートしています。
- 返り値:
- Predicted_value{float, numpy.ndarray}
与えられた損失関数に基づく予測値です。
- pred_and_update(x, loss='squared', max_itr=100, num_init=10, tolerance=1.0E-8, init_type='random_responsibility')#
逐次的に新しいデータ点を予測し、事後分布を更新します。
h0_params は、x によって hn_params を更新する前に、現在の hn_params で上書きされます
- パラメータ:
- xnumpy.ndarray
それはc次元のベクトルでなければなりません
- lossstr, optional
ベイズリスク関数の基礎となる損失関数で、デフォルトでは「squared」です。この関数は「squared」と「0-1」をサポートしています。
- max_itrint, オプション
反復回数の最大値(デフォルトは100)
- num_initint, オプション
初期化の回数(デフォルトは10)
- tolerancefloat, optional
変分下限の収束基準。デフォルトは 1.0E-8 です
- init_typestr, optional
'random_responsibility':xi_matsとgamma_vecsに負担率をランダムに割り当てます'サブサンプリング':各潜在クラスについて、サイズがint(np.sqrt(x.shape[0]))となる部分サンプルを抽出します。そして、その平均と共分散行列をhn_m_vecsおよびhn_lambda_matsの初期値として使用します。
初期化の種類。デフォルトは
'random_responsibility'です
- 返り値:
- predicted_value{float, numpy.ndarray}
与えられた損失関数に基づく予測値です。
- estimate_latent_vars(x, loss='0-1', viterbi=True)#
指定された基準に基づいて潜在変数を推定します。
「viterbi」オプションが「True」の場合、この関数は、同時分布を最大化する潜在変数を推定します。「False」の場合、この関数は各時点において潜在変数を個別に推定します。
- パラメータ:
- xnumpy.ndarray
(sample_length, c_degree) 次元の ndarray です。すべての要素は実数でなければなりません。
- lossstr, optional
ベイズリスク関数の基礎となる損失関数で、デフォルトは「0-1」です。
viterbiオプションがTrueの場合、この関数は「0-1」のみをサポートします。それ以外の場合は、「0-1」、「squared」、および「KL」がサポートされます。- viterbibool, optional
「True」の場合、この関数は潜在変数をシーケンスとして推定します。
- 返り値:
- estimatesnumpy.ndarray
指定された損失関数に基づく推定値です。
viterbiオプションがFalseで、損失関数が "KL" の場合、各潜在変数の出現確率からなる要素を持つ numpy.ndarray として、周辺化された事後分布が返されます。
- estimate_latent_vars_and_update(x, loss='0-1', viterbi=True, max_itr=100, num_init=10, tolerance=1.0E-8, init_type='subsampling')#
潜在変数を推定し、事後分布を逐次的に更新します。
h0_params は、x によって hn_params を更新する前に、現在の hn_params で上書きされます
- パラメータ:
- xnumpy.ndarray
それはc次元のベクトルでなければなりません
- lossstr, optional
ベイズリスク関数の基礎となる損失関数で、デフォルトは「0-1」です。
viterbiオプションがTrueの場合、この関数は「0-1」のみをサポートします。それ以外の場合は、「0-1」、「squared」、および「KL」がサポートされます。- viterbibool, optional
「True」の場合、この関数は潜在変数をシーケンスとして推定します。
- max_itrint, オプション
反復回数の最大値(デフォルトは100)
- num_initint, オプション
初期化の回数(デフォルトは10)
- tolerancefloat, optional
変分下限の収束基準。デフォルトは 1.0E-8 です
- init_typestr, optional
'random_responsibility':xi_matsとgamma_vecsに負担率をランダムに割り当てます'サブサンプリング':各潜在クラスについて、サイズがint(np.sqrt(x.shape[0]))となる部分サンプルを抽出します。そして、その平均と共分散行列をhn_m_vecsおよびhn_lambda_matsの初期値として使用します。
初期化の種類。デフォルトは
'random_responsibility'です
- 返り値:
- estimatesnumpy.ndarray
指定された損失関数に基づく推定値です。
viterbiオプションがFalseで、損失関数が "KL" の場合、各潜在変数の出現確率からなる要素を持つ numpy.ndarray として、周辺化された事後分布が返されます。