top of page
Team I.A. Italia

Algoritmi di Machine Learning (ML) usati nella Data Science ( con Esempi Pratici di ML in Python )

Probabilmente stiamo vivendo nel periodo più decisivo della storia umana. Il periodo in cui l'informatica è passata dai grandi mainframe ai PC al cloud.


Ma ciò che lo rende determinante non è ciò che è successo, ma ciò che accadrà negli anni a venire.


Ciò che rende questo periodo emozionante e avvincente per uno come me è la democratizzazione dei vari strumenti e tecniche, che ha seguito l'impulso nell'informatica.



Benvenuto nel mondo della scienza dei dati !




Algoritmi di Machine Learning (ML) usati nella DataScience ( con Esempi Pratici di ML in Python )
Algoritmi di Machine Learning (ML) usati nella DataScience ( con Esempi Pratici di ML in Python )



Oggi, come scienziato dei dati, posso costruire macchine per l'elaborazione dei dati con algoritmi complessi per pochi dollari all'ora. Ma arrivare qui non è stato facile! Ho avuto i miei giorni e le mie notti buie.



In linea di massima, ci sono 3 tipi di algoritmi di apprendimento automatico


1. Apprendimento supervisionato


Come funziona: questo algoritmo consiste in una variabile obiettivo/risultato (o variabile dipendente) che deve essere prevista da un determinato insieme di predittori (variabili indipendenti). Usando questo insieme di variabili, generiamo una funzione che mappa gli input agli output desiderati. Il processo di addestramento continua finché il modello non raggiunge il livello di accuratezza desiderato sui dati di addestramento. Esempi di apprendimento supervisionato: regressione, albero decisionale , foresta casuale , KNN, regressione logistica ecc.


2. Apprendimento senza supervisione


Come funziona: in questo algoritmo non abbiamo alcun obiettivo o variabile di risultato da prevedere/stimare. Viene utilizzato per raggruppare la popolazione in diversi gruppi, che è ampiamente utilizzato per segmentare i clienti in diversi gruppi per interventi specifici. Esempi di apprendimento non supervisionato: algoritmo Apriori, K-means.


3. Apprendimento per rinforzo


Come funziona: utilizzando questo algoritmo, la macchina viene addestrata a prendere decisioni specifiche. Funziona così: la macchina è esposta a un ambiente in cui si allena continuamente per tentativi ed errori. Questa macchina impara dall'esperienza passata e cerca di acquisire la migliore conoscenza possibile per prendere decisioni aziendali accurate. Esempio di apprendimento per rinforzo: processo decisionale di Markov



Elenco Principali Algoritmi di apprendimento automatico o Machine Learning


Ecco l'elenco degli algoritmi di apprendimento automatico comunemente usati. Questi algoritmi possono essere applicati a quasi tutti i problemi di dati:


Partiamo e vediamoli uno ad uno con la relativa implementazione in Python.


1. Spiegazione e Implementazione Algoritmo Regressione lineare

Viene utilizzato per stimare i valori reali (costo delle case, numero di chiamate, vendite totali, ecc.) in base a variabili continue. Qui, stabiliamo una relazione tra variabili indipendenti e dipendenti adattando una linea migliore. Questa linea di miglior adattamento è nota come linea di regressione ed è rappresentata da un'equazione lineare Y= a *X + b.

Diciamo che chiedi a un bambino di quinta elementare di sistemare le persone nella sua classe aumentando l'ordine di peso, senza chiedere loro il peso! Cosa pensi che farà il bambino? Probabilmente guarderebbe (analizzerebbe visivamente) l'altezza e la corporatura delle persone e le disporrebbe utilizzando una combinazione di questi parametri visibili. Questa è regressione lineare nella vita reale! Il bambino ha effettivamente capito che altezza e corporatura sarebbero correlate al peso da una relazione, che assomiglia all'equazione sopra.


In questa equazione:

  • Y – Variabile dipendente

  • a - Pendenza retta

  • X – Variabile indipendente

  • b – Bias

Questi coefficienti a e b sono derivati ​​sulla base della riduzione al minimo della differenza al quadrato della distanza tra i punti dati e la linea di regressione.


