воскресенье, 3 ноября 2013 г.

Кластерный анализ в Statistica. Часть 4. Нейронные сети

 

Обширную тему решил затронуть. Искусственные нейронные сети. Попытаюсь дать представление на пальцах. Что это такое? Это попытка смоделировать человеческий мозг. Только более примитивно. Базовым элементом каждой нейронной сети является нейрон (Рис. 1).

Рисунок1

Рис. 1. Принципиальная схема нейрона.

Нейрон имеет входы, сумматор и функцию активации. На входы подается информация, например содержание трех хим. элементов в конкретной пробе. Каждое из них умножается на определенный коэффицициент. Далее входящие сигналы суммируются и преобразуются с помощью активационной функции. Это может быть тангенс данного числа, или e^(-1*данную сумму), где е – число Эйлера. Весь цимес заключается в:

  1. Весах нейронов;
  2. Функции активации;
  3. Наборе нейронов. Если взять несколько нейронов и организовать их в слои, в каждом из которых будет от 1 до N нейронов, то это будет искуссвенная нейронная сеть.

Искусственные нейронные сети необходимо обучать, или дать им возможность самообучится. Обучить нейронную сеть – означает дать ей выборку и подстроить веса так, что бы нейроны максимально точно описывали данные. Функции активации как раз моделируют нелинейные взаимосвязи хим. элементов. А структура нейронной сети (количество нейронов, количество слоев) контролирует гибкость сети. То насколько точно она может подстроится под данные. При этом в геохимии совсем точная подстройка не нужна. Важно выявить закономерности.

Когда нам мало чего известно о данных используется кластеризация. В случае нейронных сетей используются самообучающиеся нейронные сети Кохонена. Смысл их заключается в том, что нейроны как на рисунке 1, организуются в один двумерный слой(Рис. 2). Нейронам сначала случайным образом задаются первичные веса, и подаются наблюдения. Нейроны соревнуются между собой, кто лучше опишет наблюдение. Победители пытаются подстроить своих соседей. В конечном счете, когда в данных находятся реальные кластеры, они будут описаны разными группами нейронов. Прелесть, да?

Рисунок2

Рис. 2. Принципиальная схема Самоорганизующейся сети Кохонена. 4х3 нейрона = 12 нейронов.

image Рис. 3. Открываем данные и запускаем модуль нейросетевого анализа. Данные можно использовать сырые, без предварительного логарифмирования. Но явные выбросы все равно лучше убрать.

image Рис. 4 Выбираем кластерный анализ

image Рис. 5. Выбираем переменные во вкладке Quick (Быстро). В данном модуле можно выбрать категориальные входные переменные. Например, возраст пород из которых отобрана проба.

image Рис. 6 Переходим во вторую вкладку Sampling (Подвыборки). Нейронные сети разбивают первоначальную выборку на три подвыборки:

  1. Обучающую. По ней производится обучение нейронной сети и подстройка весов;
  2. Тестовую. Она так же используется в процессе обучения и проверяет не переробучилась ли сеть;
  3. Проверочная выборка. Она не используется в процессе обучения, а служит лишь для оценки точности сети на “новых” данных. То есть ее возможность предсказания.

Оставим по умолчанию. Жмем ОК.

image Рис. 7 Во вкладке Quick (Kohonen), задаем количество нейронов и их структуру. Поскольку нейроны обучают соседей, то расположение нейронов тоже важно. Либо 4 нейрона расположить квадратом, либо цепочкой. Для начала выбираем 5х5. Не стремитесь сделать огромные сети. Помните, что важно выявить общие закономерности, а не сразу все-все решить.

image Рис. Во вкладке Kohonen Training (Обучение сети) самый важный параметр Neighborhoods (Соседи) – то сколько соседей обучает нейрон. Оставим по умолчанию. Жмем ОК.

