問題タブ [bayesian-networks]

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.

0 投票する
5 に答える
3349 参照

java - Scala のベイジアン ネットワーク

ベイズ ネットを作成し、Scala (またはより良い解決策がない場合は Java) で学習と推論を実行するためのライブラリを探しています。ライブラリは積極的に維持され、パフォーマンスが高く、できれば簡単で、使用法が本当に単純でない限り、十分に文書化されている必要があります。無料、オープンソース、および商用の代替手段は問題ありませんが、商用ソリューションの場合は無料試用版が必要です.

理想的なソリューションは、.NET の世界では Microsoft Research による Infer.NET と同等ですが、より詳細に文書化されています。

前もって感謝します!

0 投票する
1 に答える
75 参照

statistics - パッセージ:使用例

誰かPassage、PARallel SAmpler GENerator を使ったことがありますか?

私にとって非常に役立つ可能性がありますが、私が見つけた唯一のドキュメントは、Github の 3 行の README (https://github.com/cscherrer/passage) と、Hackage の簡潔な API です。

それを実行する方法の簡単な例は素晴らしいでしょう!

0 投票する
3 に答える
617 参照

probability - なぜv構造は確率的影響の流れに寄与しないのですか?

私は最近、x-> W <-Yの関係で、XはyXに影響を与えず、WはWと因果関係があり、WはYと明白な関係があるというビデオを調べました。XはYに影響を与えませんか?

0 投票する
3 に答える
8017 参照

java - Javaを使用したベイジアンネットワーク用のAPI

Javaを使用して影響図のベイジアンネットワークを構築するためのAPIはありますか?

0 投票する
1 に答える
79146 参照

data-mining - 決定木と単純ベイズ分類器

私はさまざまなデータ マイニング手法について調査を行っていますが、理解できないものに出会いました。誰かが素晴らしいだろうという考えを持っているなら。

デシジョン ツリーを使用する方が適切な場合と、単純ベイズ分類器を使用する方が適切な場合はどれですか?

特定の場合にそれらのいずれかを使用するのはなぜですか? そして、別のケースで他の?(アルゴリズムではなく、その機能を見ることによって)

これについて説明や参考文献はありますか?

0 投票する
2 に答える
1272 参照

probability - ベイジアンネットワークの設計:「状態」と「ノード」の違いを理解する

プログラム「Hugin Lite」を使用して小さなベイジアンネットワークを設計しています。問題は、「ノード」(視覚的な円) と「状態」(魔女はノードの「フィールド」) の違いを理解するのが難しいことです。

明確な例と、理解できない例を書きます。

私が理解している例:
2 人の女性 (W1 と W2) と 1 人の男性 (M) がいます。
M は W1 を持つ子供をもうけます。子供の名前は C1
で、M は W2 の子供をもうけます。子供の名前:C2

結果のネットワークは次のとおりです。

ここに画像の説明を入力

すべてのノード (W1、W2、M、C1、C2) の 4 つの可能な状態は次のとおりです。

  • AA: その人は2つの遺伝子「A」を持っています
  • Aa/aA: その人は遺伝子「A」と遺伝子「a」をそれぞれ1つずつ持っています
  • aa: その人は「a」という2つの遺伝子を持っています

今、私が理解できない例:

与えられたデータ:

  • 人が外国にいる間(旅行中)の支払いの合計(承認されているかどうか):5%(もちろん、取引の95%は本国で行われた取引です)
  • 旅行中の未承認の支払い: 1%
  • 母国にいる間の承認されていない支払い: 0.2%
  • 本国にいる間および外国の会社への承認されていない支払い: 10%
  • 本国および外国企業への承認された支払い: 1%
  • 旅行中および外国への合計(承認済みまたは承認されていない)の支払い:90%

私が描いたのは以下です。

ここに画像の説明を入力

しかし、それが正しいかどうかはわかりません。どう思いますか?次に、各ノードの「確率表」を満たすことになっています。でも何を書けばいいの?

確率表: ここに画像の説明を入力

ネットワークの正確性とテーブルを埋める方法についてのヒントは本当にありがたいです.

0 投票する
1 に答える
743 参照

google-app-engine - GoogleGoのGoroutinesを使用してベイジアンネットワークを作成する

私は哲学的な議論の大規模なデータセットを持っており、それぞれが与えられたステートメントの証明または反証として他の議論に接続しています。ルートステートメントには多くの証明と反証が含まれる可能性があり、それぞれに証明と反証が含まれる場合があります。ステートメントは複数のグラフで使用することもでき、グラフは「与えられたコンテキスト」または仮定の下で分析できます。

各ノードが接続された引数に公平かつ正確に影響を伝播するように、関連する引数のベイジアンネットワークを構築する必要があります。接続されたノードのチェーンの確率を同時に計算できる必要があります。各ノードには、結果を取得するためにブロックする必要のあるデータストアルックアップが必要です。プロセスはほとんどI/Oバウンドであり、データストア接続はjava、go、python{googleappengine}で非同期に実行できます。各ルックアップが完了すると、確率デルタが無関係のしきい値{現在は0.1%}を下回るまで、接続されている他のすべてのノードに効果が伝播されます。プロセスの各ノードは、接続のチェーンを計算してから、すべてのクエリのすべての結果を合計して有効性の結果を調整する必要があります。結果は、接続された引数にチェーンされます。

無限に繰り返されるのを避けるために、私はゴルーチンでA *のようなプロセスを使用して、引数マップに更新を伝播することを考えていました。複利に基づくヒューリスティックは、影響の確率が0.1%を下回ると、ノードを無視します。SQLトリガーを使用して計算を設定しようとしましたが、複雑で面倒な方法が速すぎました。次に、非同期のnosqlを利用するためにGoogle AppEngineに移行しました。それは優れていましたが、それでも遅すぎました。迅速なUIを取得するために十分な速度で更新を実行する必要があるため、ユーザーが証明または反証を作成または賛成または反対すると、UIに反映された結果をすぐに確認できます。

Goは、必要な並行性をサポートするために選択する言語だと思いますが、私は提案を受け入れています。クライアントは、XHRとWebSocketを使用して引数マップ{およびその更新}をリアルタイムでプッシュおよびプルするモノリシックJavaScriptアプリです。私は10〜15秒で大きなチェーンを計算できるJavaプロトタイプを持っていますが、パフォーマンスの監視は、私のランタイムのほとんどがConcurrentHashMapからの同期とオーバーヘッドで浪費されていることを示しています。

試してみる価値のある他の非常に並行性の高い言語がある場合は、私に知らせてください。私はjava、python、go、ruby、scalaを知っていますが、自分のニーズに合っていれば、どの言語でも学習できます。

同様に、巨大なベイジアンネットワークのオープンソース実装がある場合は、提案を残してください。

0 投票する
1 に答える
1319 参照

matlab - 自由エネルギー強化学習の実装

私はここで説明されているアルゴリズムを実装しようとしていて、同じ論文で説明されている「大規模なアクションタスク」でそれをテストしています。

アルゴリズムの概要:

ここに画像の説明を入力してください

簡単に言うと、アルゴリズムは以下に示す形式のRBMを使用して、ネットワーク構成の自由エネルギーがその状態アクションペアに与えられた報酬信号と等しくなるように重みを変更することにより、強化学習の問題を解決します。

アクションを選択するために、アルゴリズムは状態変数を固定したままギブスサンプリングを実行します。十分な時間があれば、これにより、自由エネルギーが最も低く、特定の状態に対して最も高い報酬が得られるアクションが生成されます。

大規模アクションタスクの概要:

ここに画像の説明を入力してください

実装に関する作成者のガイドラインの概要:

13個の隠れた変数を持つ制限付きボルツマンマシンは、12ビットの状態空間と40ビットのアクション空間を持つ大規模なアクションタスクのインスタンス化でトレーニングされました。13の主要な州がランダムに選択されました。ネットワークは12,000のアクションで実行され、トレーニングの過程で学習率は0.1から0.01になり、温度は1.0から0.1に指数関数的に変化しました。各反復はランダムな状態で初期化されました。各アクションの選択は、ギブスサンプリングの100回の反復で構成されていました。

重要な省略された詳細:

  • バイアスユニットが必要でしたか?
  • 体重減少が必要でしたか?もしそうなら、L1またはL2?
  • ウェイトやアクティベーションにスパース性の制約が必要でしたか?
  • 最急降下法の変更はありましたか?(例:勢い)
  • これらの追加メカニズムにはどのようなメタパラメータが必要でしたか?

私の実装:

当初は、作者がガイドラインに記載されている以外のメカニズムを使用していないと想定していたため、バイアスユニットなしでネットワークをトレーニングしてみました。これはほぼ偶然のパフォーマンスにつながり、使用されたいくつかのメカニズムが作者によって「自明」であると見なされ、したがって省略されたに違いないという事実への私の最初の手がかりでした。

上記のさまざまな省略されたメカニズムを試してみて、次を使用して最良の結果を得ました。

  • softmax隠しユニット
  • .9の勢い(.5から5回目の反復まで)
  • 隠れ層と可視層のバイアス単位
  • 著者によってリストされたものの1/100の学習率。
  • .0002のl2重量減衰

しかし、これらすべての変更を加えても、タスクでの私のパフォーマンスは、12000回の反復後の平均報酬が約28でした。

各反復のコード:

私が求めているもの:

したがって、このアルゴリズムを適切に機能させることができれば(著者は、12000回の反復後に平均で最大40の報酬を得ると主張しています)、私は非常に感謝しています。

私のコードが明らかに間違ったことをしているように見える場合は、それに注意を向けることも素晴らしい答えになります。

著者が省略したことは、私よりもエネルギーベースの学習の経験が豊富な人にとって確かに明白であることを願っています。その場合、実際の実装に含める必要があるものを単に指摘します。

0 投票する
1 に答える
360 参照

machine-learning - このシナリオに適した機械学習アルゴリズムは何ですか?

私は次のような機械学習の問題に取り組んでいます:

入力変数

出力変数

私が直面している大きな問題は、出力変数が互いに完全に独立しているわけではなく、それらの間に確立できる関係がないということです。つまり、依存関係はありますが、因果関係によるものではありません(一方の値が高いということは、もう一方の値も高くなることを意味するわけではありませんが、他の値が高くなる可能性は高くなります)

例は次のとおりです。

v-広告の表示回数

x-広告クリック数

y-コンバージョン数

z-収益

現在、広告がクリックされるには、最初に検索に表示される必要があるため、クリックはインプレッションに多少依存します。

繰り返しになりますが、広告を変換するには、最初にクリックする必要があるため、変換はクリックに多少依存します。

したがって、各出力変数を予測する問題の4つのインスタンスを実行することは、私には意味がありません。実際、暗黙の依存関係を処理して、4つすべてを一緒に予測する方法があるはずです。

しかし、ご覧のとおり、直接的な関係はありません。実際、関与している可能性はありますが、手動で解決することはできません。

さらに、出力変数はカテゴリではありませんが、実際には離散および連続です。

この問題を解決する方法に関する入力。また、同じものの既存の実装と、ソリューションを迅速に実装するために使用するツールキットについても説明します。

ランダムな推測-この問題はベイジアンネットワークの対象になると思います。どう思いますか ?

0 投票する
2 に答える
3620 参照

matlab - BNT gaussian_CPDの簡単な例/ユースケース?

BNTとMATLABを使用して単純ベイズ分類器を実装しようとしています。これまでのところ、私は単純なtabular_CPD変数と変数の「推定」確率に固執してきました。これまでの私のプロトタイプネットは、次のもので構成されています。

ここで、変数1は私の希望する出力変数であり、最初にいずれかの出力クラスに.5の確率を割り当てるように設定されています。

変数2〜5は、私が測定する機能のCPDを定義します。

  • 2はクラスターサイズで、1から12以上の範囲です。
  • 3は、実際の値>=1になる比率です。
  • 4と5は標準偏差(実際の)値です(XとYのばらつき)

候補クラスターを分類するために、次のように、すべての特徴測定値を3〜4の範囲ブラケットに分割します。

範囲括弧と確率値だけを推測していることを考えると、これは実際にはかなりうまく機能します。しかし、ここで使用する必要gaussian_CPDがあるのはです。aは、最適なブラケットと確率の両方を(平均および共分散行列と重みとして)学習できると思います。gaussian_CPD

私の問題は、BNTクラスがどのように使用されているかの簡単な例が見つからないことです。たとえば、上記の変数の1つとほぼ同じ動作にgaussian_CPD初期化するにはどうすればよいですか?gaussian_CPDtabular_CPD