До сих пор мы говорили о классификации – о ситуации, когда мы всегда заранее знаем категории, в которые хотим сгруппировать или классифицировать новые точки данных. Теперь мы переходим к кластеризации, представляющей собой совершенно другое семейство алгоритмов.
Если вы не знаете, какими могут оказаться группы в результате анализа, следует использовать метод кластеризации. Методы кластеризации определенно сложнее, чем методы классификации, поскольку мы приступаем к решению задачи, не ведая, какие группы найдем.
Это не должно вас волновать. Именно поэтому мы сначала рассмотрели методы классификации. И то, к чему мы сейчас подходим, может быть гораздо более захватывающим процессом, ведь алгоритмы кластеризации позволяют нам использовать данные для того, чтобы обнаружить новые возможности и закономерности, чтобы выделить новые области, о которых мы, возможно, даже не подозревали, а не просто ответить на наш первоначальный вопрос.
В этом разделе мы рассмотрим алгоритм k-средних и алгоритм иерархической кластеризации. Эти два алгоритма во многом схожи, так как помогают разделить наши данные на статистически значимые группы.
Алгоритм k-средних – одна из моих любимых моделей в науке о данных («модель» и «алгоритм» означают одно и то же). Хотя с ее помощью можно решать сложные задачи, метод k-средних легко понять; он основан на изящном интуитивном подходе.
Алгоритм k-средних обнаруживает статистически значимые категории или группы в нашем массиве данных. Это идеально подходит тогда, когда у нас есть две или более независимых переменных в массиве данных и мы хотим объединить точки данных в группы с похожими атрибутами. Например, k-средние могут помочь нам определить уровни подписки для массива данных членов киноклуба или показать комбинации групп интересов для интернет-магазина.
Построение алгоритма k-средних
Давайте проиллюстрируем алгоритм k-средних теоретическим примером.
Почему бы не использовать здравый смысл?
Казалось бы, можно идентифицировать кластеры, просто разместив точки данных на точечной диаграмме, и увидеть, где окажутся наиболее значимые группы. Но использование алгоритма k-средних показывает нам группы, не видимые невооруженным глазом, и помогает провести линию (буквально) между группами, которые нам может быть трудно идентифицировать вручную.
Особенно это касается многомерных массивов данных. Для простоты мы свели задачу в нашем примере к двум переменным: годовой доход по оси x и оценка расходов по оси y. Но очень часто бывает так, что мы хотим выполнить кластеризацию по большему количеству измерений – трем, четырем, пяти, десяти, иногда даже больше. Поскольку визуализировать n-мерную диаграмму рассеяния невозможно, как мы видели в разделе о k-NN, алгоритм k-средних будет изящно решать n-мерную задачу, используя принципы, аналогичные тем, которые мы обсудим ниже.
Онлайн-ритейлер (наподобие Amazon или Alibaba) продает широкий спектр продуктов низкого и высокого класса. Некоторые пользователи платят за ежемесячную подписку, чтобы пользоваться услугами «премиум» от бесплатной доставки до раннего доступа к новым продуктам. Компания собрала большое количество данных (пол, возраст, годовой доход, история покупок, количество отдельных посещений веб-сайта в неделю и ежегодные расходы) о своих владельцах премиум-аккаунтов и получила «показатель расходов» для каждого из этих клиентов, вычисленный на основе комбинации числовых значений переменных.