image Рис. 9. Сеть обучается и выводится окно результатов. Сразу переходим во вкладку Kohonen (graph). Тут показывается все 25 нейронов и то какое количество обучающих проб попало в каждый. Считается необходимым, что бы каждый нейрон описал какую-то часть данных. Не должно быть пустых нейронов. Пики представленные бурым красным цветом показывают сколько проб описал данный нейрон. В целом, тут выделяются три пика. Скорее всего у нас три кластера. Жмем Cancel, Cancel и переходим в первую вкладку выбора структуры сети.

image Рис. 10. Выбираем цепочку нейронов из трех штук. Каждый нейрон опишет свой кластер.

image Рис. 11. Перейдем во вкладку Обучение сети и выберем, что бы каждый нейрон влиял только на одного соседа. Связанные кластеры получатся. Тут стоит поэксперементировать. Если влияние на соседей, то врядли получится уловить переходные области.

image Рис. 12. Получаем результат. Каждый нейрон описал изрядное количество данных.

image Рис. 13. Перейдем в первую вкладку окна результатов Predictions (Предсказание). Выведем результаты по каждой пробе с координатами.

image Рис. 14. Получаем выходную табличку. Что бы построить график из данных в ней, необходимо сделать табличку активной. Выделяем, щелкаем правой клавишей мышки и выбираем пункт Active Input (Активный Ввод). Тут как и в методе k-средних имеется столбец с “расстоянием” пробы до кластера (нейрона). Чем меньше число, тем лучше. Если число очень высокое, то это либо выброс, либо совсем отдельный кластер.

image Рис. 15. Строим карту кластеров. Об этом можете прочитать тут. Конечно эти графики лучше строить в ArcGIS или в Surfer. Делать описание с учетом геол.карты. К сожалению тут я не могу много об этом писать. Но скажу лишь то, что кластеризация нейронной сетью выдала аналогичный результат, что и Иерархическая кластеризация и k-средних. Далее можно построить графики типа Ящик-с –усами и дать заключение о специализации кластеров. Поскольку эту выборку я кластеризую уже в третий раз, то не привожу их. Смотрите предыдущие посты.

Дополнительно построим карту значений активации. Значение активации – это как раз там сумма элементов преобразованная нелинейной функцией.

image Рис. 16. Карта распределения значений активации наблюдений. На юге площади выделяется группа проб с высокими значениями активации. Стоит отдельно рассмотреть их по моноэлементным картам и другим параметрам.

image Рис. 17. Сохраняем структуру нейронной сети. Что бы всегда можно было к ней вернутся.

image Рис. 18. Когда запускам модуль нейросетевого анализа, слева находится окно в котором можно открыть уже созданную нейронную сеть. Например, вы изучили эталонный объект, создали по нему нейронную сеть и хотите прогнать через нее пробы с другой площади. Вуаля.

Удачи.

По нейронным сетям рекомендую прочитать:

  1. Хайкин Саймон Нейронные сети: полный курс, 2-е издание. : Пер. с англ. – М. : Издательский дом “Вильямс”, 2006. – 1104 с. : ил. – Парал. тит. англ. ISBN 5-8459-0890-6 (рус)
  2. Нейронные сети. STATISTICA Neural Networks: Методология и технология современного анализа данных/ Под редакцией В.П. Боровикова. – 2-е изд., перераб. и доп. – М.: Горячая линия – Телеком, 2008. – 292 с., ил. ISBN 978-5-9912-0015-8

Вторая книга отличается от модуля в Statistica 10, но тоже подойдет.

суббота, 2 ноября 2013 г.

Кластерный анализ в Statistica. Часть 3. k-средних (K-means)

 

Перед прочтением стоит ознакомится с предыдущим постом. Подготовка данных точно такая же как и для иерархической кластеризации, поэтому я начну с Рисунка 5.

Метод k-средних мало общего с иерархической кластеризацией. Метод является разведочным, но когда мы имеем некоторое представление о данных. Конкретно мы предполагаем определенное количество групп наблюдений (или переменных). Исследователь задает необходимое количество кластеров, метод выбирает несколько случайных (или предварительно выбранных) наблюдений и пытается объединить данные в кластеры с максимальной дисперсией между ними и минимальной внутри. То есть, это обратный дисперсионный анализ.

