問題タブ [bayesian]

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 投票する
2 に答える
5845 参照

java - Javaでトレーニングセットを選択するための相互情報量の計算

シナリオ


JavaGUIアプリケーション内のデータセットに対して教師あり学習を実装しようとしています。ユーザーには、検査するアイテムまたは「レポート」のリストが提供され、使用可能なラベルのセットに基づいてそれらにラベルが付けられます。教師あり学習が完了すると、ラベル付けされたインスタンスが学習アルゴリズムに渡されます。これにより、ユーザーがそれらを表示する可能性がどの程度あるかについて、残りのアイテムを並べ替えようとします。

ユーザーの時間を最大限に活用するために、レポートのコレクション全体に関するほとんどの情報を提供するレポートを事前に選択し、ユーザーにラベルを付けてもらいたいと思います。私が理解しているように、これを計算するには、各レポートのすべての相互情報量の値の合計を見つけて、その値で並べ替える必要があります。次に、教師あり学習からのラベル付きレポートを使用してベイジアンネットワークを形成し、残りの各レポートのバイナリ値の確率を見つけます。


ここで、人為的な例が説明に役立つ可能性があり、間違いなく間違った用語を使用した場合の混乱を解消する可能性があります:-)アプリケーションがユーザーにニュース記事を表示する例を考えてみましょう。表示されるユーザーの好みに基づいて、最初に表示するニュース記事を選択します。相関関係のあるニュース記事の特徴は、、country of originまたはcategoryですdate。したがって、ユーザーがスコットランドからのニュース記事を興味深いものとしてラベル付けすると、スコットランドの他のニュース記事がユーザーにとって興味深いものになる可能性が高くなることを機械学習者に伝えます。スポーツなどのカテゴリ、または2004年12月12日などの日付についても同様です。

この設定は、すべてのニュース記事の任意の順序(たとえば、カテゴリ別、日付別)を選択するか、ランダムに並べ替えてから、ユーザーが進むにつれて優先度を計算することで計算できます。私がやりたいのは、ユーザーに少数の特定のニュース記事を見て、それらに興味があるかどうかを言わせることによって、その注文の一種の「有利なスタート」を取得することです(教師あり学習の部分)。ユーザーに表示するストーリーを選択するには、ストーリーのコレクション全体を考慮する必要があります。ここで相互情報量が出てきます。各ストーリーについて、ユーザーが分類したときに、他のすべてのストーリーについてどれだけ教えてくれるか知りたいです。たとえば、スコットランドを起源とするストーリーが多数ある場合は、ユーザーにそのうちの1つを(少なくとも)分類してもらいたいと思います。カテゴリや日付などの他の相関機能についても同様です。目標は、分類されたときに他のレポートに関するほとんどの情報を提供するレポートの例を見つけることです。

問題


私の数学は少し錆びていて、機械学習に慣れていないので、相互情報量の定義をJavaの実装に変換するのに問題があります。ウィキペディアでは、相互情報量の方程式を次のように説明しています。

相互情報量方程式

しかし、何も分類されておらず、学習アルゴリズムがまだ何も計算していないときに、これが実際に使用できるかどうかはわかりません。

私の例のように、このクラスの新しいラベルのないインスタンスが多数あったとします。

私の特定のシナリオでは、フィールド/機能間の相関は完全一致に基づいているため、たとえば、1日と10年の日付の違いはそれらの不平等において同等です。

相関の要因(たとえば、日付はカテゴリよりも相関が高いですか?)は必ずしも等しいとは限りませんが、事前定義して一定にすることができます。これは、関数の結果が事前定義された値であることを意味しますかp(x,y) それとも用語を混同していますか?

質問 (ついに)


この(偽の)ニュース記事の例を前提として、相互情報量の計算を実装するにはどうすればよいですか?ライブラリ、javadoc、コード例などはすべて歓迎すべき情報です。また、このアプローチに根本的な欠陥がある場合は、その理由を説明することも同様に価値のある答えになります。


PS。私はWekaやApacheMahoutなどのライブラリを知っているので、それらについて言及するだけではあまり役に立ちません。私はまだ相互情報量に関するものを具体的に探しているこれら両方のライブラリのドキュメントと例を探しています。私が本当に役立つのは、これらのライブラリが相互情報量に役立つリソース(コード例、javadoc)を指すことです。

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

artificial-intelligence - NetHack ボットの構築: ベイジアン分析は良い戦略ですか?

私の友人は、NetHack ボット (ローグライク ゲームをプレイするボット: NetHack) の構築を始めています。似たようなゲームである Angband 用の非常にうまく機能するボットがありますが、部分的に機能するのは、町に戻るのが簡単で、アイテムを獲得するために常に低レベルをスカムできるからです。

NetHack では、この問題ははるかに困難です。なぜなら、ゲームは大胆な実験に報いるものであり、基本的に 1,000 のエッジ ケースとして構築されているからです。

最近私は、スパムが作成されるのとほぼ同じ方法で、ある種の単純なベイジアン分析を使用することを提案しました。

