«Вероятность» K-ближайшего соседа, подобного классификации

У меня есть небольшой набор точек данных (около 10) в 2D-пространстве, и у каждой из них есть метка категории. Я хочу классифицировать новую точку данных на основе существующих меток точек данных, а также связать «вероятность» принадлежности к какому-либо конкретному классу меток.

Уместно ли пометить новую точку на основе метки ее ближайшего соседа (например, K-ближайшего соседа, K = 1)? Для получения вероятности я хочу переставить все метки и вычислить все минимальное расстояние неизвестной точки и остальных и найти долю случаев, когда минимальное расстояние меньше или равно расстоянию, которое было использовано для его маркировки.

Спасибо


person WoA    schedule 08.02.2011    source источник


Ответы (5)


Ровейс использует вероятностную структуру с KNN в своей публикации Анализ компонентов соседства. . Идея состоит в том, чтобы использовать «мягкую» классификацию ближайших соседей, где вероятность того, что точка i использует другую точку j в качестве своего соседа, определяется выражением

введите здесь описание изображения,

где d_ij — евклидово расстояние между точками i и j.

person bayer    schedule 20.02.2011
comment
Обратите внимание - в обоих показателях должно быть -d_ij (отрицательное расстояние), чтобы вероятность была обратно пропорциональна расстоянию! - person Maciej Gryka; 19.05.2011

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

P(метка|z) = P(z|метка)P(метка) / P(z) = K(метка)/K

Это получается с использованием правила вероятности Байеса для оценочной вероятности, оцененной с использованием подмножества данных. В частности, с помощью:

VP(x) = K/N (это дает вам вероятность точки в шаре объема V)

P(x) = K/NV (сверху)

P(x=метка) = K(метка)/N(метка)V (где K(метка) и N(метка) — количество очков в шаре данного класса и количество очков в общем количестве выборок тот класс)

а также

P(метка) = N(метка)/N.

Поэтому просто выберите K, рассчитайте расстояния, посчитайте точки, и, проверив их метки и пересчитав, вы получите свою вероятность.

person Stefio    schedule 18.06.2013

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

Подробности смотрите в статье LibSVM.

person yura    schedule 09.02.2011

Отсортируйте расстояния до 10 центров; они могут быть
1 5 6 ... одни рядом, другие далеко
1 1 1 5 6 ... 3 рядом, другие далеко
... много возможностей.
Вы можете комбинировать 10 расстояний до одного числа, например 1 - (ближайший/средний) ** p,
но это выбрасывание информации. (Разные степени p делают холмы вокруг центров более крутыми или более плоскими.)

Однако, если ваши центры действительно представляют собой холмы Гаусса, взгляните на Многомерная оценка плотности ядер.

Добавлено: есть миллионы функций, которые плавно проходят между 0 и 1, но это не делает их вероятностями чего-либо.
"Вероятность" означает, что либо случайность, либо правдоподобие, участвует, как в вероятности дождя;
или что ты пытаешься произвести на кого-то впечатление.

Снова добавлено: «(одиночный | 1) классификатор ближайшего соседа» — «(одиночный|1) ближайший соседний классификатор» получает> 300 просмотров; "k ближайший соседний классификатор" получает почти 3000.
Мне (не эксперту) кажется, что из 10 различных способов сопоставления k-NN расстояний с метками
каждый из них может быть лучше, чем 9 других для некоторых данных с некоторой мерой погрешности.
В любом случае вы можете попробовать запросить stats.stackexchange.com ,

person denis    schedule 08.02.2011
comment
Большое спасибо belisarius и Denis за ваши предложения. Кто-нибудь может прокомментировать расчет «вероятности», который я предложил? - person WoA; 08.02.2011
comment
Привет, Денис, я могу построить контуры оценки плотности ядра моих двумерных данных, используя пакет ks R. Но может ли кто-нибудь сказать мне, как классифицировать или пометить одну контрольную точку, используя плотность ядра? Или это только для визуализации? Есть ли какой-нибудь модуль R/Perl для такой классификации? Спасибо - person WoA; 10.02.2011
comment
WoA, можете выложить график вроде оценки плотности ядра данных Old Faithful Geyser из Википедии Multivariate_kernel_density_estimation? Перекрываются ли красные/оранжевые/желтые области? - person denis; 10.02.2011

Ответ: это зависит.

Представьте, что ваши метки — это фамилия человека, а координаты X, Y представляют некоторые важные характеристики последовательности ДНК человека. Ясно, что более точное описание ДНК повышает вероятность наличия одинаковых фамилий.

Теперь предположим, что X,Y — это широта/долгота рабочего офиса этого человека. Более тесная работа не связана с обменом ярлыками (фамилиями).

Итак, это зависит от семантики ваших тегов и осей.

ХТХ!

person Dr. belisarius    schedule 08.02.2011