Исследование методов классификации

Формулировка задач, которые необходимо решить для достижения цели. Анализ методов классификации для несбалансированных данных. Синтетический сэмплинг с генерацией данных. Основы методов с распределением весов. Достоинства и недостатки сэмплинга.

Рубрика Экономика и экономическая теория
Вид дипломная работа
Язык русский
Дата добавления 30.09.2016
Размер файла 72,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Что касается оставшихся двух алгоритмов, то они имеют разные достоинства и недостатки: методы с распределением весов, как уже было сказано, дают преимущество перед сэмплингом, работают с весами, штрафуя классификатор за ошибки при классификации объектов миноритарного класса. Это позволяет исказить классификатор в пользу менее представленного концепта. Помимо прочего, подходы с распределением весов имеют связь в теории с обучением на несбалансированных данных. Однако проблема вышеупомянутых техник в том, что они очень зависимы от матрицы весов, которую зачастую достаточно сложно вычислить. В то же время методы на базе ядра и активном обучении не имеют подобных проблем, но могут быть чрезмерно требовательны к сложности сопутствующих вычислений и могут совершенно игнорировать миноритарный класс из-за лежащего в их основе SVM алгоритма машинного обучения, который требует комбинации с методами сэмплинга и задания весов для приемлемого качества работы программы.

Опираясь на вышесказанное, можно сделать вывод, что наиболее подходящим для данного исследования и данной задачи будет использование метода с распределением весов для классификатора на основании отношения мощностей классов в обучающем наборе данных.

3. Реализация алгоритма, основанного на методе с распределением весов

3.1 Описание обучающей выборки данных и её предобработка

Для того чтобы обучить модель правильно классифицировать сообщения на предмет наличия в них оскорблений, были выбраны два набора данных для обучающей выборки. В качестве примеров для класса оскорблений были взяты комментарии с таких новостных порталов, как newsland.ru, kp.ru, eho.msk.ru, svpressa.ru и многих других за 2012-2013 год, отмеченные экспертами как оскорбления по нескольким группам: «призыв к насилию и жестокости», «пропаганда культа насилия и жестокости» и «оправдание насилия и жестокости». Данные для класса нейтральных текстов были взяты из текстов синтаксически размеченного корпуса русского языка без какой-либо разметки. Состав корпуса - научно-популярные, общественно-политические и информационные статьи из журналов и интернет-изданий (с 1980 г. по настоящее время) и русская художественная проза второй половины XX в.

Вполне очевидно, что эта выборка данных будет неоднородна качественно: статьи/тексты и комментарии в интернете имеют особые отличительные черты. К примеру, как отмечает Холодковская Е. В. [44], «релевантными характеристиками интернет-комментария являются языковая краткость, меньшая нормированность, использование эмоционального синтаксиса, упрощение синтаксических структур и влияние синтаксиса разговорной речи». Из этого можно сделать предположение о том, что предложения из интернет-комментариев явно будут короче в среднем, чем те же структуры из текстов корпуса, и что это может породить неоднородность. А она, учитывая то, что предложения, как предполагается, будут собственно объектами классификации, может негативно повлиять на качество обучения модели. Для того, чтобы её нивелировать, данные были подвергнуты процедуре фильтрования: все предложения, имеющие менее 40 символов, были удалены из выборки.

Таким образом, после данной процедуры средняя длина предложения в текстах интернет-комментариев и корпусных текстах составили примерно 111 и 125 символов соответственно, что является вполне допустимым показателем. Помимо прочего, данное фильтрование помогло минимизировать влияние ошибок при разбиении текстов на предложения: сложные и неоднозначные для имеющегося инструментария случаи (например, такие, как сокращения вида «и т. д.» и прямая речь автора), порождающие два предложения, были разрешены благодаря данной процедуре с минимальной потерей информации. В итоге после проведения фильтрации мощность классов стала равна 7039 и 1002 объектам для класса нейтральных высказываний и класса оскорблений соответственно, что означает пропорциональное соотношение между классами 7 к 1.

3.2 Формирование векторов параметров для машинного обучения

Вначале производится чтение файлов, содержащих данные в формате txt, на которых будет производиться обучение модели, разбиение текстов на предложения и процесс их фильтрации, описанный в предыдущей части данной работы. Затем происходит лемматизация полученных объектов и их приведение к нижнему регистру с целью минимизации числа ошибок токенизации в дальнейшем.

После этого данные делятся на обучающую и тестовую выборки. Это делается вручную в пропорции 9 к 1 соответственно между наборами данных, при этом данная пропорция сохраняется и между классами в этих выборках, так как данные изначально не сбалансированы, и случайное разделение выборки на обучающую и тестовую могло бы испортить процесс обучения.

Полученная тестовая выборка данных токенизируется при помощи регулярных выражений, а полученный список токенов сортируется при помощи списка стоп-слов и регулярных выражений (на этот раз - на предмет ошибок токенизации, так как в текстах могут быть элементы на иностранном языке или прочие нерелевантные элементы). Отсортированные токены передаются для проверки их частеречной принадлежности с помощью библиотеки PyMorphy2: это делается для того, чтобы исключить части речи, семантическое значение которых отсутствует (подразумевается, что служебные части речи им не обладают). Результатом данной операции является окончательный список, состоящий из прошедших все фильтры слов-токенов, приведённых к нормальной форме. Он и будет являться множеством параметров для модели.

