Weka NaiveBayes Classifier дает различные (неправильные?) Средства / стандартное отклонение по числовым значениям - PullRequest
2 голосов
/ 24 декабря 2011

Я пытался классифицировать, используя как классификатор NaiveBayes, так и классификатор NaiveBayesSimple, используя следующие данные:

@attribute a real
@attribute b {yes, no}                                                                                        

@data                                                                                                            
1,yes
3,yes
5,yes
2,yes
1,yes
4,no
7,no
5,no
8,no
9,no

При использовании классификатора NaiveBayesSimple я получаю среднее значение и ожидаемые значения отклонений:

=== Classifier model (full training set) ===

Naive Bayes (simple)

Class yes: P(C) = 0.5       

Attribute a
Mean: 2.4           Standard Deviation: 1.67332005



Class no: P(C) = 0.5       

Attribute a
Mean: 6.6           Standard Deviation: 2.07364414

Однако при использовании классификатора NaiveBayes я получаю разные значения:

=== Classifier model (full training set) ===

Naive Bayes Classifier

            Class
Attribute         yes     no
                (0.5)  (0.5)
=============================
a
  mean          2.5143 6.6286
  std. dev.     1.3328 1.8286
  weight sum         5      5
  precision     1.1429 1.1429

Мне было интересно, что было причиной смещения среднего значения / SD?Я прочитал статью о том, что классификатор NaiveBayes основан на: http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.8.3257 и не вижу там никакой причины для этого.

Спасибо

1 Ответ

0 голосов
/ 10 мая 2012

Два алгоритма отличаются друг от друга.

Наивный байесовский в Weka определяется следующим образом:

ИМЯ weka.classifiers.bayes.NaiveBayes

Класс SYNOPSIS для наивного байесовского классификатора с использованием классов оценки.Значения точности числовой оценки выбираются на основе анализа обучающих данных.По этой причине классификатор не является UpdateableClassifier (который при обычном использовании инициализируется с нулевыми обучающими экземплярами) - если вам нужна функциональность UpdateableClassifier, используйте классификатор NaiveBayesUpdateable.Классификатор NaiveBayesUpdateable будет использовать точность по умолчанию 0,1 для числовых атрибутов, когда buildClassifier вызывается с нулевыми экземплярами обучения.

Для получения дополнительной информации о наивных байесовских классификаторах см.

Джордж Х. Джон, Пэт Лэнгли: Оценка непрерывных распределений в байесовских классификаторах.В: Одиннадцатая Конференция по неопределенности в искусственном интеллекте, Сан-Матео, 338-345, 1995.

OPTIONS debug - Если установлено значение true, классификатор может выводить на консоль дополнительную информацию.

displayModelInOldFormat- Используйте старый формат для вывода модели.Старый формат лучше, когда есть много значений класса.Новый формат лучше, когда меньше классов и много атрибутов.

useKernelEstimator - используйте оценку ядра для числовых атрибутов, а не для нормального распределения.

useSupervisedDiscretification - используйте контролируемую дискретизацию для преобразованиячисловые атрибуты для номинальных.

и NaiveBayesSimple определяется следующим образом:

NAME weka.classifiers.bayes.NaiveBayesSimple

SYNOPSIS Класс для построения ииспользуя простой наивный байесовский классификатор. Числовые атрибуты моделируются нормальным распределением.

Для получения дополнительной информации см.

Richard Duda, Peter Hart (1973).Классификация и анализ сцен.Wiley, New York.

OPTIONS debug - если установлено значение true, классификатор может выводить на консоль дополнительную информацию.

...