Неконтролируемая кластеризация с использованием IDEC - PullRequest
0 голосов
/ 14 января 2020

Я столкнулся с некоторыми проблемами, работая над неконтролируемой моделью кластеризации, и хотел поискать мнения. В основном я пытаюсь использовать IDE C (https://www.ijcai.org/proceedings/2017/0243.pdf) для группировки клиентов на основе их статистики и привычек на сайте. Алгоритм сначала использует часть кодера предварительно обученного автоэнкодера, чтобы уменьшить размерность функций клиента, чтобы затем кластеризовать их в скрытом пространстве с меньшим размером, это делается для того, чтобы устранить (или в любом случае уменьшить) проблему проклятия мерность. Чтобы разделить клиентов, я разделил их функции на 3 основные категории и провел обучение по 3 отдельным моделям для каждой из них: частота транзакций на веб-сайте, потраченные деньги (ликвидность) и типы продуктов (котировки) (все функции). являются числовыми, я использовал фиктивные имена для краткости); таким образом, наконец, клиент будет классифицирован на основе этих трех категорий (например, Клиент1: «012», Клиент2: «102»). Однако первые проблемы возникают при обучении моделей: в начале я начал тестировать модель IDE C на всем функциональном пространстве, и это оказалось в основном хорошо, но когда я ввел 3 категории, обучение автоэнкодеров стало вести себя странно. (здесь я должен сказать, что я все еще относительно новичок в машинном обучении и у меня еще есть чему поучиться, так что извините за мою слабо используемую терминологию): на практике обучение нейронной сети приводило к колебаниям ошибок обучения и проверки и в одном случае ошибки проверки был ниже, чем тренировочный. Используемые автоэнкодеры имеют одинаковую конфигурацию для всех 3 отдельных моделей и основаны на предложенной установке Van Der Maaten [input-500-500-2000-10].

В случае частоты, показанной здесь, начинается ошибка проверки повышение немного указывает на переоснащение, но затем оно снова уменьшается, пока не стабилизируется. Это нормально? Тренинг действителен или мне нужно что-то изменить? enter image description here

В случае потраченных денег, показанных здесь, тренинг ведет себя довольно нормально, за исключением больших начальных колебаний, ошибки сходятся в стабильное решение. enter image description here

Однако здесь возникает реальная головоломка: в случае кавычек ошибки для типов продукта обращаются вспять, ошибка проверки начинается ниже, чем обучающая, и даже если они заканчивают тем, что сходятся к подобному значению, я все еще нахожу это очень странным и не могу объяснить, почему это происходит. Есть идеи? enter image description here

После обучения возникают новые проблемы: когда приходит время кластеризации клиентов с использованием предварительно обученных весов, модели не могут разделить кластеры как как и положено , а в некоторых случаях модель разделяет клиентов на 2 или даже 1 группы, даже если специально просили разделить их на 3 отдельные группы , как показано ниже.

В Чтобы визуализировать кластеризацию, я использовал как PCA, так и t-SNE из 10-мерного пространства в 2D и 3D, звезды представляют центры кластеров. Значения получаются с помощью кодера для прогнозирования скрытого пространства, и цвета назначаются на основе прогнозов уровня кластеризации для каждого значения.

В этой визуализации использовался PCA. В порядке появления мы имеем частоту, ликвидность и котировки. Как говорилось ранее, частота делится на 2 группы вместо 3, и во всех 2 случаях кластеры плохо разделены. enter image description here enter image description here

Использование t-SNE представляет еще больше проблем, так как кластеры все смешаны вместе без видимой согласованности: enter image description here enter image description here

Я включаю сюда схему одной окончательной модели 3: enter image description here

Любые идеи о том, как улучшить ситуацию? Напомним: я хотел бы кластеризовать клиентов на основе их 3 основных категорий. Модель работает, но я не уверен в ее эффективности или даже обоснованности, поскольку обучение немного шаткое, и кластеризация кажется в лучшем случае шаткой, с плохим разделением, а также неспособностью сформировать 3 различных кластера в некоторых случаях. Должен ли я отказаться от IDE C и использовать какой-либо другой вид обучения без учителя? Я хотел попробовать, так как он обещал более высокую точность в пространствах с высокой размерностью (у меня есть 64 измерения), но если будет предложен другой метод, я дам ему go. Опять же, любое понимание высоко ценится, не стесняйтесь задавать вопросы, если я пропущу что-то, что вам нужно знать. Это мой первый вопрос на сайте, я надеюсь, что не слишком плохо.

Спасибо за чтение, ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...