In cosa consiste l'apprendimento automatico nella pratica reale?


11

Sono un nuovo arrivato nel machine learning (anche alcune statistiche), sto imparando le conoscenze (algoritmi di apprendimento supervisionato / non supervisionato, metodi di ottimizzazione pertinenti, regolarizzazioni, alcune filosofie (come il trade-off di bias-varianza?)) Per un po '. So che senza alcuna pratica reale, non otterrei una profonda comprensione di queste cose di apprendimento automatico.

Quindi inizio con qualche problema di classificazione con dati reali, diciamo la classificazione delle cifre scritta a mano (MNIST). Con mia sorpresa, senza alcun apprendimento / ingegneria delle funzionalità , l'accuratezza raggiunge 0,97 utilizzando il classificatore a foresta casuale con valori di pixel non elaborati come input. Ho anche provato altri algoritmi di apprendimento, come SVM, LR con parametri sintonizzati.

Poi mi sono perso, sarebbe troppo facile o mi manca qualcosa qui? Basta prendere un algoritmo di apprendimento dal toolkit e ottimizzare alcuni parametri?

Se ciò riguardasse in pratica l'apprendimento automatico, perderei il mio interesse in questo campo. Ho pensato e letto alcuni blog per alcuni giorni e sono giunto ad alcune conclusioni:

  1. La parte più importante dell'apprendimento automatico in pratica è l' ingegnerizzazione delle funzionalità , ovvero, dati i dati, scoprire una migliore rappresentazione delle funzionalità.

  2. Anche quale algoritmo di apprendimento da utilizzare è importante, anche la regolazione dei parametri, ma la scelta finale riguarda maggiormente la sperimentazione.

Non sono sicuro di capirlo correttamente, sperando che qualcuno possa correggermi e darmi qualche suggerimento sull'apprendimento automatico in pratica.


1
Non credo di poter rispondere alla tua domanda nella sua interezza, ma vorrei rassicurarti che ci sono molti problemi in cui gli algoritmi / strumenti sono insoddisfacenti oltre alla scarsa qualità delle funzionalità (nella mia esperienza le scienze sociali sono diffuse con entrambe le situazioni). Non penso che questa sia la tua unica preoccupazione, ma sembri a disagio per la facilità dei tuoi progetti finora.

1
@Matthew, sì, mi sono appena perso senza sapere da dove cominciare quando sto affrontando un problema reale, dovrei analizzare i dati per scoprire la natura in modo da poter estrarre funzioni utili o semplicemente prendere un algoritmo di apprendimento ed eseguire?
avocado,

Non
salirei

Risposte:


12

L'apprendimento automatico (ML) in pratica dipende da quale sia l'obiettivo di fare ML. In alcune situazioni, una solida pre-elaborazione e l'applicazione di una serie di metodi ML predefiniti potrebbe essere abbastanza buona. Tuttavia, anche in queste situazioni, è importante capire come funzionano i metodi per essere in grado di risolvere i problemi quando le cose vanno male. Tuttavia, ML in pratica può essere molto più di questo, e MNIST è un buon esempio del perché.

È ingannevolmente facile ottenere prestazioni "buone" nel set di dati MNIST. Ad esempio, secondo il sito Web di Yann Le Cun sulle prestazioni del MNIST , K vicini più vicini (K-NN) con la metrica della distanza euclidea (L2) hanno anche un tasso di errore del 3%, lo stesso del tuo caso foresta. L2 K-NN è semplice come un algoritmo ML. D'altra parte, Yann, Yoshua, il migliore di Leon e Patrick, il primo colpo in questo set di dati, LeNet-4, ha un tasso di errore dello 0,7%, lo 0,7% è inferiore a un quarto del 3%, quindi se si inserisce questo sistema in esercitati a leggere cifre scritte a mano, l'algoritmo ingenuo richiede uno sforzo umano quattro volte maggiore per correggere i suoi errori.

La rete neurale convoluzionale che Yann e colleghi hanno usato è abbinata al compito, ma non definirei questa "ingegneria delle caratteristiche", tanto quanto fare uno sforzo per comprendere i dati e codificare tale comprensione nell'algoritmo di apprendimento.

Quindi, quali sono le lezioni:

  1. È facile raggiungere l'ingenua linea di base delle prestazioni utilizzando un metodo pronto all'uso e una buona preelaborazione. Dovresti sempre farlo, in modo da sapere dove si trova la linea di base e se questo livello di prestazioni è abbastanza buono per le tue esigenze. Attenzione, spesso i metodi ML pronti all'uso sono "fragili", ovvero sorprendentemente sensibili alla pre-elaborazione. Dopo aver addestrato tutti i metodi predefiniti, è quasi sempre una buona idea provare a insaccarli.
  2. Problemi difficili richiedono una conoscenza specifica del dominio o molti più dati o entrambi da risolvere. Ingegnerizzazione delle funzionalità significa utilizzare conoscenze specifiche del dominio per aiutare l'algoritmo ML. Tuttavia, se disponi di dati sufficienti, un algoritmo (o approccio) che può trarre vantaggio da tali dati per apprendere funzionalità complesse e un esperto che applica questo algoritmo, a volte puoi rinunciare a questa conoscenza (ad esempio la sfida di Kaggle Merck ). Inoltre, a volte gli esperti di dominio hanno torto su quali siano le buone caratteristiche; quindi più dati e competenze ML sono sempre utili.
  3. Considerare il tasso di errore non la precisione. Un metodo ML con una precisione del 99% fa la metà degli errori che uno con una precisione del 98%; a volte questo è importante.

2
+1, grazie mille. Mentre leggo la tua risposta, se non ho una conoscenza specifica del dominio per fare ingegneria delle funzioni, allora dovrei concentrarmi sull'invenzione di buoni metodi per fare l'apprendimento delle caratteristiche usando i dati forniti e provare diversi algoritmi di apprendimento.
avocado,

@loganecolss Oppure puoi anche leggere cosa hanno fatto altre persone su dati simili o parlare con un esperto di dominio.
qdjm,

7

Penso che gli esempi che trovi sul blog o sui siti Web siano esempi in cui è noto che i metodi comuni funzionano bene (anche se, ovviamente, possono essere migliorati).

La mia specializzazione è in ingegneria delle caratteristiche e posso dirti che spesso gli algoritmi standard non funzionano affatto bene. (Non ho alcuna conoscenza del campo, ma spesso lavoro con persone che lo hanno.).

Qui c'è un vero problema in cui ho lavorato per 6 mesi: data una matrice X con 100 campioni e 10000 variabili che rappresentano il valore genetico dei pazienti e un'uscita y di dimensioni 100 x 1 che rappresenta la densità delle ossa.

Puoi dirmi quali geni influenzano la densità delle ossa?

Ora sto lavorando a un altro problema. Ho un set di dati di produzione manifatturiera con 2000 campioni e 12000 variabili. Il mio capo vorrebbe estrarre da questo set di dati non più di 30 variabili in modo non supervisionato.
Ho provato alcuni algoritmi ma non riesco a scegliere meno di 600 variabili perché sono molto correlate tra loro. (Sto ancora lavorando su questo ...)

Un altro aspetto importante da considerare è la velocità delle prestazioni dei vari algoritmi. In molte situazioni non puoi aspettare 20 minuti in attesa di un risultato. Ad esempio, è necessario sapere quando utilizzare NIPALS e quando utilizzare SVD per calcolare il PCA.

Spero che questo possa darti un'idea dei problemi che sono comuni in ml.


n<<p
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.