Уменьшение размерности с помощью самоорганизующихся карт

Я работаю над самоорганизующимися картами (SOM) в течение последних нескольких месяцев. Но у меня все еще есть некоторые заблуждения в понимании части сокращения размерностей. Можете ли вы предложить какой-либо простой метод, чтобы понять реальную работу SOM на любых наборах данных реального мира (как набор данных из хранилища UCI).

1 ответ

Решение

Итак, прежде всего обратитесь к некоторым предыдущим связанным вопросам, которые помогут вам лучше понять свойства уменьшения размеров и визуализации SOM. Построение карты Кохонена - Понимание визуализации, Интерпретация самоорганизующейся карты.

Второй простой случай для проверки свойств СДЛ:

  • Создайте простой набор данных с 3 функциями, где у вас есть 3 разных кластера;
  • Выполните SOM для этого набора данных и визуализируйте.

Я буду использовать язык программирования MATLAB, чтобы показать, как это сделать и что вы можете извлечь из процесса обучения.

КОД:

% create a dataset with 3 clusters and 3 features
x=[ones(1000,1)*0.5,zeros(1000,1),zeros(1000,1)]; 
x=[x;[zeros(1000,1),ones(1000,1)*0.5,zeros(1000,1)]]; 
x=[x;[zeros(1000,1),zeros(1000,1),ones(1000,1)*0.5]]; 
x=x+rand(3000,3)*0.2; 
x=x';

%define a 20x20 SOM through MATLAB "selforgmap" function, and train using the "train"
net = selforgmap([20 20]); 
[net,tr] = train(net,x);

%display the number of hits, neighbour distance, and plane maps     figure,plotsomplanes(net)
figure,plotsomnd(net) 

фигура, plotsomhits (чистый, х)

ВЫХОД:

Итак, на первом рисунке вы уже можете увидеть сжатие набора данных 3000x3 в карту 20x20x3 (сокращение почти в 10 раз). Вы также можете видеть, что ваши компоненты могут быть еще более сжаты в 3 отдельных класса.

Это становится еще более очевидным, когда вы смотрите на расстояние до соседа и нажимаете на карты (рис. 2 и 3 соответственно):

На рисунке 2 чем больше отличается узел с его соседом (рассчитывается через евклидово расстояние между весами узлов и его весами соседей), тем темнее цвет между этими двумя узлами. Таким образом, мы можем видеть 3 области сильно связанных узлов. Мы могли бы использовать это изображение и пороговое его так, чтобы получить 3 различных региона (3 кластера), а затем получить средние веса.

На рисунке 3 показано, сколько выборок из набора данных где метка в каждом узле. Как можно видеть, в 3 предыдущих областях представлено несколько однородное распределение выборок (что имеет смысл, учитывая, что 3 кластера имеют одинаковое количество выборок), а узлы интерфейса (те, которые разделяют 3 области) не отображаются любой образец. Опять же, мы могли бы использовать это изображение и пороговое его так, чтобы получить 3 различных региона (3 кластера), а затем получить средние веса.

Таким образом, в сумме с этим набором данных и с некоторой легкой последующей обработкой вы можете уменьшить свой набор данных с 3000X3 до матрицы 3x3

Другие вопросы по тегам