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

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

Правильнее это было бы назвать "нормализацией" или "стандартизацией".

Для стандартизации сначала мы отнимаем среднее арифметическое, а затем делим на среднеквадратическое отклонение:

$$z= \cfrac{x - \mu}{\sigma}$$

Если такое преобразование применить для всех входных данных, то все они будут использовать одну и ту же шкалу: кол-во среднеквадратических отклонений от центра данных.

Я не сталкивался с какими-то статистическими критериями для определения нужности стандартизации: обычно если все переменные измеряются по одной и той же шкале (например, в метрах, и т.п.), то смысла стандартизировать нет. Если же у нас данные разнородные, и есть измерения в сантиметрах, литрах, годах и т.п, то стандартизация для кластеризации, скорее всего, нужна. Я бы еще проверил дисперсию каждой переменной: если значения дисперсий сильно отличаются друг от друга, то стандартизация нужна.

Можно попробовать кластеризовать данные без стандартизации и с ней, и сравнить результаты. Например, если мы кластеризовали данные и видим, что решение в какой кластер попадает наблюдение принимается на основе одной-двух переменных, а остальные не особо участвуют в этом, то значит нужно срандартизовывать данные. Для проверки "степени участия" переменной можно применить какой-нибудь алгоритм классификации, например, Decision Tree и посмотреть какие переменные используются чаще всего.

Еще один момент: если данные стандартизовать, то потом сложнее интерпретировать результаты кластеризации. Например, у нас есть переменная возраст, и мы легко можем понять, что за люди оказались в этом кластере. Если возраст стандартизован, то это уже не так просто, и нужно будет проделывать дополнительные преобразования. Могут возникнуть проблемы с визуализацией: после этих "дополнительных преобразований" визуализация кластеров уже будет не такой хорошей и кластеры будут выглядеть "перемешанными".

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

Хотя я могу порекомендовать книжку об основах стат. анализа - "An Introduction to Statistical Learning" (доступна для скачивания на http://www-bcf.usc.edu/~gareth/ISL/). Там тема стандартизации рассматривается, но не конкретно для кластеризации, а для многих алгоритмов машинного обучения - лин. регрессии, методов главных компонент, и т.п.

Правильнее это было бы назвать "нормализацией" или "стандартизацией". Для стандартизации сначала мы отнимаем среднее арифметическое, а затем делим на среднеквадратическое отклонение: $$z= \cfrac{x - \mu}{\sigma}$$ Если такое преобразование применить для всех входных данных, то все они будут использовать одну и ту же шкалу: кол-во среднеквадратических отклонений от центра данных. Я не сталкивался с какими-то статистическими критериями для определения нужности стандартизации: обычно если все переменные измеряются по одной и той же шкале (например, в метрах, и т.п.), то смысла стандартизировать нет. Если же у нас данные разнородные, и есть измерения в сантиметрах, литрах, годах и т.п, то стандартизация для кластеризации, скорее всего, нужна. Я бы еще проверил дисперсию каждой переменной: если значения дисперсий сильно отличаются друг от друга, то стандартизация нужна. Можно попробовать кластеризовать данные без стандартизации и с ней, и сравнить результаты. Например, если мы кластеризовали данные и видим, что решение в какой кластер попадает наблюдение принимается на основе одной-двух переменных, а остальные не особо участвуют в этом, то значит нужно срандартизовывать данные. Для проверки "степени участия" переменной можно применить какой-нибудь алгоритм классификации, например, Decision Tree и посмотреть какие переменные используются чаще всего. Еще один момент: если данные стандартизовать, то потом сложнее интерпретировать результаты кластеризации. Например, у нас есть переменная возраст, и мы легко можем понять, что за люди оказались в этом кластере. Если возраст стандартизован, то это уже не так просто, и нужно будет проделывать дополнительные преобразования. Могут возникнуть проблемы с визуализацией: после этих "дополнительных преобразований" визуализация кластеров уже будет не такой хорошей и кластеры будут выглядеть "перемешанными". В литературе часто просто говорят, что "зависит от ситуации". Сходу каких-либо рекомендаций по поучительным материалам я дать не могу... Я немного погуглил, но нашел примерно такие же ответы, как мой. Хотя я могу порекомендовать книжку об основах стат. анализа - "An Introduction to Statistical Learning" (доступна для скачивания на http://www-bcf.usc.edu/~gareth/ISL/). Там тема стандартизации рассматривается, но не конкретно для кластеризации, а для многих алгоритмов машинного обучения - лин. регрессии, методов главных компонент, и т.п.

Кстати, нашел на Cross-Validated

http://stats.stackexchange.com/questions/19216/variables-are-often-adjusted-e-g-standardised-before-making-a-model-when-is

В принятом ответе перечисляются ситуации когда нужно и когда не нужно стандартизовывать

Кстати, нашел на Cross-Validated http://stats.stackexchange.com/questions/19216/variables-are-often-adjusted-e-g-standardised-before-making-a-model-when-is В принятом ответе перечисляются ситуации когда нужно и когда не нужно стандартизовывать
305
просмотров
2
ответов
1
подписчики
Предпросмотр
введите как минимим 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Сохраняю...
Сохранено
Все темы будут удалено ?
Сохранены неопубликованные черновики. Нажмите для продолжения редактирования
Discard draft