Неконтролируемое обучение — алгоритм машинного обучения

Неконтролируемое обучение — это подход к обучению в машинном обучении. В отличие от обучения с учителем, здесь мы не помечаем данные, на которых хотим обучать модель. Давайте обсудим два примера размеченных и неразмеченных данных, чтобы различать подходы к обучению с учителем и без учителя.

Вот типичная задача обучения с учителем, рисунок 1 ниже, где нам дан размеченный обучающий набор, и цель состоит в том, чтобы найти границу решения, которая разделяет примеры с положительными метками и примеры с отрицательными метками. Итак, в этом случае задаче обучения с учителем присваивается набор меток, чтобы подогнать к ней гипотезу.

Напротив, в задаче обучения без учителя нам даются данные, которые не имеют связанных с ними меток. Это означает, что нам даны данные, которые выглядят только как точки. Вот на рисунке 2 ниже набор точек не добавляется к меткам, а наш обучающий набор записывается просто x1, x2, вплоть до xm, и мы не получаем никаких меток. И именно поэтому точки, нанесенные на рисунок, не имеют надписей. Таким образом, при неконтролируемом обучении мы даем такой немаркированный обучающий набор алгоритму, и мы просто просим алгоритм найти некоторую структуру данных для нас. Учитывая, что этот набор данных имеет один тип структуры, у нас может быть алгоритм для этого набора данных, в котором точки сгруппированы в два отдельных кластера, и он находит кластеры, подобные тем, которые я только что обвел,
называется алгоритмом кластеризации. Алгоритм кластеризации является первым типом обучения без учителя, хотя существуют и другие типы алгоритмов обучения без учителя, которые находят другие типы структуры или другие типы шаблонов в данных, отличных от кластеров. Вопрос в том, для чего нужна кластеризация?

Несколько приложений алгоритма обучения без учителя проиллюстрированы ниже на рисунке 3. Одним из них является сегментация рынка, когда у вас может быть база данных клиентов, и вы хотите сгруппировать их по разным сегментам маркеров, чтобы вы могли продавать им по отдельности или лучше обслуживать разные сегменты рынка. Анализ социальных сетей. На самом деле есть группы, которые делали такие вещи, как просмотр группы людей в социальных сетях. Таким образом, такие вещи, как Facebook, Google+ или, может быть, информация о том, кому вы отправляете электронные письма чаще всего и кому они посылают электронные письма чаще всего, и
чтобы найти согласованность в группах людей. Следовательно, это может быть еще один алгоритм кластеризации, чтобы определить, кто является связной группой друзей в социальной сети? Вот пример использования кластеризации для организации компьютерных кластеров или для лучшей организации центров обработки данных. Потому что, если вы знаете, какие компьютеры в центре обработки данных в кластере, как правило, работают вместе, вы можете использовать это для реорганизации своих ресурсов и того, как вы планируете сеть и как вы проектируете коммуникации своего центра обработки данных. И еще один пример использования алгоритмов кластеризации для понимания формирования галактик и использования их для понимания астрономических данных. Далее мы начнем говорить о конкретном алгоритме кластеризации.

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

Допустим, я хочу взять немаркированный набор данных, подобный показанному здесь, и сгруппировать данные в три кластера. Если я запущу алгоритм кластеризации K-средних, я сделаю вот что. Первым шагом является случайная инициализация трех точек, называемых центроидами кластера. Эти три точки называются Cluster Centroids, и у меня их три, потому что я хочу сгруппировать свои данные в три кластера. K-Means — это итеративный алгоритм, который делает две вещи. Во-первых, это шаг назначения кластера, а во-вторых, шаг перемещения местоположения центроидов, как показано на рисунке 5 ниже.

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

Другая часть в цикле K-средних — это перемещение шага центроида, что означает, что мы собираемся взять три центроида кластера, то есть красную точку, синюю точку и зеленую точку, и мы идем чтобы переместить их в среднее значение точек, окрашенных в тот же цвет. Другими словами, мы собираемся посмотреть на все красные точки и вычислить среднее значение, на самом деле среднее значение местоположения всех красных точек, и мы собираемся переместить центр тяжести красного кластера туда. И то же самое относится к центроиду синего кластера: посмотрите на все синие примеры и вычислите их среднее значение, а затем переместите туда центроид синего кластера, и мы сделали бы то же самое для точки зеленого центроида. Затем мы возвращаемся к другому этапу назначения кластеров, где снова ищем все неразмеченные примеры и, в зависимости от того, ближе ли они к красному, синему или зеленому центроиду кластера, окрашиваем их в красный, синий, или зеленый.

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

Выбор количества кластеров. В последней части этой статьи я хотел бы поговорить об одной последней детали кластеризации K-средних, а именно о том, как выбрать количество кластеров или как выбрать значение параметра капсулы K? Честно говоря, на самом деле нет хорошего способа ответить на этот вопрос или сделать это автоматически, и, безусловно, наиболее распространенным способом выбора количества кластеров по-прежнему является выбор его вручную, глядя на визуализации или глядя на выходные данные. алгоритм кластеризации или что-то еще. Но это общий вопрос о том, как выбрать количество кластеров. Большая часть того, почему не всегда может быть легко выбрать количество кластеров, заключается в том, что часто бывает неоднозначно, сколько кластеров содержится в данных. Глядя на набор данных на рисунке 6 ниже, некоторые из вас могут увидеть четыре кластера, что предполагает использование K = 4. Некоторые из вас могут увидеть два кластера, что предполагает K=2, или могут увидеть три кластера, K=3. Глядя на такой набор данных, истинное количество кластеров кажется мне действительно двусмысленным, и я не думаю, что есть один правильный ответ. Это потому, что нам не дают ярлыки, и, следовательно, не всегда есть четкий ответ.

