問題タブ [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 投票する
1 に答える
3069 参照

machine-learning - テキスト分類に単純ベイズを実装する可能性の対数

テキスト分類に単純ベイズ アルゴリズムを実装しています。トレーニング用に約 1000 個のドキュメント、テスト用に 400 個のドキュメントがあります。トレーニング部分は正しく実装したと思いますが、テスト部分で混乱しています。これが私が簡単にやったことです:

私のトレーニング機能では:

トレーニング部分を正しく理解して実装したと思いますが、テスト部分を正しく実装できたかどうかはわかりません。ここでは、各テスト ドキュメントを調べて、各ドキュメントの logP(spam|d) と logP(non-spam|d) を計算します。次に、クラス (スパム/非スパム) を決定するために、これら 2 つの量を比較します。

私のテスト機能では:

私の問題は; 正確な 1 と 0 (スパム/非スパム) ではなく、各クラスの確率を返したいと考えています。たとえば、 newclass = 0.8684212 を見たいので、後でしきい値を適用できます。しかし、私はここで混乱しています。各ドキュメントの確率を計算するにはどうすればよいですか? logProbabilities を使用して計算できますか?

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

command-line - コマンドラインからwekaを実行 - クラスNaiveBayesが見つかりません

コマンドラインからWeka分類を実行しようとしていますが、私のコード:

エラーメッセージが表示されます:

「メイン クラスが見つかりませんでした: weka.classifiers.bayes.NaiveBayes。プログラムは終了します。」

weka.jar を含むディレクトリでコマンドを実行しています。分類器が見つからないのはなぜですか?

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

algorithm - 洪水ベイジアン評価は範囲外の値を作成します

ベイジアン評価式を適用しようとしていますが、5000のうち1を評価すると、最終的な評価は5より大きくなります。

たとえば、特定のアイテムには投票がなく、1つ星で170,000回投票した後、最終的な評価は5.23になります。100と評価すると、通常の値になります。

これが私がPHPで持っているものです。

1または2で氾濫しても。

100,000票後の最終評価は5を超えています。

を使用して新しいテストを行いました

そして、100,000を超えると、完全に範囲外の値(10.53)になりました。通常の状況では、17万票を獲得するアイテムはなく、他のすべてのアイテムは投票を獲得しないことを私は知っています。しかし、私のコードに何か問題があるのか​​、それともこれが大量の投票を考慮したベイズの公式の予想される動作であるのかどうか疑問に思います。

編集

明確にするために、ここにいくつかの変数のより良い説明があります。

式は次のとおり( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) ) / (avg_num_votes + this_num_votes)です。ここから撮影

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

php - ベイジアン ランキング システムに別の要素 (クリック数) を追加する

私はアマチュア ミュージシャン向けの音楽ウェブサイトを運営しており、そこでは 10 点満点のスコアに基づく評価システムがあり、それが 100 点満点の総合スコアに計算されます。平均スコアに直接影響するユーザー向けの「信頼性」ポイント システムがあります。次のステップは、このデータを効果的に使用するチャート システムを実装することです。

私がどのデータを自由に使用できるかを確認できるように、すべてがどのように機能するかを正確に説明します。

  • サイト メンバーが 1 から 10 の間でトラックを評価します。
  • そのサイト メンバーには「信頼性」スコアがあります。これは、サイト周辺のさまざまなアクティビティに対して蓄積されたポイントの合計です。たとえば、ユーザーは評価を与えることで 100 ポイントを獲得するため、より多くの評価を与えるほど、「信頼性」スコアが高くなります。信頼度スコアの合計のみがデータベースに保存され、ユーザーがポイント報酬付きのアクティビティを実行するたびに更新されます。これらの個々のアクティビティは保存されません。
  • トラックを評価した他のユーザーと比較したこのユーザーの信頼度に基づいて、トラックの加重平均が計算され、トラック テーブルに 1 ~ 100 の数値として格納されます。
  • トラック テーブルには、トラックが再生された回数 (再生回数) も合計として格納されます。

