Этот пример показывает, как визуализировать данные о различии с помощью неклассических форм многомерного масштабирования (MDS).
Данные о неоднородности возникают, когда у нас есть какой-то набор объектов, и вместо измерения характеристик каждого объекта мы можем только измерить, насколько похожа или неоднородна каждая пара объектов. Например, вместо того, чтобы знать широту и долготу множества городов, мы можем знать только их межгородские расстояния. Однако MDS также работает с неоднородностями, которые более абстрактны, чем физическое расстояние. Например, мы могли попросить потребителей оценить, насколько похожи они находят несколько марок арахисового масла.
Типичной целью MDS является создание строения точек в одной двух или трёх размерности, расстояния между точками которых «близки» к исходным различиям. Различные формы MDS используют различные критерии для определения «закрытия». Эти точки представляют набор объектов, и поэтому график точек может использоваться как визуальное представление их неоднородностей.
Некоторые приложения «классического» MDS описаны в примере классического многомерного масштабирования, применяемого к непространственным расстояниям.
Чтобы продемонстрировать MDS, мы будем использовать данные, собранные в эксперименте, чтобы исследовать восприятие кода Морзе (Rothkopf, E.Z., J.Exper.Psych., 53 (2): 94-101). Субъекты в исследовании слушали два сигнала кода Морзе (звуковые последовательности одной или нескольких «точек» и «штрихов», представляющих 36 алфавитно-цифровых символов), воспроизводимых последовательно, и спросили, были ли сигналы одинаковыми или различными. Испытуемые не знали кода Морзе. Различие между двумя различными символами является частотой, с которой эти символы были правильно различимы.
Матрица 36x36 различий сохранена как вектор с 630 элементами, содержащий поддиагональные элементы матрицы. Можно использовать функцию squareform
для преобразования между форматом вектора и форматом полной матрицы. Вот первые 5 букв и их разнородности, реконструированные в матричном виде.
load morse
morseChars(1:5,:)
ans = 5x2 cell
{'A'} {'.-' }
{'B'} {'-...'}
{'C'} {'-.-.'}
{'D'} {'-..' }
{'E'} {'.' }
dissMatrix = squareform(dissimilarities); dissMatrix(1:5,1:5)
ans = 5×5
0 167 169 159 180
167 0 96 79 163
169 96 0 141 166
159 79 141 0 172
180 163 166 172 0
В этих данных большие значения указывают на то, что больше экспериментальных субъектов смогли различить два сигнала, и поэтому сигналы были более разнородными.
MDS метрики создает строение точек таким образом, чтобы их межточечные расстояния приближались к исходным неоднородностям. Одна мера качества подгонки этого приближения известна как «стресс», и это то, что мы будем использовать изначально. Чтобы вычислить строение, мы предоставляем mdscale
функция с данными о неоднородности, количеством размерностей, в которых мы хотим создать точки (две), и именем критерия качества подгонки, который мы используем.
Y1 = mdscale(dissimilarities, 2, 'criterion','metricstress'); size(Y1)
ans = 1×2
36 2
mdscale
возвращает набор точек в, для этого примера, двух размерностях. Мы могли бы построить их, но прежде чем использовать это решение (то есть строение) для визуализации данных, мы сделаем некоторые графики, чтобы помочь проверить, воссоздают ли расстояния между точками от этого решения исходные расхождения.
График Шепарда является рассеянным графиком расстояний между точками (их n (n-1 )/2) от исходных различий. Это может помочь определить качество подгонки решения MDS. Если подгонка плохая, то визуализация может ввести в заблуждение, потому что большие (маленькие) расстояния между точками могут не соответствовать большим (маленьким) различиям в данных. На графике Шепарда узкое рассеяние вокруг линии 1:1 указывает на хорошую подгонку расстояний до неоднородностей, в то время как большое рассеяние или нелинейный шаблон указывает на недостаток подгонки.
distances1 = pdist(Y1); plot(dissimilarities,distances1,'bo', [0 200],[0 200],'k--'); xlabel('Dissimilarities') ylabel('Distances')
Этот график указывает, что это метрическое решение в двух размерностях, вероятно, не подходит, потому что оно показывает как нелинейный шаблон, так и большое рассеяние. Первый подразумевает, что многие из самых больших различий, как правило, были бы несколько преувеличены в визуализации, в то время как умеренные и небольшие различия были бы, как правило, занижены. Последнее подразумевает, что расстояние в визуализации, как правило, будет плохим отражением неоднородности. В частности, хорошая часть больших различий будет сильно занижена.
Мы могли бы попробовать использовать третью размерность, чтобы улучшить точность визуализации, потому что с большим количеством степеней свободы, подгонка должна улучшиться. Мы также можем попробовать другой критерий. Два других популярных метрических критерия известны как Sammon Mapping и квадратное напряжение («sstress»). Каждый приводит к другому решению, и то или иное решение может быть более полезным для визуализации исходных различий.
Y2 = mdscale(dissimilarities,2, 'criterion','sammon'); distances2 = pdist(Y2); Y3 = mdscale(dissimilarities,2, 'criterion','metricsstress'); distances3 = pdist(Y3);
График Шепарда показывает различия в трех решениях до сих пор.
plot(dissimilarities,distances1,'bo', ... dissimilarities,distances2,'r+', ... dissimilarities,distances3,'g^', ... [0 200],[0 200],'k--'); xlabel('Dissimilarities') ylabel('Distances') legend({'Stress', 'Sammon Mapping', 'Squared Stress'}, 'Location','NorthWest');
Заметьте, что при самых больших значениях неоднородности рассеяние для квадратного критерия напряжения имеет тенденцию быть ближе к линии 1:1, чем для двух других критериев. Таким образом, для этих данных квадратное напряжение несколько лучше при сохранении наибольших различий, хотя оно плохо занижает некоторые из них. При меньших значениях расхождения рассеяния для критерия Отображения Саммона, как правило, несколько ближе к линии 1:1, чем для двух других критериев. Таким образом, Сэммон Отображение немного лучше сохраняет небольшие расхождения. Стресс где-то между ними. Все три критерия показывают определенную величину нелинейности, что указывает на то, что метрическое масштабирование может быть неприемлемым. Однако выбор критерия зависит от цели визуализации.
Неметрическое масштабирование является второй формой MDS, которая имеет несколько менее амбициозную цель, чем метрическое масштабирование. Вместо попытки создать строение точек, для которых парные расстояния аппроксимируют исходные неоднородности, неметрический MDS пытается только аппроксимировать ранги разнородностей. Другой способ сказать это, что неметрический MDS создает строение точек, чьи расстояния между точками аппроксимируют монотонное преобразование исходных различий.
Практическое использование такой конструкции заключается в том, что большие расстояния между точками соответствуют большим различиям, а небольшие расстояния между точками - небольшим различиям. Этого часто достаточно для передачи взаимосвязей между изучаемыми элементами или категориями.
Во-первых, мы создадим строение точек в 2D. Неметрическое масштабирование с неметрическим критерием напряжения Крускаля является значением по умолчанию для mdscale
.
[Y,stress,disparities] = mdscale(dissimilarities,2); stress
stress = 0.1800
Второй выход mdscale
- значение используемого критерия в качестве меры того, насколько хорошо решение воссоздает различия. Меньшие значения указывают на лучшую подгонку. Напряжение для этого строения, около 18%, считается плохим, чтобы соответствовать критерию неметрического напряжения. Области значений допустимых значений критериев различаются для различных критериев.
Третий выход mdscale
является вектором того, что известно как расхождения. Это просто монотонное преобразование разнородностей. Они будут использоваться на неметрическом масштабирующем графике Шепарда ниже.
Хотя эта подгонка не так хороша, как мы хотели бы, представление 2D легче всего визуализировать. Мы можем построить графики точек и штрихов каждого сигнала, чтобы помочь понять, почему испытуемые воспринимают различия между символами. Ориентация и шкала этого строения полностью произвольны, поэтому подписи по осям или значения не были показаны.
plot(Y(:,1),Y(:,2),'.', 'Marker','none'); text(Y(:,1),Y(:,2),char(morseChars(:,2)), 'Color','b', ... 'FontSize',12,'FontWeight','bold', 'HorizontalAlignment','center'); h_gca = gca; h_gca.XTickLabel = []; h_gca.YTickLabel = []; title('Nonmetric MDS solution for Rothkopf''s Morse code data');
Эта реконструкция указывает, что символы могут быть описаны в терминах двух осей: грубо говоря, северо-западное/юго-восточное направление различит длину сигнала, в то время как юго-западное/северо-восточное направление различит точки от штрихов. Два символа с самыми короткими сигналами, 'E' и 'T', в некоторой степени устарели в этой интерпретации.
При неметрическом масштабировании принято показывать расхождения, а также расстояния на графике Шепарда. Это обеспечивает проверку того, насколько хорошо расстояния воссоздают диспропорции, а также того, насколько нелинейно монотонное преобразование от неоднородностей к диспропорциям.
distances = pdist(Y); [dum,ord] = sortrows([disparities(:) dissimilarities(:)]); plot(dissimilarities,distances,'bo', ... dissimilarities(ord),disparities(ord),'r.-'); xlabel('Dissimilarities') ylabel('Distances/Disparities') legend({'Distances' 'Disparities'}, 'Location','NorthWest');
Этот график показов, как расстояния при неметрическом масштабировании аппроксимируют дисперсии (рассеяние синих кругов вокруг красной линии), и дисперсии отражают ранги различий (красная линия нелинейна, но увеличивается). Сравнение этого графика с графиком Шепарда из метрического масштабирования показывает различие в двух методах. Неметрическое масштабирование пытается воссоздать не исходные расхождения, а скорее нелинейное преобразование их (расхождения).
При этом неметрическое масштабирование достигло компромисса: неметрические расстояния воссоздают дисперсии лучше, чем метрические расстояния, воссозданные неоднородности - рассеяние на этом графике меньше, чем на метрическом графике. Однако различия довольно нелинейны как функция различий. Таким образом, хотя мы можем быть более уверены, что с неметрическим решением, небольшие расстояния в визуализации соответствуют небольшим различиям в данных, важно помнить, что абсолютные расстояния между точками в том, что визуализация не должна приниматься слишком буквально - только относительные расстояния.
Поскольку напряжение в 2D конструкции было несколько высоким, мы можем попробовать 3D строение.
[Y,stress,disparities] = mdscale(dissimilarities,3); stress
stress = 0.1189
Это значение напряжения совсем немного ниже, что указывает на лучшую подгонку. Мы можем построить график строения в 3 размерности. Фигура live MATLAB ® может поворачиваться в интерактивном режиме; Здесь мы остановимся на поиске с двух разных углов.
plot3(Y(:,1),Y(:,2),Y(:,3),'.', 'Marker','none'); text(Y(:,1),Y(:,2),Y(:,3),char(morseChars(:,2)), 'Color','b', ... 'FontSize',12,'FontWeight','bold', 'HorizontalAlignment','center'); set(gca,'XTickLabel',[], 'YTickLabel',[], 'ZTickLabel',[]); title('Nonmetric MDS solution for Rothkopf''s Morse code data'); view(59,18); grid on
С этого угла мы видим, что символы с одно- и двухсимвольными сигналами хорошо отделены от символов с более длинными сигналами, и друг от друга, потому что их легче всего отличить. Если повернуть представление на другую перспективу, мы увидим, что более длинные символы могут, как и в 2D строении, быть примерно описаны с точки зрения количества символов и количества точек или штрихов. (С этого второго угла некоторые из более коротких символов ложно перемежаются с более длинными.)
view(-9,8);
Это 3D строение восстанавливает расстояния более точно, чем 2D строение, однако, сообщение по существу то же самое: субъекты воспринимают сигналы в основном с точки зрения того, сколько символов они содержат, и сколько точек против штрихов. На практике 2D строения могут быть совершенно приемлемыми.