Эти два вопроса в ОП являются отдельными темами (т. Е. Нет совпадений в ответах), поэтому я постараюсь отвечать на них по одному, начиная с пункта 1 в списке.
Как бы я определил, правильно ли работают мои [кластеризованные] алгоритмы?
k-средних, как и другие неконтролируемые методы ML, не хватает хорошего набора диагностических тестов для ответа на такие вопросы«Являются ли кластерные назначения, возвращаемые k-средними, более значимыми для k = 3 или k = 5?»
Тем не менее, существует один общепринятый тест, который дает интуитивно понятные результаты и который легко применить.Этот диагностический показатель составляет всего это отношение :
межцентровое разделение / внутрикластерная дисперсия
По мере того, как значение этого отношения увеличивается, качество вашего результата кластеризации увеличивается.
Это интуитивно понятно.Первая из этих метрик заключается в том, насколько далеко каждый кластер отделен от других (измеряется в соответствии с центрами кластеров)?
Но межцентроидное разделение само по себе не рассказывает всей истории, потому что два алгоритма кластеризации могут возвращать результаты, имеющие одинаковое межцентровое разделение, хотя один явно лучше, потому что кластеры "более узкие" (т. Е.меньшие радиусы);другими словами, края кластера имеют большее разделение.Вторая метрика - внутрикластерная дисперсия - объясняет это.Это просто средняя дисперсия, рассчитанная на кластер.
В целом, отношение межцентрового разделения к внутрикластерной дисперсии - это быстрый, последовательный и надежный метод для сравнения результатов различных алгоритмов кластеризации или для сравнения результатов изодин и тот же алгоритм работает с различными переменными параметрами - например, числом итераций, выбором метрики расстояния, числом центроидов (значение k).
Желаемый результат - плотные (маленькие) кластеры, каждый из которых находится далеко от других.
Расчет прост:
Для Межцентровое разделение :
Для внутрикластерная дисперсия :
для каждого кластера, рассчитать расстояние до каждой точки данных в данномкластер из его кластерного центра;далее
(для каждого кластера) вычислим дисперсию последовательности расстояний от шага выше;затем
усредните эти значения дисперсии.
Это мой ответ на первый вопрос.Вот второй вопрос:
Является ли евклидово расстояние правильным методом для вычисления расстояний?Что если у меня есть 100 измерений вместо 30?
Во-первых, простой вопрос - является ли евклидово расстояние действительной метрикой при увеличении размеров / элементов?
Евклидово расстояние отлично масштабируется - работает для двух измерений или двух тысяч.Для любой пары точек данных:
поэлементно вычитать их векторы признаков,
квадрат каждого элемента в этом векторе результатов,
сумма результата,
взять квадратный корень из этого скаляра.
Нигде в этой последовательностирасчеты зависят от масштаба.
Но является ли евклидово расстояние подходящим показателем подобия для вашей задачи, зависит от ваших данных.Например, это чисто числовой (непрерывный)?Или он также имеет дискретные (категориальные) переменные (например, пол? M / F). Если одним из ваших измерений является «текущее местоположение» и из 200 пользователей 100 имеют значение «Сан-Франциско», а другие 100 имеют «Бостон ", вы не можете сказать, что ваши пользователи в среднем откуда-то из Канзаса, но это как раз то, что будет делать евклидово расстояние.
В любом случае, поскольку мы ничего об этом не знаем, я просто дам вам простую блок-схему, чтобы вы могли применить ее к своим данным и определить соответствующую метрику сходства.
Чтобы определить подходящую метрику сходства с учетом ваших данных:
![enter image description here](https://i.stack.imgur.com/mLMvx.png)