С количеством кластеров все достаточно просто. Как правило, в прикладной геохимии выделяют не более 4-5 кластеров. Это не строгое число, а рекомендация на основе опыта. А потом уже уточняют интересующие кластеры повторным анализом. Так же тут помогает иерархическая кластеризация. Зачастую, геохимики сначала строят дендрограммы объединения проб, и выделяют крупные гроздья. Сколько их увидят, столько и зададут кластеров в методе k-means. Метод производится за считанные секунды, в чем его огромное преимущество.

Так же стоит учитывать, что в Statistica метод реализован только на Евклидовой метрике. И предполагаемые кластеры должны иметь форму шара! В природе объекты могут образовывать кластеры с формой дыни в пространстве химических элементов, так что данный метод может не дать положительного результата и вовсе запутать.

image Рис. 5 Выбираем метод С-средних (K-means)

image Рис. 6 Переходим во вкладку Расширенное (Advanced) и выбираем параметры кластеризации.

Cluster: Cases (rows) – Кластеризуем пробы, а не переменные.

Number of clusters: 6 – Количество кластеров: 6. По аналогии с прошлым постом.

Number of iterations: 10 – Количество итераций:10. Это сколько шагов я даю программе, что бы она объединила пробы в кластеры и сделала их максимально различными. Как правило, десяти итераций хватает с лихвой. Но вам ничего не мешает поставить двадцать, например.

Initial cluster centers: Первичные кластеры. Как программа должна выбрать первые пробы (по количеству кластеров), что бы они были затравкой.

  • Choose observations… Выбрать наблюдения что мы максимизировать первоначальное различие между кластерами. Выбирает максимально различные пробы. Заметьте, если есть выбросы, то не стоит выбирать этот пункт
  • Sort distances and take… Сортировать наблюдения по расстоянию и выбрать объекты через равные интервалы. Наиболее часто используемый метод.
  • Choose the first N… Выбрать первые N (количество кластеров) наблюдений. Например, у вас есть некоторый известный объект на площади геохимической съемки, вы эмпирически выделили центральную часть, фланговую, фоновую и хотите проверить все остальные части площади на соответствие данным зонам. А вдруг найдете аналогичный объект? Тогда рассчитываете средние или медианы по пробам в данных зонах и вставляете как первые наблюдения в вашу выборку. Это и будут затравки для кластеров.

image Рис. 7 Окно вывода результатов.

Решение было найдено за 7 итераций. Хорошо.

В целом, нам необходимы лишь три пункта тут:

  • Analysis of variance – Анализ дисперсии
  • Graph of means – график средних
  • Save classifications and distances – Сохранить переменную Кластер и Расстояние с другими переменными

image Рис. 8 Таблица анализа дисперсии

Тут смотрим на столбец signf. p. Чем ниже значение тем лучше. Тут все значения сильно ниже 0,05 и даже 0,001, что говорит о высокозначимых различиях всех групп по всем элементам. В действительности, в этом и задача метода максимально отдалить кластеры. В природе, часто играют роль 3-10 элементов, остальные не несут информации об оруденении. Поэтому StatSoft рекомендует не сильно смотреть на эту табличку. Просто видите, что по всем элементам различаются группы и хорошо.

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

image Рис. 9 График средних.

Помните, что для кластерного анализа k-средних используются стандартизированные данные.

В первую очередь, меня тут заинтересовали кластеры №4 и №5. Кластер №2 может быть переходным, а №3 и 6 – фоновыми.

Так же, меня не устраивает, что по оси OX хим. элементы указаны через один. Это не серьезно! Дважды щекам на названия хим элементов.

image Рис. 10 В открывшемся окне исправляем Skip values (Пропускать значения) на off (выключить) и щелкаем кнопку Edit custom labels (Редактировать подписи)

