Domanda

Trovo questa domanda un po ' difficile.Forse qualcuno conosce un approccio per rispondere a questa domanda.Immaginate di avere un set di dati(dati di allenamento) che non sai di cosa si tratta.Che dispone dei dati di allenamento vuoi vedere per inferire algoritmo di classificazione per la classificazione dei dati?Possiamo dire nulla se non si debba utilizzare un non-lineare o lineare algoritmo di classificazione?

A proposito, sto usando WEKA per analizzare i dati.

Qualche suggerimento?Grazie.

È stato utile?

Soluzione

Wow, in modo da avere alcuni dati di allenamento e non si sa se si sta guardando le caratteristiche che rappresentano parole in un documento o genese in una cella e la necessità di mettere a punto un classificatore. Beh, visto che non si ha alcuna informazione semantica, che si sta per avere a che fare questo soley, cercando in proprietà statistiche delle serie di dati.

In primo luogo, per formulare il problema, questo è più di un semplice lineare vs non-lineare. Se siete veramente cercando di classificare questi dati, ciò che si ha realmente bisogno di fare è quello di selezionare una funzione del kernel per il classificatore che può essere lineare o non lineare (gaussiana, polinomiale, iperbolico, ecc Inoltre ogni funzione del kernel può richiedere uno o più parametri che avrebbe bisogno di essere impostato. Determinare una funzione kernel ottimale e set di parametri per un dato problema di classificazione non è davvero un problema risolto, ci sono euristiche solo utili e se google 'la selezione di una funzione del kernel' o 'scegliere kernel funzione', si sarà trattato di molti documenti di ricerca e la sperimentazione proponendo vari approcci. Mentre ci sono molti approcci, uno dei più fondamentali e ben viaggiato è quello di fare una discesa del gradiente sul parameters-- fondamentalmente si tenta un metodo kernel e un set di parametri, treno su metà i punti dati e vedere come si fa. Poi si tenta un diverso insieme di parametri e vedere come si fa. si sposta i parametri nella direzione della migliore miglioramento della precisione fino ad arrivare satisfac risultati conservatore.

Se non è necessario passare attraverso tutta questa complessità di trovare una buona funzione del kernel, e vuole semplicemente una risposta a lineare o non lineare. allora la questione viene principalmente giù a due cose: classificatori non lineari avranno un rischio maggiore di overfitting (undergeneralizing) poiché hanno più dimensioni di libertà. Essi possono soffrire di classificatore semplicemente memorizzare set di buoni punti di dati, piuttosto che venire con una buona generalizzazione. D'altra parte un classificatore lineare ha meno libertà per adattarsi, e nel caso di dati che non sono linearmente separabili, non riuscirà a trovare una buona funzione di decisione e soffrono di elevati tassi di errore.

Purtroppo, non so una soluzione migliore matematico per rispondere alla domanda "è questo dato linearmente separabili" altro che prova il classificatore stesso e vedere come si svolge. Per questo si sta andando ad avere bisogno di una risposta più intelligente di me.

Edit: Questo lavoro di ricerca descrive un algoritmo che sembra che dovrebbe essere in grado di determinare quanto vicino un dato insieme di dati viene ad essere linearmente separabili

.

http://www2.ift.ulaval.ca/~mmarchand/ pubblicazioni / wcnn93aa.pdf

Altri suggerimenti

Questo è, infatti, due domande in uno ;-)

  • La funzionalità di selezione
  • Lineare o non

aggiungere "algoritmo di selezione", e probabilmente avete tre domande fondamentali di classificazione design.

Come nota a parte, è un buona cosa che non hanno alcuna esperienza nel settore, che avrebbero permesso di guidare la selezione di caratteristiche e/o per far valere la linearità della funzione di spazio.Il divertimento di data mining :per dedurre tali informazioni senza a priori competenza.(BTW, e mentre le competenze di dominio, è bene controllare l'esito del classificatore, troppo a priori intuizione può farvi perdere il bene di data mining opportunità).Senza tale conoscenza a priori si è costretti a stabilire il suono di metodologie e di applicare un attento controllo dei risultati.

È difficile fornire specifiche la guida, in parte perché molti dettagli non sono lasciati fuori la questione, e anche perché sono un po ' BS-ing la mia strada attraverso questo ;-).Non di meno spero che la generica attività di consulenza sarà utile

  • Per ogni algoritmo si tenta (o, più precisamente, per ogni set di parametri per un determinato algoritmo), è necessario eseguire molti test.La teoria può essere molto utile, ma ci rimarrà un sacco di "prova ed errore".Troverete Cross-Validazione una tecnica preziosa.
    In sintesi, [e a seconda delle dimensioni di formazione disponibili dati], è diviso in modo casuale i dati di training in più parti e formare il classificatore su una [o più] di queste parti, e quindi di valutare la classificazione sulle sue prestazioni su un altro [o più] parti.Per ogni run si misura una serie di indicatori di performance, quali Mis-Errore di Classificazione (MCE) e a parte che ti dice come la classificazione esegue l'applicazione di questi parametri, o piuttosto la loro variabilità fornirà informazioni utili per la rilevanza delle funzioni selezionate e/o la loro mancanza di scala o di linearità.

  • Indipendentemente dal presupposto di linearità, è utile normalizzare i valori di numerico caratteristiche.Questo aiuta con le caratteristiche che hanno uno strano gamma etc.
    All'interno di ogni dimensione, stabilire il range entro, diciamo, 2,5 deviazioni standard su entrambi i lati della mediana, e di convertire i valori della funzione in percentuale, sulla base di questa gamma.

  • Convertire gli attributi nominali a quelli binari, creazione di un numero di dimensioni che ci sono valori distinti di nominale attributo.(Penso che molti algoritmo di ottimizzatori di fare questo per voi)

  • Una volta identificato uno o un paio di classificatori con un relativamente prestazioni decenti (diciamo il 33% MCE), eseguire la stessa serie di test, con un classificatore modificando un solo parametro alla volta.Per esempio rimuovere alcune funzionalità, e vedere se la risultante, bassa dimensionalità di classificazione migliora o peggiora.

  • Il fattore di perdita è un parametro molto sensibile.Provare a bastone con un "reasonnable", ma forse non ottimale valore per la maggior parte delle prove, sintonizzare la perdita alla fine.

  • Imparare a sfruttare il "dump" informazioni fornite dal SVM ottimizzatori.Questi risultati forniscono informazioni preziose su ciò che l'optimizer "pensa"

  • Ricordate che ciò che ha funzionato molto bene con un determinato set di dati in un determinato dominio può eseguire molto male con i dati da un altro dominio...

  • caffè buono, non troppo.Quando tutto fallisce, rendono Irlandese ;-)

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