Previsione con caratteristiche non atomiche


10

Vorrei utilizzare dati non atomici, come funzionalità per una previsione. Supponiamo che io abbia una tabella con queste caratteristiche:

- Column 1: Categorical - House
- Column 2: Numerical - 23.22
- Column 3: A Vector - [ 12, 22, 32 ]
- Column 4: A Tree - [ [ 2323, 2323 ],[2323, 2323] , [ Boolean, Categorical ] ]
- Column 5: A List [ 122, Boolean ]

Vorrei prevedere / classificare, ad esempio, la colonna 2.

Sto facendo qualcosa per rispondere automaticamente alle domande, qualsiasi tipo di domanda, come "Dov'è nato Foo?" ...

Prima eseguo una query su un motore di ricerca, quindi ottengo alcuni dati di testo come risultato, quindi eseguo tutte le analisi (tagging, stemming, analisi, suddivisione ...)

Il mio primo approccio è stato quello di creare una tabella, ogni riga con una riga di testo e molte funzionalità, come "First Word", "Tag of First Word", "Chunks", ecc ...

Ma con questo approccio mi mancano le relazioni tra le frasi.

Vorrei sapere se esiste un algoritmo che guarda all'interno delle strutture (o dei vettori) dell'albero e rende le relazioni ed estrae tutto ciò che è rilevante per la previsione / classificazione. Preferirei conoscere una libreria che lo fa piuttosto che un algoritmo che devo implementare.


Si prega di chiarire: si dice che si desidera utilizzare la colonna 2 come funzionalità, ma poi si dice che si desidera prevedere / classificare la colonna 2. Inoltre, si chiama questa funzione "non atomica" ... vuoi dire che non è categorico?
logc

Risposte:


7

Quando si tratta di trattare molti tipi diversi di dati, specialmente quando le relazioni tra loro non sono chiare, raccomanderei vivamente una tecnica basata su alberi decisionali , quelli che oggi sono più popolari per quanto ne so sono foreste casuali ed estremamente randomizzate alberi .

Entrambi hanno implementazioni in sklearn e sono piuttosto semplici da usare. A un livello molto alto, la ragione per cui un decision treeapproccio basato su basi è vantaggioso per più tipi diversi di dati è perché gli alberi decisionali sono in gran parte indipendenti dai dati specifici con cui hanno a che fare, purché siano in grado di comprendere la propria rappresentazione.

Dovrai comunque adattare i tuoi dati a un vettore di funzionalità di qualche tipo, ma sulla base del tuo esempio che sembra un'attività piuttosto semplice e se sei disposto ad andare un po 'più a fondo nella tua implementazione, potresti sicuramente trovare una regola di suddivisione degli alberi personalizzata senza dover modificare nulla nell'algoritmo sottostante. Il documento originale è un posto abbastanza decente per iniziare se vuoi provarlo.

Se vuoi però dati pseudo-strutturali dai tuoi dati di testo, potrei suggerire di esaminarli doc2vec, recentemente sviluppati da Google. Non penso che ci siano buone implementazioni open source ora, ma è un miglioramento piuttosto semplice word2vecdell'algoritmo, che ha implementazioni almeno in Ce python.

Spero che aiuti! Fammi sapere se hai altre domande.

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.