Подтвердить что ты не робот

K Ближайший-соседний алгоритм

Может быть, я довольно глуп, но я просто не могу найти удовлетворительный ответ: Используя KNN-алгоритм, скажем, k = 5. Теперь я пытаюсь классифицировать неизвестный объект, получив его 5 ближайших соседей. Что делать, если после определения 4 ближайших соседей ближайшие два (или более) ближайших объекта имеют одинаковое расстояние? Какой объект из этих 2 или более должен быть выбран в качестве 5-го ближайшего соседа?

Заранее спасибо:)

4b9b3361

Ответ 1

Какой из этих двух или более объектов следует выбрать в качестве 5-го ближайшего соседа?

Это действительно зависит от того, как вы хотите его реализовать.

Большинство алгоритмов будут делать одну из трех вещей:

  • Включите все равные дистанционные точки, поэтому для этой оценки они будут использовать 6 точек, а не 5.
  • Используйте "первую" найденную точку двух равных дистанционных.
  • Выберите случайное (обычно с последовательным семенем, поэтому результаты воспроизводятся) указывают на найденные 2 точки.

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

Ответ 2

Другим и интересным вариантом является использование ближайшего соседа следующим образом:

  • Вы вычисляете расстояния 5 ближайших соседей от каждого класса до образца: у вас будет 5 расстояний от каждого класса.

  • Затем вы получаете среднее расстояние для каждого класса.

  • Это меньшее среднее расстояние будет классом, который вы назначите образцу.

Этот способ эффективен для наборов данных классов, которые перекрываются.

Ответ 3

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

Если это не так, выберите наугад. Запустите несколько раз вашу программу на одном тестовом наборе, чтобы проверить, имеет ли значение случайный выбор.

Ответ 4

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

Ответ 5

Если у вас есть k = 5, вы посмотрите на пять лучших записей, посмотрите на наиболее распространенный результат из этих пяти. Вполне вероятно, что вы получите две пары, которые поставят вас в затруднительное положение, и это будет сложно, потому что тогда у вас есть шанс 50/50 для каждой пары.

Так что это делает жизнь сложной. Итак, как вы выбираете значение для к? Есть некоторые метрики, которые вы можете использовать для анализа результата после факта, но нет строгого правила того, каким должно быть k, поэтому я бы упростил для себя, только начав и придерживаясь k = 3 вместо k = 5 и затем вниз По пути рассмотрим некоторые стратегии, которые могут помочь вам оптимизировать значение k, взглянув на фактическую точность ваших прогнозов.