• Home
  • Chi sono
  • Risorse
  • Contatti
  • Approfondimenti
  • Cerca nel sito

Lorenzo Govoni

Business e Tecnologia

  • Big Data
  • Business
  • Excel
  • Intelligenza Artificiale

8 algoritmi diffusi nel machine learning

algoritmi diffusi nel machine learning

Alcuni ricercatori dell’università della California sono riusciti recentemente a sviluppare un sistema che è in grado di individuare in pochi millisecondi, praticamente in tempo reale, se sono presenti delle cellule tumorali nel sangue.

Incredibile, vero?

Per ottenere questo risultato, i ricercatori si sono avvalsi, di un modello di deep learning, che rientra in un’area specifica del machine learning, come spiegato in quest’articolo.

Questo non è l’unico caso, e non solo nella medicina si stanno ottenendo risultanti eccezionali. Nel mercato finanziario, del lavoro, nello sport, solo per citarne alcuni, l’intelligenza artificiale sta già dando un buon contributo.

Ciò può avvenire grazie al miglioramento tecnologico e alla maggiore capacità di elaborazione dei dati che i computer oggi ci garantiscono.

Nell’articolo che stai leggendo vorrei proporre alcuni degli algoritmi diffusi nel machine learning, che sempre con maggior frequenza aiuteranno l’uomo a risolvere con efficacia problemi quotidiani.

 

Regressione Lineare

 

 

Non potevo non menzionare la regressione lineare.

Di fatto, questo diffusissimo modello viene utilizzato per stimare i valori reali (costo delle case, numero di chiamate, vendite totali per persona ecc.) in base a variabili continue (metri quadri, sottoscrizione di un conto corrente, educazione della persona, ecc.).

Viene stabilito in questa sede una relazione tra variabili indipendenti e variabili dipendenti attraverso una linea che di solito, più o meno bene, rappresenta la relazione tra le due variabili.

Questa linea di adattamento è nota come linea di regressione e viene rappresentata da un’equazione lineare del tipo Y = a * X + b.

Dove:

  • Y rappresenta la variabile dipendente;
  • X, rappresenta la variabile indipendente;
  • a, coefficiente di relazione tra X e Y;
  • b è l’intercetta;

La regressione lineare è principalmente raggruppabile in due tipologie: regressione lineare semplice e regressione lineare multipla. La prima è caratterizzata da una variabile indipendente, mentre la seconda (come suggerisce il nome) è caratterizzata da più variabili indipendenti.

Per maggiori informazioni rimando ai seguenti link:

  • Regressione lineare semplice con Excel (video tutorial);
  • Regressione lineare multipla: modello ed esempio di applicazione;
  • Regressione lineare con python.

 

Regressione Logistica

Un secondo metodo diffuso è quello della regressione logistica.

Si può considerare la regressione logistica come è un potente strumento statistico che si prefigge lo scopo di modellare un risultato binomiale con una o più variabili esplicative.

Viene utilizzata in genere per problemi binari, dove esistono solamente due classi, ad esempio Si o No, 0 o 1, maschio o femmina, click su annuncio pubblicitario o no, ecc.

In questo modo è possibile descrivere i dati e spiegare la relazione tra una variabile binaria dipendente e una o più variabili indipendenti nominali, ordinali, o di intervallo.

Il risultato è determinato grazie all’utilizzo di una funzione logistica, o logit, che stima una probabilità e poi definisce la classe più vicina (positiva o negativa) al valore di probabilità ottenuto.

Per maggiori informazioni in merito consiglio la lettura dei seguenti link:

  • Come funziona un algoritmo di regressione logistica;
  • Regressione logistica in Python.

Classification and Regression Tree (Cart)

 

 

Detto anche albero decisionale, è un tipo di algoritmo di apprendimento supervisionato che viene utilizzato principalmente per problemi di classificazione e funziona sia con variabili dipendenti, categoriche che continue.

In altre parole, un albero CART è un albero decisionale binario che viene costruito dividendo ripetutamente un nodo in due nodi figlio, a partire dal nodo radice che contiene l’intero esempio di apprendimento.

Ogni nodo padre rappresenta una singola variabile di input (x) e un punto di divisione per quella variabile (supponendo che la variabile sia numerica).

I nodi foglia dell’albero contengono una variabile di output (y) che viene utilizzata per fare una previsione.

Dato un set di dati con due input (x) di altezza in centimetri e peso in chilogrammi, l’output (y) del genere come maschio o femmina, di seguito è riportato un esempio grezzo di un albero decisionale binario (molto semplice e solo a scopo illustrativo).

 

