Кластерный анализ в действии
Здесь мы изучаем и реализуем различные алгоритмы кластерного анализа и проверяем их эффективность
Содержание |
Исследуемые алгоритмы [править]
- K-средних
- Нейронная сеть Кохонена (Сети векторного квантования)
Теория [править]
Расчеты по методу K-средних [править]
- выбрать число кластеров N
- выбрать исходные центры кластеров
- Пересчитать центры кластеров
- Для каждого кластера выполнить:
for (i=0; i< dimensions; i++) { centroid[i] += point[i]; pointsInCluster++; } for (i=0; i< dimensions; i++) { centroid[i] /= pointsInCluster; }
Обучение слоя Кохонена [править]
Обучения нейрона Кохонена выполняется итерационно, согласно уравнению:
,
где
– новое значение веса, соединяющего входную компоненту х с выигравшим нейроном;
– предыдущее значение этого веса; k – коэффициент скорости обучения, который может варьироваться в процессе обучения.
Выбор начальных значений весовых векторов [править]
Одно из решений, известное под названием метода выпуклой комбинации, состоит в том, что все веса приравниваются одной и той же величине:
,
где
– число входов (число компонент каждого весового вектора).
Но тогда каждая компонента входа x корректируется:
В начале обучения
мало, вследствие чего все входные векторы имеют длину, близкую к
, и почти совпадают с векторами весов. В процессе обучения сети
постепенно возрастает, приближаясь к единице.
Метод выпуклой комбинации хорошо работает, но несколько замедляет процесс обучения, так как весовые векторы подстраиваются к изменяющейся цели. Но зато в отличии от метода K-средних, нет необходимости устанавливать центры произвольным образом, и они образуется плавно в зависимости от распределения значений компонентов в обучающей выборке.
Практика [править]
Задание №1 [править]
- Есть готовый численный пример
- Нужно перевести и оформить в Викиверситете
Задание №2 [править]
- Есть готовая реализация кластеризации алгоритмом k-means на C++
- Нужно переписать код на C#, разобравшись в алгоритме
,
,