image Рис. 11 В столбцы Position и Text вписываем по порядку хим. элементы из выборки.

1 Cr

2 Cu

image Рис. 12 Сохраняем результы классификации (см. Рис. 7).

Имеем столбцы: координаты, номер пробы (это нам не нужно), номер кластера, и расстояние. В столбце “Distance” – укзано расстояние между пробой и выделенным кластером. В идеале, оно должно быть минимальным. А поскольку на вход мы подавали стандартизированные значения, а метрика Евклидова, то в мерой расстояния является стандартное отклонение наблюдения от выборки. В многомерном пространстве, круто, да? В общем, если значение сильно больше 3-х, то скорее всего это либо выброс, либо отдельный кластер.

image Рис. 13 Строим двумерный график рассеяния, с маркировкой подвыборок (кластеров). Об этом смотрите в предыдущем посте.

Собственно, северная аномалия так же выделяется с двумя рудными кластерами. Кластер №4 характеризуется максимальными значениями рудных и редкоземельных элементов, а №5 немного меньшими содержаниями. На юг отходит кластер №3 с повышенным содержанием Pb. Свинец в свою очередь является сильным центробежным элементов и уходит во фланговые зоны, что может быть косвенным признаком наличия зональности. Таким образом, стоит сосредоточить внимание на северной части и провести там детализационные работы, поисковые маршруты.

image Рис. 14 Построим карту распределения расстояний объектов до их кластеров.

image Рис. 15 Выбираем в качестве Z – Distance

image Рис. 16. Карта распределения расстояний объектов до центров их кластеров

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

Вот и всё, что я хотел рассказать про кластерный анализ K-средних в Statistica.

пятница, 1 ноября 2013 г.

Кластерный анализ в Statistica. Часть 2. Иерархическая кластеризация