La creazione di un algoritmo Cart prevede la scelta delle variabili di input, la scelta di quando fermarsi e che condizioni utilizzare per la divisione dal nodo padre ai nodi figlio (fino a raggiungere i nodi foglia, ossia l’ultimo livello dell’albero).

Per maggiori dettagli, rimando agli articoli:

  • Creazione di un albero decisionale tramite algoritmo Cart;
  • Implementare l’algoritmo Cart in python e sklearn.

 

Naïve Bayes

 

 

In generale, sarebbe difficile e impossibile classificare una pagina Web, un documento, un’e-mail. Per non parlare di altre lunghe note di testo, lo si dovrebbe fare manualmente.

È qui che viene in soccorso un algoritmo di apprendimento automatico: il classificatore Naïve Bayes.

Attraverso l’utilizzo del teorema di bayes, l’algoritmo permette di assegnare un’etichetta a ogni gruppo di testo, per facilitarne la classificazione. Questo è ciò che fa lo Spam Filtering, una popolare applicazione dell’algoritmo Naïve Bayes.

In pratica, assegna un’etichetta “Spam” o “Non spam” a tutte le e-mail, per capire se si tratta di una mail pubblicitaria o meno. In questo caso, il problema è composto solo da due classi (potrebbe infatti essere risolto anche tramite la regressione logistica).

Fondamentalmente, è tra i metodi di apprendimento più popolari raggruppati per somiglianze. Per maggiori informazioni rimando agli articoli:

  • Introduzione all’algoritmo Naive Bayes;
  • Classificatore Naive Bayes Gaussiano;
  • Naive bayes in linguaggio Python.

 

K-Nearest Neighbors (KNN)

 

 

Il K-Nearest Neighbors (in breve KNN) è uno degli altri algoritmi diffusi nel machine learning.

Può essere utilizzato sia per problemi di classificazione che di regressione, anche se è più utilizzato nei primi.

La forza di quest’algoritmo è che permette di memorizzare tutte le istanze disponibili e di classificarle valutando la distanza rispetto ai suoi vicini. L’istanza verrà assegnata alla classe che include il data point più vicino all’istanza stessa.

Ad esempio, se dovessimo prevedere il peso di un individuo conoscendone l’altezza e l’età (sono le nostre caratteristiche, che potremmo rappresentare su piano cartesiano), con questo algoritmo sarebbe molto semplice.

Tramite una funzione di distanza, viene calcolato il valore dell’altezza ed età più vicino (che farebbe parte ad una classe) e successivamente il peso ricadrebbe in quella classe più vicina.

 

 

La classe 1 identifica ad esempio gli adulti, la classe 2 i bambini. Se avessimo una nuova istanza da classificare (quindi una persona) di 65 anni che è alta 150 cm verrà classificata nella classe 1.

La distanza calcolata tra i due data points di solito è l’euclidea, anche se possiamo trovare quella di Manhattan, di Minkowski o di Hamming. Le prime tre funzioni sono utilizzate per variabili continue e la quarta (Hamming) per le variabili categoriali.

Di questo algoritmo ne ho parlato in:

  • Algoritmo K-nearest Neighbors (KNN);
  • Implementare l’algoritmo KNN in Python e Scikit-learn.

 

K-means clustering

 

 

Generalmente, K-means è un algoritmo di apprendimento automatico non supervisionato utilizzato per l’analisi dei cluster.

Ciò significa che non abbiamo le classi, come in un problema di classificazione, né dobbiamo prevedere un valore continuo come in un problema di regressione.

Piuttosto per quest’algoritmo, si cerca di prevedere delle somiglianze tra i dati, per scoprire nuovi modelli, nuovi tracciati dai dati precedentemente sconosciuti. Ognuna di questa somiglianza o traccia rappresenta quello che è definito cluster.

K-Means è un metodo non deterministico e iterativo e opera su un dato set di dati attraverso un numero predefinito di cluster, definito dal parametro k. Pertanto, l’output dell’algoritmo K Means sono k cluster, con i dati di input che sono separati tra i cluster, i quali mostrano le diverse somiglianze/dissomiglianze tra l’insieme dei dati.

Rispetto al knn, il kmeans possiede una fase di training. E la previsione di un’osservazione di prova non viene fatta sulla base del data point più vicino/ più vicini (come avviene per il knn), piuttosto sul centroide più vicino.

Consiglio per un maggiore approfondimento la lettura dei seguenti articoli:

  • Algoritmo k-means: cos’è e come funziona?;
  • K-means in python per l’iris dataset.

 

Random Forest

 

 

Ipotizza che stai cercando di acquistare una casa, ma vuoi avere qualche consiglio visto l’elevata spesa cui andrai incontro.

