問題タブ [markov-models]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - マルコフ連鎖 - 「目に見えない」観測値を持つサンプルの可能性 (確率 0)
尤度を計算したい大きなマルコフ連鎖とサンプルがあります。問題は、サンプル内の一部の観測または遷移がマルコフ連鎖で発生しないことです。これにより、全尤度が 0 (または対数尤度 - 無限大) になります。これ以上のデータを使用してマルコフ連鎖を構築することはできません。有意義な可能性を維持する方法があるかどうか疑問に思っていました。
サンプル内のこれらの「不明な」観測を除外して、個別に報告しようとしました。しかし、それに関する問題は、サンプルの可能性を同じサンプルの可能性と比較したいということですが、変換後です。変換されたサンプルには、異なる量の「不明な」観測値があります。したがって、これら 2 つの可能性を比較することはできないと思います。異なる量の観測値で計算されているためです。
比較できる有意義な可能性を計算する方法はありますか? サンプル内の観測値の確率を平均化することを考えていましたが、それが正しいことについて何も見つかりません。
前もって感謝します!
linear-algebra - 遷移行列の自己積の各行の合計が 1 であることの証明
遷移行列の自己積の各行の合計が 1 であることを証明できません...
A を、A の各行の合計が 1 になることを意味する遷移確率行列とし、P=A*A とします。
P が有効な遷移行列でもあること、つまり P の各行の合計が 1 であることを証明したい。
助けてください。
よろしく。
java - Javaにおけるマルコフモデルの決定プロセス
Java で支援学習アルゴリズムを作成しています。
おそらく解決できる数学的問題に遭遇しましたが、処理が重くなるため、最適な解決策が必要です。
そうは言っても、完全に素晴らしい最適化されたライブラリを誰かが知っていれば、言語は Java であるため、考慮する必要があります。
アイデアはかなり単純です。
オブジェクトは、ABDC、ACDE、DE、AE などの変数の組み合わせを格納します。
組み合わせの最大数は、プログラムの速度を落とさずに実行できる数に基づいているため、理論的には 100 と言えます。
決定プロセスは、反復ごとに 1 つの確率変数を生成します。生成された変数がいずれかの組み合わせの一部である場合。ABDC と ACDE の一部である 'A' は、C と B (または保存された組み合わせの後続の文字) の傾向よりも増加します。
もう少し明確にするために、「A」、「B」、「C」、「D」、および「E」が唯一の可能な変数であると仮定しましょう。真実は、12 または 14 のように多くなるということですが、その最大値は、ラグなしで処理できる数にも依存します。
考えられる変数は 5 つあるため、最初の反復では加重 1/5 のランダム ロールが生成されます。そのロールが「A」であることが判明した場合、次の反復で「B」と「C」の傾向は 1/5 ではなく 2/5 になります。
次の反復で「B」が生成された場合、「D」の傾向は 3/5 に増加します。注: 関係は指数関数的です。現実的には、1/5 ではなく 10% のようなわずかなブーストであり、シーケンスの 4 番目の変数に達すると雪だるま式に 50% になります。
現在、Java では、各オブジェクトの格納されたすべての組み合わせを追跡することで、おそらくこの機能を実現できます。私は、追跡プロセスを反復ごとに小さなステップで分散することにより、遅すぎてはならないと考えていました。
別の解決策は、考えられるすべての組み合わせとそれらの潜在的な傾向をマッピングすることです。もちろん、これには単純に検索機能が必要ですが、すべての可能性を計算してどこかに (おそらくファイルに) 保存する際にも問題が生じます。
私はこの型の数学にあまり詳しくありませんが、マルコフ モデルやライブラリを使用する必要があると提案されました。
このプロセスをJavaですばやく計算するにはどうすればよいですか?
.
例 >>>
シーケンス ABC は 1 つだけです。
3 つの数値の場合、最初は等しい可能性があるため、rand(1,3) のようになります。
A が結果の場合、B はシーケンスの次の文字であるため、B の可能性が高くなります。それを2倍にするとしましょう。
したがって、確率は次のようになります: A=1/4、C=1/4、B=2/4
関数は rand(1,4) のようになり、3 と 4 の結果はどちらもオプション B を表します。
次の結果が B の場合、C はシーケンス内の次の文字であるため、C の可能性を増やしたいと考えていますが、前回の増加の 2 倍 (指数関数的に) です。
確率は次のようになりました: A=1/6、C=1/6、B=4/6
関数は rand(1/6) になり、値 3、4、5、6 は C を表します。
machine-learning - 直感的なマルコフ ネットワーク (MRF) チュートリアル?
マルコフネットワーク (MRF) の基礎について知りたいです。このテーマに関する直感的なチュートリアルを知っている人はいますか。無向グラフィカルモデルに関する非常に基本的な情報が必要です。たとえば、単純な無向グラフ(ABCなど)の同時分布と条件付き確率を計算する方法は?
algorithm - 高次元マルコフ スイッチング/HMM モデルを推定するための尤度関数の期待値と直接の数値最適化
私は現在、対数尤度関数の直接最適化を使用して (前方後方アルゴリズムを介して)、多くのパラメーターを持つマルコフ スイッチング モデルを推定しています。尤度関数が非常に高次元であるだけでなく、多くのローカルな最大値であり、高度に非線形です。遺伝的アルゴリズムは非常にうまく機能しているようです。ただし、問題の次元をさらに大きくする予定です。マルコフ スイッチング モデルを推定する EM アルゴリズムについて読んだことがあります。私が理解していることから、このアルゴリズムは増加する対数尤度値のシーケンスを解放します。したがって、非常に多くのパラメータを持つモデルを推定するのに適しているようです。
私の質問は、EM アルゴリズムが多くのパラメーターを含む私のアプリケーションに適しているかどうかです (おそらく、遺伝的アルゴリズムとして適しています)。速度は主な制限ではありません (遺伝的アルゴリズムはすでに非常に遅いです) が、最終的に大域的最適値に近づき、多くの局所的最適値の 1 つに遭遇しないようにするためには、ある程度の確実性が必要です。これに関する経験や提案はありますか?
hidden-markov-models - マルコフ決定プロセス: 異なる状態につながる同じアクション
先週、推奨システムの代替ソリューションとして MDP を提案する論文を読みました。その論文の核心は、MDP、つまり状態、アクション、遷移確率、報酬関数などに関する推奨プロセスの表現でした。
簡単にするために単一ユーザー システムを想定すると、状態は k-タプルのように見えます(x1, x2, .. , xk)
。ここで、最後の要素 xk は、ユーザーが購入した最後のアイテムを表します。たとえば、現在の状態が(x1, x2, x3)
、ユーザーが x1、次に x2、次に x3 を時系列で購入したことを意味するとします。x4 を購入すると、新しい状態は になります(x2, x3, x4)
。
さて、論文が示唆していることは、これらの状態遷移はアクションによって引き起こされるということです。アクションは「アイテム x_i をユーザーに推奨する」ことです。しかし問題は、そのようなアクションが複数の状態につながる可能性があることです。
たとえば、現在の状態が(x1, x2, x3)
で、アクションがユーザーに「x4 を推奨する」場合、考えられる結果は 2 つのうちの 1 つになる可能性があります。
ユーザーは x4 の推奨を受け入れ、新しい状態は(x2, x3, x4)
、ユーザーが x4 の推奨を無視する (つまり、何か他のものを購入する) になり、新しい状態は(x2, x3, xi)
、xi != x4 の任意の状態になります。
私の質問は、MDP は実際に 2 つ以上の異なる状態をトリガーする同じアクションをサポートしていますか?
アップデート。単純に「アイテムx_iの推薦を受ける」ではなく、「アイテムx_iの推薦を受けて受け入れる」「アイテムx_iの推薦を受けて拒否する」というアクションを定式化する必要があると思います。