問題タブ [naivebayes]
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.
c++ - OpenCVの多項ナイーブベイズ
OpenCVで使用するためにC/C++で記述された多項単純ベイズ分類器を探しています。
アルゴリズム(または既製の実装)を探しています。それがどのように機能するかを理解しようとしているので、より役立つのでしょうか?
matlab - 単純分類器matlab
matlabで単純ベイズ分類器をテストすると、同じサンプルデータでトレーニングとテストを行ったにもかかわらず、異なる結果が得られます。コードが正しいかどうか、誰かがその理由を説明できるかどうか疑問に思いました。
次に例を示します。
ipsweep、teardrop、backが通常のトラフィックと混同されていることに注意してください。見えないデータを分類する段階には至っていませんが、同じデータを分類できるかどうかをテストしたかっただけです。
混同行列の出力:
これが実際に何であるかはわかりませんが、コードでこれが間違っている可能性がありますが、出力を確認するためにテストするだけだと思いました。
classification - 単純ベイジアン分類器の精度?
分類器の精度を確認するために使用できる単純ベイジアン分類器の精度は何パーセントですか?
matlab - ベイジアンネットワークと単純ベイズ分類器の違いは何ですか?
ベイジアンネットワークと単純ベイズ分類器の違いは何ですか? 1つはMatlabに実装されているだけでclassify
、もう1つはネットツールボックス全体を持っていることに気付きました。
どちらがより良い精度を提供する可能性が高いかを回答で説明できれば、私は感謝します(前提条件ではありません)。
bayesian - Naive Bayes アルゴリズムの代替
ユーザーの検索用語に基づいてカテゴリを提案するセマンティック検索アルゴリズムを実装しようとしています。
現時点では、単純ベイズ確率アルゴリズムを実装して、データ内の各カテゴリの確率を返し、最も高いものを返します。
ただし、その素朴さのために、結果が間違っていることがあります。
ニューラル ネットワークやその他の途方もなく複雑なことに立ち入らずに、検討できる別の代替手段はありますか?
matlab - MATLAB: 単変量ガウス分布による単純ベイズ
UCI 機械学習チームによって公開されたデータセットを使用して、単純ベイズ分類子を実装しようとしています。私は機械学習に不慣れで、仕事関連の問題に使用する手法を理解しようとしているので、最初に理論を理解する方がよいと考えました。
私は pima データセット ( Link to Data - UCI-ML ) を使用しています。私の目標は、K クラスの問題に対して Naive Bayes Univariate Gaussian Classifier を構築することです (データは K=2 の場合のみ存在します)。私はデータの分割を行い、各クラスの平均、標準偏差、各クラスの事前確率を計算しましたが、この後、何をどのように行うべきかわからないため、行き詰まりました。事後確率を計算するべきだと感じていますが、
これが私のコードです。ベクトルとしてパーセントを使用しています。トレーニング データのサイズを 80:20 分割から増やしたときの動作を確認したいからです。基本的に [10 20 30 40] を渡すと、80:20 分割からそのパーセンテージが取得され、80% の 10% がトレーニングとして使用されます。
python - NLTKによる半教師ありナイーブベイズ
EM(期待値最大化アルゴリズム)に基づいて、PythonでNLTKのナイーブベイズの半教師ありバージョンを作成しました。ただし、EMの一部の反復では、負の対数尤度が得られます(EMの対数尤度はすべての反復で正でなければなりません)。したがって、コードにいくつかの間違いがあるはずです。コードを注意深く確認した後、なぜこれが起こっているのかわかりません。誰かが以下の私のコードの間違いを見つけることができれば本当にありがたいです:
EMアルゴリズムのメインループ
必要な度数分布を作成するために使用されるカスタム関数gen-freqdists
matlab - Naive Bayes: TRAINING の各機能のクラス内分散は正でなければなりません
Naive Bayes を当てはめようとすると、次のようになります。
エラーが発生します:
誰でもこれとそれを解決する方法に光を当てることができますか? ここで同様の投稿を読みましたが、どうすればよいかわかりません。行ではなく列に基づいて適合しようとしているように見えますが、クラスの分散は、特定のクラスに属する各行の確率に基づく必要があります。これらの列を削除すると機能しますが、明らかにこれは私がやりたいことではありません。
matlab - 単純ベイズ分類器と判別分析の精度はかなり低い
したがって、判別分析diaglinear
分類 (単純ベイズ) と matlab で実装された純粋な単純ベイズ分類器の 2 つの分類方法があり、データセット全体に 23 のクラスがあります。最初のメソッドの判別分析:
混同行列から81.49%の精度が得られ、誤差率 ( err
) は0.5040 です(解釈方法がわからない)。
2 番目の方法の単純ベイズ分類器:
81.89%の精度が得られます。
私はクロス検証を1ラウンドしか行っていません。私はmatlabと教師あり/教師なしアルゴリズムが初めてなので、自分でクロス検証を行いました。私は基本的にデータの 10% を取得し、テスト目的のために取っておきます。これは毎回ランダムなセットであるためです。私はそれを数回行って平均精度を取ることができましたが、結果は説明目的で行います.
だから私の問題の質問に。
現在の方法に関する私の文献レビューでは、多くの研究者が、単一の分類アルゴリズムとクラスタリング アルゴリズムを組み合わせた方が精度の高い結果が得られることを発見しています。これを行うには、データに最適なクラスター数を見つけ、分割されたクラスター (類似している必要があります) を使用して、個々のクラスターを分類アルゴリズムで実行します。教師なしアルゴリズムの最良の部分を教師あり分類アルゴリズムと組み合わせて使用できるプロセス。
現在、私は文献で何度も使用されているデータセットを使用しており、私の探求において他の人とあまり似ていないアプローチを試みています.
最初に単純な K-Means クラスタリングを使用しますが、これは驚くほどデータをクラスタリングする優れた機能を備えています。出力は次のようになります。
各クラスター (K1、K2...K12) のクラス ラベルを見ると、次のようになります。
主に各クラスターには 9 つのクラスターに 1 つのクラス ラベルがあり、3 つのクラスターには複数のクラス ラベルが含まれていることがわかります。K 平均法がデータによく適合していることを示しています。
ただし、問題は、各クラスター データ (cluster1、cluster2...cluster12) を取得した後です。
そして、次のように、各クラスターを単純ベイズ分析または判別分析にかけます。
精度は恐ろしくなります。クラスターの 50% は 0% の精度で分類されます。分類された各クラスター (acc1、acc2、...acc12) には、対応する独自の混同行列があり、各クラスターの精度をここで確認できます。
だから私の問題/質問は: どこが間違っているのですか? 最初は、クラスターのデータ/ラベルが混同されているのではないかと考えましたが、上に投稿したものは正しいように見えますが、問題は見られません。
最初の実験で使用されたまったく同じ見えない 10% のデータであるデータが、同じ見えないクラスター化されたデータに対してこのような奇妙な結果をもたらすのはなぜですか? つまり、NB は安定した分類器であり、簡単に過剰適合してはならないことに注意する必要があります。また、分類対象のクラスターが同時に過剰適合している間、トレーニング データが膨大であるため、過剰適合が発生してはならないことに注意してください。
編集:
コメントから要求されたように、 81.49%の精度と0.5040のエラーを与えるテストの最初の例の cmat ファイルを含めました。
この例 (cluster4) では、K、クラス、および関連する cmat のスニペットも要求され、精度は3.03%です。
多数のクラス (合計 23) があったため、1999 KDD カップで概説されているようにクラスを減らすことにしました。これは、一部の攻撃が他の攻撃よりも類似しており、1 つに分類されるため、ドメインの知識を少し適用するだけです。傘用語。
次に、テスト目的で 10% を抑えながら、444,000 レコードで分類子をトレーニングしました。
精度が悪かった73.39%エラー率も悪かった0.4261
クラスに分類された目に見えないデータ:
クラスまたは分類されたラベル (判別分析の結果):
トレーニング データは次の要素で構成されます。
悪意のあるアクティビティのパーセンテージが同程度になるようにトレーニング データを下げると、分類器はクラスを区別するのに十分な予測力を持たなくなるのではないかと心配していますが、他の文献を見て、一部の研究者が U2R を削除していることに気付きました。 t 分類を成功させるのに十分なデータ。
私がこれまでに試した方法は、1 つのクラスのみを予測するように分類器をトレーニングする 1 つのクラス分類器 (効果的ではありません)、個々のクラスターを分類する (精度はさらに悪い)、クラス ラベルを減らす (2 番目に良い)、完全な 23 クラス ラベルを保持する (最高の精度)。
machine-learning - ナイーブベイズ、ナイーブじゃない?
大文字を探す単純ベイズ分類器 (WEKA で実装) があります。
特定のクラスでは、トレーニング データのほぼすべてのインスタンスに LCD という単語が表示されます。「LCD」がそのクラスに属する確率を取得すると、0.988 のようになります。勝つ。
「L」の確率を取得すると、単純な 0 が得られ、「LC」の確率は 0.002 になります。機能は単純なので、L、C、D がそれぞれ独立して全体の確率に寄与するのではないでしょうか。その結果、"L" にはある程度の確率があり、"LC" にはある程度の確率があり、"LCD" にはさらに多くの確率がありますか?
同時に、MLP を使用した同じ実験では、上記の動作ではなく、0.006、0.5、および 0.8 のパーセンテージが得られます。
したがって、MLP は Naive Bayes に期待することを実行し、その逆も同様です。誰かがこれらの結果を説明できますか?