2013-06-18 3 views
1

У меня есть данные, которая состоит из векторов размера 1x5, каждый из которых представляет Пикель: [x,y,r,g,b], x и y являются положение: 0 <= x <= M, 0 <= y <= N. r,g,b - цвет пикселя: 0 <= r,g,b <= 255.Епанечникова плотности многомерного

Я хочу оценить оценку плотности с использованием многомерного ядра Эпанечникова. Я читал, что есть два способа в основном сделать это:

  1. Мультипликативный метод - вычислить ядро ​​для каждого измерения, а затем умножить их.
  2. Рассчитайте норму вектора и вычислите ядро ​​для этого значения.

Как именно каждый из двух методов будет работать с моими данными? Что мне нужно для нормализации, зная, что ядро ​​Эпанечникова дает 0 для нормализованных значений > 1 или < -1.

Я программирую на C++.

+1

Я думаю, что это должно быть перенесено stats.stackexchange .com –

ответ

2
  1. Multiplicative метод - вычислить ядро ​​для каждого измерения, а затем умножить их.
  2. Рассчитайте норму вектора и вычислите ядро ​​для этого значения.
  1. предполагается, что переменная х и у statistically independent, который не имеет места для 2. С другой стороны, 2. является радиально симметричным ядром.

Как именно каждый из двух методов будет работать с моими данными?

Я бы попробовать оба и посмотреть, что один дает лучший результат (например, который один дает лучшую вероятность на данных, но осторожно, чтобы не overfit данные, например, с помощью cross validation).

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

Тот же аргумент (перекрестная проверка) также применяется к выбору ширины ядра («коэффициент масштабирования», сделать ядро ​​узким или широким).

Вы можете, конечно, просто выбрать ширину ядра вручную для начала. Выбор слишком малой ширины ядра даст «плохую» оценку плотности, выбирая ее слишком большую, «вымыть» важные функции ваших данных.

Что необходимо для нормализации, зная, что ядро ​​Эпанечникова дает 0 для нормализованных значений> 1 или < -1.

Функция, о которой вы говорите, не имеет отношения к нормализации. Вы должны использовать нормализованное выражение для самого ядра, т. Е. Интеграл в диапазоне, где ядро ​​отличное от нуля, должно быть единым. В вашем случае 1., если 1D ядра нормированы (что имеет место, например, для 3/4*(1-u^2) на [-1..1], а также 2D-продукт будет нормализована. Для случая 2. один должен вычислить 2D интеграл.

Предполагая ядро нормируется, то вы можете нормализовать оценку плотности следующим образом:.

normalization formula

где N это количество точек данных Это будут нормализованы, то есть интеграл p(x,y) над 2D плоскости один.


Обратите внимание, что ни одна из указанных вами функциональных форм не позволяет произвольно covariance matrices. Один из способов обойти это - сначала «декорировать» набор данных (т. Е. Применить матричное преобразование так, чтобы ковариационная матрица набора данных стала единичной матрицей), затем выполним оценку плотности, а затем примените обратное преобразование.

Также существует расширение, такие как adaptive kernel density estimation, где ширина ядра изменяется в качестве функции x и y, если в каком-то момент вы хотите уточнить вашу оценку и т.д.

+0

Спасибо sooo много Андре за ответ. Что вы подразумеваете под «использованием нормализованного выражения для самого ядра», снова я хочу использовать ядро ​​Эпанечникова и иметь вектор из 5 записей {a, b, c, d, e}: 0 <= a <= 720 0 <= b <= 480 0 <= c <= 255 0 <= d <= 255 0 <= e <= 255 Так что же мне делать в точности? не могли бы вы дать мне более подробную информацию? Я не понял пример с сигмой, которую вы использовали. будем рады, если вы сможете объяснить это снова;) Спасибо! –

Смежные вопросы