Выбор функций для проблем кластеризации

9

Я пытаюсь сгруппировать разные наборы данных, используя неконтролируемые алгоритмы (кластеризация). Проблема в том, что у меня много функций (~ 500) и небольшое количество дел (200-300).

До сих пор я занимался только задачами классификации, для которых я всегда отмечал данные как обучающие наборы. Там я использовал некоторый критерий (то есть random.forest.importance или information.gain) для предварительного выбора функций, а затем я использовал последовательный прямой выбор для разных учащихся, чтобы найти соответствующие функции.

Теперь я вижу, что в случае неконтролируемого обучения у меня нет ни одного критерия предварительного отбора, ни я не могу использовать последовательный прямой выбор (по крайней мере, в пакете mlr).

Мне было интересно, смогу ли я провести анализ основных компонентов, прежде чем найти небольшое количество функций, подходящих для моего алгоритма кластеризации. Или у тебя есть другая идея?

Спасибо

редактировать:

Итак, после некоторых исследований в Интернете я могу немного обновить свой вопрос: во-первых, я прочитал несколько статей, которые не рекомендуют использовать PCA перед алгоритмами кластеризации, по двум причинам:

  • ПК являются функциями всех функций, поэтому трудно связать результат с исходным набором данных и, следовательно, труднее интерпретировать

  • Более того, если у вас есть проблема, заключающаяся в том, что на самом деле только очень небольшая часть ваших функций полезна для кластеризации, не говорится, что эти функции также описывают наибольшую дисперсию среди выборок (что и делают ПК)

Так что СПС со стола ...

Теперь я вернулся к своей первоначальной идее сделать последовательный прямой выбор для кластеризации.

Какой показатель эффективности вы бы порекомендовали? (Я думал о Данн-индексе) Какой алгоритм кластеризации приведет к кластерам более или менее одинакового размера? (для иерархической кластеризации я обычно получаю один кластер с одним выбросом, а другой со всем остальным -> поэтому мне нужно что-то, что каким-то образом защищает от выбросов)

Надеюсь, вы, ребята, можете мне помочь ...

Джон Доу
источник
Случайные леса могут применяться в неконтролируемых задачах. И я думаю, что вы все еще можете извлечь некоторые информативные функции в процессе.
Мухомор Кики

Ответы:

11

У меня есть несколько мыслей по поводу сокращения масштабов неконтролируемых проблем обучения. Отвечая, я предположил, что вы заинтересованы в «высоком прикосновении», участии человека в кластерной интерпретации, а не в автоматическом подходе, «черном ящике» и подходе машинного обучения «в неприкосновенности», в котором интерпретация преднамеренно преуменьшается , Если бы это было последнее, почему вы бы даже задавали вопрос? Кроме того, обратите внимание, что за прошедшие годы у меня был огромный опыт работы с кластерными решениями в широком спектре бизнес-сред, включая стратегический маркетинг B2C, сферы технологий B2B и политику в области образования (кластеризация учащихся и школ).

Во-первых, у меня есть вопрос по поводу вашего комментария по поводу «группировки разных наборов данных». Я не знал, что вы имели в виду под этим или как это могло повлиять на подход, и надеялся, что вы сможете уточнить.

Я хотел бы оспорить ваше предположение в № 1 выше, что решения, основанные на PCA, «трудно интерпретировать». Причины даже запуска PCA в качестве предварительного шага в кластеризации в основном связаны с гигиеной полученного решения, поскольку многие алгоритмы кластеризации чувствительны к избыточности функций. PCA объединяет эту избыточность в несколько управляемых компонентов, сводя к минимуму проблемы и трудности, которые вы отмечаете при выборе функций. Несмотря на то, что выходные данные компонентов PCA размывают гранулярность и специфику отдельных функций, это проблема, если вы полагаетесь исключительнона этих компонентах при анализе результатов. Другими словами, вы никоим образом не привязаны к использованию только компонентов для интерпретации кластера. Мало того, вам даже не нужно заботиться о том, что «факторы» означают. Они являются лишь промежуточным и (в конечном итоге) одноразовым средством для достижения цели, способствующей эффективному решению. Но в этом вопросе я отличаюсь от многих практикующих, поскольку команды могут, будут и будут проводить недели, тщательно выстраивая «значимое» решение для фактора. Для меня это неэффективная трата времени и денег клиента.