Финальным шагом является формирование вектора параметров для каждого текста сообщения путём проверки, находится ли каждый из параметров в множестве слов каждого из текстов сообщений. Таким образом, множество значений каждой из компонент вектора составляет две цифры - 0 или 1. Данное решение обусловлено тем, что большинство высказываний не будет содержать повторяющихся значимых семантически слов в связи с малой длиной текста, поэтому искать частоту слова-параметра в объекте и рассчитывать значение соответствующей ему компоненты вектора не имеет особого смысла. Последней компонентой итогового вектора является маркер классовой принадлежности: 0 для класса нейтральных высказываний и 1 для оскорбительных.

3.3 Обучение модели и анализ полученных результатов

Для обучения модели были выбраны два наиболее часто используемых алгоритма машинного обучения для работы с несбалансированными данными: логистическая регрессия и метод опорных векторов с линейным ядром (Linear SVM). Реализации данных алгоритмов были взяты из библиотеки scikit-learn. Было обучено две модели для каждого алгоритма: невзвешенная и взвешенная (каждый из классов получил вес, равный единице, делённой на мощность класса). Они будут сравниваться на основе трёх метрик: точность, полнота и F-мера. Доля правильных решений классификатора (англ. accuracy) не будет использована для сопоставления моделей, так как при обучении на несбалансированных данных она не даёт никакой важной информации.

3.3.1 Модель, обученная с помощью алгоритма логистической регрессии

Таблица №1

Класс нейтральных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная логистическая регрессия

0.98

0.99

0.99

700

Взвешенная логистическая регрессия

0.99

0.92

0.95

700

Выше приведена первая таблица, показывающая качество работы моделей при классификации нейтральных высказываний. Невзвешенная логистическая регрессия ожидаемо превзошла взвешенную по F-мере, так как в последней классификация искажается в пользу менее представленного класса в обучающей выборке, то есть в пользу класса оскорбительных высказываний. Преимущество взвешенной логистической регрессии в точности слишком незначительно, чтобы делать на его основе какие-либо выводы.

Таблица №2

Класс оскорбительных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная логистическая регрессия

0.95

0.86

0.90

100

Взвешенная логистическая регрессия

0.74

0.94

0.83

100

Для класса оскорбительных высказываний результаты вышли противоположные: невзвешенная логистическая регрессия значительно превзошла взвешенную в точности классификации, но при этом заметно уступила в полноте. Согласно F-мере, которая является результирующим параметром для точности и полноты, лучше с классом оскорбительных высказываний работает невзвешенная логистическая регрессия, что расходится с первоначальной гипотезой.

3.3.2 Модель, обученная с помощью алгоритма Linear SVM

Таблица №3

Класс нейтральных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная Linear SVM

0.99

0.95

0.97

700

Взвешенная Linear SVM

0.99

0.94

0.96

700

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

Таблица №4

Класс оскорбительных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная Linear SVM

0.73

0.94

0.82

100

Взвешенная Linear SVM

0.70

0.94

0.80

100

То же самое, что наблюдалось при тестах моделей логистической регрессии на классе оскорбительных высказываний, было получено и при экспериментах с моделями, обученными с помощью алгоритма Linear SVM, однако в данном случае преимущество невзвешенной модели по F-мере вышло не таким значительным. Однако стоит отметить, что рассматриваемый в этой секции алгоритм по F-мере полностью уступил алгоритму логистической регрессии, что косвенно свидетельствует о превосходстве последнего над первым при работе с несбалансированными данными.

Несмотря на явную классовую несбалансированность данных (отношение между мощностями классов составляет 7 к 1), ни в одном из случаев не удалось добиться улучшения общего качества работы по сравнению с обучением на несбалансированных данных. Общий тренд таков, что применение весов для модели даёт прирост в полноте, однако снижает точность классификации. Для того чтобы проверить сделанный выше вывод, было решено обучить ещё одну пару моделей, используя те же алгоритмы, но сделав выборку данных для класса оскорбительных высказываний в 2 раза меньше, чтобы несбалансированность мощностей классов проявилась ещё очевиднее (14 к 1 в пользу класса нейтральных высказываний).

3.3.3 Модель, обученная с помощью алгоритма логистической регрессии на сильно несбалансированных данных

Для обучения данных моделей было выбрано случайным образом 500 объектов из выборки класса оскорбительных высказываний. Тестовая выборка данных этого класса тоже была урезана в 2 раза и составила 50 экземпляров. Таким образом, количество слов-параметров снизилось с 14714 до 14210.

Таблица №5

Класс нейтральных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная логистическая регрессия

0.96

1.00

0.98

700

Взвешенная логистическая регрессия

0.98

0.96

0.97

700

Для класса нейтральных высказываний по сравнению с предыдущей серией экспериментов ситуация не изменилась: невзвешенная логистическая регрессия по-прежнему незначительно уступает в точности, но превосходит в полноте и F-мере. Впрочем, превосходство стало совершенно незначительным.

Таблица №6

Класс оскорбительных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная логистическая регрессия

1.00

0.48

0.65

50

Взвешенная логистическая регрессия

