Применение динамического программирования к кластерному анализу
Первое применение кластерный анализ нашел в социологии. Название кластерный анализ происходит от английского слова cluster – гроздь, скопление. Впервые в 1939 был определен предмет кластерного анализа и сделано его описание исследователем Трионом. Главное назначение кластерного анализа – разбиение множества исследуемых объектов и признаков на однородные в соответствующем понимании группы или кластеры. Это означает, что решается задача классификации данных и выявления соответствующей структуры в ней.
Большое достоинство кластерного анализа в том, что он позволяет производить разбиение объектов не по одному параметру, а по целому набору признаков. Кроме того, кластерный анализ в отличие от большинства математико-статистических методов не накладывает никаких ограничений на вид рассматриваемых объектов, и позволяет рассматривать множество исходных данных практически произвольной природы. Это имеет большое значение, например, для прогнозирования конъюнктуры, когда показатели имеют разнообразный вид, затрудняющий применение традиционных эконометрических подходов.
Кластерный анализ позволяет рассматривать достаточно большой объем информации и резко сокращать, сжимать большие массивы социально-экономической информации, делать их компактными и наглядными.
Важное значение кластерный анализ имеет применительно к совокупностям временных рядов, характеризующих экономическое развитие (например, общехозяйственной и товарной конъюнктуры). Здесь можно выделять периоды, когда значения соответствующих показателей были достаточно близкими, а также определять группы временных рядов, динамика которых наиболее схожа.
Кластерный анализ можно использовать циклически. В этом случае исследование производится до тех пор, пока не будут достигнуты необходимые результаты. При этом каждый цикл здесь может давать информацию, которая способна сильно изменить направленность и подходы дальнейшего применения кластерного анализа. Этот процесс можно представить системой с обратной связью.
Динамическое программирование в кластерном анализе
Суть методов динамического программирования состоит в целенаправленном поиске разбиения, дающего минимальные значения величины W, при этом разбиения, которые приводят к большему значению W, отбрасываются.
Применение методов динамического программирования к проблеме кластеризации представляет собой последовательное нахождение оптимальной группировки, на каждом шаге которой вычисляется целевая функция; при этом лишние вычисления, присутствующие при методике полного перебора, исключаются. Другими словами, оптимальное решение находится поэтапно. Подход с помощью динамического программирования ускоряет обработку массива информации.
Прежде всего, альтернативы кластеризации классифицируются соответственно формам распределения. Компоненты форм распределения располагаются в убывающем порядке. На первом шаге для каждой компоненты первой формы распределения вычисляется и запоминается соответствующая целевая функция. На втором шаге для кластеров, соответствующих первым двум компонентам формы распределения вычисляются новые значения целевых функций; при этом привлекается вся информация, полученная на первом шаге; таким образом, внутригрупповая сумма квадратов не вычисляется заново для каждого кластера, а ее значение берется из предыдущего шага.
Необходимые формулы:
1) Квадрат расстояния:
2) W(z) для нулевого шага:
W1(z)=T(z-y)+W0(y)=T(z)+W0(0)=T(z)
3) T(Gi)
Блок-схемы реализации динамического программирования в Delphi:
function d(var i1,j1: integer):integer;
function t(var str:string):real;
Укрупненный алгоритм:
Опубликовал Kest
December 01 2009 13:48:48 ·
0 Комментариев ·
9988 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.