В source code искровой наивной реализации Байеса, вы можете найти ссылку алгоритмов, которые реализуются:
- Multinomial NB который может обрабатывать все виды дискретных данных. Например, путем преобразования документов в векторы TF-IDF он может быть , используемый для классификации документов.
- Bernoulli NB, делая каждый вектор 0-1 вектор.
Значения входных функций должны быть неотрицательными.
В вашем случае Spark используется Multinomial NB (по умолчанию), поэтому давайте впишем алгоритм.
Наивный байесовский часто используется для классификации документов, позвольте мне объяснить ваше дело в качестве классификационного документа дела:
- Скажем, классы
ten
и twenty
- Допустим, входной маркер (только один раз в этом случай) является
Spark
Так что для ваших первых данных строк, это будет: Spark
для се Cond и в-третьих, они будут: Spark Spark
Как я понял из ссылки полиномиальной NB, алгоритм может быть суммированы в этом уравнении:
где:
Р (С): условная вероятность тестовых данных, принадлежащих к классу я
NF: количество терминов в словаре
Sij: суммы термин частоты для класса I и термин J
Si: суммы термина частоты для класса I
λ: лямбды, значение сглаживания
V: входа тестового вектора
ndci: количество строк данных в классе я
я: общего числа строк данных
пс: число классов
То, что произошло в вашем случае
В ваших данных строк, есть только один маркер (или только один вход функция), что означает nf
в уравнении равен 1
так: Sij = Si
Это сделает множитель вектора:
ln(Sij+λ) - ln(Si+nf*λ) = ln(Si+λ)-ln(Si+λ) = 0
Как следствие, уравнение теперь:
Это означает результат не зависит больше от входного вектора!
Теперь класс, который имеет наибольшее количество данных, выигрывает классификацию.
И поэтому ваш результат прогнозирования составляет 20 вместо 10.
В конце
Чтобы избежать этого, попробуйте использовать линейную регрессию, Decition дерево, Случайные Леса, ББТ и т.д.
Вы правы, но р (1 | 10) * р (10)/p (1) = (1 * 1/3)/(1/3) = 1 – RafaelCaballero
Я попытался с большим набором тренировок (1050 элементов) с тем же результатом. В любом случае спасибо за вашу помощь – RafaelCaballero