- •Лабораторная работа 1. Кластерный анализ объектов, заданных набором признаков
- •Текущий каталог
- •Средства языка программирования matlab
- •Создание массивов ячеек
- •Визуализация массивов ячеек
- •Управляющие структуры Условный оператор
- •Структура переключателя
- •Циклы типа for...End
- •Диалоговый ввод
- •Функции в matlab(м-функции)
- •Циклы типа while...End
- •Некоторые функции и средства визуализации
- •Иерархические методы кластерного анализа
- •Методы объединения или связи
- •Алгоритм k-средних (k-means)
- •Описание алгоритма
- •С помощью функции fcm
Некоторые функции и средства визуализации
В дальнейшем будем использовать ряд функций MATLAB; поэтому дадим их описание.
Ввод, вывод
disp(переменная или константа) – вывод строки или многих строк, если выводится массив
переменная=input(‘текст подсказки’) - ввод значения в переменную
переменная=input(‘текст подсказки’,s) – ввод текстового значения в переменную
fprintf(форматная строка, A,…) - вывод форматированных данных
Функция форматирует данные всех последующих аргументов и выводит их на экран
Форматная строка содержит спецификации преобразования, которые контролируют выравнивание, значащие цифры, ширину поля и другие аспекты формата. Форматная строка может содержать символы для представления непечатных символов, таких как новая строка и табуляция.
Спецификация начинается с символа % и содержит такие обязательные и необязательные элементы:
Флаги (необязательные)
Ширина и точность поля (необязательные)
Вставляемые символы(необязательные)
Символ преобразования (обязателен)
Флаги
Они контролируют выравнивание.
Символ |
Описание |
Пример |
- |
Выравнивание влево |
%-5.2d |
+ |
Всегда выводит знак |
%+5.2d |
Ширина и точность поля
Символ |
Описание |
Пример |
Ширина поля |
Число,определяющее минимальное число печатаемых цифр |
%6f |
Точность |
Точка и число, определяющее число цифр в дробной части |
%6.2f |
Символ преобразования
Символ |
Описание |
%c |
Символ |
%d |
Десятичное число со знаком |
%f |
Число с десятичной точкой |
%g |
Более компактная форма для %f. Ведущие нули не печатаются. |
\n |
Новая строка |
Примеры,
1. Операторы
x = 0:.1:1;
y = [x; exp(x)];
fprintf('%6.2f %12.8f\n',y);
выводит на экран таблицу значений экспоненты:
0.00 1.00000000
0.10 1.10517092
...
1.00 2.71828183
2. Команда
fprintf('A unit circle has circumference %g radians.\n',2∗pi) выводит на экран строку:
A unit circle has circumference 6.283186 radians.
Операции над строками и преобразование данных
переменная=strcat(строка1,строка2,…) - объединение строк
переменная=strcmp(строка1,строка2) – сравнение строк. Если строки совпадают, то результат равен логической 1, в противном случае - логическому 0.
переменная=length(массив) – число элементов массива
строка=int2str(целое) – преобразование целого в строку
строка=num2str(число) – преобразование числа в строку
строка=num2str(число, точность) – преобразование числа в строку с заданной точностью
переменная=eval(строковое выражение) - вычисление значения выражения
переменная=eval([строковое выражение1 строковое выражение2 …]) – вычисление значений всех сцепленных выражений
Поиск
вектор=find(условие относительно массива) – возвращает номера элементов массива, удовлетворяющих условию
Вывод графиков
plot(X1,Y1,свойства линии,...) – выводит графики всех линий, описанных тройками Xi,Yi,свойства линииi.
plot(...,'имя свойства',значение свойства...) – при выводе графика устанавливает определенные свойства в определенные значения.
Можно определить такие свойства:
•LineWidth – толщина линии.
•MarkerSize – размер маркера.
Например
x = -pi:pi/10:pi;
y = sin(x);
plot(x,y,'--rs','LineWidth',2,'MarkerSize',3)
MATLAB позволяет добавить к графику метки осей и заголовки. Например, добавим к графику метки осей x и y, заголовок и подписи,
xlabel('-\pi \leq \Theta \leq \pi')
ylabel('sin(\Theta)')
title('Plot of sin(\Theta)')
text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4)','HorizontalAlignment','left')
plot3(X1,Y1,Z1, свойства линии,...) – выводит трехмерные графики всех линий, описанных четверками Xi,Yi,Z i,свойства линииi.
plot3(...,'имя свойства',значение свойства...) – при выводе графика устанавливает определенные свойства в определенные значения.
Пример:
t = 0:pi/50:10∗pi;
plot3(sin(t),cos(t),t)
grid on % вывод сетки
Свойства линии включают:
Стиль линии (Line style)
Толщина линии (Line width)
Цвет (Color)
Тип иаркера (Marker type)
Размер маркера (Marker size)
MATLAB определяет символы для стиля линии, типа маркера и цвета. В таблицах определены эти символы.
Стиль линии
-
Символы
Стиль линии
-
Сплошная
(default)
--
Штриховая
:
Пунктирная
-.
Штрих-пунктирная
Маркер
Символ |
Тип маркера |
+ |
Плюс |
o |
Окружность |
* |
Звездочка |
. |
Точка |
x |
Крестик |
s |
Круг |
^ |
Треугольник, направленный вверх |
p |
Пятиконечная звезда (pentagram) |
Цвет
Символ |
Цвет |
r |
Красный |
g |
Зеленый |
B |
Синий |
M |
Фиолетовый |
Y |
Желтый |
K |
Черный |
W |
Белый |
Чаще всего достаточно трех свойств:
Стиль линии
Символ маркера
Цвет
scatter(X,Y,S,C) – выводит цветные маркеры в положениях, определенных векторами одного и того же размера X и Y.
S - определяет площадь каждого маркера.
C – определяет цвет каждого маркера
scatter(...,'filled') - выводит заштрихованные маркеры.
scatter3(X,Y,Z,S,C) – выводит цветные маркеры в трехмерном пространстве в положениях, определенных векторами одного и того же размера X,Y и Z.
S - определяет площадь каждого маркера.
C – определяет цвет каждого маркера
scatter3(...,'filled') - выводит заштрихованные маркеры
line(X,Y) – добавляет линию, определенную векторами X и Y к текущему графику. Если X и Y – матрицы одного и того же размера, то изображается линия для каждого столбца.
Существует и другая форма функции, в которой первые два или три аргумента рассматриваются как координаты точек на плоскости или в пространстве, а остальные аргументы рассматриваются как пары имя-значение. Например:
line(X,Y,Z,'Color','r','LineWidth',4)
В примере функция line используется для добавления тени к изображаемым данным:
t = 0:pi/20:2*pi;
plot(t,sin(t),'k');
line(t+.06,sin(t),'LineWidth',4,'Color',’k’)
subplot делит область вывода графиков на прямоугольные панели, которые нумеруются слева направо сверху вниз. Каждая панель содержит оси. Последующий график выводится в текущую панель.
Пример:
income = [3.2 4.1 5.0 5.6];
outgo = [2.5 4.0 3.35 4.9];
subplot(2,1,1);
plot(income)
subplot(2,1,2);
plot(outgo)
hold on удерживает текущий график и все свойства осей, так что все последующие графики добавляются к существующему графику.
hold off удаляет все предыдущие графики перед изображением нового графика.
Работа с файлами
load имя файла - Загрузка переменных рабочей области из файла. Если расширение имени файла не указано, то предполагается .MAT
load имя файла имя переменной1 имя переменной2 … - загружает из файла только указанные переменные.
save имя файла – Сохранение всех переменных рабочей области в файле. Если расширение имени не указано, то предполагается .MAT.
save имя файла имя переменной1 имя переменной2 … - Сохраняет в файле только указанные переменные.
tdfread имя текстового файла с таблицей - Чтение табличных данных, разделенных знаком табуляции в строке из текстового файла. В текстовом файле первая строка – имена полей; в последующих строках находятся данные по указанным полям. В результате выполнения команды в рабочей памяти появляются переменные – вектора с именами полей из первой строки таблицы и значениями столбцов из последующих строк.
Генерация чисел с заданным законом распределения
Биномиальное распределение
R = binornd(N,P,MM,NN) - R - матрица MMхNN чисел с параметрами N и P.
Параметры
-
число «испытаний»
-
вероятность «успеха»
Геометрическое распределение
R = geornd(P,M,N) возвращает матрицу M х N чисел с параметром P – вероятностью успеха.
Гипергеометрическое распределение
R = hygernd(M,K,N,MM,NN) возвращает матрицу размера MM х NN с параметрами M, K и N.
N
0M,KN– целые числа
Распределение Пуассона
R = poissrnd(LAMBDA,M,N) возвращает матрицу MN чисел с параметром LAMBDA>0
Равномерное распределение
R = unidrnd(N,MM,NN) возвращает матрицу MM х NN чисел из [1,N]
Нормальное распределение
R = normrnd(MU,SIGMA,M,N) возвращает матрицу M х N чисел с параметрами MU (математическое ожидание),SIGMA (дисперсия)
Классификация - упорядоченное по некоторому принципу множество объектов, которые имеют сходные классификационные признаки (одно или несколько свойств), выбранные для определения сходства или различия между этими объектами.
Рассмотрим задачу классификации на простом примере. Пусть имеется база данных о клиентах туристического агентства с информацией о возрасте и доходе за месяц. Есть рекламный материал двух видов: более дорогой и комфортный отдых и более дешевый, молодежный отдых. Соответственно определены два класса клиентов: класс 1 и класс 2. Фрагмент базы данных приведен в таблице 1.
-
Таблица 1. Фрагмент базы данных клиентов туристического агентства
Код клиента
Возраст
Доход
Класс
1
18
25
1
2
22
100
1
3
30
70
1
4
32
120
1
5
24
15
2
6
25
22
1
7
32
50
2
8
19
45
2
9
22
75
1
10
40
90
2
Для наглядности представим нашу базу данных в двумерном измерении (возраст и доход), в виде множества объектов, принадлежащих классам 1 (оранжевая метка) и 2 (серая метка). На рис. приведены объекты из двух классов.
Рис. Геометрическое представление объектов
Решение задачи будет состоять в том, чтобы определить, к какому классу относится новый клиент, на рисунке обозначенный белой меткой.
Выборку данных разбивают на два множества: обучающее и тестовое.
Обучающее множество (training set) - множество, которое включает данные, использующиеся для конструирования модели.
Такое множество содержит входные и выходные значения примеров. Выходные значения предназначены для обучения модели.
Тестовое (test set) множество также содержит входные и выходные значения примеров. Здесь выходные значения используются для проверки работоспособности модели.
Процесс классификации состоит из двух этапов: конструирования модели и ее использования.
Конструирование модели: описание множества предопределенных классов.
Использование модели: классификация новых или неизвестных значений.
Оценка точности модели.
Известные значения из тестового примера сравниваются с результатами использования полученной модели.
Уровень точности - процент правильно классифицированных примеров в тестовом множестве.
Если точность модели допустима, возможно использование модели для классификации новых объектов
Задача кластеризации сходна с задачей классификации, является ее логическим продолжением, но ее отличие в том, что классы изучаемого набора данных заранее не предопределены.
Синонимами термина " кластеризация " являются "обучение без учителя" и "таксономия".
Кластеризация предназначена для разбиения совокупности объектов на однородные группы (кластеры или классы). Если данные выборки представить как точки в признаковом пространстве, то задача кластеризации сводится к определению "сгущений точек".
На рис. схематически представлены задачи классификации и кластеризации.
Рис. Сравнение задач классификации и кластеризации
Кластеры могут быть непересекающимися (non-overlapping) и пересекающимися (overlapping). Схематическое изображение непересекающихся и пересекающихся кластеров дано на рис.
Рис. Непересекающиеся и пересекающиеся кластеры
Процесс кластеризации зависит от выбранного метода и почти всегда является итеративным. Он включает множество экспериментов по выбору разнообразных параметров, например, меры расстояния, типа стандартизации переменных, количества кластеров и т.д. Однако конечной целью кластеризации является получение содержательных сведений о структуре исследуемых данных. Полученные результаты требуют дальнейшей интерпретации, исследования и изучения свойств и характеристик объектов для возможности точного описания сформированных кластеров.
Методы кластеризации
Кластер имеет следующие математические характеристики: центр, радиус, среднеквадратическое отклонение, размер кластера.
Центр кластера - это среднее геометрическое место точек в пространстве переменных.
Радиус кластера - максимальное расстояние точек от центра кластера.
Размер кластера может быть определен либо по радиусу кластера, либо по среднеквадратичному отклонению объектов для этого кластера. Объект относится к кластеру, если расстояние от объекта до центра кластера меньше радиуса кластера.
Выбор масштаба в кластерном анализе имеет большое значение. Рассмотрим пример. Представим себе, что данные признака х в наборе данных на два порядка больше данных признака у: значения переменной х находятся в диапазоне от 100 до 700, а значения переменной у - в диапазоне от 0 до 1.
Тогда, при расчете величины расстояния между точками, отражающими положение объектов в пространстве их свойств, переменная, имеющая большие значения, т.е. переменная х, будет практически полностью доминировать над переменной с малыми значениями, т.е. переменной у. Таким образом из-за неоднородности единиц измерения признаков становится невозможно корректно рассчитать расстояния между точками.
Эта проблема решается при помощи предварительной стандартизации переменных. Стандартизация (standardization) или нормирование (normalization) приводит значения всех преобразованных переменных к единому диапазону значений путем выражения через отношение этих значений к некой величине, отражающей определенные свойства конкретного признака. Наиболее распространенный способ стандартизации
деление исходных данных на среднеквадратичное отклонение соответствующих переменных.
Задача кластеризации заключается в следующем. Имеется обучающая выборка Xℓ = {x1, . . ., xℓ} ⊂ X и функция расстояния между объектами ρ(x, x′). Требуется разбить выборку на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из объектов, близких по метрике ρ, а объекты разных кластеров существенно отличались. При этом каждому объекту xi ∈ Xℓ приписывается номер кластера yi.
Алгоритм кластеризации — это функция a: X → Y, которая любому объекту x ∈ X ставит в соответствие номер кластера y ∈ Y. Множество номеров классов Y в некоторых случаях известно заранее, однако чаще ставится задача определить оптимальное число кластеров, с точки зрения того или иного критерия качества кластеризации.
можно расклассифицировать на [2]:
Методы кластерного анализа можно разделить на:
иерархические;
неиерархические.
Далее, иерархические методы подразделяются на:
агломеративные (объединяющие);
дивизимные (разъединяющие).
На первом этапе матрица признаков преобразуется в матрицу расстояний. Для подсчета матрицы расстояния осуществляется подбор метрики или метода вычисления расстояния между объектами в многомерном пространстве. Если объект описывается k признаками, то он может быть представлен как точка в k-мерном пространстве. Возможность измерения расстояний между объектами в k-мерном пространстве вводится через понятие метрики.
Пусть объекты i и j принадлежат множеству M, и каждый объект описывается k признаками, тогда будем говорить, что на множестве M задана метрика, если для любой пары объектов, принадлежащих множеству M, определено неотрицательное число dij , удовлетворяющее следующим условиям (аксиомам метрики):
Аксиома тождества: dij = 0 ⇔ i≡ j.
Аксиома симметричности: dij = dji ∀ i, j.
Неравенство треугольника: ∀ i, j, z∈M, выполняется неравенство diz ≤ dij + dzj .
Пространство, на котором введена метрика, называется метрическим. Наиболее используемыми являются следующие метрики:
1. Метрика Евклида:
Эта метрика является наиболее используемой и отражает среднее различие между объектами.
2. Нормализованные евклидовы расстояния более подходят для переменных, измеряемых в различных единицах или значительно различающихся по величине. Если дисперсии по характеристикам отличаются друг от друга, то:
3. Метрика city-block (манхэттенская метрика, получившая свое название в честь района Манхэттен, который образуют улицы, расположенные в виде пересечения параллельных прямых под прямым углом; как правило, применяется для номинальных или качественных переменных):
Во всех выше приведенных формулах i,j – номера столбцов; k – номер строки; dij – элемент матрицы расстояний; xik , xjk – элементы исходной матрицы; n – количество объектов.
