Support Vector Machines
================================

Il modulo effettua la classificazione di immagini o vettori usando l'algoritmo di classificazione supervisionata non-parametrico Support Vector Machine (SVM). L'algoritmo SVM si basa sul principio che lo spazio delle feature di partenza può essere trasformato in uno spazio a più alta dimensionalità in cui le classi sono linearmente separabili. La trasformazione è effettuata utilizzando una funzione kernel.
Gli input al classificatore sono un file vettoriale contente una colonna con l'indicazione della classe in formato numerico (1,2,...,N), e (opzionale) l'indicazione delle feature (attributi del vettore) da usare nella classificazione. Se le feature non sono già contenute nel file vettoriale dovrà essere data in input un'immagine raster da cui estrarle.
L'utente potrà anche inserire un vettoriale da usare nella fase di validazione.

.. only:: latex

  .. image:: ../_static/tool_images/support_vector_machines.png

.. warning::

  Si suggerisce di non esagerare con i campioni di training. Un campione di training è rappresentato da un pixel dell'immagine e NON da un'area dello shape. Si consiglia quindi di disegnare aree di training piccole ma significative delle diverse coperture al suolo e della loro variabilità. In generale si sconsiglia di avere più di 10000 pixel di training per evitare che i tempi di elaborazione diventino troppo lunghi. In generale i tempi di elaborazione sono proporzionali a *(numero_di_feature x (numero_di_campioni_di_training^3))*. Si può capire come aumentando i campioni di training i tempi si allunghino esponenzialmente.
  
Input
------------

**Dati di input vettoriale**: file vettoriale contente le aree di training e l'indicazione delle classi.

**Seleziona la colonna con indicazione della classe**: selezionare tra le colonne del file vettoriale quella che indica le classi.

**Dati di input raster** (opzionale): immagine da cui estrarre le feature e da classificare (opzionale).

Parametri
------------

**Effettuare la cross validation**: se scelto viene effettuata la cross validation sul file di training.

**Selezionare il numero di fold della cross validation maggiore di 2**: inserire il numero di subset in cui verrà diviso il training set nella cross validation. Deve essere maggiore o uguale a 2. Dato N il numero di fold, il classificatore a rotazione verrà allenato con N-1 subsets e validato sul subset rimanente. L'accuratezza finale sarà la media delle N accuratezze.

**Selezionare il kernel da utilizzare**:

	* *RBF*: kernel di tipo gaussiano Radial Basis Function. Si consiglia di avere un numero di campioni di training (pixels) al di sotto dei 10000.
	* *lineare*: kernel di tipo lineare. E' preferibile all'RBF se si hanno grandi quantità di campioni di training.
	* *polinomiale*: kernel polinomiale.

.. warning::

  Il kernel RBF è quello usato di default. Di solito questo kernel riesce a dare i risultati migliori, ma può avere tempi di elaborazione molto lunghi se si hanno molti campioni di training. Inoltre necessità di un tuning dei parametri C e gamma.

**Inserire il parametro C** (opzionale) : parametro di regolarizzazione. Default: 1. Se si hanno campioni di training rumorosi si consiglia di usare un valore inferiore ad 1.

**Inserire il valore di gamma** (opzionale): parametro del kernel RBF, sigmoidale e polinomiale. Deve esssre maggiore di 0. Se lasciato vuoto viene usato il valore di default: 1/(numero_di_feature). Un valore molto piccolo fa si che il modello si adatti molto bene ai campioni di training, ma abbia meno capacità di generalizzare.

**Inserire il valore di r** (opzionale): parametro r del kernel sigmoidale e polinomiale.

**Inserire il valore del grado del polinomio** (opzionale): parametro del kernel polinomiale.

**Selezione feature**:

	* *no*: nessuna selezione delle feature. Vengono usate tutte le feature contenute nel vettoriale di training.
	* *manuale*: le feature vengono selezionate manualmente.
	* *file*: le feature sono scelte in base al file di output del modulo "Selezione feature per la classificazione".

**Seleziona le bande da utilizzare cliccandoci sopra** (opzionale): selezionare le bande da utilizzare. Se non si seleziona nulla vengono usate tutte le bande.

**File di selezione** (opzionale): inserire il file ottenuto in output dal modulo "Selezione feature per la classificazione". Attivato solo se l'opzione "file" viene scelta nel menu "selezione feature".

**Vettoriale di validazione** (opzionale): file vettoriale contenente le aree di validazione e l'indicazione delle classi.

**Seleziona la colonna per la validazione** (opzionale): selezionare tra le colonne del file vettoriale quella che indica le classi.

Output
------------

**Risultato**: inserire il percorso e il nome del file di output in formato ".tif". Se viene effettuata una validazione (tramite cross-validation o file vettoriale) verrà creato anche uno (o due) file ".csv" contente/i le statistiche di accuratezza.

.. only:: latex

  .. raw:: latex

    \newpage % hard pagebreak at exactly this position
