問題タブ [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.
java - Javaでの再帰的アルゴリズムの最適化
バックグラウンド
順序付けられたデータポイントのセットがとして保存されていTreeSet<DataPoint>
ます。各データポイントには、aposition
とaSet
のEvent
オブジェクト(HashSet<Event>
)があります。
4つの可能なEvent
オブジェクト、、、、A
およびがありB
ます。サイズが1であるセットの最初と最後のオブジェクトを除いて、すべてにこれらの2つがあります(例:と)。C
D
DataPoint
A
C
DataPoint
T
私のアルゴリズムは、このセットDataPoint
Q
にある位置x
に新しいものがある確率を見つけることです。Event
q
これを行うには、このデータセットの値S
を計算してから、セットに追加Q
して再度計算S
します。次に、2番目を1番目で割ってS
、新しいの確率を分離しDataPoint
Q
ます。
アルゴリズム
計算式S
は次のとおりです。
http://mathbin.net/equations/105225_0.png
どこ
http://mathbin.net/equations/105225_1.png
http://mathbin.net/equations/105225_2.png
http://mathbin.net/equations/105225_3.pngの場合
と
http://mathbin.net/equations/105225_4.png
http://mathbin.net/equations/105225_5.pngは、引数のみに依存し、他には何も依存しない高価な確率関数です(およびhttp://mathbin.net/equations/105225_6.png)、http://mathbin 。 net /equations / 105225_7.pngDataPoint
はセットの最後(右側のノード)、 http://mathbin.net/equations/105225_8.pngは最初DataPoint
(左側のノード)、http://mathbin.net/equations/105225_9 .pngDataPoint
はノードではない右端、 http://mathbin.net/equations/105225_10.pngはDataPoint
、http://mathbin.net/equations/105225_12.pngはSet
このイベントのイベントですDataPoint
。
したがって、Q
withの確率Event
q
は次のとおりです。
http://mathbin.net/equations/105225_11.png
実装
私はこのアルゴリズムを次のようにJavaで実装しました。
したがって、での確率を見つけるQ
にx
はq
:
問題
現時点での実装は、数学アルゴリズムに厳密に従っています。ただし、これは実際には特に良いアイデアではないことがわかります。これf
は、それぞれに対して2回呼び出されるためDataPoint
です。したがって、http://mathbin.net/equations/105225_9.pngの場合、f
は2回呼び出され、その後n-1
f
、前の呼び出しごとに2回呼び出され、以下同様に続きます。これは、それぞれに1000を超える可能性があることを考えると、その複雑さO(2^n)
はかなりひどいものになります。パラメータ以外のすべてから独立しているため、キャッシュ関数を含めました。DataPoints
Set
p()
p()
これらのパラメータについてはすでに計算されており、前の結果を返すだけですが、これは固有の複雑さの問題を解決しません。繰り返しの計算に関してここで何かが欠けていますか、それともこのアルゴリズムの複雑さは避けられませんか?
java - べき乗するには大きすぎる値でマルコフ連鎖確率を計算する
マルコフ連鎖のレートとして式exp(X)を使用します。したがって、あるリンクを別のリンクよりも選択する比率は、exp(X1)/ exp(X2)です。私の問題は、Xが非常に大きい場合があるため、exp(X)がの範囲を超えることですdouble
。
または、X [i]の配列があり、一部のX [i]が非常に大きいため、exp(X [i])がの範囲をオーバーフローするdouble
場合、各iについてexp(X [i])/ Sを計算します。ここで、Sすべてのexp(X [i])の合計です。
string - 配列グループの比較と視覚化
「AGTE」という文字列の2 つのグループAとBがあり、これらを比較して統計的に類似しているかどうかを確認する方法を見つけたいと考えています。最初のグループ A は実際の観測で、B は予測です。各グループには約 400 人がいます。
また、実際にプレゼンテーションを目的として、これらを何らかの方法で視覚化できるようにしたいと考えています。どうすればそれができるようになるのか、何かアイデアはありますか?
matlab - 文字列がシーケンスに出現する回数をカウントします
マルコフ連鎖からのいくつかのシーケンスで構成される行列Xがあります。私には5つの州1、2、3、4、5があります。したがって、たとえば、行1はシーケンスであり、行2は別個の独立したシーケンスです。
状態1..5間の遷移の数を数えたいのですが。すなわち。1to1、1to2、1to3、1to4、1to5。2to1など。例:1to1は0回発生します。ただし、4to4は6回発生します。など。ゼロは無視できます。ゼロはExcelファイルのインポートによるアーティファクトです。
たとえば、この質問ですが、シーケンスは連結されています。さらに詳しい説明が必要な場合はお知らせください。
video - 高度なビデオ分析-それを噛む方法は?
次のようなアプリケーションを実行する必要があります。
- ビデオカメラからビデオデータをキャプチャし、
- いくつかの処理(モンテカルロ法、マルコフのフィールドとチェーンなど)を実行します。
- データをビデオファイルとして保存し、処理に関する情報を含む上面を強化します(たとえば、見つかったオブジェクトにマークが付けられます)。
- 将来の統計管理のために、すべて(ビデオ自体ではなくオブジェクトの位置など)をデータベースに保存します。
これらはすべて、リアルタイムで継続的に実行する必要があります。
私はデータベースプログラマー(C#、Java、Python)なので、私にとっては新しいものです...実行する必要のある処理についてはよく知っていると言われていますが、理論的には、どの言語を選択して開始するかを知っています。手順、計算...必要なのはツールだけです。
python - マルコフ連鎖の出力から段落を作成するにはどうすればよいですか?
以下のスクリプトを変更して、スクリプトによって生成されたランダムな数の文から段落を作成するようにします。つまり、改行を追加する前に、ランダムな数(1〜5など)の文を連結します。
スクリプトはそのままで問題なく動作しますが、出力は改行で区切られた短い文です。いくつかの文章を段落にまとめたいと思います。
ベストプラクティスに関するアイデアはありますか?ありがとう。
編集01:
さて、私は単純な「段落ラッパー」をまとめました。これは、文を段落にまとめるのにうまく機能しますが、文ジェネレーターの出力を台無しにしました。たとえば、最初の単語が過度に繰り返されています。問題。
しかし、その前提は健全です。文ループの機能が段落ループの追加によって影響を受けた理由を理解する必要があります。あなたが問題を見ることができるかどうかアドバイスしてください:
編集02:
sentence = []
以下の回答に従ってelif
ステートメントに追加されました。ウィットに;
編集03:
これは、このスクリプトの最後の反復です。これを整理するのに助けてくれて悲しんでくれてありがとう。他の人がこれを楽しんでくれることを願っています、私はそうすることを知っています。;)
参考:小さなアーティファクトが1つあります。このスクリプトを使用する場合は、余分な段落の終わりのスペースをクリーンアップする必要があります。しかし、それ以外は、マルコフ連鎖テキスト生成の完璧な実装です。
matlab - Matlab: パレート分布のマルコフ連鎖
私はよくマルコフ連鎖を使って一次自己回帰過程 AR(1) を近似しています。ここで、パレート分布から値を引き出したいと思います。このタイプの分布のマルコフ連鎖を構築する方法を知っている人はいますか? ポイントは、パレートの無限状態空間を n 個の格子点で近似することです。マルコフ連鎖のシミュレーションの時系列は、パレート分布をシミュレートするときの時系列と「似ている」はずです。
c# - マルコフ連鎖を特定のキーワードに導くことは可能ですか?
C# でソフトウェア エンジニアリング コースのチャット ボットを作成しています。
ウィキペディアの記事をコーパスとして使用し、マルコフ連鎖を使用してテキストを生成しています。ユーザーの入力に基づいて、(少なくともわずかに)インテリジェントな方法でユーザーの入力に応答するようにしたいのですが、その方法がわかりません。
私の現在の考えでは、ユーザーの入力からキーワードを抽出して、それらを使用して文の生成をガイドするというものです。しかし、マルコフ特性のために、キーワードは文の最初の単語でなければならず、ばかげているように見えるかもしれません。同様に、オーダー チェーンの場合、毎回ユーザーからキーワードを正確n
に抽出する必要があります。 n
ジェネレーターのデータは辞書であり、キーは単語のリストであり、値は単語のリストであり、キー内の単語の後に単語が出現する頻度に応じた重みが組み合わされています。以下のようなので:
これはコマンド ライン テスト プログラムで動作しn
ますが、生成されるテキストの各ビットにワード シードを提供しているだけです。
n
入力の最初/最後の単語やn
キーワードなどでチェーンをシードするのではなく、ユーザーが使用した近くの単語である単語をチェーンに優先させる方法があることを願っています。それを行う方法はありますか?
c - マルコフクリーン機能トラブル
このコードによって生成されたハッシュ テーブルをクリーンアップする関数を作成しようとしています。
これが私のきれいな機能のためにこれまでに持っているものです
私は正しい軌道に乗っていると思います。ハッシュ テーブルの各インデックスを調べてから、状態から状態へと移動し、接尾辞を解放します。各状態を解放する前にプレフィックスを解放する必要があるため、プレフィックスをどうすればよいかわかりません。どんな助けでも大歓迎です。
matlab - 行列の次元を超えるインデックス
私はこの低次再帰関数をmatlabで取得しようとしていました. ステータスである初期確率があると仮定して、次の時間ステップでサイトのステータスの確率を計算したいと思います。
そしてこれが私がやったことです!しかし、私のインデックスは常に行列の次元を超えています! これについて助けが必要です。
スタック トレースは次のとおりです。