В этом блоге я расскажу об алгоритме K-Nearest Neighbours. Итак, приступим.

Представьте себе, что поставщик телекоммуникационных услуг сегментировал свою клиентскую базу по шаблонам использования услуг, разделив клиентов на четыре группы. Если демографические данные можно использовать для прогнозирования членства в группе, компания может настраивать предложения для отдельных потенциальных клиентов. Это проблема классификации. То есть, учитывая набор данных с предопределенными метками, нам нужно построить модель, которая будет использоваться для прогнозирования класса нового или неизвестного случая.

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

Просто для демонстрации, давайте используем только два поля в качестве предикторов, а именно возраст и доход, а затем построим график клиентов на основе их членства в группах.

Теперь предположим, что у нас появился новый клиент. Например, запись номер восемь с известными возрастом и доходом. Как мы можем определить класс этого покупателя? Можем ли мы найти один из ближайших кейсов и присвоить такой же ярлык класса нашему новому клиенту? Можем ли мы также сказать, что класс нашего нового клиента, скорее всего, относится к четвертой группе, то есть к Total Service, потому что его ближайший сосед также относится к четвертому классу? Да мы можем. Фактически, это первый ближайший сосед. Теперь вопрос в том, насколько мы можем доверять нашему суждению, основанному на первом ближайшем соседе? Это может быть плохое суждение, особенно если первый ближайший сосед - очень специфический случай или выброс, верно?

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

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

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

Этот алгоритм классифицирует случаи на основе их сходства с другими случаями. В K-ближайших соседях точки данных, которые находятся рядом друг с другом, называются соседями. K-Nearest Neighbours основан на этой парадигме. Подобные случаи с одинаковыми метками классов находятся рядом друг с другом. Таким образом, расстояние между двумя случаями является мерой их несходства. Существуют разные способы вычисления сходства или, наоборот, расстояния или несходства двух точек данных. Например, это можно сделать с помощью евклидова расстояния.

Теперь давайте посмотрим, как на самом деле работает алгоритм K-Nearest Neighbours. В задаче классификации алгоритм K-ближайших соседей работает следующим образом.

  1. Выберите значение для K.
  2. Вычислите расстояние от нового случая до каждого случая в наборе данных.
  3. Найдите в обучающих данных K-наблюдения, которые наиболее близки к измерениям неизвестной точки данных.
  4. Предскажите ответ неизвестной точки данных, используя наиболее популярное значение ответа из K-ближайших соседей.

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

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

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

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

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

Теперь, на противоположной стороне спектра, если мы выберем очень высокое значение K, например, K равным 20, тогда модель станет чрезмерно обобщенной.

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

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

Спасибо за прочтение.