0.68

0.76

0.72

50

По сравнению с первым подобным экспериментом для класса оскорбительных высказываний этой модели ситуация снова не изменилась относительно превосходства невзвешенной логистической регрессии в точности и более низкого показателя полноты по сравнению с взвешенной. Однако следует обратить внимание на то, что сильная несбалансированность данных очень негативно повлияла на полноту невзвешенной логистической регрессии, что привело к серьёзному падению F-меры. Это позволило взвешенной логистической регрессии превзойти невзвешенную в качестве на 7 процентов и подтвердить гипотезу о том, что при сильной несбалансированности данных метод с применением весов может дать преимущество по сравнению с обучением на несбалансированных данных.

3.3.4 Модель, обученная с помощью алгоритма LinearSVM на сильно несбалансированных данных

Таблица №7

Класс нейтральных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная Linear SVM

0.98

0.98

0.98

700

Взвешенная Linear SVM

0.98

0.96

0.97

700

Для класса нейтральных высказываний показатели изменились незначительно и даже дали незначительный прирост в F-мере для обеих моделей, что можно объяснить стремлением модели SVM максимизировать долю правильных решений ценой искажения классификации в пользу более представленного класса.

Таблица №8

Класс оскорбительных высказываний

Точность

Полнота

F-мера

Количество объектов в тестовой выборке класса

Невзвешенная Linear SVM

0.69

0.68

0.69

50

Взвешенная Linear SVM

0.65

0.76

0.70

50

В данном случае, в отличие от предыдущего эксперимента с применением Linear SVM на менее несбалансированной выборке, незначительное преимущество в F-мере получила взвешенная логистическая регрессия. Несмотря на её общее превосходство, сделать однозначный вывод о том, что взвешенная модель, использующая данный алгоритм, работает лучше, чем невзвешенная, будет некорректно.

3.4 Анализ полученных результатов

Несмотря на присутствующую несбалансированность данных в первом обучающем наборе данных (отношение между мощностями классов 7 к 1), гипотеза о том, что использование методов с распределением весов поможет улучшить результат классификации текстов по сравнению с обучением на несбалансированных данных, не подтвердилась. Однако после проведения подобного испытания на сильно несбалансированных данных (отношение между мощностями классов 14 к 1), было установлено, что падение показателя точности невзвешенных моделей действительно приводит к относительному улучшению результата классификации (пусть и незначительному для LinearSVM моделей).

Что касается показателей полноты и точности в отдельности, то результаты тестирования моделей показали, что невзвешенные модели имеют более высокий показатель полноты при классификации нейтральных высказываний, в то время как использование взвешенных моделей для этого класса даёт преимущество в точности (однако следует заметить, что данное преимущество незначительно и не позволяет улучшить качество классификации в целом).

При классификации оскорбительных высказываний были получены противоположные предыдущему случаю результаты: использование взвешенных моделей помогает значительно повысить показатель полноты, а использование невзвешенных - точности.

Заключение

В ходе данного исследования были проанализированы методы классификации для несбалансированных данных, а также определён и реализован наиболее эффективный из них с учётом текстовой специфики русского языка.

В результате анализа методов классификации для несбалансированных данных было установлено, что эффективнее работать с изменением порога решений и весами ошибок разного рода, чем пытаться изменить распределение обучающего набора данных случайным образом или синтетически. В связи с этим наиболее эффективным методом для работы с несбалансированными данными был признан метод с распределением весов, так как он работает с весами и имеет связь в теории с обучением на несбалансированных данных. Тем не менее, несмотря на все его достоинства, он очень зависим от матрицы весов, которую зачастую достаточно сложно вычислить. Однако недостатки методов сэмплинга и методов на базе ядра были признаны ещё более серьёзными: при использовании первого слишком велик риск переобучения или потери информации, а второй может быть чрезмерно требователен к сложности сопутствующих вычислений или вовсе игнорировать миноритарный класс из-за лежащего в их основе SVM алгоритма машинного обучения, который требует комбинации с другими методами для получения приемлемых результатов.

Для эмпирической проверки сделанного ранее теоретического вывода была выбрана задача бинарной классификации высказываний на русском языке в зависимости от того, корректны ли они или содержат какую-либо оскорбительную информацию. Для решения данной задачи был выбран метод представления высказывания как вектора, компонентами которого являлись слова-параметры, отобранные с помощью морфологического анализа и считающиеся значимыми для модели (так как данный список слов был очищен от стоп-слов и служебных частей речи и лемматизирован). Значение компонентов вектора зависело от того, встречается ли слово, ассоциированное с ним, в анализируемом высказывании.

Для обучения модели были выбраны два наиболее часто используемых алгоритма машинного обучения для работы с несбалансированными данными: логистическая регрессия и метод опорных векторов с линейным ядром (Linear SVM). Реализации данных алгоритмов были взяты из библиотеки scikit-learn. Было обучено две модели для каждого алгоритма: невзвешенная и взвешенная (каждый из классов получил вес, равный единице, делённой на мощность класса) на двух наборах данных (умеренно несбалансированный с отношением мощностей классов 7 к 1 и сильно несбалансированный - с отношением 14 к 1). Для сравнения результатов классификации были использованы три метрики: точность, полнота и F-мера.

