Вычислительно эффективная оценка многомерного режима


14

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

Длинная версия: у меня есть набор данных, который мне нужен для оценки режима. Режим не совпадает со средним или медианой. Пример показан ниже, это 2D-пример, но решение ND было бы лучше: введите описание изображения здесь

В настоящее время мой метод

  1. Рассчитать оценку плотности ядра на сетке, равную требуемому разрешению режима
  2. Ищите наибольшую рассчитанную точку

Очевидно, что при этом вычисляется KDE по многим неправдоподобным точкам, что особенно плохо, если имеется много точек данных больших размеров или я ожидаю хорошего разрешения в режиме.

Альтернативой может быть использование имитации отжига, генетического алгоритма и т. Д., Чтобы найти глобальный пик в KDE.

Вопрос в том, есть ли более разумный способ выполнения этого расчета?


Я не знаю ответа, но думаю, это отличный вопрос. Мне трудно думать о лучших подходах, чем те, которые вы упомянули. я действительно думаю, что есть различия между подходом к оценке одномерного ядра по сравнению с многовариантным. Эта книга Дэвида Скотта может быть полезна в отношении многомерного подхода к ядру, хотя я не уверен, что он обсуждает пиковую охоту. amazon.com/…
Майкл Р. Черник

Ответы:


7

Метод, который бы соответствовал всем требованиям того, что вы хотите сделать, - это алгоритм среднего смещения . По существу, средний сдвиг зависит от перемещения вдоль направления градиента, который оценивается не-параметрический с «тенью», данного ядром . То есть, если плотность оценивается с помощью , то оценивается с помощью . Детали оценки градиента плотности ядра описаны в этой статье , в которой также случайно появился алгоритм среднего сдвига. K f ( x ) K f ( x ) K KKf(x)Kf(x)K

Очень подробное изложение алгоритма также приведено в этой записи блога .


3
Хорошие ссылки, у Ларри Вассермана также недавно был более короткий пост, описывающий технику в меньшей степени, Алгоритм Удивительного Срединного Смещения .
Энди В.

1
@ AndyW Хороший звонок! Пост Ларри Вассермана (и его блог в целом) великолепен. Просматривая комментарии, я нашел эту иллюстративную ссылку на среднее смещение, среднее смещение и вариант QuickShift.
Самер

2
Спасибо. Не могу сказать, является ли этот самый быстрый, но он определенно находит локальный максимум. Вот несколько графиков траектории и скорости обучения на некоторых синтетических данных .
tkw954

9

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

Parzen E. (1962). Об оценке функции и моды плотности вероятности . Анналы математической статистики 33: 1065–1076.

де Вальпин, П. (2004). Пространственные вероятности состояния Монте-Карло путем взвешенной апостериорной оценки плотности ядра . Журнал Американской статистической ассоциации 99: 523-536.

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

Теперь проблема с командой ksв пакете KDEсостоит в том, что, как вы упомянули, она оценивает плотность в конкретной сетке, что может быть очень ограничивающим. Эта проблема может быть решена, если вы используете пакет KDEдля оценки матрицы пропускной способности, например Hscv, реализуете оценщик плотности ядра и затем оптимизируете эту функцию с помощью команды optim. Это показано ниже с использованием смоделированных данных и гауссова ядра в R.

rm(list=ls())

# Required packages
library(mvtnorm)
library(ks)

# simulated data
set.seed(1)
dat = rmvnorm(1000,c(0,0),diag(2))

# Bandwidth matrix
H.scv=Hlscv(dat)

# [Implementation of the KDE](http://en.wikipedia.org/wiki/Kernel_density_estimation)
H.eig = eigen(H.scv)
H.sqrt = H.eig$vectors %*% diag(sqrt(H.eig$values)) %*% solve(H.eig$vectors)
H = solve(H.sqrt)
dH = det(H.scv)

Gkde = function(par){
return( -log(mean(dmvnorm(t(H%*%t(par-dat)),rep(0,2),diag(2),log=FALSE)/sqrt(dH))))
}

# Optimisation
Max = optim(c(0,0),Gkde)$par
Max

Оценки с ограниченной формой, как правило, быстрее, например

Cule, ML, Samworth, RJ и Stewart, MI (2010). Оценка максимального правдоподобия многомерной лог-вогнутой плотности . Журнал Королевского статистического общества B 72: 545–600.

Но они слишком пики для этой цели.

4

Другие методы, которые вы можете рассмотреть с помощью: подгонка многомерной конечной смеси нормалей (или других гибких распределений) или

Abraham, C., Biau, G. и Cadre, B. (2003). Простая оценка режима многомерной плотности . Канадский журнал статистики 31: 23–34.

Надеюсь, это поможет.


0

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

П.С. Рузанкин и А.В. Логачев (2019). Оценка быстрого режима в многомерном пространстве. Статистика и вероятностные письма

O(dn)dn

Я бы также предложил новые оценки минимальной дисперсионной моды из моей недавней статьи

П.С. Рузанкин (2020). Класс непараметрических модовых оценок. Коммуникации в статистике - моделирование и вычисления

O(dn2)nRd

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.