Esistono strumenti per l'ingegneria delle funzionalità?


29

In particolare quello che sto cercando sono strumenti con alcune funzionalità, che è specifico per l'ingegneria delle funzionalità. Vorrei poter facilmente smussare, visualizzare, colmare lacune, ecc. Qualcosa di simile a MS Excel, ma che ha R come lingua sottostante anziché VB.

Risposte:


21

Domanda molto interessante (+1). Sebbene non sia a conoscenza di strumenti software che attualmente offrono funzionalità complete per l' ingegnerizzazione delle funzionalità , esiste sicuramente una vasta gamma di opzioni al riguardo. Attualmente, per quanto ne so, l'ingegnerizzazione delle funzionalità è ancora in gran parte un processo laborioso e manuale (ovvero, vedi questo post sul blog ). Parlando del dominio tematico dell'ingegneria delle caratteristiche, questo eccellente articolo di Jason Brownlee offre una panoramica piuttosto completa dell'argomento.

Ben Lorica, Chief Data Scientist e Director of Content Strategy for Data presso O'Reilly Media Inc., ha scritto un articolo molto carino , che descrive gli approcci, i metodi, gli strumenti e le startup all'avanguardia nel giugno 2014 area di automazione (o, per dirla, razionalizzazione ) ingegneria delle caratteristiche.

Ho dato una breve occhiata ad alcune startup a cui Ben ha fatto riferimento e un prodotto di Skytree sembra davvero impressionante, specialmente per quanto riguarda l'argomento di questa domanda. Detto questo, alcune delle loro affermazioni mi sembrano davvero sospette (ad esempio, "Skytree accelera i metodi di apprendimento automatico fino a 150 volte rispetto alle opzioni open source" ). Continuando a parlare della scienza dei dati commerciali e delle offerte di machine learning, devo menzionare le soluzioni di Microsoft, in particolare il loro Azure Machine Learning Studio . Questo prodotto basato sul Web è abbastanza potente ed elegante e offre alcune funzionalità di ingegneria di funzionalità (FEF). Per un esempio di alcuni semplici FEF, guarda questo bel video .

Ritornando alla domanda, penso che l'approccio più semplice che si possa applicare per l'automazione dell'ingegnerizzazione delle funzionalità sia l'uso degli IDE corrispondenti . Dato che anche tu (io) sei interessato al linguaggio R come backend per la scienza dei dati, suggerirei di verificare, oltre a RStudio, un altro IDE open source simile, chiamato RKWard . Uno dei vantaggi di RKWard vs RStudio è che supporta la scrittura di plug-in per l'IDE, consentendo quindi ai data scientist di automatizzare la progettazione delle funzionalità e semplificare l'analisi dei dati basata su R.

Infine, dall'altro lato della gamma di soluzioni di ingegneria delle caratteristiche, possiamo trovare alcuni progetti di ricerca . I due più importanti sembrano essere il progetto Columbus della Stanford University , descritto in dettaglio nel corrispondente documento di ricerca , e Brainwash , descritto in questo documento .


5

Featuretools è una libreria Python rilasciata di recente per la progettazione automatizzata di funzioni. Si basa su un algoritmo chiamato Deep Feature Synthesis sviluppato originariamente nel 2015 MIT e testato su concorsi di scienza dei dati pubblici su Kaggle.

Ecco come si inserisce nel processo comune di scienza dei dati.

inserisci qui la descrizione dell'immagine

Lo scopo della biblioteca non è solo quello di aiutare gli esperti a costruire modelli di apprendimento automatico migliori più velocemente, ma di rendere il processo di data science meno intimidatorio per le persone che cercano di imparare. Se disponi di dati relativi agli eventi o relazionali, ti consiglio vivamente di verificarli!

Disclaimer: sono uno degli sviluppatori del progetto.


2