В результате анализа результатов было выяснено, что использование методов с распределением весов не помогло улучшить результат классификации текстов по сравнению с обучением на умеренно несбалансированных данных для данной задачи. Однако после проведения подобного испытания на сильно несбалансированных данных, было установлено, что падение показателя точности невзвешенных моделей действительно приводит к относительному улучшению результата классификации (пусть и незначительному для LinearSVM моделей). Также было выявлено, что во всех проведённых испытаниях невзвешенные модели имели более высокий показатель полноты при классификации нейтральных высказываний, в то время как использование взвешенных моделей для этого класса даёт преимущество в точности. При классификации же оскорбительных высказываний были получены противоположные предыдущему случаю результаты: использование взвешенных моделей помогает значительно повысить показатель полноты, а использование невзвешенных - точности.

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

Библиографический список

1. A. Estabrooks, T. Jo, and N. Japkowicz, “A Multiple Resampling Method for Learning from Imbalanced Data Sets”, Computational Intelligence, vol. 20, pp. 18-36, 2004.

2. B. Raskutti and A. Kowalczyk, “Extreme Re-Balancing for SVMs: A Case Study”, ACM SIGKDD Explorations Newsletter, vol. 6, no. 1, pp. 60-69, 2004.

3. B.X. Wang and N. Japkowicz, “Boosting Support Vector Machines for Imbalanced Data Sets”, Lecture Notes in Artificial Intelligence, vol. 4994, pp. 38-47, 2008.

4. B.X. Wang and N. Japkowicz, “Imbalanced Data Set Learning with Synthetic Samples”, Proc. IRIS Machine Learning Workshop, 2004.

5. C. Elkan, “The Foundations of Cost-Sensitive Learning”, Proc. Int'l Joint Conf. Artificial Intelligence, pp. 973-978, 2001.

6. D. Mease, A.J. Wyner, and A. Buja “Boosted Classification Trees and Class Probability/Quantile Estimation”, J. Machine Learning Research, vol. 8, pp. 409-439, 2007.

7. Foster Provost (2000) “Machine Learning from Imbalanced Data Sets”, Proceedings of the AAAI'2000 workshop on imbalanced data sets (http://www.aaai.org/Papers/Workshops/2000/WS-00-05/WS00-05-001.pdf).

8. G. Fung and O.L. Mangasarian, “Multicategory Proximal Support Vector Machine Classifiers”, Machine Learning, vol. 59, nos. 1/2, pp. 77-97, 2005.

9. G. Wu and E. Chang, “Class-Boundary Alignment for Imbalanced Data Set Learning”, Proc. Int'l Conf. Data Mining (ICDM '03), Workshop Learning from Imbalanced Data Sets II, 2003.

10. G. Wu and E.Y. Chang, “KBA: Kernel Boundary Alignment Considering Imbalanced Data Distribution”, IEEE Trans. Knowledge and Data Eng., vol. 17, no. 6, pp. 786-795, June 2005.

11. G.E.A.P.A. Batista, R.C. Prati, and M.C. Monard, “A Study of the Behavior of Several Methods for Balancing Machine Learning Training Data”, ACM SIGKDD Explorations Newsletter, vol. 6, no. 1, pp. 20-29, 2004.

12. G.M. Weiss, “Mining Rare Cases”, Data Mining and Knowledge Discovery Handbook: A Complete Guide for Practitioners and Researchers, pp. 765-776, Springer, 2005.

13. H. Guo and H.L. Viktor, “Learning from Imbalanced Data Sets with Boosting and Data Generation: The DataBoost IM Approach”, ACM SIGKDD Explorations Newsletter, vol. 6, no. 1, pp. 30-39, 2004.

14. H. Han, W.Y. Wang, and B.H. Mao, “Borderline-SMOTE: A New Over-Sampling Method in Imbalanced Data Sets Learning”, Proc. Int'l Conf. Intelligent Computing, pp. 878-887, 2005.

15. H. He, E. A. Garcia, “Learning from Imbalanced Data”, IEEE transactions on knowledge and data engineering, vol. 21, no. 9, September 2009. - pp. 1263-1284.

16. H. He, Y. Bai, E.A. Garcia, and S. Li, “ADASYN: Adaptive Synthetic Sampling Approach for Imbalanced Learning”, Proc. Int'l J. Conf. Neural Networks, pp. 1322-1328, 2008.

17. J. Zhang and I. Mani, “KNN Approach to Unbalanced Data Distributions: A Case Study Involving Information Extraction”, Proc. Int'l Conf. Machine Learning (ICML '2003), Workshop Learning from Imbalanced Data Sets, 2003.

18. K. Chen, B.L. Lu, and J. Kwok, “Efficient Classification of Multi-Label and Imbalanced Data Using Min-Max Modular Classifiers”, Proc. World Congress on Computation Intelligence - Int'l Joint Conf. Neural Networks, pp. 1770-1775, 2006.

19. M.A. Maloof, “Learning When Data Sets Are Imbalanced and When Costs Are Unequal and Unknown”, Proc. Int'l Conf. Machine Learning, Workshop Learning from Imbalanced Data Sets II, 2003.

20. Mehryar Mohri, Afshin Rostamizadeh, Ameet Talwalkar (2012) “Foundations of Machine Learning”, The MIT Press ISBN 9780262018258.