Probabilmente, parlerai con amici, conoscenti e consulterai alcune agenzie che ti aiuteranno a trovare la casa secondo le tue esigenze, tenendo conto di:

  • Prezzo della casa;
  • Località;
  • Numero di camere (quindi spazio);
  • Parcheggio incluso;
  • Servizi disponibili.

Questi parametri sono noti come variabili predittive, che vengono utilizzate per trovare la variabile di risposta.

Ora, l’albero decisionale valuterebbe tutte queste variabili prima di proporti la classe “Acquisto casa” rispetto a quella “non acquisto casa”.

Al contrario, con il random forest, vengono valutati più alberi decisionali contemporaneamente. Come risultato, la foresta casuale sceglierà il numero di classe più frequente ottenuta da tutti i modelli analizzati, e proporrà una risposta (previsione del modello).

Ciò aiuta a superare le difficoltà cui si trova l’albero decisionale puntando a migliorare le prestazioni del modello.

Quello che abbiamo appena visto è un esempio di applicazione di foresta casuale, per un problema di classificazione.

Il Random Forest è utilizzato anche per i problemi di regressione. In questa sede, il risultato finale restituito dall’algoritmo è la media (anziché la classe più votata) del risultato numerico restituito dai diversi alberi.

Per maggiori dettagli su questo algoritmo ti consiglio di leggere questi articoli:

  • Come l’algoritmo Random Forest migliora le previsioni degli alberi decisionali;
  • Classificatore di foresta casuale in python;
  • Regressore di foresta casuale: esempio di previsione del valore di un’azione.

 

Support Vector Machine

 

 

Infine, abbiamo il Support Vector Machine (SVM).

Fondamentalmente, si tratta di un algoritmo di apprendimento automatico supervisionato per problemi di classificazione o regressione.

Viene utilizzato in vari ambiti, tra cui il riconoscimento facciale, classificazione del testo o delle immagini.

L’algoritmo funziona dividendo i dati in diverse classi trovando una linea di separazione tra le diverse classi (di solito detta iperpiano). Questa linea non è presa casualmente: è quella che massimizza la distanza tra le varie classi nel caso fosse più di una.

In questo modo, maggiore è la distanza maggiore sarà l’accuratezza del modello.

Il support vector machine viene utilizzando anche per modelli più complessi (SVM non lineari). In questo caso non è possibile separare i dati di addestramento utilizzando un iperpiano, ma attraverso una funzione kernel, che ci aiuta a modellare modelli non lineari di dimensioni superiori.

Maggiori approfondimenti sul Support Vector Machine li trovi qua:

  • Algoritmo Support Vector Machine;
  • Riconoscimento facciale tramite l’algoritmo Support Vector Machine in Python.

 

Tipologia di problemi di machine learning

Concludiamo l’articolo mostrando come questi algoritmi di solito vengono raggruppati.

Tra questi 8 algoritmi diffusi nel machine learning che abbiamo visto possiamo sostanzialmente trovare due principali tipi di problemi, a seconda della tipologia di addestramento che utilizza il modello:

  • supervised learning, o apprendimento supervisionato;
  • unsupervised learning, o apprendimento non supervisionato.

I primi 5 algoritmi che abbiamo visto (Regressione lineare, logistica, algoritmo Cart, Naive Bayes e KNN) rientrano tutti nella classe di apprendimento supervised learning (o apprendimento supervisionato).

Anche il Support Vector Machine e il Random Forest rientrano in questo tipo di apprendimento. Dopotutto questa forma di apprendimento risulta la più diffusa.

Tra quelli citati, solo il K-means rientra nei problemi di apprendimento non supervisionato, più complessi, ma che comunque permettono di trovare schemi tra i vari dati che vengono analizzati senza utilizzare una categorizzazione come visto per l’altro tipo di algoritmi.

  • Cos'è l'Intelligenza Artificiale e perchè se ne parla tanto
    Cos'è l'Intelligenza Artificiale e perchè se ne parla tanto
  • Rete Neurale, Deep Learning e principali applicazioni
    Rete Neurale, Deep Learning e principali applicazioni
  • Sette domande a cui deve rispondere ogni startup
    Sette domande a cui deve rispondere ogni startup
  • Elaborazione del linguaggio naturale: sette cose da sapere
    Elaborazione del linguaggio naturale: sette cose da sapere
Share
Pin1
Share
Tweet

Intelligenza Artificiale Machine Learning

  • Home
  • Archivio
  • Risorse
  • Newsletter
  • Cerca nel sito

Copyright © 2021 · Lorenzo Govoni - Privacy Policy