Это одна из причин, усложняющих автоматический алгоритм выбора точного количества кластеров. Иногда один из способов выбора количества кластеров называется Метод локтя, см. рис. 7 ниже. Позвольте мне немного рассказать вам об этом, а затем упомянуть некоторые из его преимуществ, но также и недостатки. В методе локтя мы будем варьировать значение K, которое представляет собой общее количество кластеров. Мы собираемся запустить K-средние с одним кластером, что означает, что все сгруппировано в один кластер и вычислить функцию стоимости (функция искажения J) и построить ее здесь. А затем мы собираемся запустить метод K-средних с двумя кластерами, может быть, с несколькими случайными начальными агентами, а может и нет. Но тогда с двумя кластерами мы должны получить меньшее значение искажения, а затем построить его там. А затем запустите K-means с тремя кластерами, надеюсь, вы получите еще меньшее искажение и начертите его. Затем мы продолжаем запускать K-средних с четырьмя, пятью и так далее. В итоге мы получим кривую, показывающую, как уменьшается искажение по мере увеличения количества кластеров. Если вы посмотрите на кривую на рис. 7, метод локтя говорит: «Похоже, здесь явное локоть». Это было бы по аналогии с имитацией человеческой руки, это метод локтя.

Затем вы обнаружите такой шаблон, рисунок 7 (слева), где искажение быстро снижается от 1 до 2 и от 2 до 3, а затем вы достигаете локтя на 3, после чего искажение снижается очень медленно. . Тогда похоже, что, возможно, использование трех кластеров — это правильное количество кластеров, потому что это изгиб этой кривой, верно? Это связано с тем, что искажение быстро снижается до K=3, а после этого оно снижается очень медленно. Поэтому возьмем K=3. Если вы примените метод локтя и получите график, который на самом деле выглядит так, как показано на рис. 7 (слева), то это очень хорошо и будет разумным способом выбора количества кластеров.

Однако оказывается, что метод локтя используется не так часто, и одна из причин этого заключается в том, что если вы на самом деле используете его для решения задачи кластеризации, оказывается, что довольно часто вы получаете кривую, которая выглядит гораздо более двусмысленной. может быть, что-то вроде кривой на рисунке 7 (справа). И если вы посмотрите на эту кривую, то, возможно, здесь нет явного изгиба, но похоже, что искажения постоянно снижаются, может быть, 3 — это хорошее число, может быть, 4 — это хорошее число, может быть, 5 — тоже неплохо. Поэтому, если вы применяете метод Локтя на практике, и ваш график выглядит как тот, что слева, это здорово, потому что он дает вам четкий ответ. Но так же часто вы получаете сюжет, похожий на тот, что справа, и непонятно, где находится готовое расположение локтя. Это затрудняет выбор количества кластеров с использованием этого метода. Таким образом, краткое изложение метода локтя состоит в том, что попробовать стоит, но я не обязательно возлагаю очень большие надежды на то, что он сработает для какой-либо конкретной проблемы.

Наконец, вот еще один способ выбора значения K. Очень часто люди используют K-средние, чтобы получить кластеры для каких-то более поздних целей или для каких-то последующих целей. Если это дает вам оценочную метрику, то часто лучший способ определить количество кластеров — это увидеть, насколько хорошо различное количество кластеров служит этой последующей цели. Возможно, вы хотите использовать K-средние для сегментации рынка, как в примере с размером футболки, показанном выше на рисунке 8 выше. Давайте рассмотрим пример размера футболки и попробуем решить, нужны ли мне футболки трех размеров, восьмерка (слева)? Тогда я должен выбрать K=3, и у меня могут быть маленькие (S), средние (M) и большие (L) футболки. Или, может быть, я хочу выбрать K=5, восьмерку (справа), а затем, возможно, очень маленькую (XS), маленькую (S), среднюю (M), большую (L) и очень большую (XL) Размеры футболок. Таким образом, у вас может быть три, четыре или пять размеров футболок. Я просто показываю три и пять здесь, чтобы упростить пример. Затем, если я запускаю K-средних с K = 3, я могу получить малый, средний и большой. Принимая во внимание, что если я запускаю K-средние с 5 кластерами, возможно, я могу получить очень маленькие футболки, маленькие, средние, большие и очень большие. И что хорошо в этом примере, так это то, что он может дать нам еще один способ выбрать, хотим ли мы 3, 4 или 5 кластеров, и, в частности, подумать об этом с точки зрения бизнеса футболок и спросить: «Ну, если я пять сегментов, то насколько хорошо мои футболки подойдут моим покупателям и сколько футболок я смогу продать? Насколько счастливы будут мои клиенты?» Что действительно имеет смысл с точки зрения бизнеса футболок, с точки зрения того, хочу ли я иметь размеры футболок Goer, чтобы мои футболки лучше подходили моим клиентам. Или я хочу иметь меньше размеров футболок, чтобы делать футболки меньшего размера и продавать их покупателям по низкой цене? Таким образом, бизнес по продаже футболок может дать вам возможность выбрать между тремя кластерами и пятью кластерами. Кроме того, это дало бы вам пример того, как более поздняя цель, такая как проблема принятия решения о том, какие футболки производить, может дать вам оценочную метрику для выбора количества кластеров.

Подводя итог этой части, можно сказать, что количество кластеров (K) по-прежнему выбирается вручную, т. е. с помощью человеческого ввода или человеческого понимания. Один из способов попытаться сделать это — использовать метод локтя, но я не всегда ожидал, что он будет работать хорошо, и лучший способ подумать о том, как выбрать количество кластеров, — это спросить, с какой целью вы используете K -означает? А затем подумать, какое количество кластеров служит более поздней цели, для которой вы на самом деле запускаете K-средние.