- •Кластерный анализ
- •2.1. Введение
- •2.2. Признаки объекта
- •2.3. Мера сходства объектов и классов. Расстояния.
- •2.3.1 Метрика Махалонобиса
- •2.3.1.1. Центр класса, дисперсия и среднеквадратичное отклонение
- •2.3.1.2. Скейлинг (масштабное преобразование) и стандартизованное расстояние
- •2.3.1.3 Ковариационная матрица
- •2.3.1.4 Алгоритм вычисления расстояния по Махалонобису
- •2.3.2. Функции сходства.
- •2.3.3 Расстояние между списками
- •2.4. Общая схема классификации и распознавания образов
- •2.4.1. Понятие об обучении. Обучение с учителем и без учителя.
- •2.4.2. Общая схема системы классификации
- •2.5. Разделяющие поверхности и разделяющие функции
- •2.5.1 Линейные и кусочно-линейные разделяющие функции
- •2.6. Методы классификации. Алгоритмы классификации.
- •2.6.1. Алгоритм максимина
- •2.6.2. Алгоритм к-средних
- •2.6.3. Нечеткий алгоритм к-средних (Fuzzy k-means)
- •Алгоритм изодата
Алгоритм изодата
ИЗОДАТА (по-английски ISODATA) означает «Итерационные самоорганизующиеся методы анализа данных». Это более сложный и гибкий алгоритм, чем рассмотренные ранее алгоритмы Максимина и К-средних. В частности, в отличие от алгоритма К-средних, количество классов здесь не фиксировано и может автоматически изменяться в процессе выполнения алгоритма путем объединения подобных классов и разбиения классов с большими среднеквадратичными отклонениями. Существенной особенностью алгоритма ИЗОДАТА является то, что здесь можно произвольно выбирать пороги для объединения и разбиения классов, а также ряд других параметров. Это позволяет проводить более гибкую и точную процедуру классификации, многократно выполняя вычисления и выбирая те значения параметров, которые обеспечивают наилучший результат. Отметим также, что алгоритм ИЗОДАТА предназначен для «четкой» классификации, т.е. может применяться, когда выборка объектов разделяется на сепарабельные классы в пространстве существенных признаков. В случае несепарабельных классов, т.е. в случае, когда между классами нельзя провести четкие границы, следует применять алгоритмы «нечеткой» классификации, например, нечеткий алгоритм К-средних. Область применения алгоритма ИЗОДАТА не ограничивается только распознаванием образов. Благодаря тому, что с его помощью можно легко обрабатывать большие массивы исходных данных, этот алгоритм используют для широкого класса практических задач в области метеорологии, социологии, медицины, биологии и т.д.
В алгоритме ИЗОДАТА используется ряд параметров, которые следует задать перед вычислениями:
– желательное количество классов, которое определяется на основе предварительного анализа совокупности объектов. Если такой анализ провести невозможно или очень сложно ввиду большого объема выборки, то значение можно выбрать произвольно. В ходе выполнения алгоритма ИЗОДАТА количество классов будет уточняться.
– максимальное количество итераций; этот параметр ограничивает количество итераций, которое может быть выполнено при работе алгоритма и позволяет ограничить время выполнения алгоритма в случае медленной сходимости, то есть когда для классификации объектов необходимо выполнить такое большое количество итераций, что затраты времени становятся неприемлемыми. Переменная хранит текущее количество выполненных итераций. Начальное значение этой переменной
- максимальное количество пар классов, которые могут быть объединены; этот параметр ограничивает «сверху» процедуру объединения классов, т.е. позволяет избежать ситуации, при которой количество классов на -той итерации оказывается существенно меньше желательного количества классов .
- минимальное количество объектов, которое может содержаться в классе; если в процессе итерации в каком либо классе окажется меньше, чем объектов, то этот класс удаляется. Таким образом, параметр используется для предотвращения ситуации, при которой пространство существенных признаков будет разбито на слишком маленькие классы.
- пороговое значение для среднеквадратичного отклонения, которое используется для разбиения классов.
- пороговое значение для расстояний между центрами классов, которое используется для объединения классов.
- весовой множитель для среднеквадратичного отклонения ; этот параметр используется для вычисления новых положений центров классов при разбиении класса с большим среднеквадратичным отклонением объектов от центра класса на два новых класса.
- метрика для вычисления расстояний в пространстве существенных признаков.
Выбор вышеперечисленных параметров в значительной степени эмпирический. Он основывается как на предварительном анализе массива исходных данных, так и на анализе самих результатов применения алгоритма. Если эти результаты оказались неудовлетворительными, следует по возможности выяснить, значение какого из параметров привело к таким результатам, изменить это значение и повторно выполнить алгоритм. Таким образом, многократно выполняя вычисления при различных значениях параметров, как правило, удается получить надежные результаты классификации объектов с помощью алгоритма ИЗОДАТА.
Словесное описание алгоритма
-
Произвольно выбираем начальных положений центов классов , используя массив исходных данных , где – количество объектов в выборке. При этом значение не обязательно равно значению параметра . Выбор начальных положений центров классов выполняется так же, как и в алгоритме К-средних: в качестве можно выбрать первых объектов выборки, либо случайным образом выбрать произвольных объектов.
-
Группируем объекты вокруг центров классов. Этот шаг также аналогичен соответствующему шагу алгоритма К-средних. Вычисляем в выбранной метрике расстояние между центрами классов и объектами выборки . Отметим, что если некоторые объекты на данной итерации являются центрами классов, то расстояния между ними вычислять не нужно. Следовательно, как и в простом алгоритме К-средних, на каждой итерации нужно отмечать объекты, являющиеся в данный момент центрами классов, и вычислять расстояния только между центрами классов и непомеченными объектами. Затем для каждого из объектов находим минимальное расстояние и относим объект к соответствующему классу: если , где через обозначен -ый класс.
-
Удаляем классы, количество объектов в которых меньше чем , т.е. если для некоторого , то удаляем класс и уменьшаем значение на единицу .
-
Вычисляем новые положения центров классов как среднее арифметическое векторов, принадлежащих одному классу:
.
Здесь для каждого суммирование производится только по объектам, принадлежащих данному -му классу . Таким образом, вычисления положений центров классов в алгоритме ИЗОДАТА производится по той же формуле, что и в простом алгоритме К-средних.
-
Для всех классов вычисляем среднее расстояние от центра класса до всех объектов, относящихся к данному классу:
.
-
Вычисляем взвешенное среднее расстояние объектов классов от их центров:
Весовым множителем в этой сумме является количество объектов в данном классе .
-
На этом шаге алгоритм разветвляется и требуется принять решение, по какой из двух ветвей следует производить дальнейшие вычисления. Одна из ветвей – шаги с 8-го по 10-ый - реализует разбиение классов с большими среднеквадратичными отклонениями объектов от центров классов, а другая ветвь – шаги с 11-го по 13-ый - реализует объединение подобных классов, т.е. классов, расстояния между центрами которых меньше выбранного порогового значения .
Критерий выбора одной из ветвей для дальнейших вычислений также является эмпирическим. Очевидно, что нужно сравнить количество имеющихся на данный момент классов с желательным количеством классов . При этом ясно, что если , то классов слишком мало и нужно увеличивать их количество, т.е. разбивать большие классы, а если , то классов слишком много и нужно объединять подобные классы. Однако, для принятия решения в алгоритме вышеназванные условия нужно конкретизировать. В общем случае выберем их следующим образом: если , то классы следует разбивать, а если , то классы следует объединять, если же , то количество классов следует оставить неизменным и перейти к следующей итерации. Здесь и – некоторые параметры, удовлетворяющие условиям и , определяющие диапазон для количества классов.
Выберем и . Таким образом, разбиение классов будем производить, если их в два и более раз меньше, чем желательно, а объединение – если их в два и более раз больше.
Итак, сформулируем окончательно решающее правило.
Если то перейти к шагу 8., иначе перейти к шагу 11.
Если то перейти к шагу 14.
-
Для того чтобы некоторый класс подходил для разбиения его на два класса, должны удовлетворяться одновременно три условия. Первое условие требует, чтобы максимальное среднеквадратичное отклонение объектов этого -го класса от его центра было больше установленного порога : . Второе условие требует, чтобы среднее расстояние от центра -го класса было больше взвешенного среднего расстояния : . Это условие означает, что данный класс имеет в пространстве существенных признаков размер, больший среднего размера класса для данной выборки объектов. И наконец, третье условие требует, чтобы в классе было больше объектов, чем минимально допустимое количество объектов в классе : , где c – некоторая константа, большая единицы. В дальнейшем будем считать, что . Подчеркнем, что только при выполнении всех трех из вышеперечисленных условий класс подходит для разбиения на два новых класса.
Таким образом, для принятия решения о разбиении некоторого -го класса нужно знать следующие три величины: максимальное среднеквадратичное отклонение объектов этого класса от его центра , среднее расстояние от объектов класса до его центра и взвешенное среднее расстояние для всей выборки D (остальные величины являются задаваемыми параметрами). Величины и уже вычислены в ш. 5 и ш. 6 соответственно. Теперь нужно вычислить максимальное среднеквадратичное отклонение. Для этого находим вектор среднеквадратичного отклонения для каждого класса (). Нижний индекс в – это номер существенного признака, n – их количество, а верхний индекс – это номер класса. Таким образом, размерность (количество компонент) вектора равно количеству существенных признаков объектов и совпадает с размерностью вектора – положения центра класса. Среднеквадратическое отклонение вычисляется следующим образом: -я компонента для -го класса (среднеквадратичное отклонение объектов класса по -ой координатной оси) вычисляется по формуле:
, .
Здесь - -ая компонента вектора - центра класса; - -ая компонента объекта ; для каждого класса суммирование производится только по объектам, принадлежащим данному классу .
Шаг 9. Находим максимальный из компонентов вектора и обозначаем его . Таким образом, из совокупности среднеквадратичных отклонений для разных существенных признаков выбирается максимальное. Эту операцию следует выполнить для всех классов .
Шаг 10. Теперь все величины, необходимые для принятия решения о разбиении классов, вычислены.
Если для какого-либо истинны все следующие условия:
,
,
,
тогда разбиваем класс на два новых класса. Центры этих двух классов вычисляются по формулам:
,
,
где - некоторый заранее заданный параметр. После этого удаляем старый центр класса (после разбиения класса на два новых старый класс больше не существует) и увеличиваем значение на единицу: . После того как все пригодные для разбиения классы будут разделены на два новых, полагаем (увеличиваем количество итераций на единицу) и переходим к шагу 2.
Если не существует такого , для которого все три вышеперечисленных условия истинны, то переходим к шагу 14.
Шаг 11. С этого шага начинается процедура объединения подобных классов. Под подобными здесь понимаются классы, находящиеся ближе всего друг к другу в пространстве существенных признаков. Чтобы найти такие классы, следует вычислить расстояния между всеми центрами классов, а затем выбрать из найденных расстояний некоторое количество наименьших. Количество классов с наименьшими расстояниями регулируется двумя параметрами: пороговым значением и максимальном количеством объединяемых пар классов . Первый из этих параметров определяет степень близости объединяемых классов, т.е. объединяются попарно только те классы, расстояние между центрами которых меньше . Второй параметр ограничивает «сверху» количество объединяемых классов. Такое ограничение необходимо для того чтобы предотвратить ситуацию, при которой количество классов на данной итерации оказывается существенно меньше желательного количества классов . Эта ситуация может возникнуть в случае, если для параметра выбрано слишком большое значение и количество классов подлежащих объединению будет больше чем это необходимо (то есть в эту категорию попадут классы, которые не следует объединять).
Вычисляем расстояния между всеми центрами классов:
для всех ,
а затем упорядочиваем эти найденные расстояний в порядке возрастания.
Шаг 12. После того, как расстояния между центрами классов упорядочены, выбираем из них те, которые меньше порога . Далее, из этих расстояний нужно выбрать те, которые соответствуют неповторяющимся классам и определить их количество . Этот этап необходим потому, что классы объединяются попарно, т.е. некоторый класс можно объединить только с другим классом, а именно с тем, расстояние до центра которого минимально. Если , то объединению подлежат все неповторяющиеся пары классов, для которых . Если же , то из найденных соответствующих неповторяющимся классам, следует отобрать наименьших.
Проиллюстрируем сказанное примером. Пусть количество классов , а расстояния между центрами классов в выбранной метрике: , , , , , , , , , . Параметры и имеют следующие значения: , . Упорядочим в порядке возрастания: , , , , , , , , , .
Условию удовлетворяют первые восемь расстояний. Отберем из них те, которые соответствуют неповторяющимся классам, просматривая список слева направо, т.е. в порядке возрастания расстояний. Первым в списке стоит . Далее идет , но 3-ий класс уже использован, он будет объединяться с 1-ым классом, значит пропускаем. Рассуждая далее аналогичным образом, находим, что из списка следует выбрать еще расстояние . Таким образом , а соответствующие расстояния и .
Сравним с параметром . При , , следовательно из двух подходящих для объединения пар классов – 1-ый с 3-им и 4-ый с 5-ым – нужно выбрать только одну пару, а именно ту, для которой расстояние между центрами классов минимально. Таким образом, объединить нужно 1-ый 3-ий классы.
Шаг 13. Объединяем классы попарно. Для вычисляем положения новых центров по формуле:
.
Здесь индекс указывает на номер объединяемой пары классов, а индексы и номера объединяемых классов. и - количества объектов в -ом и -ом классе соответственно, которые образуют -ую объединяемую пару; и - центры классов.
Так, для вышеприведенного примера, где объединяется только одна пара классов, , , , положение нового центра будет вычисляться по формуле:
,
где и - количества объектов в 1-ом и 3-ем классе соответственно, а и - их центры.
Затем следует удалить все старые центры объединенных классов (после объединения эти классы больше не существуют), т.е. удалить все и для . Уменьшить количество классов на : . После этого полагаем (увеличиваем количество итераций на единицу) и переходим к шагу 2.
Шаг 14. Заканчиваем вычисления, если достигнуто максимальное число итераций . Иначе увеличиваем на единицу счетчик итераций и выполняем следующую итерацию, т.е. полагаем и переходим к шагу 2.
Дополнить разделами
1. Вероятностный подход определения существенных признаков.
-
Распознавание сигналов. Оконные функции.
Литература
Р1. Bow S.T. Pattern recognition, Marcel Dekker Edit, Electrical Engineering and Elektronic series, 23, 1984, p. 30-32.