📑 Table of Contents

Mean shift è un metodo non parametrico per la ricerca delle mode di una funzione di densità di probabilità.[1] Introdotto nel 1975 da Fukunanga e Hostetler,[2] è equivalente all'applicazione della discesa del gradiente alla stima kernel di densità della distribuzione.[3] L'algoritmo non richiede assunzioni sulla forma dei cluster e ha un singolo parametro, l'ampiezza di banda, la cui determinazione è tuttavia non banale in generale. Mean shift ha applicazioni in analisi dei cluster, elaborazione digitale delle immagini e visione artificiale.[4]

Descrizione

modifica

Mean shift è un algoritmo iterativo per determinare il massimo locale di una funzione di densità di probabilità a partire da un dataset di campioni.[1] Data una funzione kernel e una stima iniziale della moda , ad ogni iterazione viene calcolata la media pesata della stima kernel di densità

dove è l'insieme di campioni per i quali . Il vettore è detto mean shift. Il punto viene aggiornato con uno spostamento verso la media, nella direzione indicata dal vettore mean shift

e il procedimento viene iterato fino a convergenza, quando lo shift diventa irrilevante.

La funzione kernel è solitamente una funzione radiale di base. Alcune funzioni comuni sono la palla

la gaussiana

e la funzione kernel di Epanechnikov

dove denota il volume della sfera unitaria in dimensioni.[5]

Nonostante il diffuso utilizzo dell'algoritmo, non è nota una dimostrazione di convergenza nel caso generale.[5] È dimostrata la convergenza nel caso unidimensionale, se la funzione kernel è differenziabile, convessa e strettamente decrescente,[6] e nel caso multidimensionale se la funzione di densità ha un numero finito di punti stazionari isolati.[5][7]

Applicazioni

modifica

Mean shift è usato come algoritmo di clustering, assegnando ogni punto del dataset alla moda della distribuzione di densità più vicina lungo la direzione determinata dal gradiente.[2] L'algoritmo ha applicazioni nel tracking, e l'idea di base è quella di costruire per un frame una mappa di confidenza basata sull'istogramma dell'oggetto tracciato nel frame precedente, e applicare mean shift per determinare il massimo della distribuzione di confidenza nella regione prossima alla posizione precedente dell'oggetto.[8][9][10][11] Un numero limitato di iterazioni di mean shift può essere usato come metodo di riduzione del rumore.[2]

Note

modifica
  1. ^ a b Yizong Cheng, Mean Shift, Mode Seeking, and Clustering, in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 17, n. 8, agosto 1995, pp. 790-799, DOI:10.1109/34.400568.
  2. ^ a b c Keinosuke Fukunaga e Larry D. Hostetler, The Estimation of the Gradient of a Density Function, with Applications in Pattern Recognition, in IEEE Transactions on Information Theory, vol. 21, n. 1, gennaio 1975, pp. 32-40, DOI:10.1109/TIT.1975.1055330.
  3. ^ Richard Szeliski, Computer Vision, Algorithms and Applications, Springer, 2011
  4. ^ Dorin Comaniciu e Peter Meer, Mean Shift: A Robust Approach Toward Feature Space Analysis, in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 24, n. 5, maggio 2002, pp. 603-619, DOI:10.1109/34.1000236.
  5. ^ a b c Youness Aliyari Ghassabeh, A sufficient condition for the convergence of the mean shift algorithm with Gaussian kernel, in Journal of Multivariate Analysis, vol. 135, 1º marzo 2015, pp. 1-10, DOI:10.1016/j.jmva.2014.11.009.
  6. ^ Youness Aliyari Ghassabeh, On the convergence of the mean shift algorithm in the one-dimensional space, in Pattern Recognition Letters, vol. 34, n. 12, 1º settembre 2013, pp. 1423-1427, DOI:10.1016/j.patrec.2013.05.004, arXiv:1407.2961.
  7. ^ Xiangru Li, Zhanyi Hu e Fuchao Wu, A note on the convergence of the mean shift, in Pattern Recognition, vol. 40, n. 6, 1º giugno 2007, pp. 1756-1762, DOI:10.1016/j.patcog.2006.10.016.
  8. ^ Dorin Comaniciu, Visvanathan Ramesh e Peter Meer, Kernel-based Object Tracking, in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 25, n. 5, maggio 2003, pp. 564-575, DOI:10.1109/tpami.2003.1195991.
  9. ^ Shai Avidan, Ensemble Tracking, in 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05), vol. 2, San Diego, California, IEEE, 2005, pp. 494-501, DOI:10.1109/CVPR.2005.144, ISBN 978-0-7695-2372-9.
  10. ^ Gary Bradski (1998) Computer Vision Face Tracking For Use in a Perceptual User Interface Archiviato il 17 aprile 2012 in Internet Archive., Intel Technology Journal, No. Q2.
  11. ^ Ebrahim Emami, Online failure detection and correction for CAMShift tracking algorithm, in 2013 Iranian Conference on Machine Vision and Image Processing (MVIP), vol. 2, IEEE, 2013, pp. 180-183, DOI:10.1109/IranianMVIP.2013.6779974, ISBN 978-1-4673-6184-2.

📚 Artikel Terkait di Wikipedia

Rete neurale convoluzionale

limitata dalla disponibilità di risorse computazionali. Similarmente, una shift invariant neural network (rete invariante alla traslazione) fu proposta

Algoritmo k-NN

consultato l'8 aprile 2026. (EN) Paul Lammertsma, K-nearest neighbour algorithm in Visual Basic and Java, su paul.luminos.nl (archiviato dall'url originale

Percettrone

agosto 2018. ^ Michael Collins, Convergence Proof for the Perceptron Algorithm (PDF), su cs.columbia.edu, Columbia University - Dipartimento di informatica

Clustering

machine learning, 4ª ed., The MIT Press, 2020, ISBN 978-0-262-04379-3. Mean shift Region growing Statistica di Hopkins Altri progetti Wikibooks Wikizionario

Algoritmo evolutivo

immagini o altri file sull'algoritmo evolutivo (EN) Denis Howe, genetic algorithm, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL

Algoritmo genetico

Istituto dell'Enciclopedia Italiana, 2012. (EN) William L. Hosch, genetic algorithm, su Enciclopedia Britannica, Encyclopædia Britannica, Inc. (EN) Opere

Q-learning

marzo 2012 (archiviato dall'url originale il 29 maggio 2008). Q-learning algorithm implemented in processing.org language, su github.com. URL consultato

Costruttivismo matematico

Varieties of Constructive Mathematics, p. 1. «What do we mean by an algorithm? We may think of an algorithm as a specification of a step-by-step computation [