Come eseguire il bin "intelligente" di una raccolta di dati ordinati?


11

Sto cercando di bin in modo intelligente una raccolta ordinata. Ho una raccolta di pezzi di dati. Ma so che questi dati si inseriscono in bidoni di dimensioni diverse. Non so come scegliere in modo intelligente gli endpoint per adattarli correttamente ai dati. per esempio:mnm

Supponiamo di avere 12 articoli nella mia raccolta e che i dati si adattino a 3 contenitori:

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

Come faccio a scegliere in modo intelligente i miei punti di interruzione per i bin di ?i={13},{49},{1012}

L'implementazione corrente che ho suddivide i dati in bin di dimensioni uniformi e quindi prende la media degli endpoint per trovare gli indici per la fine dei bin. Quindi funziona così:

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

first break evenly: i = 1-4, 5-8, 9-12
mean endpoints:  between 4 and 5: (3+3)/2 = 3
                 between 8 and 9: (3+3)/2 = 3

Quindi ora qualsiasi cosa al di sotto di 3 si inserisce nel cestino 1, qualsiasi cosa al di sopra di 3 ma al di sotto del 3 si inserisce nel cestino 2 e qualsiasi cosa al di sopra del 3 si inserisce nel cestino 3. Puoi vedere qual è il mio problema. Se i dati hanno contenitori disuguali il mio metodo fallisce.

Un amico ha menzionato l'algoritmo del vicino K più vicino ma non ne sono sicuro.


1
Potresti spiegare cosa significa "intelligentemente"? Cosa stai cercando di realizzare con il binning? Perché stai binning in primo luogo?
whuber

Per il tuo penultimo paragrafo, intendi , e ? Altrimenti, non ha senso per me. 3 & < 4 b i n 2 4 b i n 3<3bin13&<4bin24bin3
gung - Ripristina Monica

Intendo con intelligenza come non ingenuamente come ho fatto supponendo che i cassonetti fossero distribuiti uniformemente. se un pezzo di dati cade in un cestino specifico che mi dice qualcosa di molto importante su quel pezzo di dati. Ordino i dati per determinare gli indici di interruzione dei bin e quindi decido quale bin cade ogni singolo dato.
Matthew Kemnetz,

a meno che non abbia fatto qualcosa di sbagliato nella mia media, penso di averlo fatto bene. scegliendo pari; y spaziati bin tutti i miei endpoint sono 3. Quindi non riesco a salvare correttamente i miei dati. Questo è il motivo per cui la mia implementazione si interrompe anche senza bin distanziati.
Matthew Kemnetz,

Ecco qualcosa che ho fatto in un ambiente leggermente diverso.
Macro

Risposte:


9

Penso che ciò che vuoi fare sia chiamato clustering. Volete raggruppare i vostri "valori" in modo tale che valori simili siano raccolti nello stesso cestino e il numero di bin totali sia preimpostato.

È possibile risolvere questo problema utilizzando l' algoritmo di clustering k-means . In MATLAB, puoi farlo tramite:

bin_ids = kmeans(Values,3); 

La chiamata precedente raggrupperà i valori in Valuestre gruppi in modo tale che la varianza all'interno del gruppo sia minima.


1
L'ho scoperto anche io. Questo è esattamente ciò che ho implementato e ha funzionato in modo eccellente. Sono venuto qui per rispondere alla mia domanda ma mi hai battuto! Il clustering era ciò che stavo cercando di fare.
Matthew Kemnetz,

8

k-means è un'opzione, ma non è molto ragionevole per i dati a 1 dimensione. Nei dati unidimensionali, hai un enorme vantaggio: i dati possono essere completamente ordinati.

Dai un'occhiata invece all'ottimizzazione delle interruzioni naturali :
http://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization


Questo è estremamente interessante. Potresti forse approfondire il motivo per cui questo potrebbe essere migliore di k?
Matthew Kemnetz,

Il motivo principale per cui lo chiedo è perché sto usando MATLAB per il mio algoritmo e non sono riuscito a trovare alcuna ottimizzazione delle interruzioni naturali di Jenks in nessuna cassetta degli attrezzi, quindi dovrò implementare il mio. Volevo solo sapere quanto potrebbe essere migliore / più veloce prima di cambiare marcia e implementarlo.
Matthew Kemnetz,

1
k-mean è piuttosto stupido. Ha mezzi e si dividerà sempre nel mezzo dei due mezzi. Quindi dato ad es. 0 1 2 3 4 5 7 7 7, k-
medie
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.