В данном посте расскажу как объединять пробы в кластеры методом иерархической кластеризации. Но подход подойдет и для выделения ассоциаций переменных. Метод не относится к статистическим методам. Чистая математика. Берем меру расстояния между объектами, и выбираем метод объединения. Все объекты объединяются шаг за шагом пока не будет один кластер. Так что надо решить на каком шаге выделить кластеры.
В каждом новом посте я использую приемы форматирования и редактирования, которые обсуждал в предыдущих постах. Например, как импортировать данные из Excel в Statistica, как добавить переменную, и др. Так что читайте или задавайте вопросы.
image Рис. 1. Импортируем данные и присваиваем имена каждой пробы из столбца ID (v1). У меня номера проб текстовые, не числовые.
image Рис. 2. Для кластерного анализа необходимо стандартизовать данные. Стандартизация – это когда берется все наблюдения по определенному хим. элементу, из каждого наблюдения вычитается среднее значение в столбце и разница делится на стандартное отклонение. Зачем это нужно? Дело в том, что одни перменные имеют очень высокие содержания (например, сотни грамм на тонну), а другие ультранизкие (микрограммы на тонну). Соответственно первые имеют “высокий вес”. Но нам важны все в относительном порядке. Поэтому процедура стандартизации их уравнивает. Кстати, для кластерного анализа не нужно определять тип распределения и подгонять данные. Это по желанию.
image 
Рис. 3. Выбираем переменные и щелкаем ОК. Исходные данные станут стандартизированными. Каждое наблюдение будет иметь значение стандартного отклонения и распределено относительно нуля.
image Рис. 4. Выбираем вкладку Statistics – Mult/Exploratory – Cluster.
На заметку. В Статистике есть два вида анализов: подтверждающий и разведочный. Разведочный – когда ищем закономерности в данных, а подтверждающий когда их применяем для анализа. Некоторые методы могут быть одновременно и разведочными и подтверждающими. Например, дискриминантный метод и ищет почему известные группы разделяются, и дает постериорное разделение наблюдений по группам по уже найденным закономерностям. Так кластерные анализы тоже могут быть и теми и другими. Иерархическая кластеризация – разведочный метод.
image Рис. 5. Выбираем метод Объедиенения (Иерархической кластеризации, Joining). Другие методы рассмотрим позже. Каждая проба сама по себе является кластером, и мы их (пробы) пошагово объединяем пока не будет один кластер – вся выборка. Как вы можете догадаться, можно не объединять пошагово, а разделять из одной выборки в маленькие. Да, но в Statistica такой метод не реализован.
image Рис. 6. Открываем вкладку Расширенные настройки (Advanced).
Input file: raw data - Входные данные: сырые данные. Другой выбор – корреляционная матрица. Но об этом в следующий раз.
Cluster: Cases (rows) – Кластеризовать: Наблюдения (строки). Еще можно найти группы переменных.
Amalgamation (linkage) rule: Ward’s method – Правило объединения: метод Варда. Данный метод пытается минимизировать дисперсию в выбранных группах. Поэтому он старается создать маленькие кластеры. Метод дает интересные результаты, поэтому часто используется. Выбор правила объединения стоит за исследователем. Поэтому просто постарайтесь представить какие у вас кластеры. Например, они они имеют разный размер (редкие аномальные объеты на неоднородном фоне), то можно попробовать взвешенный центроидный метод (Weighted centroid method (Median)).  В нем расстояния между кластерами вычисляется как геометрическое расстояние между центрами тяжести с учетом весов (по размерам кластеров). Центр тяжести – координата соответствующая медианам всех наблюдений. То есть выбросы для него несущественны. Пробуйте разные методы и сравнивайте. Как поговаривают геохимики “Настоящую аномалию закопать невозможно”.
Distance measure: Euclidean distances – Мера расстояния: Эвклидово расстояние. Мера расстояния – краеугольный камень кластерного анализа.  Тема не на один пузырь и одну докторскую. Собственно, в кластерном анализе мы измеряем расстояние между пробами (и кластерами) с помощью некоторой его меры. Эвклидово расстояние – это кратчайшее геометрическое расстояние. Помните про гиппотенузу и катеты: “Пифагововы штаны на все стороны равны, а квадрат гиппотенузы равен сумме квадратов катетов”?. Это полезно когда кластеры имеют форму шаров.
Если кластеры сильно вытянуты, то необходимо использовать расстояния Махаланобиса. К сожалению, они тут не реализованы. Но можно попробовать метод Single Linkage (Объединение ближайших соседей).
Так же, для геохимии вполне подойдут Расстояния Манхэтанна (не чувстивтельно к выборосам), и Квадрат Евклидово Расстояния (усливает расстоние между кластерами путем возведения в квадрат).
Выбор сделан, щелкаем ОК.
image Рис. 7. Переходим во вкладку Расширенное (Advanced). Сначала строим график объединения проб Vertical icicle plot, а потом выведем его табличный аналог – Amalgamation Shedule.
image Рис. 8. Вертикальная дендрограмма кластеризации.
Смотрим на данный график как на кисть винограда. Выделяем крупные кисти в объеме до 4-5 штук. Это и будут наши кластеры. Помните про стадийный подход и принципы системного анализа: выделяем обобщенные кластеры, а потом уточняем интересующий кластер отдельно.
image  Рис. 9. Тот же график. Только я тут убрал заголовки, подписи. Изменил максимальное значение расстояния на 200. Собственно, выделяются три крупных кластера. Причем два соединяются.
image Рис. 10. Передумал и решил сделать шесть кластеров.
image Рис. 11. Рисуем красные прямоугольники и дважды щелкаем на них. Задаем динамическое изменение масштаба.
Красные прямоугольники рисуем, что бы было удобнее потом масштабировать график на определнном кластере. Это нужно, что бы навести мышкой на границу объединения и получить более точное значение уровня на котором произошло объединение субкластеров.
image Рис. 12. Масштабируем график на первом кластере. Навелем мышкой на горизонтальную линию, которая из сединяет. Значение приблизительно 25,9. Тут надо деликатно делать. Часто эти значения близки. И если сомневаеетесь, то еще масштабируйте график.
image Рис. 13.Открываем таблицу объединения (Amalgamation Shedule). В самом левом столбце показаны определенные уровни на которых произошло объединение конкретных кластеров. Я решил выделить шесть кластеров. На рис. 12 первый кластер был объединен на уровне приблизительно 25,9. Найдем его.
Кстати, у меня использована относительно небольшая выборка 549 проб. При использовании тысяч проб, будет затруднительно работать. Не расслабляйтесь.
image Рис. 14. Находим первый кластер. Уровень 25,97356. Выделяем строку. В ней перечислены все пробы из кластера. Строку копируем и вставляем в Excel. А что? Удобная программа.
image 
Рис. 15. Копируем строку и….
image Рис. 16. Вставляем с транспонированием. Для этого на ячейке щелкаем правой клавищей и выбираем “Специальная вставка”.
image 
Рис. 17. Получили. Назвачаем пробам первый кластер.
Повторяем все с остальными кластерами. Далее в Statistica и Excel соритруем данные по столбцу номера пробы. И добавляем столбец с кластерами из Excel в Statistica. Немного муторно, но работает.
Скажу сразу. Я эту работу делал в два этапа и объединил результаты. Поэтому  у меня шесть кластеров с номерами от 0 до 5.
imageРис. 18.
image Рис. 19. Теперь у проб есть группирующая переменная “Кластер”. Определим, чем же они отличаются. Для этого построим графики типа Ящик-с-усами для всех переменных.
Как строить данные графики смотрите предыдущие посты.
Если взглянуть на рис 9 и 10, то увидим, что кластеры 0 и 1 объединяются в один более крупный кластер, тоже с остальными кластерами.
  1. Кластеры 0, и 3 скорее всего соответствуют рудной минерализации. Потому что у них повышенно содеражние рудных компонентов;
  2. Кластер 1 совождает кластер 0, а кластер 2 сопровождает кластер 3;
  3. Кластер 5 – имеет фоновые содержания по всем компонентам. А кластер 4 – соотствует выносу элементов;
  4. Кластер 5 можно использовать в качестве подвыборки фоновых проб для определения различий распределения хим. элементов в зависимости от ландшафта. Только надо взять пробы, которые удалены от явных аномалий. Поскольку это нормально, когда часть фоновых проб попадают в контур аномалии.
