2016-05-04 12 views
0

かなり簡単なテキスト解析を行うにはNatural NPM packageを使用しています。 LogisticRegressionClassifierとBayesClassifierを使用して同じサンプルテキスト(600〜2000語の記事)を処理すると、どのように結果が大きくずれているのですか。Natural NPMパッケージのBayesClassifierとLogisticRegressionClassifierの相違点

BayesClassifier結果:

mlb 
// classifier.getClassifications(data) 
[ { label: 'mlb', value: 5.056332563372173e-139 }, 
    { label: 'nba', value: 5.589251687911356e-164 }, 
    { label: 'nhl', value: 1.2887446397232257e-165 }, 
    { label: 'nfl', value: 1.4562872037319007e-167 } ] 
mlb // result of classifier.classify(data) 

LogisticRegressionClassifier結果:

mlb 
//classifier.getClassifications(data) 
[ { label: 'mlb', value: 0.9984418828983803 }, 
    { label: 'nhl', value: 0.008472129523116049 }, 
    { label: 'nfl', value: 0.0005530225293869185 }, 
    { label: 'nba', value: 9.776621359081668e-18 } ] 
mlb // result of classifier.classify(data) 

明らかLogisticRegressionClassifierは私より良い結果を与えているが、それは各記事の処理に非常に時間がかかります。場合によっては数分。私は、各カテゴリごとに50の選択された記事を使用しています。

私の質問は、これら二つの処理方法との根本的な違いは何である、と私はより良い(はるかに高速であるように思われる)BayesClassifierすなわちのための私のサンプルを調製することができる方法があります。それらを処理する前に物品を枝打ちすることは有益でしょうか?その他のヒントやテクニックはありますか?

また、多くの試行錯誤がありますが、経験に基づいて、アルゴリズムをトレーニングするのに使用する記事が数多くありますか?私はそれぞれ10-400の範囲を試してみましたが、サンプルサイズに関係なく比較的似通った結果を得ているようです。

答えて

0

あなたはgetClassifications関数の出力を誤解される可能性があります。ベイズ分類器の場合、これらの数字はラベルが与えられたテキストの確率を表す。ロジスティック回帰の場合、数字は各クラスがテキストを与えられる確率を表す。どちらの場合も、確率が最も高いクラスを予測する必要があります。それがこれらの分類子の仕組みです。あなたがここに示されてきたものから、

は、1つがあなたのデータにより良い仕事と思われる明らかにされていません。

+0

これは理にかなっています。私は出力が実際よりも似ていると仮定していました。その価値については、PythonとnaiveBayesClassifierを使用してすべてを書き直しました。結果は、私が期待していたものと一線を画し、パフォーマンスははるかに高いようです。答えをありがとう。 – funador

関連する問題