問題タブ [markov-chains]
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.
python - scipyで正しい(マルコフ)定常確率を与えない左固有ベクトル
次のマルコフ行列があるとします。
定常確率が存在し、 に等しくなり[.6, .4]ます。これは、行列の大きな累乗を取ることで簡単に確認できます。
ここB[0] = [0.6, 0.4]に。ここまでは順調ですね。ウィキペディアによると:
定常確率ベクトルは、遷移行列の適用下で変化しないベクトルとして定義されます。つまり、固有値 1 に関連付けられた確率行列の左固有ベクトルとして定義されます。
したがって、固有値が 1 の の左固有ベクトルを計算できるはずAです。これにより、定常確率も得られるはずです。Scipy の実装にeigは left キーワードがあります。
与えます:
つまり、支配的な左固有ベクトルは次のとおり[0.83205029, 0.5547002]です。私はこれを間違って読んでいますか?[0.6, 0.4]固有値分解を使用してを取得するにはどうすればよいですか?
hidden-markov-models - マルコフ連鎖と隠れマルコフモデルの違いは何ですか?
マルコフ連鎖モデルと隠れマルコフモデルの違いは何ですか? ウィキペディアを読んだことがありますが、違いがわかりませんでした。
machine-learning - ギブス サンプリング コード
ここで、何らかのテストを使用してギブスサンプリングを実装した人はいますか? ギブス サンプリングを実装する必要がありますが、実装レベルに落とし込むのに問題があります。
----テストデータをどこから、どのように選択するのですか?
----そのデータをもとにベイジアンネットワークを作るには?(私の理解では、サンプリングするベイジアンネットワークが必要でした。)
誰かがこれで私を導くことができれば、それは大きな助けになるでしょう....
statistics - イベントシリーズからの測定値を入力として指定した場合、同じプロファイルで無限の入力シリーズを生成するにはどうすればよいですか?
私は現在、一連のリクエストとシステムの状態に基づいてスケジュールを決定するシステムを使用しています。
実際の入力のストリームを取得し、一部のコンポーネントをモックアウトして、残りのコンポーネントに対してシミュレーションを実行したいと思います。アイデアは、システム容量に関する計画(つまり、特定のコンポーネントをいつスケーリングするか)、特定の障害モードの追跡、およびコードベースへの変更の影響の分析(つまり、バージョンAのシミュレーションとバージョンBのシミュレーションの比較)に使用することです。 。
適切な入力ストリームを生成することを除いて、これに関連するすべてを行うことができます。本番環境からの正確な入力を再生することは、私が見つけようとしている動作の一部を引き出すのに十分な長さのデータストリームを取得するのが難しいため、あまり役に立ちませんでした。言い換えれば、300日の入力で生産が失敗した場合、それが失敗するまで、私はそれを見つけるのに十分なデータを持っていません。同じ入力セットを繰り返すことが考慮されています。しかし、最初の数回の試行の後、開発者は全員、シミュレーションが「よりランダムに必要」であるように見えることに同意します。
この特定のシステムについて:
- 入力は、一連の不規則な間隔のイベント(つまり、離散時間と連続状態空間を伴う確率過程)です。
- プロパティは互いに独立していません。
- プロパティからさらに独立しているのは、他のプロパティの複合体であり、本質的に、私には常に見えません(マルチモーダル分布につながります)。
- リクエスト間隔は他のプロパティから独立していません(つまり、少量のリソースに対する大量のリクエストがバッチで処理されますが、大きなリクエストは処理されません)。
- その中にフィードバックループがあります。
- それはおそらく混沌としている。
それで:
さまざまなプロパティ(間隔を含む)の特定の分布を持つ入力イベントのストリームが与えられた場合、独立していない多数のプロパティにわたって同じ分布を持つイベントの無限のストリームを生成するにはどうすればよいですか?
周りを見回して、マルコフ連鎖モンテカルロシミュレーションを行う必要があると思います。私の問題は、既存の入力データからマルコフ連鎖を構築する方法を理解することです。
matlab - MATLAB の隠れマルコフ モデル
11 の状態と遷移確率行列がありますが、モデルが非表示になっていないため、排出量はありません。状態 (1,2,3, ..., 11) のみで構成されています。
遷移確率行列に基づいてランダムな状態を生成したいのですが、HMM ツール ボックスには出力確率行列が必要です。私は何をすべきか?
matlab - Matlabでの多次マルコフ連鎖遷移行列の構築
6つの状態の1次遷移行列は、次のように非常にエレガントに構築できます。
これが私の問題です。2次遷移行列をエレガントに構築するにはどうすればよいですか?私が思いついた解決策は次のとおりです
ワン/ツーライナー、ループなしの代替品はありますか?
-
編集:「x = round(5 * rand([1,1000])+ 1);」を使用して、自分のソリューションをAmroのソリューションと比較してみました。
なんという違いでしょう!参考までに、grp2idxはオンラインで入手できます。
r - 状態空間のサイズが 27 を超えると、R パッケージの VLMC が死ぬ
一部のマルコフ モデルに合わせて VLMC を使用していますが、アルファベット サイズが 28 になるとすぐに死んでしまいます。これは、デフォルトでアルファベットが 1 文字しか使用されていないためだと思いましたが、「code1char = FALSE」でも同じ動作をします。これは、この偽の例だけでなく、実際のデータについても当てはまります。
何か案は?
セグフォルトはこのBTWのように見えます。z が NA にマップされた後のアルファベットのように見え、これが配列バインドの問題を引き起こしています。
c# - C# のマルコフ決定プロセスのライブラリ
ロボットが 2D グリッドの世界を探索し、次に移動する正方形を決定する必要がある AI エンジンを作成するプロジェクトに取り組んでいます。使用できる既存の Markov ライブラリ (つまり、パラメーターを変更するだけ)、または存在するサンプルはありますか?
python - 労働者の生産性を最大化するためにCeleryタスクを排除する適切な方法は何ですか?
AIプロジェクト用の巨大なn-gramモデルを構築するシステムを開発しています。
私のパイプラインは次のとおりです。
リソース入力->データのフェッチ->パーサー->トレーナー
リソース入力(基本的には解析する必要のあるURL)は一定ではありません。つまり、一度に何千ものリソースを導入できます。 、後で数十の別のバルクなど。
私のアイデアは、パイプラインの各ステップをCeleryタスクとして実装し、それをクラウドにデプロイすることです(たとえば、Herokuのワーカーdynoを使用します)。しかし、私はCeleryを初めて使用し、これらのタスクをキューに入れて、ワーカーを100%で動作させ、同時にシステムの整合性を維持する方法について疑問を持っています。
簡単なアプローチは、前のタスクが終了するとすぐにタスクのキューイングを開始することです。たとえば、1000アイテムのリソース入力を取得した場合、1000個の「データのフェッチ」タスクをスケジュールし、各タスクは「終了時に「解析」タスクなど。しかし、これらのタスクが完了する前により多くのリソースが入ってくるため、これは巨大なキューにつながります。モデルの構築には数か月かかることを私は知っています(モデルが完了する場合)。
したがって、Celeryがメモリの問題(Herokuには限界があります)や、現在想像できないその他の問題に陥ることなく、これらすべてを処理できるかどうかはわかりません。または、X分ごとにタスクのチャンクをスケジュールしたり、データベースに部分的な結果を保存したりするなど、より複雑な手法を使用する必要があります。これにより、これらの問題の一部を回避できますが、ワーカーの時間は100%になりません。
何かご意見は?
ありがとう!
編集
私の質問への答えは、実際には受け入れられた答えのコメントにあります
python - 吸収マルコフ連鎖の基本行列を計算する最良の方法は?
私は非常にスパースな非常に大きな吸収マルコフ連鎖(問題のサイズに合わせてスケール-10状態から数百万)を持っています(ほとんどの状態は他の4つまたは5つの状態にしか反応できません)。
このチェーンの基本行列の1行を計算する必要があります(1つの開始状態が与えられた場合の各状態の平均頻度)。
通常、これは計算によって行います(I - Q)^(-1)が、スパース行列の逆アルゴリズムを実装する優れたライブラリを見つけることができませんでした。私はそれに関するいくつかの論文を見ました、それらのほとんどは博士号レベルの仕事です。
私のGoogleの結果のほとんどは、線形(または非線形)連立方程式を解くときに逆行列を使用するべきではないという投稿を示しています...特に役立つとは思いません。基本行列の計算は連立方程式を解くのと似ていますか?私は単に一方を他方の形で表現する方法がわかりませんか?
それで、私は2つの特定の質問を提起します:
スパース行列の逆行列の行(またはすべての行)を計算するための最良の方法は何ですか?
また
大きな吸収マルコフ連鎖の基本行列の行を計算するための最良の方法は何ですか?
Pythonソリューションは素晴らしいでしょう(私のプロジェクトは現在も概念実証であるため)が、古き良きFortranまたはCで手を汚さなければならない場合でも、それは問題ではありません。
編集:行列Aの逆行列はAB = Iとして定義できることに気づきました。ここで、Iは単位行列です。これにより、いくつかの標準的なスパース行列ソルバーを使用して逆行列を計算できるようになる可能性があります...逃げる必要があるので、自由に思考の列を完成させてください。財産...