На данный момент будет множество технических соображений для решения. С одной стороны, если ваш алгоритм PCA не является масштабно-инвариантным (например, OLS против ML), то любое получающееся в результате решение PCA будет искажено, что приведет к большей нагрузке на функции с высокой дисперсией. В этих случаях ваши функции должны быть предварительно обработаны или каким-либо образом преобразованы, чтобы сгладить эту разницу. Здесь существует огромное количество возможностей, включая стандартизацию среднего значения, стандартизацию диапазона или IQR, ипсативное масштабирование и так далее. Используйте это преобразование, предоставляя лучшее и наиболее понятное решение.

После создания кластерного решения интерпретация лучше всего мотивируется (по моему опыту) игнорированием компонентов и сворачиванием исходных функций вместе с любой дополнительной описательной информацией, непосредственно не используемой в решении. На данный момент несколько эвристик являются лучшими руководствами для качественного понимания. Это может быть так же просто, как создание электронной таблицы, которая профилирует ваши кластеры на основе средних или медианных значений для каждого объекта (строки листа), для каждого кластера (столбцы), а также дополнительный столбец, представляющий общее среднее значение для вашей общей выборки. , Затем, путем индексации средних значений кластера для каждой функции по отношению к общему среднему (и умножению на 100), создается эвристика, которая похожа на оценку IQ, поскольку около «100» является «нормальным» IQ или средним поведением, индексы более 120 указывают на высокую вероятность того, что функция будет «истинной» в отношении поведения кластера, а индексы в 80 и менее указывают на особенности, которые «не соответствуют» кластеру. Эти индексы 120+ и 80 или меньше похожи на прокси-t-тесты на значимость данной функции в управлении решением. Конечно, вы можете работать между групповыми тестами значимости и, в зависимости от размеров выборки, получите ответы, которые варьируются в зависимости от этих быстрых и грязных правил.

Хорошо ... после всего этого, предположим, что вы по-прежнему против использования PCA в качестве прямого ввода в алгоритм кластеризации, проблема остается в том, как выбрать сокращенный набор функций. PCA все еще может быть полезен здесь, поскольку PCA подобны запуску регрессии без зависимой переменной. Функции максимальной загрузки каждого компонента могут стать входными данными для алгоритма кластера.

На ваш взгляд, относительно большого числа объектов и относительно небольшого размера выборки ваших данных, типичное практическое правило во многих многомерных анализах с «полной информацией» составляет минимум около 10 наблюдений на объект. Есть несколько специализированных методов, которые можно использовать для решения этой проблемы. Например, частичные наименьшие квадраты (PLS) были впервые разработаны Германом Уолдом в его книге « Теоретический эмпиризм» 1990 года для использования в таких областях, как хемометрика, которые сталкиваются с этой конкретной проблемой. Он носит факторно-аналитический характер, но гораздо менее строг, требуя большого n для генерации измерений. Другие решения включают в себя подходы случайного лесоподобного «разделяй и властвуй» машинного обучения, используемые с огромным количеством информации. Эти методы рассматриваются в этом PDFhttp://www.wisdom.weizmann.ac.il/~harel/papers/Divide%20and%20Conquer.pdf

