Пусть имеются тот же набор оценок студентов, что был в прошлой курсовой работе (рисунок 2.1), посвященной разработке нейронной сети для предсказания результатов сессии:
Рисунок 2.1 - набор оценок студентов
Воспользуемся устоявшейся «эмпирической кластеризацией студентов», разделяющей студентов условно на «отличников», «хорошистов» и «троечников», чтобы установить число кластеров, равное трем (в классической системе классификации студентов имеется так-же класс «двоечники», но будем считать, что с неудовлетворительными оценками пройти сессию возможности нет).
Как уже было сказано ранее, среда разработки данного проекта - Python. Импортируем алгоритм кластеризации из библиотеки skitlearn (рисунок 2.2).
Рисунок 2.2 - создание списка оценок студентов без результатов сессии и применение алгоритма.
Каждому элементу входного списка соответствует номер кластера. Как можно видеть на рисунке 2.3 алгоритм определил всех «троечников» в кластер «0», со всеми остальными он поступил не так ожидаемо для человека, но вполне понятно для алгоритмического решения.
Рисунок 2.3 - результат выполнения алгоритма.
Набор оценок [4, 4, 4, 5] оказался включен в кластер вместе с круглым отличником([5,5,5,5]) , хотя наборы [4,5,4,5] и [5,4,4,5] с точки зрения человека ближе к кластеру круглого отличника. Это происходит из-за определенного положения центров кластеров (рисунок. 2.4).
Рисунок. 2.4 - центры кластеров
Легко убедиться, что «геометрически» ошибок в принадлежности кластерам нет.
(4 - 4.66 )2 + (4 - 4.16)2 + (4 — 4.66 )2 + (5 - 4.66 )2 = 0.4356 * 3 + 0.0256 = 1.32
(4 - 4.33)2 + (4 - 5)2 + (4 - 4)2 + (5 - 4.33)2 = 0.1089 + 1 + 0.4356= 1.54
Длина до центра второго кластера больше, так что неудивительно, что набор 4,4,4,5 принадлежит третьему кластеру. Такое положение центров кластеров вызвано неравномерным распределением оценок среди группы. То есть вероятнее всего, людей с четвертой оценкой 5 было так много, что центры кластера сместился таким образом, чтобы расстояние до этого скопления было минимальным. Геометрически человеку сложно представить это из-за трехмерности всех объектов, окружающих его.
Так-же попробуем изменить количество кластеров на два(рисунок 2.5).
Рисунок 2.5 - результат обучения с количеством кластеров равным двум.
Видно, что центры кластеров расположились приблизительно так, чтобы пользователю программы было нетрудно сделать вывод о том, к какой группе тот или иной студент ближе. Наборы с удовлетворительными оценками попали в одну группу, а наборы с хорошими и отличными в другую.
Возможные цели кластеризации:
1)понимание данных путём выявления кластерной структуры. Разбиение выборки на группы схожих объектов позволяет упростить дальнейшую обработку данных и принятия решений, применяя к каждому кластеру свой метод анализа.
Например с помощью данного алгоритма можно определять основные тенденции обучения в группе по предметам. Есть возможность определить студентов у которых есть предрасположенность к вычислительным предметам, таким как Математический анализ(алгебра) и предметам, связанным непосредственно с программированием. В школе это можно использовать для определения принадлежности учеников к группе с гуманитарным или техническим складом ума и последующем использовании этой информации для проф. ориентации.
2)Сжатие данных. Если исходная выборка избыточно большая, то можно сократить её, оставив по одному наиболее типичному представителю от каждого кластера.
Попробуем сжать данные, предоставив нейронной сети для обучения центры кластеров, полученные ранее.
Вместо 21 одного набора на вход придет всего 2. Это сократит вычисления при обучении больше, чем в 10 раз. Но при этом точность может снизиться.
Перейдем к результату, представленному на рисунке 2.6:
Рисунок 2.6 – Результат обучения на сжатом наборе.
Значение в квадратных скобках — это предсказание нейронной сети, обученной на сжатой выборке, для исходного сета из 21 набора. Значение справа это ожидаемое предсказание. Как можно заметить появилась некоторая неточность в обучении.
Алгоритм кластеризации можно использовать для выбора типичных представителей определенных кластеров и уменьшения времени обучения нейронной сети. Однако, это наиболее актуально на очень больших наборах входных данных.
Do'stlaringiz bilan baham: |