image Рис. 20. Построим график распределения кластеров в пространстве.
image Рис. 21. График распределения кластеров в пространстве.
На севере концентрируется кластеры 0 и 1, они окружены кластером 2. Кластер 2 все таки ближе к 0 и 1, чем к 3-му. В центре расположен кластер 3, он так же соседствует с кластером 2.
image Рис. 22. Построим график опять, но выделим лишь более интересные кластеры 0, 1, 2, которые предположительно соответствуют рудной минерализации. Самые высокие содержания  имеет кластер 0. В кластере 1 меньше, и еще меньше в кластере 2. Зональность – хорошее качество.
Вообще я бы не стал говорить “Бурить тут!”, а дал бы рекомендации к заверке аномалии поисковыми маршрутами, детализации геохимическими методами и изучению с помощью геофизических методов.
Рекомендую прочитать:
  1. Буреева  Н.Н.  Многомерный  статистический  анализ  с  использованием  ППП “STATISTICA”. Учебно-методический материал по программе повышения квалификации «Применение программных средств в научных исследованиях и преподавании математики и механики». Нижний Новгород, 2007, 112 с.;
  2. Дэвис Дж. С. Статистической анализ данных в геологии: Пер. с англ. В 2 кн./Пер. В.А. Голубевой; Под. ред. Д.А. Родионова. Кн. 1. – М.: Недра, 1990. – 319 с.: ил. ISBN 5-247-02122-3;
  3. В.П. Боровиков Популярное введение в программу STATISTICA.
(к сожалению ссылки лучше у меня не осталось)
Удачи!
PS. Части 1 еще нет.