Кластеризация клиентов с помощью Python (sklearn)
Я работаю в электронной коммерции и отвечаю за кластеризацию наших клиентов на основе их транзакционного поведения. Я никогда раньше не работал с кластеризацией, поэтому у меня немного трудное время.
1) Я собрал данные о клиентах и выбрал 12 переменных, которые очень хорошо указывают, как эти клиенты ведут себя. Каждая строка набора данных представляет 1 пользователя, где в столбцах указаны 12 выбранных мной функций.
2) Я удалил некоторые выбросы и построил корреляционную матрицу для проверки избыточных переменных. Оказывается, некоторые из них сильно коррелированы ( > 0,8 корреляция)
3-й) Я использовал RobustScaler от sklearn для всех 12 переменных, чтобы убедиться, что изменчивость переменной не сильно меняется (StandardScaler плохо справился с моим силуэтом)
4-е) Я запустил KMeans в наборе данных и получил очень хороший результат для 2 кластеров (силуэт> 70%)
5-й) Я попытался сделать PCA после масштабирования / до кластеризации, чтобы уменьшить мое измерение с 12 до 2, и, к моему удивлению, мой силуэт начал подниматься до 30-40%, и, когда я строю точки данных, это просто большая масса на центр графика.
Мой вопрос:
1) В чем разница между RobustScaler и StandardScaler на sklearn? Когда я должен использовать каждый?
2) Должен ли я делать: Необработанные данные -> Очищенные данные -> Нормализация -> PCA/TSNE -> Кластеризация? Или PCA должен прийти до нормализации?
3) Является ли уменьшение размера 12 -> 2 через PCA слишком экстремальным? Это может быть причиной ужасной оценки силуэта.
Большое спасибо!
1 ответ
Старайтесь не сравнивать силуэты разных проекций или масштабов. Внутренние меры, как правило, слишком чувствительны.
Не используйте tSNE для кластеризации (Google для обсуждения stats.SE, не стесняйтесь редактировать ссылку в этом ответе). Это приведет к ложному разделению и ложной смежности; это техника визуализации.
PCA уменьшит оси высокой дисперсии и увеличит направления низкой дисперсии. Следует ожидать, что это в целом снижает качество, если главная ось - это то, что вас интересует (и, как ожидается, поможет, если это не так). Но если визуализация PCA показывает только один большой шарик, то силуэт 0,7 не должен быть возможным. Для такого высокого силуэта кластеры должны быть разделены в представлении PCA.