Научная статья на тему 'Оптимизация алгоритма KNN для классификации текстов'

Оптимизация алгоритма KNN для классификации текстов Текст научной статьи по специальности «Математика»

CC BY
202
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
KNN / КЛАССИФИКАЦИЯ ТЕКСТОВ / ДВОИЧНАЯ КУЧА

Аннотация научной статьи по математике, автор научной работы — Ле Мань Ха

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Оптимизация алгоритма KNN для классификации текстов»

УДК 004.8

Ле Мань Ха

Московский физико-технический институт (государственный университет)

Оптимизация алгоритма KNN для классификации

текстов

Рассмотрены два подхода повышения быстродействия алгоритма Е^М для классификации текстов: уменьшение количества потенциальных ближайших соседей и использование двоичной кучи при поиске К ближайших соседей.

Ключевые слова: КММ, классификация текстов, двоичная куча

Le Manh Ha

Moscow Institute of Physics and Technology (State University)

Optimization of the algorithm KNN for text classification

In this paper, the main purpose is to consider two ways of optimization of the algorithm KNN for text classification: decrease the number of potential nearest neighbours and use binary heap in searching K nearest neighbours.

Key words: KNN, text classification, binary heap

1. Введение

ККК - К ближайших соседей - один из самых используемых методов классификации. Основным принципом метода К ближайших соседей является то, что объект относится к тому классу, которому принадлежат больше всего его ближайших соседей. Другими словами, для объекта рассмотрим его К ближайших соседей, дальше для каждого класса считаем, сколько из этих К соседей принадлежат данному классу, объект относится к классу с наибольшим количеством соседей [1].

ККК широко используется для классификации текстов. Для начала считаем координаты текстов в пространстве. Размер пространства есть количество терминов в корпусе (объем словаря). Считая ТЕ-ГОЕ для всех текстов в корпусе, получаем представления текста в виде векторов, каждый компонент вектора - «важность» соответствующего слова для данного текста. Координаты текстов используются для решения различных задач, в том числе классификация [2].

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

2. Оптимизация алгоритма KNN

Подход. Уменьшение количества потенциальных ближайших соседей

Для каждого термина храним г^ текстов, содержащих этот термин. Для быстрого поиска г^ текста сортируем координаты этих текстов по этому термину по возрастанию. Итак, для каждого термина £ есть список (гс!, ж), где х - значение координаты по данному термину: X(¿) = [(г^1,Ж1), (гй2,Х2)...(гйт,хт)}, где х\ <= х2... <= хт.

Три шага оптимизированного алгоритма ККК для классификации нового текста:

ТРУДЫ МФТИ. 2016. Том 8, № 1

Ле Мань Ха

93

Ш!аг 1. Вычисляем координаты (TF-IDF) этого текста.

ШШаг 2. Для каждого термина (t, х) ищем ближайшее к х значение на X(t) = = [(idi,xi), (id2,x2)...(idm,хт)], используя метод двоичного поиска [3].

Шаг 2-1. i = 1; j = т.

Шаг 2-2. Пока г < j.

Шаг 2-2-1. к = (г + j)div2.

Шаг 2-2-1. Если Хк < х, то i = к + 1.

Шаг 2-2-2. Если Хк >= х, то j = к.

После шага 2-2 Хк есть ближайшее значение к х на X (t).

ШШаг 3. Рассмотрим 2*К текстов вокруг (idk,Хк) на X(t), считая расстояние между текстами, проведем сравнение и обновление К ближайших соседей данного текста.

Итак, сложность оптимизированного алгоритма KNN: O(K*log(N)*|L|), а KNN: O(N*|L|), где N - количество текстов в корпусе, |L| - средняя длина текста в корпусе.

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

Подход 2. Использование двоичной кучи

Двоичная куча - это двоичное дерево, для которого выполнены 3 условия [3].

1. Значение в любой вершине не меньше (или не больше), чем значения её потомков.

2. Глубина листьев (расстояние до корня) отличается не более чем на 1 слой.

3. Последний слой заполняется слева направо.

Для каждого текста будем хранить его ближайшие соседи в двоичной куче, корень которой есть самый ближайший сосед.

Процедура поиска K ближайших соседей текста to.

ШШаг 1. Создание пустой двоичной кучи.

ШШаг 2. При рассмотрении текста ti, если размер кучи меньше, чем K, то просто добавляем ti в кучу, а если размер кучи равен K и расстояние между ti и to меньше, чем расстояние между корнем кучи и to, то обменяем корень кучи с ti и восстанавливаем свойства кучи.

Сложность процедуры поиска K ближайших соседей одного текста с использованием двоичной кучи: O(log(K)), а без него: O(K).

3. Тестирование

Было проведено тестирование оптимизированного алгоритма KNN на корпусе Wikinews на английском и русском языках и сравнивание его скорости, а также точности по сравнению с другими алгоритмами классификации текстов. Для оценки алгоритмов был использован метод K-Fold Cross-validation с параметром K = 10 [4].

Скорость и точность алгоритма KNN до и после оптимизации

Корпус и алгоритм Время тестирования (с) Точность (%)

English KNN Оптимизированный KNN 48 257 13 795 87.3 88.9

Russian KNN 9168 72.5

Оптимизированный KNN 4866 71.7

Из таблицы видно, что оптимизированный KNN работает существенно быстрее, чем KNN, а точность классификации почти совпадает.

Литература

1. Manning C.D., Raghavan P. Hinrich Schutze An Introduction to Information Retriveval. Cambridge University Press, 2009.

2. Jurafsky D., Martin J.H. Speech and Language Processing. Prentice-Hall Inc., 2000.

3. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. Introduction to algorithms. The MIT Press, 2009.

4. Hastie, Tibshirani Cross-validation and bootstrap. SLDM III., 2009. References

1. Manning C.D., Raghavan P. Hinrich Schutze An Introduction to Information Retriveval. Cambridge University Press, 2009.

2. Jurafsky D., Martin J.H. Speech and Language Processing. Prentice-Hall Inc., 2000.

3. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. Introduction to algorithms. The MIT Press, 2009.

4. Hastie, Tibshirani Cross-validation and bootstrap. SLDM III., 2009.

Поступила в редакцию 31.12.2015

i Надоели баннеры? Вы всегда можете отключить рекламу.