È una buona pratica di ingegneria delle funzionalità?


10

Ho una domanda pratica sull'ingegneria delle caratteristiche ... diciamo che voglio prevedere i prezzi delle case usando la regressione logistica e ho usato un sacco di funzioni tra cui il codice postale. Quindi, controllando l'importanza della funzione, mi rendo conto che zip è una funzionalità piuttosto buona, quindi ho deciso di aggiungere alcune funzionalità in più basate su zip - ad esempio, vado all'ufficio censimento e ottengo il reddito medio, la popolazione, il numero di scuole e il numero di ospedali di ogni zip. Con queste quattro nuove funzionalità, ora trovo meglio le prestazioni del modello. Quindi aggiungo ancora più funzionalità relative a zip ... E questo ciclo continua all'infinito. Alla fine il modello sarà dominato da queste funzionalità relative allo zip, giusto?

Le mie domande:

  1. Ha senso farlo in primo luogo?
  2. Se sì, come faccio a sapere quando è il momento giusto per interrompere questo ciclo?
  3. In caso contrario, perché no?

Risposte:


6

Se puoi continuare ad aggiungere nuovi dati (basati su un concetto principale come l'area, ad esempio il codice postale) e le prestazioni del tuo modello migliorano, allora è ovviamente permesso ... supponendo che ti interessi solo al risultato finale.

Esistono metriche che tenteranno di guidarti in questo, come l' Akaike Information Criterion (AIC) o il Bayesian Information Criterion (BIC) comparabile . Questi essenzialmente aiutano a scegliere un modello in base alle sue prestazioni, punito per tutti i parametri aggiuntivi che vengono introdotti e che devono essere stimati. L'AIC si presenta così:

AIC=2k2ln(L^)

kL^k

Questi criteri possono aiutarti a sapere quando fermarti, dato che puoi provare modelli con sempre più parametri e semplicemente prendere il modello che ha il miglior valore AIC o BIC.

Se nel modello sono ancora presenti altre funzionalità, che non sono correlate allo ZIP, potrebbero potenzialmente essere sopraffatte, a seconda del modello utilizzato. Tuttavia, possono anche spiegare cose sul set di dati che semplicemente non possono essere contenute nelle informazioni ZIP, come l'area del piano di una casa (supponendo che questo sia relativamente indipendente dal codice postale).

In questo caso, potresti confrontarli con qualcosa come l'analisi dei componenti principali, in cui una raccolta di funzioni spiega una dimensione della varianza nel set di dati, mentre altre caratteristiche spiegano un'altra dimensione. Quindi, indipendentemente dal numero di funzioni relative a ZIP, potresti non spiegare l'importanza della superficie.


7

1) Sì, ha senso. Cercare di creare manualmente funzionalità aiuterà gli studenti (cioè i modelli) a ottenere più informazioni dai dati grezzi perché i dati grezzi non sono sempre in una forma che è suscettibile di apprendimento, ma è sempre possibile costruire funzioni da esso che lo sono. La funzione che stai aggiungendo si basa su una funzione. Questo è comune Tuttavia, il tuo discente, la regressione logistica, è sensibile alla multi-collinearità. Devi fare attenzione a quale funzione e quante funzioni aggiungere. Altrimenti, la tua modella potrebbe vestirsi troppo.

2) Dato che stai utilizzando una regressione logistica, puoi sempre utilizzare AIC o eseguire un test di significatività statistica, come il test chi-quadrato (test della bontà dell'adattamento) prima di aggiungere una nuova struttura, per decidere se la distribuzione della risposta è davvero diversa con e senza questa struttura. Ciò è particolarmente utile quando i tuoi dati sono scarsi. Un altro modo è aggiungere un termine di penalità al tuo modello. Ad esempio, regressione del lazo logistico.

3) Continuare ad aggiungere nuove funzionalità non è sempre una buona idea. Fai attenzione alla maledizione dell'alta dimensionalità. Quando aggiungi una nuova funzionalità, stai effettivamente aggiungendo una nuova dimensione ai tuoi dati. Ingenuamente, si potrebbe pensare che la raccolta di più funzionalità non faccia mai male, poiché nella peggiore delle ipotesi non forniscono nuove informazioni sulla classe. Ma in realtà i loro benefici possono essere compensati dalla maledizione della dimensionalità. Spero che cose utili da sapere sulla sessione di apprendimento automatico6 possano aiutare.