La regressione lineare è principalmente di due tipi: regressione lineare semplice e regressione lineare multipla. La regressione lineare semplice è caratterizzata da una variabile indipendente. Inoltre, la regressione lineare multipla (come suggerisce il nome) è caratterizzata da più (più di 1) variabili indipendenti. Mentre trovi la linea più adatta, puoi adattare una regressione polinomiale o curvilinea. E questi sono noti come regressione polinomiale o curvilinea.


Ecco una finestra per metterti alla prova e costruire il tuo modello di regressione lineare in Python:



2. Spiegazione e Implementazione Algoritmo Regressione logistica

Non farti confondere dal suo nome! È una classificazione, non un algoritmo di regressione. Viene utilizzato per stimare valori discreti (valori binari come 0/1, sì/no, vero/falso) in base a un determinato insieme di variabili indipendenti. In parole semplici, prevede la probabilità di occorrenza di un evento adattando i dati a una funzione logistica . Quindi, è anche nota come regressione logistica . Poiché prevede la probabilità, i suoi valori di output sono compresi tra 0 e 1 (come previsto).


Ancora una volta, cerchiamo di capirlo attraverso un semplice esempio.

Supponiamo che il tuo amico ti dia un puzzle da risolvere.

Ci sono solo 2 scenari di risultato:

  1. o lo risolvi

  2. o non lo fai.

Ora immagina che ti venga data un'ampia gamma di enigmi / quiz nel tentativo di capire in quali materie sei bravo. Il risultato di questo studio sarebbe qualcosa del genere: se ti viene assegnato un problema di terza media basato sulla trignometria, hai il 70% di probabilità di risolverlo. D'altra parte, se si tratta di una domanda di storia di quinta elementare, la probabilità di ottenere una risposta è solo del 30%. Questo è ciò che ti offre la regressione logistica.


Venendo alla matematica, le probabilità logaritmiche del risultato sono modellate come una combinazione lineare delle variabili predittive.

probabilità= p/ (1-p) = probabilità che si verifichi l'evento / (1-probabilità che non si verifichi l'evento)
ln(odds) = ln(p/(1-p)) 
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk

Sopra, p è la probabilità di presenza della caratteristica di interesse. Sceglie parametri che massimizzano la probabilità di osservare i valori del campione piuttosto che minimizzare la somma degli errori al quadrato (come nella regressione ordinaria).


Costruisci il tuo modello di regressione logistica in Python qui e controlla l'accuratezza:



3. Spiegazione e Implementazione Algoritmo Albero decisionale

Questo è uno dei miei algoritmi preferiti e lo uso abbastanza frequentemente. È un tipo di algoritmo di apprendimento supervisionato utilizzato principalmente per problemi di classificazione. Sorprendentemente, funziona sia per variabili dipendenti categoriali che continue. In questo algoritmo, dividiamo la popolazione in due o più insiemi omogenei. Questo viene fatto in base agli attributi/variabili indipendenti più significativi per creare gruppi il più distinti possibile.


Sporchiamoci le mani e codifichiamo il nostro albero decisionale in Python!




4. Spiegazione e Implementazione Algoritmo SVM (macchina vettoriale di supporto)

È un metodo di classificazione. In questo algoritmo, tracciamo ogni elemento di dati come un punto nello spazio n-dimensionale (dove n è il numero di caratteristiche che hai) con il valore di ciascuna caratteristica che è il valore di una particolare coordinata.

Ad esempio, se avessimo solo due caratteristiche come l'altezza e la lunghezza dei capelli di un individuo, per prima cosa tracciaremmo queste due variabili in uno spazio bidimensionale in cui ogni punto ha due coordinate (queste coordinate sono note come vettori di supporto )


Ora troveremo una linea che divide i dati tra i due gruppi di dati diversamente classificati.


Questa sarà la linea tale che le distanze dal punto più vicino in ciascuno dei due gruppi saranno più lontane.


Questo è il codice di una possibile implementazione.





5. Spiegazione e Implementazione Algortimo Naive Bayes