基本的に、ボットは最初に、見つけたすべてのアイテムまたはクリーチャーで可能なすべてのアクションを試行し、その情報を保存することで、コーパスを構築します。時間が経つにつれて、適度にプレイ可能なモデルを生成できるようになります。

良いスタートとは何かという正しい方向性を示してくれる人はいますか? 私は間違ったツリーを吠えていますか、それともベイジアン分析の考え方を誤解していますか?

編集:私の友人は、python バインディングを可能にする彼の NetHack パッチの github リポジトリを作成しました。まだまだ原始的な状態ですが、興味のある方はどうぞ…

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

artificial-intelligence - ベイジアン ネットワークの設計

ベイジアン ネットワークについての基本的な質問があります。

  1. 1/3 の確率で動かなくなるエンジンがあるとしましょう。この変数を ENGINE と呼びます。
  2. それが機能しなくなったら、あなたの車は機能しません。エンジンが作動していれば、あなたの車は 99% の確率で作動します。これを CAR と呼びます。
  3. さて、あなたの車が古い (OLD) 場合、1/3 の時間ではなく、1/2 の時間でエンジンが停止します。

最初にネットワークを設計してから、テーブルに関連付けられたすべての条件付き確率を割り当てるように求められています。

このネットワークの図は次のようになります

ここで、条件付き確率テーブルについて、次のことを行いました。

現在、OLD の確率を定義する方法に問題があります。古いというのは僕的にはENGINEと因果関係があるものではなく、どちらかというとその持ち味だと思います。これを図で表現する別の方法があるのではないでしょうか?図が本当に正しい場合、どのように表を作成しますか?

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

statistics - 入力データの新しい傾向をやみくもに分類する

Google ニュースなどの報道機関は、「オバマの 2011 年の予算」などの新たなトピックに関するドキュメントをどのように自動的に分類し、ランク付けしていますか?

選手名や記事との関連性などの野球データでタグ付けされた記事の山があり (opencalais に感謝)、新しい投稿が入ってくると、特に新しい投稿をランク付けして表示する Google ニュース スタイルのインターフェイスを作成したいと考えています。トピック。素朴なベイズ分類器はいくつかの静的カテゴリでトレーニングできると思いますが、これでは「このプレーヤーはこのチームにトレードされたばかりで、これらの他のプレーヤーも関与していた」などの傾向を追跡することはできません。

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

filter - フォーラム投稿のベイジアン フィルタリング

ベイジアン フィルターを使用してフォーラム メンバーが投稿を分類できるようにした人はいますか? ベイジアン フィルターは、電子メール スパムの検出に適しているようです。ベイジアン フィルターの実装は、ユーザーのフォーラム投稿をフィルター処理するための実行可能なアプローチですか?

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

bayesian - ルーピー・ビリーフ・プロパゲーションのコード例

ベイジアン ネットワークの (ルーピー) 信念の和積アルゴリズムの実際のコード例を知っている人はいますか? 私は数日間地球を精査しましたが、あまり運がありませんでした. 私はそれがどの言語であるかに無関心です。

このトピックに関して私が見つけたすべてのドキュメントは、難解で馬鹿げたほどあいまいな数学用語でいっぱいです。難しいアルゴリズムのようには見えませんが、いくつかのトリッキーなビットがあまりにも見過ごされているため、確信が持てません。

あるいは、(変数名ではなく) 実数を使用する例でも、おそらくうまくいくでしょう。

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

classification - ベイズ分類器で未知のクラスを検出する

一連のクラスに対してトレーニングされたベイズ分類器がある場合、出力がクラスを選択するのに十分重要であるかどうかを検出するにはどうすればよいでしょうか? クラスに割り当てることができないサンプルを検出するのに役立ちます。クラスの確率がすべてのクラスの確率の平均 + 2*stddev を超えているかどうかをテストしてみましたが、堅牢になるとは思いません。

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

hadoop - Hadoop: Apache Mahout でベイジアン アルゴリズムを実装する際のエラー

Mahout でのベイジアン アルゴリズムの実行に問題があります。Maven でビルドし、ジョブ ファイルはターゲット ディレクトリにあります。Hadoop を使用して端末から実行すると、ClassNotFoundException エラーが発生します。何をすべきですか?

スレッド「メイン」での例外 java.lang.ClassNotFoundException: java.net.URLClassLoader$1.run(URLClassLoader.java:200) の org.apache.mahout.classifier.bayes.mapreduce.bayes.bayesdriver (java.security.AccessController)。 doPrivileged(Native Method) の java.net.URLClassLoader.findClass(URLClassLoader.java:188) の java.lang.ClassLoader.loadClass(ClassLoader.java:307) の java.lang.ClassLoader.loadClass(ClassLoader.java:252) java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) で java.lang.Class.forName0(Native Method) で java.lang.Class.forName(Class.java:247) で org.apache.hadoop.util .RunJar.main(RunJar.java:149)