@ User3768495 sta valutando le prestazioni del modello fuori campione utilizzando, ad esempio, la convalida incrociata? In tal caso, la multi-collinearità non dovrebbe essere un problema e non dovrebbe preoccuparsi di un overfitting poiché otterrà un'indicazione di overfitting attraverso la riduzione delle prestazioni di validazione.
risciacquo

@rinspy overfitting ha molte facce. Il coinvolgimento di un set di convalida può aiutare a evitare un eccesso di adattamento ma non può risolvere il problema. Ad esempio, la distribuzione incoerente tra i dati di allenamento (suddivisi in set di addestramento e set di convalida) e popolazione reale. Anche il modello si comporta bene nei dati di addestramento, potrebbe non essere generalizzato alla situazione del mondo reale. Il riferimento della mia risposta parlava anche di un eccesso di equipaggiamento.
Fansly,

È vero, ma evitare la multicollinearità non aiuterà con il "sovradimensionamento" derivante da turni covariati. Sto solo dicendo che la multicollinearità non è probabilmente un problema se è interessato a costruire un modello predittivo (e non descrittivo).
risciacquo

Il mio concetto di overfitting riguarda quando un modello non riesce a generalizzare in un nuovo set di dati, non con i dati di addestramento. Per favore, vedi questo
Fansly,

4

Di solito, più le caratteristiche sono ricche e meglio è.

Una cosa da tenere a mente, tuttavia, le regressioni, in generale, non funzionano bene con dati altamente correlati (multicollinearità). Quando espandi le tue funzionalità in questo modo, è qualcosa che potresti voler tenere a mente.

Ci sono molte informazioni su questo argomento (e potenziali modi per mitigare), solo la regressione di Google e la multicollinearità.

In breve,

  1. Sì. Sicuramente.
  2. @ n1k31t4 ha alcuni buoni suggerimenti. Sentiti libero di generare le funzionalità che ritieni possano migliorare il tuo modello, quindi puoi utilizzare tecniche come PCA e altre tecniche di selezione delle funzionalità per limitarti a ciò che è importante.
  3. L'altra cosa da considerare è quanto sia pratico in termini di sforzo vs. risultato.

0

Le caratteristiche sono le informazioni del tuo modello. Maggiore è l'informazione, migliore sarà la capacità di eseguire e prevedere. Minore è, più difficile è prevedere i valori. Quindi la breve naser è sì. Vale sempre la pena avere quante più funzionalità possibile. Esiste sempre un limite a questo, poiché anche un sovraccarico di informazioni potrebbe bruciare il tuo processore, quindi fai attenzione a quante funzioni vengono progettate. Inoltre, le funzioni non necessarie si aggiungono solo al burnout, quindi è sempre buona norma ripulire alcune funzionalità. L'intera fase di preelaborazione dei dati è a questo proposito.

La prima risposta ha alcuni buoni dettagli al riguardo. Per quanto riguarda l'interruzione di un ciclo, ci sono diverse misure e fattori di cui devi essere consapevole per verificare dove il tuo modello ha smesso di funzionare meglio e quelli sono misure come l'RMSE. Un semplice esempio sarà utilizzare la xgboostregressione dei dati e specificare il numero di cicli. Esegui il modello e otterrai l'RMSE per ogni ciclo. Ridurrà fino a un limite dopo il quale sarai in grado di dedurre che il modello ha plateau dopo un certo ciclo. Ecco come funziona la regolazione e l'ottimizzazione dei modelli.

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.