È una tecnica di classificazione basata sul teorema di Bayes con un'assunzione di indipendenza tra predittori. In parole povere, un classificatore Naive Bayes presuppone che la presenza di una particolare caratteristica in una classe non sia correlata alla presenza di qualsiasi altra caratteristica. Ad esempio, un frutto può essere considerato una mela se è rosso, rotondo e di circa 3 pollici di diametro. Anche se queste caratteristiche dipendono l'una dall'altra o dall'esistenza delle altre caratteristiche, un ingenuo classificatore di Bayes considererebbe tutte queste proprietà come un contributo indipendente alla probabilità che questo frutto sia una mela.


Il modello bayesiano ingenuo è facile da costruire e particolarmente utile per set di dati molto grandi. Insieme alla semplicità, Naive Bayes è noto per superare anche i metodi di classificazione altamente sofisticati.


Il teorema di Bayes fornisce un modo per calcolare la probabilità a posteriori P(c|x) da P(c), P(x) e P(x|c). Guarda l'equazione qui sotto:



Il teorema di Bayes fornisce un modo per calcolare la probabilità a posteriori P(c|x) da P(c), P(x) e P(x|c)
Equazione di Bayes


Qui,

  • P ( c|x ) è la probabilità a posteriori della classe ( obiettivo ) dato il predittore ( attributo ).

  • P ( c ) è la probabilità a priori della classe .

  • P ( x|c ) è la verosimiglianza che è la probabilità del predittore data la classe .

  • P ( x ) è la probabilità a priori del predittore .


Naive Bayes utilizza un metodo simile per prevedere la probabilità di classi diverse in base a vari attributi. Questo algoritmo è utilizzato principalmente nella classificazione del testo e con problemi con più classi.


Programma un modello di classificazione Naive Bayes in Python:






6. Spiegazione e Implementazione Algoritmo kNN

Può essere utilizzato sia per problemi di classificazione che di regressione. Tuttavia, è più ampiamente utilizzato nei problemi di classificazione nell'industria.

KNN è un semplice algoritmo che memorizza tutti i casi disponibili e classifica i nuovi casi con un voto di maggioranza dei suoi k vicini


Queste funzioni di distanza possono essere la distanza Euclidea, Manhattan, Minkowski e Hamming. Le prime tre funzioni sono utilizzate per la funzione continua e la quarta (Hamming) per le variabili categoriali.


Il caso viene semplicemente assegnato alla classe del suo vicino più prossimo. A volte, la scelta di K risulta essere una sfida durante l'esecuzione della modellazione kNN.


KNN può essere facilmente usato nelle nostre vite. Se vuoi conoscere una persona di cui non hai informazioni, ti potrebbe piacere conoscere i suoi amici intimi e le cerchie in cui si muove e avere accesso alle sue informazioni!


Aspetti da considerare prima di selezionare kNN:

  • KNN è computazionalmente costoso

  • Le variabili dovrebbero essere normalizzate, altrimenti le variabili di intervallo più alto possono distorcerlo

  • Lavora di più sulla fase di pre-elaborazione prima di utilizzare kNN


Programma un modello di clusterizzazione in Python:




7. Spiegazione e Implementazione Algoritmo K-Means

È un tipo di algoritmo non supervisionato che risolve il problema del clustering. La sua procedura segue un modo semplice e facile per classificare un dato set di dati attraverso un certo numero di cluster (assumere k cluster). I punti dati all'interno di un cluster sono omogenei ed eterogenei rispetto ai gruppi di pari.


Ricordi di aver capito le forme dalle macchie d'inchiostro? k significa che è in qualche modo simile a questa attività. Guardi la forma e diffondi per decifrare quanti diversi cluster/popolazioni sono presenti!


Come K-mezzi forma il cluster:

  1. K-means seleziona k numero di punti per ogni cluster noto come centroidi.

  2. Ciascun punto dati forma un cluster con il centroidi più vicini, ovvero k cluster.

  3. Trova il centroide di ogni cluster in base ai membri del cluster esistenti. Qui abbiamo nuovi centroidi.

  4. Poiché abbiamo nuovi centroidi, ripeti i passaggi 2 e 3. Trova la distanza più vicina per ogni punto dati dai nuovi centroidi e associali ai nuovi k-cluster. Ripetere questo processo finché non si verifica la convergenza, ovvero i centroidi non cambiano.

Come determinare il valore di K:

