16

フォレスト(またはツリー)拡張ベイズ分類器(元の紹介学習)を使用しようとしていますpython(できればpython 3ですが、python 2も受け入れられます)、最初にそれを学習し(構造とパラメーター学習の両方)、次にそれを使用します離散分類の場合、データが欠落している特徴の確率を取得します。(これが、離散分類だけでなく、優れた単純な分類器でさえ、私にとってあまり役に立たない理由です。)

私のデータが入ってくる方法として、不完全なデータからの増分学習を使用したいと思っていますが、文献でこれらの両方を行うものさえ見つけていないので、構造とパラメーターの学習と推論を行うものは何でも良いです答え。

大まかにこの方向に進んでいる、非常に個別で保守されていない python パッケージがいくつかあるようですが、最近のものは見たことがありません (たとえば、pandasこれらの計算に を使用するのは合理的だと思いますが、OpenBayesほとんど使用していませんnumpy) 、および拡張分類子は、私が見たものにはまったくないようです。

では、フォレスト拡張ベイズ分類器を実装する手間を省くには、どこを見ればよいのでしょうか? Python クラスにパールのメッセージ パッシング アルゴリズムの適切な実装はありますか、それとも拡張ベイズ分類器には不適切でしょうか? Pythonに翻訳できる、他の言語でのTANベイズ分類器の学習と推論のための読み取り可能なオブジェクト指向の実装はありますか?


私が知っているが不適切であると思われる既存のパッケージは

  • milk、これは分類をサポートしますが、ベイジアン分類子ではサポートしません (そして、分類と未指定の機能の確率が絶対に必要です)
  • pebl、構造学習のみを行います
  • scikit-learn、単純ベイズ分類器のみを学習します
  • OpenBayesに移植されて以来、ほとんど変更されておらずnumarraynumpyドキュメントはごくわずかです。
  • libpgm、さらに異なる一連のものをサポートすると主張しています。主なドキュメントによると、推論、構造、およびパラメーターの学習を行います。ただし、正確な推論のための方法はないようです。
  • Reverendは「ベイジアン分類器」であると主張していますが、ドキュメントはほとんどありません。ソース コードを見ると、 Robinsonおよび同様の方法によると、ほとんどがスパム分類器であり、ベイジアン分類器ではないという結論に達しました。
  • eBay のbayesianBelief Networksは、一般的なベイジアン ネットワークの構築を可能にし、それらに推論 (正確および近似の両方) を実装します。つまり、TAN の構築に使用できますが、そこには学習アルゴリズムはなく、関数から BN を構築する方法はありません。これは、パラメーター学習の実装が、仮想的な別の実装よりも難しいことを意味します。
4

5 に答える 5

5

それはまだ学術的な問題であるため、クラシファイアのすぐに使える実装はありRandom Naive Bayesません(私が知っているわけではありません)。次の論文では、RF 分類子と NB 分類子を (ペイウォールの背後で) 組み合わせる方法を紹介しています

scikit-learnPython で最も人気のある統計モジュールの 1 つであり ( とともにNLTK)、ドキュメントが充実している を使い続ける必要があると思います。

scikit-learnランダム フォレスト モジュールがあります: http://scikit-learn.org/stable/modules/ensemble.html#forests-of-randomized-trees。NB classifier へのパイプラインに使用できるサブモジュールがあります(不確実性を主張します)。

RandomTreesEmbedding は、データの教師なし変換を実装します。完全にランダムなツリーのフォレストを使用して、RandomTreesEmbedding は、データ ポイントが終了するリーフのインデックスによってデータをエンコードします。このインデックスは、K の 1 つでエンコードされ、高次元のスパース バイナリ コーディングにつながります。このコーディングは非常に効率的に計算でき、他の学習タスクの基礎として使用できます。コードのサイズとスパース性は、ツリーの数とツリーごとの最大深度を選択することによって影響を受ける可能性があります。アンサンブル内のツリーごとに、コーディングには 1 つのエントリが含まれます。コーディングのサイズは、最大で n_estimators * 2 ** max_depth、フォレスト内の葉の最大数です。

隣接するデータ ポイントはツリーの同じリーフ内にある可能性が高いため、変換では暗黙的なノンパラメトリック密度推定が実行されます。

そしてもちろん、段階的に使用できる Naive Bayes 分類子のアウトオブコア実装があります: http://scikit-learn.org/stable/modules/naive_bayes.html

離散単純ベイズ モデルを使用して、完全なトレーニング セットがメモリに収まらない可能性がある大規模なテキスト分類問題に取り組むことができます。このケースを処理するために、MultinomialNB と BernoulliNB の両方が、テキスト ドキュメントのコア外分類で示されているように、他の分類器で行われるように段階的に使用できる partial_fit メソッドを公開します。

于 2013-11-26T10:20:17.397 に答える
2

Rbnlearnには、単純ベイズ分類器とツリー拡張単純ベイズ分類器の両方の実装があります。rpy2 を使用して、これらを Python に移植できます。

http://cran.r-project.org/web/packages/bnlearn/bnlearn.pdf

于 2015-03-12T01:04:20.113 に答える