Estimation efficace du point de vue informatique du mode multivarié

14

Version courte: Quelle est la méthode la plus efficace sur le plan informatique pour estimer le mode d'un ensemble de données multidimensionnelles, échantillonné à partir d'une distribution continue?

Version longue: j'ai un ensemble de données dont j'ai besoin pour estimer le mode. Le mode ne coïncide pas avec la moyenne ou la médiane. Un exemple est montré ci-dessous, c'est un exemple 2D, mais une solution ND serait mieux: entrez la description de l'image ici

Actuellement, ma méthode est

  1. Calculer l'estimation de la densité du noyau sur une grille égale à la résolution souhaitée du mode
  2. Recherchez le plus grand point calculé

Évidemment, cela calcule le KDE à beaucoup de points non plausibles, ce qui est particulièrement mauvais s'il y a beaucoup de points de données de grandes dimensions ou si je m'attends à une bonne résolution sur le mode.

Une alternative serait d'utiliser un recuit simulé, un algorithme génétique, etc. pour trouver le pic global dans le KDE.

La question est de savoir s'il existe une méthode plus intelligente pour effectuer ce calcul?

tkw954
la source
Je ne connais pas la réponse, mais je pense que c'est une excellente question. Il m'est difficile de penser à de meilleures approches que celles que vous avez mentionnées. Je pense qu'il existe des différences entre l'approche de l'estimation du noyau univariée et celle de l'estimation multivariée. Ce livre de David Scott pourrait être utile en ce qui concerne l'approche du noyau multivarié, bien que je ne suis pas sûr qu'il parle de la chasse aux pics. amazon.com/…
Michael R. Chernick

Réponses:

7

KKf(x)Kf(x)K

Une exposition très détaillée sur l'algorithme est également donnée dans cette entrée de blog .

Sameer
la source
3
De belles références, Larry Wasserman a également récemment publié un article plus court décrivant la technique de manière moins détaillée, The Amazing Mean Shift Algorithm .
Andy W
1
@AndyW Bon appel! Le post de Larry Wasserman (et son blog en général) est génial. En parcourant les commentaires, j'ai trouvé cette référence illustrative sur le décalage moyen, le décalage médian et une variante, QuickShift.
Sameer
2
Merci. Je ne peux pas dire si celui-ci est le plus rapide, mais il trouve certainement le maximum local. Voici quelques graphiques de la trajectoire et du taux d'apprentissage sur certaines données synthétiques .
tkw954
9

Si votre intérêt principal est les problèmes bidimensionnels, je dirais que l'estimation de la densité du noyau est un bon choix car elle a de belles propriétés asymptotiques (notez que je ne dis pas que c'est la meilleure). Voir par exemple

Parzen, E. (1962). Sur l'estimation d'une fonction et d'un mode de densité de probabilité . Annals of Mathematical Statistics 33: 1065–1076.

de Valpine, P. (2004). Probabilités de l'espace d'état de Monte Carlo par estimation de densité de noyau postérieure pondérée . Journal de l'American Statistical Association 99: 523-536.

Pour les dimensions supérieures (4+), cette méthode est vraiment lente en raison de la difficulté bien connue d'estimer la matrice de bande passante optimale, voir .

Maintenant, le problème avec la commande ksdans le package KDEest, comme vous l'avez mentionné, qu'elle évalue la densité dans une grille spécifique qui peut être très limitative. Ce problème peut être résolu si vous utilisez le package KDEpour estimer la matrice de bande passante, en utilisant par exemple l' Hscvimplémentateur de l'estimateur de densité du noyau, puis optimisez cette fonction à l'aide de la commande optim. Ceci est illustré ci-dessous en utilisant des données simulées et un noyau gaussien dans 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

Les estimateurs à forme restreinte ont tendance à être plus rapides, par exemple

Cule, ML, Samworth, RJ et Stewart, MI (2010). Estimation du maximum de vraisemblance d'une densité log-concave multidimensionnelle . Journal Royal Statistical Society B 72: 545–600.

Mais ils sont trop pointus à cet effet.

4

D'autres méthodes que vous pourriez envisager d'utiliser sont: l'ajustement d'un mélange fini multivarié de normales (ou d'autres distributions flexibles) ou

Abraham, C., Biau, G. et Cadre, B. (2003). Estimation simple du mode d'une densité multivariée . La Revue canadienne de statistique 31: 23–34.

J'espère que ça aide.

Communauté
la source
0

Récemment, nous avons publié un article suggérant un estimateur de mode cohérent rapide.

PS Ruzankin et AV Logachov (2019). Un estimateur de mode rapide dans un espace multidimensionnel. Statistiques et lettres de probabilité

O(dn)dn

Je suggérerais également les nouveaux estimateurs du mode de variance minimale de mon récent article

PS Ruzankin (2020). Une classe d'estimateurs en mode non paramétrique. Communications en statistique - Simulation et calcul

O(dn2)nRd

Pavel Ruzankin
la source