21. N. Japkowicz and S. Stephen, “The Class Imbalance Problem: A Systematic Study”, Intelligent Data Analysis, vol. 6, no. 5, pp. 429-449, 2002.

22. N. V. Chawla, A. Lazarevic, L.O. Hall, and K.W. Bowyer, “SMOTEBoost: Improving Prediction of the Minority Class in Boosting”, Proc. Seventh European Conf. Principles and Practice of Knowledge Discovery in Databases, pp. 107-119, 2003.

23. N. V. Chawla (2005) “Data mining for imbalanced datasets: an overview” (https://www3.nd.edu/~dial/publications/chawla2005data.pdf).

24. N. V. Chawla, K.W. Bowyer, L.O. Hall, and W.P. Kegelmeyer, “SMOTE: Synthetic Minority Over-Sampling Technique”, J. Artificial Intelligence Research, vol. 16, pp. 321-357, 2002.

25. P. Domingos (1999) “MetaCost: A General Method for Making Classifiers Cost-Sensitive” (http://homes.cs.washington.edu/~pedrod/papers/kdd99.pdf).

26. P. Kang and S. Cho, “EUS SVMs: Ensemble of Under sampled SVMs for Data Imbalance Problems”, Lecture Notes in Computer Science, vol. 4232, pp. 837-846, 2006.

27. R. Akbani, S. Kwek, and N. Japkowicz, “Applying Support Vector Machines to Imbalanced Data Sets”, Lecture Notes in Computer Science, vol. 3201, pp. 39-50, 2004.

28. S. Ertekin, J. Huang, and C.L. Giles, “Active Learning for Class Imbalance Problem”, Proc. Int'l SIGIR Conf. Research and Development in Information Retrieval, pp. 823-824, 2007.

29. Settles, Burr (2010) “Active Learning Literature Survey” (http://burrsettles.com/pub/settles.activelearning.pdf).

30. T. Jo and N. Japkowicz, “Class Imbalances versus Small Disjuncts”, ACM SIGKDD Explorations Newsletter, vol. 6, no. 1, pp. 40-49, 2004.

31. V. N. Vapnik, “The Nature of Statistical Learning Theory”, Springer, 1995.

32. W. Fan, S.J. Stolfo, J. Zhang, and P.K. Chan, “AdaCost: Misclassification Cost-Sensitive Boosting”, Proc. Int'l Conf. Machine Learning, pp. 97-105, 1999.

33. X. Hong, S. Chen, and C.J. Harris, “A Kernel-Based Two-Class Classifier for Imbalanced Data Sets”, IEEE Trans. Neural Networks, vol. 18, no. 1, pp. 28-41, Jan. 2007.

34. X. Y. Liu and Z. H. Zhou, “The Influence of Class Imbalance on Cost-Sensitive Learning: An Empirical Study”, Proc. Int'l Conf. Data Mining, pp. 970-974, 2006.

35. X.Y. Liu, J. Wu, and Z.H. Zhou, “Exploratory Under Sampling for Class Imbalance Learning”, Proc. Int'l Conf. Data Mining, pp. 965-969, 2006.

36. Y. Sun, M.S. Kamel, A.K.C. Wong, and Y. Wang, “Cost-Sensitive Boosting for Classification of Imbalanced Data”, Pattern Recognition, vol. 40, no. 12, pp. 3358-3378, 2007.

37. Y. Tang and Y.Q. Zhang, “Granular SVM with Repetitive Undersampling for Highly Imbalanced Protein Homology Prediction”, Proc. Int'l Conf. Granular Computing, pp. 457- 460, 2006.

38. Y. Tang, B. Jin, and Y. Q. Zhang, “Granular Support Vector Machines with Association Rules Mining for Protein Homology Prediction”, Artificial Intelligence in Medicine, special issue on computational intelligence techniques in bioinformatics, vol. 35, nos. 1/2, pp. 121-134, 2005.

39. Y.H. Liu and Y.T. Chen, “Face Recognition Using Total Margin-Based Adaptive Fuzzy Support Vector Machines”, IEEE Trans. Neural Networks, vol. 18, no. 1, pp. 178-192, Jan. 2007.

40. Алёна Иванова, Елена Кузнецова, Дмитрий Николаев (2015) “Прикладные особенности обучения нейросетевых классификаторов в индустриальных задачах распознавания образов” (http://itas2015.iitp.ru/pdf/1570211873.pdf).

41. Анна Кузьмишкина, Ольга Баринова, Антон Конушин (2008) «Выбор объектов для обучения в условиях сильной несбалансированности классов» (http://graphicon.ru/html/2008/proceedings/Russian/SR2/Paper_3.pdf).

42. Вентцель Е.С. Теория вероятностей: Учеб. для вузов. -- 6-е изд. стер. -- М.: Высш. шк., 1999.-- 576 c.

43. Словарь-справочник уголовного права. -- М.: Норма - Инфра-М. Т. А. Лесниевски-Костарева. 2000.

44. Холодковская Е. В., «Особености синтаксиса англоязычного интернет-коммментария социальной сети Facebook» (2014) (http://cyberleninka.ru/article/n/osobennosti-sintaksisa-angloyazychnogo-internet-kommentariya-sotsialnoy-seti-facebook).

Приложение

import os

import re

# подгрузка в программу модуля для работы с операционной системой и модуля регулярных выражений

path_dir_norm ='C:/Users/Миша/Desktop/нейтральные тексты'

path_dir_dev = 'C:/Users/Миша/Desktop/оскорбительные тексты'

# присвоение переменным значений с адресами папок текстов

def extracting_path(path_dir):

container = []

for d, dirs, files in os.walk(path_dir):

for f in files:

path = os.path.join(d,f)

container.append(path)

return container

# функция для извлечения адресов текстов из папок

container_norm = extracting_path(path_dir_norm)

def texts_into_sents(container_of_links, encoding_par = 'utf-8'):

sentences_final = []

for i in range(len(container_of_links)):

file = open(container_of_links[i],encoding=encoding_par)

try:

text = file.read()

file.close()

text = text.lower()

all_sentences = text.split('.')

#for sent in all_sentences:

# sentences_final.append(sent)

sentences_final.extend(all_sentences)

except UnicodeDecodeError:

i = i + 1

return sentences_final

# функция для преобразования текстов в предложения

norm_sentences = [sent for sent in texts_into_sents(container_norm) if len(sent) > 39]

# сортировка нейтральных предложений по длине

container_dev = extracting_path(path_dir_dev)

dev_sentences = [sent for sent in texts_into_sents(container_dev, encoding_par='windows-1251') if sent.find('тип нарушения:') == -1 and sent.find('тип материала') == -1

and sent.find('название статьи:') == -1 and sent.find('предупреждение:') == -1 and len(sent) > 39]

# извлечение предложений из оскорбительных текстов и их сортировка по длине

def tokenize(string):

tokens = re.findall("\w+|['.']", string)

return tokens

#функция для токенизации

from pymystem3 import Mystem

#подгрузка в программу морфологического анализатора Mystem

mystem = Mystem()

tokens_norm = tokenize(' . '.join(norm_sentences))

tokens_dev = tokenize(' . '.join(dev_sentences))

#токенизация предложений обеих классов

lemmas_norm = mystem.lemmatize(' '.join(tokens_norm))

lemmas_norm_sents = ''.join(lemmas_norm).split('.')

lemmas_dev = mystem.lemmatize(' '.join(tokens_dev))

lemmas_dev_sents = ''.join(lemmas_dev).split('.')

#лемматизация

tokens = tokenize(' '.join(lemmas_norm_sents [:-700]))

tokens.extend(tokenize(' '.join(lemmas_dev_sents [:-100])))

tokens = list(set(tokens))

#выбор параметров из обучающей выборки путём токенизации

skewed_lemmas_sents = lemmas_dev_sents[:500]

skewed_tokens = tokenize(' '.join(lemmas_norm_sents [:-700]))

skewed_tokens.extend(tokenize(' '.join(lemmas_dev_sents [:-50])))

skewed_tokens = list(set(skewed_tokens))

#выбор параметров для сильно несбалансированных данных

from nltk.corpus import stopwords

stop_words = stopwords.words('russian')

import pymorphy2

morph = pymorphy2.MorphAnalyzer()

#импортирование списка стоп-слов из корпуса и импортирование морфологического анализатора pymorphy2

parameters = []

skewed_parameters = []

for i in range(len(tokens)):

if tokens[i] not in stop_words:

smth = morph.parse(tokens[i])[0]

ne = smth.tag.POS

if ne == 'NOUN' or ne == 'ADJF' or ne =='ADJS' or ne == 'COMP' or ne =='VERB' or ne == 'INFN' or ne == 'PRTF' or ne =='PRTS' or ne =='GRND' or ne =='ADVB':

parameters.append(tokens[i])

for i in range(len(skewed_tokens)):

if skewed_tokens[i] not in stop_words:

smth = morph.parse(skewed_tokens[i])[0]

ne = smth.tag.POS

if ne == 'NOUN' or ne == 'ADJF' or ne =='ADJS' or ne == 'COMP' or ne =='VERB' or ne == 'INFN' or ne == 'PRTF' or ne =='PRTS' or ne =='GRND' or ne =='ADVB':

skewed_parameters.append(skewed_tokens[i])

#сортировка токенов по частям речи

trash = []

skewed_trash = []

for par in parameters:

temp = re.findall('[^а-я|\s]',par)

if temp:

trash.append(par)

parameters = [par for par in parameters if par not in trash]

for par in skewed_parameters:

temp = re.findall('[^а-я|\s]',par)

if temp:

skewed_trash.append(par)

skewed_parameters = [par for par in skewed_parameters if par not in skewed_trash]

#сортировка токенов по нерелевантным элементам

sentences_norm = [(sent, 0) for sent in lemmas_norm_sents]

sentences_dev = [(sent, 1) for sent in lemmas_dev_sents]

skewed_dev_sents = sentences_dev[:-500]

#добавление к списку предложений маркеров класса

train_data = sentences_norm[:-700] + sentences_dev[:-100]

test_data = sentences_norm[-700:] + sentences_dev[-100:]

skewed_train = sentences_norm[:-700] + skewed_dev_sents[:-50]

skewed_test = sentences_norm[-700:] + skewed_dev_sents[-50:]

#разделение выборки на обучающую и тестовую

data_str = ''

for i in range(len(train_data)):

temp = set(tokenize(train_data[i][0]))

for j in range(len(parameters)):

if parameters[j] in temp:

data_str += '1, '

else:

data_str += '0, '

data_str = data_str + str(train_data[i][1]) + '\n'

skew_data_str = ''

for i in range(len(skewed_train)):

temp = set(tokenize(skewed_train[i][0]))

for j in range(len(skewed_parameters)):

if skewed_parameters[j] in temp:

skew_data_str += '1, '

else:

skew_data_str += '0, '

skew_data_str = skew_data_str + str(skewed_train[i][1]) + '\n'

#формирование данных для обучения модели

train_data_txt = open('train_data_correct', 'w', encoding='utf-8')

train_data_txt.write(data_str)

train_data_txt.close()

train_data_txt = open('train_data_skew', 'w', encoding='utf-8')

train_data_txt.write(skew_data_str)

train_data_txt.close()

#сохранение обучающей выборки

testdata_str = ''

for i in range(len(test_data)):

temp = set(tokenize(test_data[i][0]))

for j in range(0, len(parameters)):

if parameters[j] in temp:

testdata_str += '1, '

else:

testdata_str += '0, '

testdata_str = testdata_str + str(test_data[i][1]) + '\n'

skew_testdata_str = ''

for i in range(len(skewed_test)):

temp = set(tokenize(skewed_test[i][0]))

for j in range(0, len(skewed_parameters)):

if skewed_parameters[j] in temp:

skew_testdata_str += '1, '

else:

skew_testdata_str += '0, '

skew_testdata_str = skew_testdata_str + str(skewed_test[i][1]) + '\n'

#формирование данных для тестовой выборки

test_data_txt = open('test_data_correct', 'w', encoding='utf-8')

test_data_txt.write(testdata_str)

test_data_txt.close()

test_data_txt = open('test_data_skew', 'w', encoding='utf-8')

test_data_txt.write(skew_testdata_str)

test_data_txt.close()

#сохранение тестовой выборки

import numpy as np

from sklearn.linear_model import LogisticRegression

from sklearn.svm import LinearSVC

#импортирование моделей для машинного обучения и модуля для работы с массивами числовых данных

dataset = np.loadtxt('train_data_correct', delimiter=",")

X = dataset[:,0:14713]

y = dataset[:,14714]

skew_dataset = np.loadtxt('train_data_skew', delimiter=",")

skew_X = skew_dataset[:,0:14209]

skew_y = skew_dataset[:,14210]

#импортирование маркеров классов и данных для обучения

model = LogisticRegression()

model.fit(X, y)

model_weight = LogisticRegression(class_weight='auto')

model_weight.fit(X, y)

model_svm = LinearSVC()

model_svm.fit(X, y)

model_svm_weight = LinearSVC(class_weight='auto')

model_svm_weight.fit(X, y)

model_skew = LogisticRegression()

model_skew.fit(skew_X, skew_y)

model_weight_skew = LogisticRegression(class_weight='auto')

model_weight_skew.fit(skew_X, skew_y)

model_svm_skew = LinearSVC()

model_svm_skew.fit(skew_X, skew_y)

model_svm_weight_skew = LinearSVC(class_weight='auto')

model_svm_weight_skew.fit(skew_X, skew_y)

#обучение моделей

from sklearn import metrics

#импортирование модуля для подсчёта метрик

testset = np.loadtxt('test_data_correct', delimiter=",")

X_test = testset[:,0:14713]

y_test = testset[:,14714]

skew_testset = np.loadtxt('test_data_skew', delimiter=",")

skew_X_test = testset[:,0:14209]

skew_y_test = testset[:,14210]

#импортирование маркеров классов и данных для тестов

predicted = model.predict(X_test)

print(metrics.classification_report(y_test, predicted))

predicted_weight = model_weight.predict(X_test)

print(metrics.classification_report(y_test, predicted_weight))

predicted = model_svm.predict(X_test)

print(metrics.classification_report(y_test, predicted))

predicted_weight = model_svm_weight.predict(X_test)

print(metrics.classification_report(y_test, predicted_weight))

predicted = model_skew.predict(skew_X_test)

print(metrics.classification_report(skew_y_test, predicted))

predicted_weight = model_weight_skew.predict(skew_X_test)

print(metrics.classification_report(skew_y_test, predicted_weight))

predicted = model_svm_skew.predict(skew_X_test)

print(metrics.classification_report(skew_y_test, predicted))

predicted_weight = model_svm_weight_skew.predict(skew_X_test)

print(metrics.classification_report(skew_y_test, predicted_weight))

#проверка качества работы модели

Размещено на Allbest.ru

...

Подобные документы

  • Понятие экономического анализа как науки, его сущность, предмет, общая характеристика методов и социально-экономическая эффективность. Основные группы эконометрических методов анализа и обработки данных. Факторный анализ экономических данных предприятия.

    реферат [44,7 K], добавлен 04.03.2010

  • Классификации методов экономического анализа, их неформальные и формализованные виды. Характеристика метода средних величин. Применение средней геометрической. Метод группировки данных, агрегатный индекс. Определение индекса цен, формы их построения.

    эссе [81,7 K], добавлен 25.10.2011

  • Особенности теории предпочтения, стандартные типы закономерностей процессов обнаружения данных. Разнообразие задач классификации, процедура ее описания. Методы исследования и виды структур данных. Основные положения и методики статистического анализа.

    курсовая работа [218,0 K], добавлен 24.06.2009

  • Изучение теоретических аспектов применения статистических методов. Изучение применения статистических методов для обеспечения качества на производстве. Анализ управления качеством на примере материала пенобетон. Особенности приемочного контроля.

    курсовая работа [799,8 K], добавлен 15.05.2023

  • Классификация методов прогнозирования. Характеристика поискового и нормативного прогнозов. Сущность и цель методов экстраполяции и методов информационного моделирования. Сущность интуитивных методов прогнозирования и особенности экспертных оценок.

    реферат [20,4 K], добавлен 10.01.2012

  • Понятие фирмы (предприятия) как основного субъекта рыночной экономики. Рассмотрение классификации фирм. Анализ издержек и их видов. Изучение прибыли и методов её расчётов. Исследование общей прибыльности работы современных белорусских предприятий.

    реферат [308,4 K], добавлен 08.09.2015

  • Понятие и сущность методов прогнозирования. Описание трехуровневой и четырехуровневой классификационных схем методов социально-экономического прогнозирования. Рассмотрение индивидуальных и коллективных экспертных оценок. Анализ алгоритма выбора метода.

    презентация [293,2 K], добавлен 22.08.2015

  • Машинное обучение и статистические методы анализа данных. Оценка точности прогнозирования. Предварительная обработка данных. Методы классификации, регрессии и анализа временных рядов. Методы ближайших соседей, опорных векторов, спрямляющего пространства.

    контрольная работа [833,1 K], добавлен 04.09.2016

  • Методы розничной продажи товаров: теоретические основы. Анализ регионального рынка продовольственных товаров; характеристика коммерческой деятельности предприятия розничной торговли ИП "Иванов В.Г."; оценка экономической эффективности методов продажи.

    курсовая работа [41,9 K], добавлен 27.06.2012

  • Применение методов экспертных оценок в решении задач управления производством. Сущность метода Дельфи. Экономические методы диагностики: сравнение, группировка, балансовый и графические методы. Виды бенчмаркетинга, его применение для оценки качества.

    контрольная работа [24,4 K], добавлен 10.12.2010

  • Значение и задачи анализа заемного капитала, характеристика его методов. Анализ структуры заемного капитала и эффективности его использования, анализ кредитоспособности и ликвидности предприятия. Достоинства и недостатки привлечения заемного капитала.

    курсовая работа [62,3 K], добавлен 16.11.2010

  • Показатели для расчета эффективности строительства и эксплуатации кирпичного завода. Определение эффективности производственной программы завода на основе рыночного и затратного методов ценообразования. Подведение итогов исходя из полученных данных.

    курсовая работа [329,8 K], добавлен 14.10.2010

  • Основные цели и принципы оценки стоимости предприятия, достоинства и недостатки подходов к ее осуществлению. Финансовое состояние предприятия и значение его анализа. Согласование результатов оценки стоимости ООО "Дубок" с помощью различных методов.

    курсовая работа [142,4 K], добавлен 21.12.2014

  • Анализ классификации коммерческих рисков и факторов, влияющих на их уровень, системы и методов управления коммерческими рисками на гостиничном предприятии. Причины и способы уменьшения отрицательных последствий от возникновения рисковых ситуаций.

    курсовая работа [494,9 K], добавлен 09.10.2014

  • Трансакционные издержки в экономическом анализе. Исследование факторов, влияющих на уровень и структуру издержек. Изучение классификации трансакционных издержек Милгрома и Робертса. Трансакционные блага. Характеристика методов снижения издержек измерения.

    презентация [949,8 K], добавлен 13.09.2012

  • Оперативное решения практических задач. Сущность статистического наблюдения, его организационные формы, виды и способы. Проверка достоверности, погрешность и ошибки статистических данных. Формирование данных, которые подвергаются обработке и анализу.

    контрольная работа [23,1 K], добавлен 23.07.2009

  • Общая характеристика методов ценовой политики государства и предприятия (фирмы). Основная классификация методов ценообразования: рыночные и затратные методы ценообразования, их преимущества и недостатки при работе. Описание элементов рыночной экономики.

    курсовая работа [307,3 K], добавлен 26.12.2008

  • Рассмотрение форм (отчетность, регистр), методов организации сбора, обработки данных статистического наблюдения, их структурного и содержательного анализа с помощью обобщающих показателей, способов статистического моделирования и прогнозирования.

    методичка [3,0 M], добавлен 10.04.2010

  • Эконометрика - совокупность методов анализа связей между экономическими показателями на основании статистических данных. Требования к уровню освоения содержания дисциплины. Методологические основы курса, парная и множественная регрессия и корреляция.

    методичка [219,8 K], добавлен 15.11.2010

  • Рассмотрение понятия, основных форм и видов централизованного и децентрализованного управления рыночным хозяйством. Сущность, цели и схемы структурной организации государственного регулирования экономики. Характеристика его прямых и косвенных методов.

    реферат [27,9 K], добавлен 22.11.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.