У меня есть набор данных. Каждый элемент этого множества состоит из числовых и категориальных переменных. Категориальные переменные являются номинальными и порядковыми. В этом наборе данных есть некоторая естественная структура. Как правило, эксперты кластеризуют наборы данных, такие как мои, используя свои "экспертные знания", но я хочу автоматизировать этот процесс кластеризации.
Большинство алгоритмов кластеризации используют расстояние (Евклида, Махаланобдис и т.д.) между объектами для группировки их в кластерах. Но трудно найти некоторые разумные показатели для смешанных типов данных, т.е. Мы не можем найти расстояние между "стеклом" и "сталью". Поэтому я пришел к выводу, что я должен использовать условные вероятности P(feature = 'something' | Class)
и некоторую функцию полезности, которая зависит от них. Это разумно для категориальных переменных, и он отлично работает с числовыми переменными, предполагая, что они распределены нормально.
Итак, мне стало ясно, что алгоритмы, такие как K-означает, не приведут к хорошим результатам.
В это время я пытаюсь работать с алгоритмом COBWEB, который полностью соответствует моим идеям использования условных вероятностей. Но я столкнулся с другими обложками: результаты кластеризации действительно трудно интерпретировать, если не невозможно. В результате я хотел получить что-то вроде набора правил, описывающих каждый кластер (например, if feature1 = 'a' and feature2 in [30, 60], it is cluster1
), например деревья дескрипции для классификации.
Итак, мой вопрос:
Существует ли какой-либо существующий алгоритм кластеризации, который работает со смешанным типом данных и дает понятное (и разумное для людей) описание кластеров.
Дополнительная информация:
Насколько я понимаю, моя задача - в области концептуальной кластеризации. Я не могу определить функцию подобия, как это было предложено (это как конечная цель проекта whoal), из-за области изучения - это очень сложно и беспощадно с точки зрения формализации. Насколько я понимаю, наиболее разумным подходом является тот, который используется в COBWEB, но я не уверен, как его адаптировать, поэтому я могу получить маловероятное описание кластеров.
Дерево решений
Как было предложено, я попытался подготовить дерево решений на выходе кластеризации, тем самым получив описание кластеров как набор правил. Но, к сожалению, интерпретация этих правил почти такая же сложная, как с исходным выпуском кластеризации. Первый из немногих первых уровней правил из корня node действительно имеет смысл: ближе к безличному смыслу, который у нас есть. Во-вторых, эти правила не соответствуют никаким экспертным знаниям.
Итак, я пришел к выводу, что кластеризация - это черный ящик, и не стоит пытаться интерпретировать его результаты.
И
У меня была интересная идея модифицировать алгоритм "дерева решений для регрессии" определенным образом: istead вычисления вычисления групповой дисперсии a утилита категории функции и использовать его как критерий split. В результате у нас должно быть дерево решений с описанием листовых кластеров и кластеров из коробки. Но я не пытался это сделать, и я не уверен в точности и во всем остальном.