Разница между вероятностным kNN и наивным Байесом

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

Поэтому мне интересно, в чем тогда разница между наивным байесовским и вероятностным kNN? Я просто могу заметить, что Наивный Байес учитывает предварительную возможность, а PkNN — нет. Я ошибаюсь?

Заранее спасибо!


person vandermies    schedule 01.05.2016    source источник


Ответы (2)


Сходства, если честно, почти нет.

Наивный байесовский подход предполагает, что каждый класс распределяется по простому распределению, независимому от признаков. Для непрерывного случая - он будет соответствовать радиальному нормальному распределению для всего вашего класса (каждого из них), а затем примет решение через argmax_y N(m_y, Sigma_y)

KNN, с другой стороны, не является вероятностной моделью. Модификация, на которую вы ссылаетесь, представляет собой просто «гладкую» версию исходной идеи, в которой вы возвращаете соотношение каждого класса в наборе ближайших соседей (и на самом деле это не какой-то «вероятностный kNN», это просто обычный kNN, который грубо оценивает вероятности). Это не предполагает ничего о распределении данных (помимо того, что оно локально гладкое). В частности — это непараметрическая модель, которая при достаточном количестве обучающих выборок идеально подойдет к любому набору данных. Наивный байесовский метод идеально подходит только для K гауссов (где K — число классов).

person lejlot    schedule 01.05.2016
comment
Хорошо, но тогда я вообще не понимаю вероятностного kNN. Какой механизм он реализует для определения вероятностей примеров? - person vandermies; 01.05.2016
comment
вероятность оценивается с помощью наивной оценки в окрестности, например P(y|x) = # labels y in NN(x) / # size of NN(x), где NN — множество ближайших соседей. - person lejlot; 01.05.2016

(Я не знаю, как форматировать математические формулы. Для получения более подробной информации и четких представлений см. это.)

Я хотел бы предложить противоположную точку зрения, что KNN является своего рода упрощенным наивным байесовским методом (NB), рассматривая KNN как среднее значение оценки плотности.

Чтобы выполнить оценку плотности, мы пытаемся оценить p(x) = k/NV, где k — количество выборок, лежащих в области R, N — общее количество выборок, а V — объем области R. Обычно есть два способа его оценки: (1) зафиксировав V, рассчитать k, что известно как оценка плотности ядра или окно Парзена; (2) зафиксировав k, рассчитать V, который является оценкой плотности на основе KNN. Последний из-за множества недостатков менее известен, чем первый.

Тем не менее, мы можем использовать оценку плотности на основе KNN для соединения KNN и NB. Учитывая общее количество N выборок, Ni выборок для класса ci, мы можем записать NB в форме оценки плотности на основе KNN, рассматривая область, содержащую x:

P(ci|x) = P(x|ci)P(ci)/P(x) = (ki/NiV)(Ni/N)/(k/NV) = ki/k,

где ki — номер выборки класса ci, лежащий в области. Окончательная форма ki/k на самом деле является классификатором KNN.

person oNgStrIng    schedule 02.07.2019