Правильно ли нормализовать данные и / или весовые векторы в СДЛ?

Так что я озадачен чем-то, что (должно) быть простым:

Я написал SOM для простого «play» двумерного набора данных. Вот данные:

Вы можете разобрать 3 кластера самостоятельно.

Теперь есть две вещи, которые смущают меня. Во-первых, урок, который я имею, нормализует данные, прежде чем SOM приступит к работе с ним. Это означает, что он нормализует каждый вектор данных, чтобы иметь длину 1. (Евклидова норма). Если я это сделаю, то данные будут выглядеть так:

(Это потому, что все данные были спроецированы на единичный круг).

Итак, мой вопрос (ы) заключаются в следующем:

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

2) Второй связанный с этим вопрос заключается в том, что данные не только нормированы на длину 1, но и весовые векторы каждой единицы вывода после каждой итерации. Я понимаю, что они делают это так, чтобы векторы веса не «взрывались», но мне кажется, что это неправильно, поскольку весь смысл векторов веса заключается в сохранении информации о расстоянии. Если вы нормализуете их, вы потеряете способность «кластеризоваться» должным образом. Например, как СДЛ может отличить кластер в левом нижнем углу от кластера в верхнем правом, так как они проецируются вниз на круг единиц одинаковым образом?

Я очень смущен этим. Должны ли данные быть нормализованы до длины единицы в СДЛ? Должны ли нормализоваться векторы веса?

Спасибо!

РЕДАКТИРОВАТЬ

Вот данные, сохраненный как файл .mat для MATLAB. Это простой двухмерный набор данных.

Ответы на вопрос(2)

Ваш ответ на вопрос