Come sapere se i dati sono separabili linearmente?


21

I dati hanno molte funzionalità (ad es. 100) e il numero di istanze è pari a 100.000. I dati sono scarsi. Voglio adattare i dati usando la regressione logistica o svm. Come faccio a sapere se le funzionalità sono lineari o non lineari in modo da poter usare il trucco del kernel se non lineare?

Risposte:


22

Esistono diversi metodi per scoprire se i dati sono separabili linearmente, alcuni di questi sono evidenziati in questo documento (1). Con l'assunzione di due classi nel set di dati, di seguito sono riportati alcuni metodi per scoprire se sono separabili linearmente:

  1. Programmazione lineare: definisce una funzione obiettiva soggetta a vincoli che soddisfano la separabilità lineare. Puoi trovare dettagli sull'implementazione qui .
  2. Metodo Perceptron: un perceptron è garantito per convergere se i dati sono separabili linearmente.
  3. Programmazione quadratica: la funzione obiettivo di ottimizzazione della programmazione quadratica può essere definita con vincolo come in SVM.
  4. Geometria computazionale: se si possono trovare due scafi convessi disgiunti, i dati sono separabili linearmente
  5. Metodo di clustering: se si possono trovare due cluster con purezza del cluster del 100% utilizzando alcuni metodi di clustering come k-medie, i dati sono separabili linearmente.

    (1): Elizondo, D., "Il problema della separabilità lineare: alcuni metodi di prova", in Neural Networks, Transazioni IEEE su, vol.17, n. 2, pp.330-344, marzo 2006 doi: 10.1109 / TNN. 2005.860871


1
Fornisci un riferimento (i collegamenti possono marcire) e almeno una piccola spiegazione di quali metodi sono coperti.
Scortchi - Ripristina Monica

2
Grazie. Buona risposta (+1). Il pacchetto R safeBinaryRegressionimplementa anche l'approccio di programmazione lineare.
Scortchi - Ripristina Monica

Quale (approccio LP) viene prontamente interpretato geometricamente, computazionalmente efficiente e generalmente disponibile (come lo sono le routine LP).
user603

3

Presumo che tu parli di un problema di classificazione di 2 classi. In questo caso c'è una linea che separa le tue due classi e qualsiasi algoritmo classico dovrebbe essere in grado di trovarla quando converge.

In pratica, devi allenarti e testare gli stessi dati. Se esiste una tale linea, dovresti avvicinarti al 100% di precisione o al 100% di AUC. Se non esiste una tale linea, l'addestramento e il test sugli stessi dati comporteranno almeno alcuni errori. In base al volume degli errori, può valere o meno la pena provare un classificatore non lineare.


1

minw,b ||w||2
s.t i,(wxi+b)yi1

mins,b s
s.t i,(wxi+b)yi1s
s0

ssi


+1 questa è l'intuizione geometrica alla base del metodo implementato nel pacchetto RsafeBinaryRegression
user603

-2

Provi la regressione logistica e vedi come funziona. Se non funziona, ci sono infiniti kernel che puoi provare e potrebbe ancora non funzionare.

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.