SVM, interazione variabile e dati di allenamento adeguati


12

Ho 2 domande generali / più teoriche.

1) Sono curioso di sapere come gli SVM gestiscono le interazioni variabili durante la creazione di modelli predittivi. Ad esempio, se ho due funzioni f1 e f2 e il target dipende da f1, f2 e dico f1 * f2 (o alcune funzioni h (f1, f2)), SVM si adatta (non solo su OOS ma anche sui dati di allenamento) migliorare includendo f1, f2 e h (f1, f2) nelle funzioni oltre a includere solo f1 e f2? L'algoritmo SVM si occupa delle interazioni delle funzioni? Sembra come farebbe con il modo in cui l'SVM tenta di creare iperpiani nello spazio di dimensioni superiori, ma non è sicuro che lo vogliano chiedere.

2) Quando si adatta un SVM ai dati di allenamento, dati le caratteristiche sufficienti e si trovano i parametri ottimali (tramite la ricerca della forza bruta o altro), un SVM si adatta sempre banalmente ai dati di allenamento? Non sono sicuro di averlo formulato nel modo giusto, ma fondamentalmente, se c'è abbastanza varianza / rumore nelle caratteristiche, un SVM si adatta sempre ai dati di allenamento al 100%? Al contrario, se l'SVM non si adatta ai dati di allenamento al 100%, ciò significa che ci sono alcune informazioni (o altre caratteristiche) che influenzano la variabile target che non sono acquisite nei dati?

Grazie

Piccolo chiarimento. Mi riferisco in particolare alle SVM del kernel

Risposte:


8

Come suggerisce highBandwidth, dipende se stai usando un SVM lineare o non lineare (essendo pedante se non si usa un kernel è un classificatore lineare a margine massimo piuttosto che un SVM).

Un classificatore lineare a margine massimo non è diverso da qualsiasi altro classificatore lineare in quanto se il processo di generazione dei dati indica che ci sono interazioni tra gli attributi, fornire tali termini di interazione probabilmente migliorerà le prestazioni. Il classificatore lineare a margine massimo è un po 'come la regressione della cresta, con una leggera differenza nel termine di penalità progettato per evitare un eccesso di adattamento (dati adeguati per il parametro di regolarizzazione), e nella maggior parte dei casi la regressione della cresta e il classificatore di margine massimo daranno prestazioni simili.

K(x,x)=(xx+c)ddc

nn1lo spazio dimensionale può essere frantumato (separato in qualsiasi modo arbitrario) da un iperpiano (cfr. dimensione VC). In questo modo generalmente si verificherà un eccessivo adattamento, e quindi dovrebbe essere evitato. Il punto della classificazione del margine massimo è limitare questo eccesso di adattamento aggiungendo un termine di penalità che significa che si ottiene la massima separazione possibile (che richiederebbe la massima deviazione da qualsiasi esempio di allenamento per produrre una classificazione errata). Ciò significa che è possibile trasformare i dati in uno spazio dimensionale molto elevato (dove un modello lineare è molto potente) senza incorrere in troppi adattamenti eccessivi.

K(x,x)=expγxx2

Tuttavia questa è solo una parte della storia. In pratica, generalmente utilizziamo un SVM a margine morbido, in cui è consentito violare il vincolo di margine, e esiste un parametro di regolarizzazione che controlla il compromesso tra massimizzare il margine (che è un termine di penalità, simile a quello utilizzato in regressione della cresta) e l'entità delle variabili lente (che è simile alla perdita sul campione di allenamento). Evitiamo quindi un eccesso di adattamento ottimizzando il parametro di regolazione, ad esempio riducendo al minimo l'errore di convalida incrociata (o alcuni vincolati sull'errore di esclusione), proprio come faremmo in caso di regressione della cresta.

Quindi, sebbene SVM possa classificare banalmente il set di addestramento, generalmente lo farà solo se i parametri di regolarizzazione e kernel sono scelti male. La chiave per ottenere buoni risultati con qualsiasi modello di kernel sta nella scelta di un kernel appropriato e quindi nell'ottimizzazione del kernel e dei parametri di regolarizzazione per evitare il sovra o il sottoadattamento dei dati.


Grazie Dikran. È stato estremamente dettagliato e utile. Penso di capire le risposte alle domande. Un rapido follow-up. Come si fa a scegliere il kernel appropriato per le SVM? Sarebbe simile ai parametri di regolarizzazione / kernel (ad es. Tramite validazione incrociata)? O c'è qualche base teorica per la scelta? Se il kernel rbf rende SVM un approssimatore universale, immagino che la selezione del kernel sia un altro parametro da mettere a punto, ma non ne sono sicuro. Come probabilmente puoi dire, sono abbastanza nuovo per questo.
tomas

La scelta di un kernel è spesso un buon modo per acquisire conoscenze classificate del problema nel classificatore, ad esempio per un sistema di riconoscimento dei caratteri scritto a mano, probabilmente si vorrebbe usare un kernel invariante a piccole rotazioni e traduzioni dell'immagine. La scelta automatica di un kernel può essere ottenuta attraverso la validazione incrociata (che è ciò che farei) o un limite all'errore di esclusione (che può essere eseguito in modo efficiente per gli SVM). Tuttavia, se il set di dati è piccolo, la scelta di un kernel tramite la convalida incrociata può essere complicata a causa dell'errore di sovrastima dell'errore di convalida incrociata.
Dikran Marsupial,

Per molte applicazioni, i kernel lineari o RBF sono buone scelte predefinite e spesso c'è poco da guadagnare dall'esplorazione di una gamma più ampia di kernel (in assenza di una conoscenza approfondita del problema).
Dikran Marsupial,

1

Le risposte dipendono dal fatto che si stia utilizzando SVM lineare o SVM del kernel. Con SVM lineare, stai solo usando le funzionalità che gli dai e non tiene conto delle interazioni. Con Kernel SVM, in pratica stai usando molte funzionalità diverse, a seconda del kernel che hai scelto. Se esiste un iperpiano di separazione, ovvero se determina la classe in cui sono le caratteristiche, quindi puoi avere il completo adattamento dei dati di allenamento. Di solito, non si specificano le funzionalità, ma si fornisce un kernel correlato alle funzionalità come . Cercare la riproduzione degli spazi di Kernel Hilbert.β i , i { 1 , 2 , . . . K } K K ( x 1 , x 2 ) = K i = 1 β i ( x 1 ) β i ( x 2 )sign(i=1Kβi(x)β0)βi,i{1,2,...K}KK(x1,x2)=i=1Kβi(x1)βi(x2)

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.