Domanda

Sto cercando di costruire un albero decisionale classificazione binaria di enorme (vale a dire che non possono essere memorizzati nella memoria) set di dati con MATLAB. In sostanza, quello che sto facendo è:

  1. raccogliere tutti i dati
  2. Prova n funzioni decisionali sui dati
  3. Scegliere la migliore funzione di decisione separare le classi all'interno dei dati
  4. Suddividere l'insieme di dati originale in 2
  5. Recurse sulle spaccature

I dati ha k attributi e una classificazione, per cui è memorizzato come una matrice con un enorme numero di righe e k + 1 colonne. Le funzioni decisionali sono booleana e agire sugli attributi assegnando ogni riga della sottostruttura sinistra oa destra.

In questo momento sto valutando la memorizzazione dei dati su file in blocchi che possono essere tenuti in memoria e assegnando un ID per ogni riga quindi la decisione di dividere è fatto leggendo tutti i file in sequenza e le future spaccature sono identificati dal numeri ID.

Qualcuno sa come fare questo in un modo migliore?

EDIT: Il numero di righe m è intorno 5E8 e k è di circa 500

È stato utile?

Soluzione

Ad ogni divisione, si sta rompendo l'insieme di dati in sottoinsiemi sempre più piccole. Iniziare con il file di dati singolo. Aprirlo come un ruscello e solo elaborare una riga alla volta per capire quale attributo che si desidera dividere su. Una volta che avete la vostra prima funzione di decisione, dividere il file di dati originali in 2 file di dati più piccoli che ogni tenere un ramo dei dati di divisione. Ricorso. I file di dati dovrebbero diventare sempre più piccoli fino a quando è possibile caricare in memoria. In questo modo, non è necessario contrassegnare le righe e continuare a saltare in giro in un file di dati enorme.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top