Но предположим, что вы решили, что по-прежнему не хотите иметь ничего общего с факторным анализом, и вам не терпится запустить какой-то контролируемый, «последовательный» процесс отбора. На мой взгляд, наиболее важной проблемой является не столько поиск метрики производительности (индекс Данна), сколько поиск подходящего прокси - зависимой переменной - чтобы сделать этот подход возможным. Это решение полностью зависит от вашего суждения и статуса МСП в отношении ваших данных. Нет «лучших практик», гораздо менее простых ответов на этот вопрос и учитывая, как вы описали свои данные, нет ничего сложного.

После того, как это решение принято, есть буквально сотни возможных решений для выбора переменных. Выбор переменных - это тематическая область, в которой каждый статистик и их брат опубликовали статью. Ваш предпочтительный подход, кажется, "последовательный выбор вперед", это хорошо.

Стоит отметить, что существуют контролируемые модели обучения, которые объединяются в кластерное решение как часть алгоритма. Примеры этого включают большие и очень гибкие подходы, известные как модели скрытого класса. Суть моделей LC заключается в том, что они являются двумя этапами: на первом этапе определяется DV и строится регрессионная модель. На втором этапе любая неоднородность в остаточном выходе модели - один скрытый вектор - делится на скрытые «классы». В этом обсуждении CV есть обзор LC-моделирования ... Полиномиальная логит-модель сомнительного класса

Надеюсь это поможет.

Майк Хантер
источник
Спасибо, что нашли время, чтобы так много ответить на мой вопрос. Прежде всего, забавно, что вы упомянули хемометрию, потому что это именно та область, над которой я работаю. Я пытаюсь найти кластеры в измерениях разных образцов, и мои особенности - это сигналы в ЯМР-спектре. Это также главная причина, почему я так рано думал об отказе от PCA, поскольку цель моего анализа - связать кластеры с несколькими фактическими признаками (сигналами). Я не намерен использовать последовательный выбор, это то, что я использовал до сих пор. Я посмотрю на ссылки, которые вы дали.
JohnDoe
Это смешно с хемометрикой. Книга Вольда хорошо читается, в общем. Какие «предметы» составляют образцы? И что такое ЯМР?
Майк Хантер
Образцы представляют собой водные экстракты растений и получают спектры 1H-ЯМР. Моя задача чисто исследовательская. Я должен найти любой кластер, который мы хотим отнести к разным генотипам позже или к различным признакам растения, таким как устойчивость к засухе и т. Д. Нелегко найти хорошую отправную точку для нахождения правильного набора метаболитов. / функции, которые помогают разделить кластеры, так как будут разные кластеры, созданные разными функциями для разных вопросов.
JohnDoe
Поэтому я подумал, что последовательный подход мог бы работать лучше всего: - найти набор функций для кластеризации данных - затем удалить эти функции из всего набора и начать заново. Таким образом, я надеюсь найти несколько наборов кластеров, к которым я позже смогу относиться разные вопросы
JohnDoe
1
Стоит рассмотреть сравнение любой исследовательской работы с заранее определенным или определенным набором кластеров, также называемых «подтверждающим» кластерным анализом. Я предлагаю это, потому что звучит так, как будто у вас и вашей команды есть несколько сильных гипотез о формировании кластеров в зависимости, например, от «устойчивости к засухе». Я думаю, вы обнаружите, что исследовательская работа даст превосходное понимание и результаты. Исследовательская кластеризация использует полную информацию, доступную в ваших данных, в то время как «подтверждающие» правила назначения обычно основаны на относительно небольшом числе функций
Майк Хантер,
1

Все, что вам нужно, это критерий качества кластеризации. Идея такова: вы разбиваете данные на поезд и тестируете, строите кластеризацию на части поезда; используйте эту кластеризацию для кластеризации каждого элемента тестового набора (ближайшим кластером); построить отдельную кластеризацию на тестовом наборе; найти сходство кластеризации в тесте с прогнозируемой кластеризацией. Это сходство является критерием качества кластеризации. Теперь, как измерить это сходство, зависит от вас. Получив его, вы выбираете подмножество функций, чтобы максимизировать это сходство.

Марина
источник