Я работаю над алгоритмом K-medoids. Это алгоритм кластеризации, и один из его шагов включает в себя поиск наиболее представительной точки в кластере.
Итак, здесь вещь
- У меня есть определенное количество кластеров
- Каждый кластер содержит определенное количество точек
- Мне нужно найти точку в каждом кластере, которая приводит к наименьшей ошибке, если она выбрана в качестве представителя кластера.
- Необходимо рассчитать расстояние от каждой точки до всего остального в кластере
- Этот расчет расстояний может быть простым, как евклидово или более сложным, как DTW (динамическое временное деформирование) между двумя сигналами
Существует два подхода: вычисление матрицы расстояния, которая будет сохранять значения между всеми точками в наборе данных, а другая - вычислять расстояния во время кластеризации, что приводит к тому, что расстояния между некоторыми точками будут вычисляться повторно.
С одной стороны, для построения матрицы расстояний вы должны вычислять расстояния между всеми точками всего набора данных, а некоторые из вычисленных значений никогда не будут использоваться.
С другой стороны, если вы не построите матрицу расстояний, вы повторите некоторые вычисления в определенном количестве итераций.
Каков наилучший подход?
Я также рассматриваю реализацию MapReduce, поэтому мнения с этой точки зрения также приветствуются.
Спасибо