In K-means, abbiamo cluster e ogni cluster ha il suo centroide. La somma dei quadrati della differenza tra il centroide ei punti dati all'interno di un cluster costituisce il valore della somma dei quadrati per quel cluster. Inoltre, quando vengono aggiunti i valori della somma dei quadrati per tutti i cluster, diventa totale all'interno del valore della somma dei quadrati per la soluzione del cluster.


Sappiamo che all'aumentare del numero di cluster, questo valore continua a diminuire, ma se tracci il risultato potresti vedere che la somma della distanza al quadrato diminuisce bruscamente fino a un certo valore di k, e poi molto più lentamente dopo.


Implementazione in Python dell'algoritmo K-Means




8. Spiegazione e Implementazione Algoritmi Foresta casuale

Random Forest è un termine caratteristico per un insieme di alberi decisionali.

Abbiamo una raccolta di alberi decisionali (conosciuti come "Foresta"). Per classificare un nuovo oggetto in base agli attributi, ogni albero fornisce una classificazione e diciamo che l'albero "vota" per quella classe. La foresta sceglie la classifica con il maggior numero di voti (su tutti gli alberi della foresta).

Ogni albero viene piantato e cresciuto come segue:

  1. Se il numero di casi nel training set è N, il campione di N casi viene preso a caso ma con sostituzione . Questo esempio sarà il training set per far crescere l'albero.

  2. Se ci sono M variabili di input, viene specificato un numero m<<M tale che ad ogni nodo vengono selezionate a caso m variabili dalle M e la migliore suddivisione su queste m viene utilizzata per dividere il nodo. Il valore di m è mantenuto costante durante la crescita della foresta.

  3. Ogni albero è cresciuto nella misura più ampia possibile. Non c'è potatura.


Implementiamo l'algoritmo foresta casuale con Python :




9. Spiegazione e Implementazione Algoritmi di riduzione della dimensionalità

Negli ultimi 4-5 anni, c'è stato un aumento esponenziale nell'acquisizione dei dati in tutte le fasi possibili. Le aziende/ le agenzie governative/ le organizzazioni di ricerca non solo stanno arrivando con nuove fonti, ma stanno anche catturando i dati in grande dettaglio.


Ad esempio: le aziende di e-commerce stanno acquisendo più dettagli sui clienti come i loro dati demografici, la cronologia di scansione del web, ciò che gli piace o non gli piace, la cronologia degli acquisti, il feedback e molti altri per dare loro un'attenzione personalizzata più del tuo negoziante di alimentari più vicino.


Come data scientist, i dati che ci vengono offerti consistono anche di molte funzionalità, questo suona bene per costruire un buon modello robusto, ma c'è una sfida. Come hai identificato una o più variabili altamente significative su 1000 o 2000? In tali casi, l'algoritmo di riduzione della dimensionalità ci aiuta insieme a vari altri algoritmi come Decision Tree, Random Forest, PCA, Analisi fattoriale, Identificazione basata su matrice di correlazione, rapporto di valori mancanti e altri.


Implementiamo un Algoritmo di riduzione della dimensionalità sui dei dati e vediamo le differenze





10. Spiegazione e Implementazione Algoritmi di aumento del gradiente ( XGboost )


XGBoost ha un potere predittivo immensamente elevato che lo rende la scelta migliore per la precisione negli eventi in quanto possiede sia il modello lineare che l'algoritmo di apprendimento ad albero, rendendo l'algoritmo quasi 10 volte più veloce rispetto alle tecniche di booster gradiente esistenti.


Il supporto include varie funzioni oggettive, tra cui regressione, classificazione e ranking.

Una delle cose più interessanti di XGBoost è che è anche chiamata una tecnica di potenziamento regolarizzata. Questo aiuta a ridurre la modellazione overfit e ha un enorme supporto per una vasta gamma di linguaggi come Scala, Java, R, Python, Julia e C++.


Supporta la formazione distribuita e diffusa su molte macchine che comprendono cluster GCE, AWS, Azure e Yarn. XGBoost può anche essere integrato con Spark, Flink e altri sistemi di flusso di dati cloud con una convalida incrociata integrata ad ogni iterazione del processo di potenziamento.


Implementiamo con Python l'algoritmo XGBoost







Grazie mille per la lettura, condividi l'articolo se ti è stato utile 











Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie