Come specificare gli attributi importanti?


15

Supponiamo un insieme di dati vagamente strutturati (ad es. Tabelle Web / dati aperti collegati), composto da molte origini dati. Non esiste uno schema comune seguito dai dati e ogni fonte può usare attributi sinonimo per descrivere i valori (ad es. "Nazionalità" vs "bornIn").

Il mio obiettivo è trovare alcuni attributi "importanti" che in qualche modo "definiscono" le entità che descrivono. Quindi, quando troverò lo stesso valore per tale attributo, saprò che le due descrizioni sono molto probabilmente relative alla stessa entità (ad esempio la stessa persona).

Ad esempio, l'attributo "lastName" è più discriminante dell'attributo "nazionalità".

Come potrei (statisticamente) trovare tali attributi che sono più importanti di altri?

Una soluzione ingenua sarebbe quella di prendere l'IDF medio dei valori di ciascun attributo e renderlo il fattore "importanza" dell'attributo. Un approccio simile sarebbe quello di contare quanti valori distinti compaiono per ciascun attributo.

Ho visto il termine funzione o selezione degli attributi nell'apprendimento automatico, ma non voglio scartare gli attributi rimanenti, voglio solo mettere pesi più alti su quelli più importanti.

Risposte:


16

Una possibile soluzione è calcolare il guadagno di informazioni associato a ciascun attributo:

Guadagno di informazioni

Inizialmente hai l'intero set di dati e calcola il guadagno di informazioni di ciascun elemento. L'articolo con il miglior guadagno di informazioni è quello che dovresti usare per partizionare il set di dati (considerando i valori dell'oggetto). Quindi, esegui gli stessi calcoli per ciascun elemento (ma quelli selezionati) e scegli sempre quello che meglio descrive / differenzia le voci dal tuo set di dati.

Ci sono implementazioni disponibili per tali calcoli. Gli alberi decisionali di solito basano la loro selezione sulle caratteristiche con il miglior guadagno di informazioni. È possibile utilizzare la struttura ad albero risultante per trovare questi elementi importanti .


Questa entropia? Sono confuso.
Valentas,

Scusa per il ritardo della risposta. Per ottenere informazioni è quello di ridurre l' entropia complessiva; quindi sono sostanzialmente lo stesso concetto. Dai un'occhiata alla definizione di "entropia" e "guadagno di informazioni".
Rubens,

7

In realtà ci sono più di una domanda a cui rispondere qui:

  1. Come lavorare su dati schematici / allentati / mancanti
  2. Come etichettare una persona (da quello che ho capito senza supervisione) e creare un identificatore
  3. Come addestrare il tuo sistema in modo che possa dirti quali attributi dovresti usare per identificare la persona

Come menzionato da Rubens, puoi utilizzare i metodi dell'albero decisionale , in particolare le foreste casuali per calcolare gli attributi più importanti in base al guadagno di informazioni se hai già trovato un modo per identificare come etichettare una persona.

Tuttavia, se non si dispone di informazioni sull'etichetta, è possibile utilizzare una vista esperto per la selezione preliminare degli attributi. Successivamente fai una classificazione senza supervisione per recuperare le tue etichette. Infine, puoi selezionare i campi più importanti usando Random Forest o altri metodi come Bayesian Belief Networks .

Per ottenere tutto ciò, è necessario anche un set di dati completo. Se il tuo set di dati è sciolto, devi trovare manualmente o euristicamente un modo per accoppiare gli attributi che indicano la stessa cosa con nomi diversi. Inoltre, è possibile utilizzare tecniche di imputazione come il metodo di ottimizzazione delle aspettative e completare il set di dati. Oppure puoi anche lavorare con le reti bayesiane e lasciare i campi mancanti così come sono.


2

Molte tecniche là fuori. Se il tuo sistema informativo ha un attributo decisionale o etichette attaccate, il modo migliore che ho trovato è usare una riduzione dell'attributo basata su un set approssimativo. Dai un'occhiata all'algoritmo di riduzione rapida di Qiang Shen e Richard Jensen.

Se disponi di dati senza etichetta, controlla Analisi componenti principali (PCA) .


0

Solo per il gusto di farlo, dopo quasi 5 anni, ho pensato di poter condividere ciò che ho effettivamente usato nel mio dottorato di ricerca per risolvere questo problema, che non è nuovo, o un contributo del mio dottorato di ricerca, nel caso in cui aiuti qualcun altro.

La misura che abbiamo usato per selezionare attributi importanti è la media armonica (nota anche come misura F) tra supporte discriminability.

Il supporto di un attributo p è intuitivamente quanto spesso le entità nel nostro set di dati contengono valori per questo attributo:

support(p) = |instances(p)|/ |D|, 

dove istanze (p) è l'insieme di entità che hanno un valore per p e | D | è il numero di entità nel set di dati D.

discriminability(p) = |values(p)| / |instances(p)|, 

dove valori (p) è l'insieme di valori (distinti, poiché è un insieme) che l'attributo p può avere nel nostro set di dati. È normalizzato dal numero di entità che hanno effettivamente un valore per questo attributo.

In altre parole, il supporto misura la frequenza con cui p appare nel set di dati e la discriminazione indica quanto sia vicina a essere una "chiave" questo attributo.

Per maggiori dettagli, puoi leggere la mia tesi di laurea (Sezione 4.3.2) oppure puoi trovare una versione più breve nel nostro documento EDBT 2019 (Sezione 2).

Grazie a tutti per le risposte costruttive!

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.