Измайловой Дарьи

реклама
Простой Байесовский метод (Naive Bayes)
Выполнила: студентка группы 09-515(1)
Измайлова Дарья
Данные:
В качестве исходных данных были взяты стихотворения Анны Ахматовой и Карла
Сэндберга.
Цель работы: предложить читателям такой инструментарий, который позволит по
заданному слову правильно определить автора прочитанного стихотворения:
1. Anna Akhmatova
2. Carl Sandburg
name – фамилия и имя автора стихотворения
poem – текст стихотворения
Переменная отклика: name.
Данные были считаны из файла English Poems.csv и сохранены в переменную MyPoems:
Переменную отклика name удобно представить в числовой форме:
Структура получившегося вектора выглядит следующим образом:
Необходимо подсчитать, сколько всего стихотворений каждого автора было представлено
в файле:
Далее нужно проанализировать тексты всех 122 стихотворений.
Для этого был установлен дополнительный пакет «tm», функции которого будут
использованы в дальнейшей работе.
Тексты всех стихотворений будут записаны в переменную MyPoems_corpus в виде
вектора:
Нужно преобразовать все символы к нижнему регистру:
Чтобы разделить каждое стихотворение на слова, надо исключить из них:
1.Все цифры
2.Служебные слова, входящие в список stopwords():
3.Знаки препинания
4.Лишние пробелы
Преобразовываем «очищенные» данные к формату PlainText и строим разреженную
матрицу частот для всех слов, входящих в корпус стихотворений:
Для того чтобы проверить правильность работы алгоритма необходимо:
1.Поделить исходные данные на обучающую выборку и тестовые данные.
Обучающая выборка: 86 стихотворений
Тестовые данные: 36 стихотворений
2.Поделить строки разреженной матрицы MyPoems_dtm на обучающую выборку и
тестовые данные.
3.Поделить данные «очищенного» корпуса corpus_clean на обучающую выборку и
тестовые данные.
Проводится расчет доли стихотворений А.Ахматовой и стихотворений К.Сэндберга в
обучающей выборке и на тестовых данных:
По полученным результатам, которые отличаются незначительно друг от друга, можно
сделать вывод, что выборки являются пригодными для построения и анализа модели.
С помощью установленного пакета «wordcloud» вызывается функция wordcloud() для
построения облака точек для «очищенной» обучающей выборки с минимальным порогом
частоты встречающихся слов (20) (Рис.1):
А также для «очищенной» тестовой выборки (Рис.2):
Рис.1
Рис.2
По полученным облакам слов видно, что некоторые слова достаточно часто встречаются в
обеих выборках. Значит, они не могут быть индикатором для определенного автора
стихотворений.
Выберем из тестовых данных те слова, которые встречаются в стихотворениях
А.Ахматовой и К.Сэндберга, и построим соответствующие облака:
Рис 3. Слова из тестовых данных,
которые часто встречаются
в стихотворениях К.Сэндберга
Рис 4. Слова из тестовых данных,
которые часто встречаются
в стихотворениях А.Ахматовой.
Если посмотреть на Рис.3 и Рис.4, то можно заметить, что некоторые слова, часто
встречающиеся в стихотворениях А.Ахматовой, не встречаются совсем в стихотворениях
К.Сэндберга, например: heart, forgive, lips, love. И наоборот, есть слова, которые часто
встречаются у К.Сэндберга, но не используются у А.Ахматовой: death, ride, moon.
Эти слова могут использоваться как индикаторы в методе Байеса.
Найдем в разреженной матрице все слова из обучающей выборки MyPoems_dtm_train, что
встречаются не менее 5 раз:
MyPoems_dict – словарь. Мы будем принимать во внимание лишь слова, которые входят в
него.
Выберем данные обучающей выборки и тестовой выборки разреженной матрицы,
преобразуем данные в них из числовых в категориальные и вызовем метод наивного
Байеса:
Сделаем прогноз:
Прогноз выполнен не совсем точно. Из 36 стихотворений предсказано:
А.Ахматова: 14 верно, 3 неверно
К.Сэндберг: 15 верно, 4 неверно
Итого: 29 верно, 7 неверно.
19,4 % всего прогнозов сделано неверно.
Добавим несколько новых данных в конец файла English Poems.csv (123-130 строки):
Произведем все те же операции, что делали с данными до этого. Получим следующее
облако слов:
Применив метод наивного Байеса, получаем следующие прогнозы:
Если рассматривать только последние 8 прогнозов (по новым данным), то из 8 правильно
будут предсказаны только 7.
Метод наивного Байеса показал результат немного лучше, чем метод К-ближайших
соседей.
Скачать