Обучение модели при использовании Наивного Байеса - PullRequest
0 голосов
/ 17 марта 2020

У меня есть обзорный набор данных mov ie, и я хочу выполнить анализ настроений на нем.

Я реализовал это с помощью регрессии logisti c. Ниже приведены шаги, которые я предпринял в процессе:

  1. Удалены стоп-слова и знаки препинания из каждой строки в наборе данных.
  2. Разделение данных на поезд, проверку и набор тестов.
  3. Создан словарь слов из учебного комплекта.
  4. Добавлено каждое слово в словарь в качестве функции. Если это слово находится в текущей строке, его значение TF-IDF устанавливается в качестве значения функции, в противном случае в качестве значения устанавливается 0.
  5. Обучить модель. Во время обучения сигмовидная функция используется для вычисления гипотезы, а перекрестная энтропийная потеря - для функции стоимости. Затем с использованием градиентного спуска были обновлены веса модели.
  6. Настройка гиперпараметров с использованием набора проверки
  7. Оценка модели с использованием набора испытаний

Теперь мне нужно реализовать То же самое, используя Наивного Байеса, и я запутался в том, как подойти к этой проблеме. Я предполагаю, что первые 4 шага будут одинаковыми. Но каков этап обучения при использовании Наивного Байеса? Что такое функция потерь и функция затрат в этом случае? И где я могу использовать теорему Байеса для вычисления условной вероятности? И как мне обновить весовые коэффициенты и отклонения?

Я искал много ресурсов в Интернете и в основном нашел только реализации, использующие sklearn с model.fit и model.predict, и у меня трудно понять математику и то, как это можно реализовать с помощью vanilla python.

1 Ответ

0 голосов
/ 18 апреля 2020

В случае регрессии Logisti c или SVM модель пытается предсказать гиперплоскость, которая наилучшим образом соответствует данным. И поэтому эти модели будут определять weights and biases.

  1. Naive Bayes, более того, вероятностный подход c. Это полностью зависит от теоремы Байеса .

  2. В NB будет NO весов и смещений, будут только CLASS WISE значения вероятности для каждого из признаков (т. Е. words в случае текста).

  3. Чтобы избежать нулевых вероятностей или обработать случай невидимых данных (words в случае текста), используйте Сглаживание Лапласа.

  4. α называется фактором сглаживания. И это будет гиперпараметр в NB

  5. Используйте log для числовой c стабильности.


  • Пример теста: This movie is great

  • После удаления стоп-слов: movie great

  • Из данных обучения мы уже знаем значение проб для слова movie и great оба для +ve & -ve класса. См. STEP 2.

  • Вероятность great для класса +ve будет больше, чем вероятность great для -ve класса. А для слова movie значения вероятности могут быть почти одинаковыми. (Это сильно зависит от ваших тренировочных данных. Здесь я просто делаю предположение)

положительный класс prob = P (movie / + ve) * P (great / + ve)

отрицательный класс prob = P (movie / - ve) * P (great / - ve)

  • Сравнить класс prob значения и вернуть значение, имеющее высокое значение вероятности.

PS

Если число слов в предложении велико в числах, то значение класса станет очень очень маленький. Использование log решило бы эту проблему.

Если бы в обучающем наборе не было слова great, значение вероятности класса было бы равно 0. Поэтому используйте smoothening factor-α (сглаживание по Лапласу)

Для более подробной информации см. sk-learn naive bayes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...