したがって、使用する必要があるデータは次のとおりです。

  • トラックの総合評価 (1 から 100 までの数字)
  • トラックの評価数
  • トラックの再生回数

チャート システムでは、上記の 3 つのデータ セットを使用して、品質(全体的な評価、評価数で正規化) と人気(再生数) の間の公正なバランスを作成するランキングを作成したいと考えています。ただし、システムは人気よりも品質を重視する必要があります。たとえば、品質面は正規化されたランキングの 75% を占め、人気度は 25% を占めます。

このサイトで検索した結果、品質面を理解するのに役立つIMDB ベイジアン スタイルのシステムを見つけましたが、人気 (再生数) を追加して、希望する方法でバランスを取るにはどうすればよいですか?

このサイトは PHP と MySQL で書かれています。

編集: タイトルには「クリック数」と書かれていますが、これは基本的に「再生数」に直接相当します。

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

artificial-intelligence - 理想的なアルゴリズムのアプローチ -- ルールエンジン / 決定木と学習ロジック?

私の要件は、おそらく「エキスパート システム」に期待されるものに近いものです。そして、いくつかのオフライン (非リアルタイム) 学習機能を備えた、リアルタイムまたはほぼリアルタイムの推論を提供できる最も単純なソリューションを探しています。

詳しく言うと、私の問題は -

ライブで更新されているログを見て、各エントリを赤、緑、青に分類します。赤、緑、青の分類は、プロダクション ルールとして体系化されたロジックに基づいています (現在の私が想像するとおり)。

それが難しくなるポイントは -

1) 青とタグ付けされたログ エントリは、最終的には、後続のログ エントリに基づいて赤/緑とタグ付けされる必要があり、より詳細な情報が必要になるため、少し覚えておく必要があります。待機する正確な期間は事前にわかりませんが、最大制限があります。もちろん、任意の時点で、Blue のタグが付けられたエントリが数十万件存在する可能性があります。

2) 赤と緑を決定するルールが完全ではないため、ラベリングでエラーが発生することがあります。そのため、時折手動で監査すると、これらの間違いが明らかになります。私の主な課題は、最小限のプログラミング作業でルール更新の一部を自動化できるかどうかを確認することです。

私の (継続的な調査) は、RETE アルゴリズム ベースのルール エンジンが、私の分類とラベル付け (再ラベル付けを含む) に役立つ可能性があることを明らかにしています。それが機能する場合、「間違いから学ぶ」部分を自動化する方法を理解する必要がありますか? ベイジアン分類などの統計的アプローチをとることはできますか? また、ベイズ分類をルールエンジンと比較して完全に取ることができますか?最初の分類stについては、システムを手動で十分にトレーニングしましたか? ベイジアンアプローチは、特にこれらの定期的な手動監査があるため、「統計を信頼する」アプローチにより、正しいルールセットを維持するタスクを「馬鹿にする」ようです。

PS> 私のメイン アプリケーションは C++ で書かれています (それが重要な場合)。

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

ruby - 大規模な Rails サイトで柔軟なスパム検出を構築するための優れたオープン ソース パッケージは何ですか?

私のサイトは大きくなり、さまざまなチャネルを通じて大量のスパムを引き付け始めています。このサイトには、さまざまな種類の UGC (プロフィール、フォーラム、ブログ コメント、ステータス更新、プライベート メッセージなど) があります。私はさまざまな緩和の取り組みを進めており、これを電撃的な方法で展開して、スパマーに私たちが価値のある標的ではないことを納得させたいと考えています. 私は自分が行っている機能に大きな自信を持っていますが、1 つ欠けているのは、古いスパムをすべて一度に殺してしまうことです。