L'ingegnerizzazione delle funzionalità è al centro dell'apprendimento automatico ed è piuttosto laboriosa e richiede tempo. Ci sono stati vari tentativi di automatizzare l'ingegnerizzazione delle funzionalità nella speranza di togliere l'umano dal ciclo. Un'implementazione specifica che lo fa per problemi di classificazione è auto-sklearn . Utilizza una procedura di ottimizzazione chiamata SMAC sotto il cofano per scegliere l'insieme appropriato di trasformazioni e algoritmo (e parametri dell'algoritmo).

Si noti che Trifacta offre uno strumento davvero facile da usare per la trasformazione dei dati. Ha una GUI altamente intuitiva che consente di impostare mappe di trasformazione / ingegneria delle caratteristiche. Esiste anche una versione di prova gratuita che può essere utilizzata per problemi di dimensioni ragionevoli.


2

Scikit-learn ha recentemente rilasciato nuovi trasformatori che affrontano molti aspetti dell'ingegneria delle funzionalità. Per esempio:

  1. È possibile eseguire più tecniche di imputazione dei dati mancanti con le SimpleImputer( http://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html ), tra cui imputazione di valore medio, mediano e arbitrario in variabili numeriche e categoriche .

  2. Puoi eseguire un'imputazione multivariata utilizzando diversi stimatori, come Bayes, foresta casuale e altri (equivalenti a R's MICE, Amelia e MissForest) con IterativeImputer( https://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputer .html # sklearn.impute.IterativeImputer )

  3. Puoi eseguire una codifica a caldo categorica con il OneHotEncoder()da Scikit-learn

  4. È possibile codificare le variabili categoriali in base ai numeri con LabelEncoder.

  5. Puoi eseguire la trasformazione delle variabili Yeo-Johnson con PowerTransformer( http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PowerTransformer.html )

  6. È possibile effettuare la discretizzazione con KBinsDiscretiser( https://scikit-learn.org/stable/auto_examples/preprocessing/plot_discretization.html )

Esistono potenzialmente altri trasformatori di ingegneria delle funzionalità in Scikit-learn e gli sviluppatori aggiornano la libreria abbastanza regolarmente.

In alternativa alla nota libreria Scikit-learn, esiste una nuova libreria open source recentemente rilasciata chiamata feature-engine . Con il motore di funzionalità puoi:

  1. Significa media, mediana, arbitraria, fine coda e imputazione casuale in variabili numeriche e categoriche
  2. Esegui vari tipi di codifica categorica, tra cui una codifica media, intera, ordinale, media e peso dell'evidenza.
  3. Esegui varie trasformazioni variabili tra cui log, reciprocal, exp e box cox
  4. Vari tipi di discretizzazione tra cui uguale frequenza, uguale distanza e struttura ad albero
  5. Gestione anomala.

Maggiori dettagli nel repository github e nei documenti ( https://feature-engine.readthedocs.io/en/latest/ )

Disclaimer: ho creato il motore delle funzionalità e l'ho reso open source.

Un altro pacchetto open source di Python consente diversi tipi di codifica delle variabili categoriali: https://contrib.scikit-learn.org/categorical-encoding/

Infine, Feature Tools è una buona libreria open source per i dati transazionali.


1

Si consiglia di verificare Azure Machine Learning piattaforma di . È online e puoi usarlo con un account gratuito.

Azure ML ti offre un flusso di lavoro usando i moduli in un'interfaccia utente grafica. Molti di essi sono correlati al Data Munging e puoi facilmente pulire i tuoi dati. Se c'è qualcosa che non puoi fare nella GUI, puoi semplicemente aggiungere un modulo che ti consenta di eseguire script R o Python personalizzati per manipolare i tuoi dati.

La parte bella di questo è che puoi visualizzare facilmente i tuoi dati in qualsiasi momento e controllare statistiche semplici come quelle dataframe.describe()di R.


1

Amazon Machine Learning è uno strumento che utilizzo alcune volte per la progettazione di funzionalità.

Dato che i servizi Amazon AWS hanno mostrato molte promesse e standard, farei sicuramente affidamento su Amazon ML, con le sue prospettive e promesse per rendere più semplice il flusso di lavoro dei data scientist. Ma a partire da ora, è ancora piccolo.

Ma, come hai chiesto uno strumento per l'ingegnerizzazione delle funzionalità, anche questo è uno di questi.

Alcune domande frequenti su / per l'utilizzo di Amazon ML.

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.