ここに私が持っているものがあります:

  • 大きな良い/悪いコーパス(5 桁の悪い、6 または 7 桁の良い)。多くのスパムには非常に信頼性の高いフィンガープリントが含まれており、6 か月間無視してきたという事実が役に立ちます :)
  • AWS にデプロイされた大規模なモジュラー Rails サイト。トラフィック量の多いサイトではありませんが、SOA の始まりで 8 つのインスタンスを実行しています。
  • Ruby、Redis、Resque、MySQL、Varnish、Nginx、Unicorn、Chef、すべて Gentoo 上で

私の要件:

  1. データの量を考えると、適度にうまく機能することを望んでいます(したがって、純粋なルビーソリューションには警戒しています)。
  2. 複数の分類をさまざまな種類のコンテンツにトレーニングできるはずです (419 詐欺とボットネット リンク スパム)。
  3. 独自の調査作業 (パターン マッチング、IP の再利用など) に基づいて、手動の要素を追加できるようにしたいと考えています。
  4. 最終的には、Ruby で使用するための優れたインターフェイスを構築したいと考えています。これが C などで手を汚す必要がある場合は、処理できますが、可能であれば回避します。

これは長くて漠然とした質問だと思いますが、私が探しているのは主に優れたパッケージのリストであり、次に、同様のシステムを構築した人からのアプローチ方法についてのランダムな考えです。

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

algorithm - データの品質を予測する方法は?

事前にこれを間違って表現している場合は非常に申し訳ありませんが、データセットが大きく、分析しようとしていますが、ほとんどのデータが正しくないため、正しいデータを選択する方法を理解するのに助けが必要です。

これをさらに明確にするためのいくつかの情報があります。たとえば、私は次のようにしています。

値と合計だけが与えられた場合、私は36の可能な答えがあることがわかります:

ご覧のとおり、可能性としては正しい答えが得られますが、他の多くの答えも得られます。ここで、もう1つ赤を追加すると(つまり、赤の合計は3になります)、49の結果が得られますが、最初の結果セットとの関係を考慮に入れると、2番目のセットの結果の一部はありそうにありません。より多くのデータ結果が得られると、機能しない結果をより正確に削除できると思います。

結果をもっと意味のあるものに絞り込むための調査や標準的なアプローチがあるかどうかを調べようとしています。100%確信はありませんが、各クエリはデータだけでなくあなたの履歴に対しても実行されるため、おそらくグーグルがこの例かもしれないと思いました(私は非常に低いランクのウェブサイトを持っており、それをクリックして検索したとき繰り返しになりますが、常に一番上に表示されますが、友達のコンピューターで検索すると、同じサイトが一番下に表示されます)。グーグルが複数の検索クエリとの関係を構築する方法かもしれないと思いました。同様のアプローチを使用して、上記のデータから正しくない結果を削除することができます。

誤解してすみません。私はアルゴに少し慣れていないので、これを説明するのに苦労しています。意味がわからない場合はお知らせください。

前もって感謝します!

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

bayesian - Naive Bayes を使用して TF_IDF 機能の重み付けを実装する方法

感情分析のために単純ベイズ分類器を実装しようとしています。TF-IDF 重み付けメジャーを使用する予定です。私は今ちょっと立ち往生しています。NB は通常、単語 (機能) の頻度を使用して最尤法を見つけます。では、ナイーブ ベイズに TF-IDF 重み付け測定を導入するにはどうすればよいでしょうか。

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

machine-learning - 単純ベイズ分類器のバイアス出力?

私はEmguCVを使用して、c#で機械学習技術を実装し、画像のピクセルを3つの異なるカテゴリに分類しています。

これまでのところすべてが完璧に機能していますが、問題は完全に自動化されていることです。私はそれを半自動にしたいのです。つまり、ユーザーはこれら3つの結果のそれぞれに「重みを与える」ことができます。これは、ユーザーが結果を適切に調整できるようにするためです。

どのようにアイデアはありますか?

私が最初に考えることができるのは、出力の1つにバイアスがかかるように入力を実際に変更することです(たとえば、赤のチャネルを変更して赤を増やすなど)。しかし、私はおそらくこれを行うための一般的な方法がありますが、私は気づいていません。

ありがとう。