Tag: machine learning

  • I più comuni algoritmi di machine learning per fare previsioni di vendita

    I più comuni algoritmi di machine learning per fare previsioni di vendita

    La previsione delle vendite è un aspetto fondamentale per le aziende che desiderano ottimizzare la gestione del magazzino, migliorare le strategie di marketing e massimizzare i profitti. Grazie al machine learning (ML), oggi è possibile fare previsioni sempre più accurate, basandosi su grandi quantità di dati storici e su algoritmi in grado di identificare pattern complessi.

    In questo articolo, analizzeremo alcuni degli algoritmi di machine learning più utilizzati per le previsioni di vendita, mettendo in evidenza vantaggi e svantaggi di ciascuno.


    1. Regressione Lineare

    La regressione lineare è uno degli algoritmi di machine learning più semplici e frequentemente utilizzati per prevedere vendite. L’algoritmo si basa sull’ipotesi che esista una relazione lineare tra una variabile dipendente (come le vendite) e una o più variabili indipendenti (come il prezzo del prodotto o la stagionalità).

    Come funziona: La regressione lineare cerca di trovare la linea che meglio si adatta ai dati storici di vendita, minimizzando la distanza tra la linea e i dati osservati.

    Vantaggi: Semplice da implementare e interpretare, è veloce e funziona bene con dati che presentano una chiara tendenza lineare.

    Svantaggi: Non è adatto per dati complessi che presentano relazioni non lineari o variabili altamente correlate. Può sottoperformare rispetto a modelli più avanzati in presenza di molte variabili o stagionalità complesse.


    1. Random Forest

    Il modello Random Forest è un algoritmo di apprendimento supervisionato basato su un insieme di alberi decisionali. Viene utilizzato sia per problemi di classificazione che di regressione, ma per le previsioni di vendita si utilizza principalmente per la regressione.

    Come funziona: Random Forest costruisce una “foresta” di alberi decisionali su campioni casuali del dataset. Ogni albero genera una previsione e l’output finale è ottenuto mediando le previsioni di tutti gli alberi.

    Vantaggi: È robusto e riduce il rischio di overfitting. È in grado di catturare relazioni complesse tra variabili e gestire grandi quantità di dati con molte caratteristiche.

    Svantaggi: Tende ad essere più lento e richiede più risorse computazionali rispetto ad altri algoritmi, specialmente se ci sono molti alberi nella foresta. Non è ideale se si necessita di previsioni in tempo reale.


    1. Support Vector Regression (SVR)

    La Support Vector Regression (SVR) è una variante della Support Vector Machine (SVM) applicata ai problemi di regressione. Questo modello si basa sulla definizione di un’area intorno alla linea di regressione all’interno della quale si tollerano piccole deviazioni.

    Come funziona: La SVR cerca di minimizzare l’errore posizionando i dati all’interno di una “fascia di margine” definita intorno alla linea di regressione.

    Vantaggi: È efficace per identificare pattern complessi, anche con un numero elevato di feature. È meno sensibile agli outlier rispetto alla regressione lineare.

    Svantaggi: Può essere computazionalmente costoso e difficile da ottimizzare. L’interpretabilità è più complessa rispetto alla regressione lineare e richiede una buona comprensione dei parametri di modello.


    1. Reti Neurali Artificiali (ANN)

    Le reti neurali artificiali sono particolarmente potenti per la modellazione di dati complessi e sono ampiamente utilizzate nel machine learning per la previsione delle vendite. Esse imitano il funzionamento dei neuroni umani e sono in grado di apprendere pattern non lineari e complessi.

    Come funziona: Una rete neurale è costituita da strati di neuroni interconnessi. Attraverso un processo di addestramento, la rete aggiusta i pesi dei collegamenti per ridurre l’errore tra previsione e realtà.

    Vantaggi: È in grado di catturare relazioni molto complesse, rendendola ideale per problemi di previsione di vendita con molti fattori influenzanti.

    Svantaggi: Richiede una grande quantità di dati per addestrare il modello in modo efficace. Il processo di training è lento e complesso, e i modelli sono spesso visti come una “black box,” difficile da interpretare.


    1. Modelli di Serie Temporali (ARIMA e SARIMA)

    ARIMA (AutoRegressive Integrated Moving Average) e SARIMA (Seasonal ARIMA) sono algoritmi specifici per l’analisi delle serie temporali, spesso utilizzati per la previsione di vendite storiche con trend e stagionalità.

    Come funziona: ARIMA modella le vendite come una funzione autoregressiva (considerando valori passati) e una media mobile (considerando errori passati). SARIMA estende ARIMA per includere la stagionalità, aggiungendo una componente per gestire le variazioni periodiche.

    Vantaggi: ARIMA e SARIMA sono efficaci per i dati con stagionalità ben definita e trend storico, sono interpretabili e ben consolidati.

    Svantaggi: Non gestiscono bene i pattern complessi e i dati rumorosi. Sono più limitati in presenza di variabili indipendenti aggiuntive rispetto alla serie temporale pura.


    1. Gradient Boosting Machines (GBM)

    Il Gradient Boosting è una tecnica di ensemble che costruisce una sequenza di modelli, dove ogni modello cerca di correggere gli errori del precedente. Algoritmi come XGBoost e LightGBM, basati su Gradient Boosting, sono molto popolari per la previsione delle vendite.

    Come funziona: Ogni nuovo albero viene costruito per ridurre gli errori residui del modello precedente. La combinazione finale di alberi riduce progressivamente l’errore complessivo del modello.

    Vantaggi: Altamente efficace su dataset complessi e in grado di catturare pattern intricati. Permette di gestire facilmente caratteristiche categoriali e numeriche.

    Svantaggi: Come Random Forest, il Gradient Boosting è esigente in termini di risorse computazionali e può risultare difficile da interpretare per i meno esperti.


    Come scegliere l’algoritmo giusto?

    La scelta dell’algoritmo dipende da molteplici fattori:

    Quantità e complessità dei dati: Se il dataset è grande e complesso, un modello basato su ensemble o una rete neurale potrebbe essere la scelta ideale.

    Obiettivo e interpretabilità: Se l’interpretabilità è cruciale, la regressione lineare o i modelli di serie temporali come ARIMA potrebbero essere più appropriati.

    Risorse computazionali: Alcuni algoritmi, come il Gradient Boosting e le Reti Neurali, richiedono più risorse rispetto a modelli più semplici.


    Conclusioni

    Il machine learning offre una vasta gamma di algoritmi per supportare la previsione delle vendite, da modelli semplici come la regressione lineare fino a tecniche avanzate come le reti neurali e il Gradient Boosting. Ogni metodo presenta vantaggi e limitazioni, e la scelta dipende dall’analisi dei dati a disposizione e dagli obiettivi aziendali.

    In definitiva, la previsione accurata delle vendite non solo ottimizza i processi interni, ma permette anche di ottenere un vantaggio competitivo, facilitando la pianificazione e la gestione operativa a lungo termine.

  • Intelligenza Artificiale nella Gestione Aziendale: Focus sull’Analisi Predittiva di Vendite

    Negli ultimi anni, l’intelligenza artificiale (IA) è diventata una leva fondamentale per la gestione aziendale, offrendo nuovi strumenti di analisi, automazione e ottimizzazione delle decisioni. Tra le applicazioni più promettenti, l’analisi predittiva gioca un ruolo cruciale: le aziende utilizzano strumenti di IA per analizzare dati storici e identificare pattern che permettano di prevedere comportamenti futuri, come le vendite e la gestione delle fatture. Questo articolo esplora nel dettaglio come l’IA viene utilizzata per migliorare l’efficienza della gestione aziendale e ridurre l’incertezza decisionale, con un focus sull’analisi predittiva.

    Cos’è l’Analisi Predittiva e Come Funziona

    L’analisi predittiva utilizza tecniche di apprendimento automatico (machine learning), statistica e data mining per esaminare i dati storici e sviluppare modelli in grado di prevedere tendenze e comportamenti futuri. Grazie a modelli matematici avanzati, l’IA elabora enormi quantità di dati e identifica relazioni nascoste che l’occhio umano potrebbe non percepire. Questi modelli predittivi possono poi essere utilizzati per anticipare i risultati futuri con un buon grado di precisione, contribuendo così a una gestione aziendale più strategica.

    Processi Principali dell’Analisi Predittiva

    1. Raccolta dei Dati: L’analisi predittiva parte dall’acquisizione e integrazione di dati, come storici di vendite, interazioni con i clienti, cicli delle fatture e andamento economico. L’ampiezza e la qualità del dataset sono fondamentali per ottenere previsioni accurate.
    2. Pre-processing dei Dati: Una volta raccolti, i dati devono essere puliti e strutturati. Tecniche di normalizzazione, gestione dei valori mancanti e riduzione delle anomalie assicurano che il modello lavori su dati di alta qualità.
    3. Sviluppo del Modello: Gli algoritmi di machine learning, comOpen Sourcee le reti neurali, il machine learning supervisionato e le tecniche di deep learning, vengono addestrati sui dati raccolti. A seconda dell’obiettivo, si possono utilizzare tecniche specifiche, ad esempio le reti neurali per la classificazione delle vendite o i modelli di regressione per le previsioni di fatturato.
    4. Valutazione e Ottimizzazione: Dopo il training, il modello viene valutato per verificare la sua accuratezza e capacità predittiva. Attraverso test e ottimizzazioni, si migliorano le performance fino a raggiungere un livello di affidabilità sufficiente.
    5. Implementazione e Monitoraggio: Una volta che il modello è pronto, viene integrato nei sistemi aziendali per l’uso quotidiano. Le aziende devono monitorare e aggiornare i modelli, poiché il contesto di mercato e i dati aziendali sono in continua evoluzione.

    Applicazioni dell’IA per la Previsione delle Vendite

    L’analisi predittiva delle vendite è particolarmente utile per migliorare la gestione delle scorte, ottimizzare il budget marketing e prevedere i picchi di domanda. Grazie all’IA, è possibile integrare dati interni (storici di vendite, stagionalità, promozioni) con dati esterni (trend economici, comportamenti di consumo e informazioni di mercato) per produrre stime precise.

    Benefici della Previsione delle Vendite

    • Gestione delle Scorte: L’IA permette di anticipare la domanda, riducendo il rischio di esaurimento delle scorte o di eccesso di inventario. Ciò si traduce in una gestione più efficiente delle risorse e in una riduzione dei costi operativi.
    • Ottimizzazione delle Campagne Marketing: Sapere in anticipo quali prodotti avranno più successo consente di pianificare campagne pubblicitarie mirate. Le aziende possono destinare il budget marketing in modo più preciso, massimizzando il ritorno sugli investimenti (ROI).
    • Pianificazione Finanziaria: Con previsioni di vendita accurate, i manager possono stimare meglio il flusso di cassa, consentendo una pianificazione finanziaria più affidabile e riducendo i rischi di liquidità.

    Casi di Studio e Strumenti Utilizzati

    Molte aziende usano strumenti come Microsoft Azure Machine Learning, Google Cloud AI e piattaforme come DataRobot per creare modelli predittivi personalizzati. Questi strumenti integrano algoritmi avanzati, visualizzazioni intuitive e una gestione dei dati scalabile.

    Ad esempio, un’azienda di abbigliamento potrebbe utilizzare l’IA per analizzare i dati delle vendite stagionali e prevedere quali articoli andranno a ruba durante le festività. I modelli analizzano anche la risposta del mercato a promozioni precedenti, suggerendo il periodo ottimale per lanciare le nuove collezioni.

    Analisi Predittiva delle Fatture e della Liquidità

    La gestione del flusso di cassa è fondamentale per la salute finanziaria di un’azienda, e l’analisi predittiva offre un modo efficace per migliorare la precisione delle previsioni finanziarie. Integrando dati su clienti, storici di pagamenti e cicli di fatturazione, l’IA può prevedere quando verranno pagate le fatture e quali rischiano di subire ritardi.

    Come Funziona l’Analisi delle Fatture

    L’IA permette di analizzare il comportamento dei clienti in relazione ai pagamenti, identificando quelli che regolarmente saldano in ritardo e segnalando quelli a rischio. I modelli predittivi possono anche generare avvisi in tempo reale per aiutare il team finanziario a intervenire tempestivamente.

    Vantaggi dell’Analisi Predittiva delle Fatture

    • Previsione dei Flussi di Cassa: I modelli di IA consentono di stimare con maggiore precisione i flussi di cassa futuri, favorendo una gestione finanziaria più stabile.
    • Ottimizzazione del Credito: Con la previsione dei comportamenti di pagamento, l’azienda può personalizzare i termini di credito per i clienti e ridurre il rischio di mancati pagamenti.
    • Interventi Preventivi: L’IA può suggerire misure preventive per clienti con alto rischio di ritardo, come inviare notifiche di pagamento anticipate o offrire piani di pagamento flessibili.

    Strumenti Utilizzati per l’Analisi delle Fatture

    Tra gli strumenti più utilizzati per questa tipologia di analisi predittiva troviamo IBM Watson e Salesforce Einstein, che offrono soluzioni per integrare e automatizzare i processi di gestione delle fatture. Queste piattaforme consentono di collegare i dati finanziari e contabili esistenti, analizzando i comportamenti di pagamento per migliorare il recupero crediti e ridurre l’esposizione al rischio.

    Sfide dell’Implementazione dell’IA in Azienda

    Sebbene i vantaggi dell’IA siano evidenti, l’implementazione di tecnologie predittive può presentare sfide significative:

    • Qualità dei Dati: La qualità dei dati influisce direttamente sull’accuratezza dei modelli predittivi. Dati incompleti, obsoleti o inaccurati possono portare a previsioni errate.
    • Costi e Risorse: L’implementazione dell’IA richiede risorse economiche e competenze tecniche, non sempre disponibili in tutte le aziende. Le PMI, in particolare, possono trovare difficile supportare tali investimenti.
    • Etica e Privacy: La raccolta e l’analisi di grandi quantità di dati aziendali e dei clienti solleva questioni etiche e di privacy. Le aziende devono garantire la conformità alle normative, come il GDPR, per proteggere i dati sensibili.

    Conclusioni

    L’intelligenza artificiale, e in particolare l’analisi predittiva, è destinata a rivoluzionare la gestione aziendale, portando maggiore efficienza, precisione e sicurezza nelle decisioni strategiche. Applicata a settori critici come le vendite e la gestione delle fatture, l’IA consente alle aziende di migliorare le previsioni, ottimizzare le risorse e ridurre l’incertezza operativa.

    Per un’implementazione di successo, le aziende devono garantire la qualità dei dati, investire nelle competenze necessarie e monitorare continuamente i modelli, adattandoli all’evoluzione dei dati e del contesto aziendale. Così facendo, l’IA diventerà non solo uno strumento di supporto, ma una risorsa strategica per l’innovazione e la crescita sostenibile.

  • Esempi pratici e misura delle performance

    Per analizzare le performance dell’algoritmo Perceptron prendiamo in esame un dataset molto studiato nell’ambito della machine learning: l’insieme delle caratteristiche della lunghezza e larghezza dei petali capaci di riconoscere una particolare famiglia Iris.

    Per fare questo ci serviremo di importanti librerie di scikit-learn

    anzitutto preleviamo il dataset

    # load dataset
    iris = datasets.load_iris()
    X = iris.data[:, [2, 3]]
    y = iris.target

    definiamo tramite le funzioni di scikit-learn il training-set ed il testing-set e standardiziamo i campioni

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4, random_state = 1, stratify = y)
    
    sc = StandardScaler()
    sc.fit(X_train) # calculate mu and sigma
    X_train_std = sc.transform(X_train) # standardize
    X_test_std = sc.transform(X_test)
    

    utiliziamo il perceptron per risolvere il problema della classificazione e misuriamone le performance rappresentando i dati su un grafico. Parametriziamo il Perceptron con un numero di epoch pari a 50 ed un tasso di apprendimento pari a 0.2.

    ppn = Perceptron(max_iter = 50, eta0 = 0.2, tol = 1e-3, random_state = 1)
    ppn.fit(X_train_std, y_train)
    y_pred = ppn.predict(X_test_std)
    err =(y_test != y_pred).sum()
    acc=(y_test == y_pred).sum() / len(y_test)
    
    plt.plot(err)
    plt.xlabel('wrong classification')
    plt.show()

    risultato:

    y label count : [50 50 50]
    y_train label count : [35 35 35]
    y_test label count : [15 15 15]
    wrong sample : 3
    perceptron accurancy : 0.931

    rappresentazione grafica dei dati.

    dataset Iris

    Una tecnica per misurare le performance di un modello è selezionare gli iperparametri di un algoritmo (ovvero i parametri che rendono l’algoritmo più efficiente rispetto la stima che si vuole avere) si chiama K-Fold.

    La tecnica consiste nel suddividere il dataset in k parti senza reinserimento. K-1 viene usato per il test di addestramento, la restante parte viene usata per il test.

    Per ogni fold viene calcolata la prestazione del modello ed infine viene calcolata la media delle prestazioni per tutti i fold. Vedi figura.

    K-fold

    #searching performance
    
    #K-FOLD Stratified
    skf = StratifiedKFold(n_splits=2)
    skf.get_n_splits(X, y)
    
    print(skf)
    
    scores=[]
    
    
    for train_index, test_index in skf.split(X, y):
            print("data train:", train_index, "data test:", test_index)
            X_train, X_test = X[train_index], X[test_index]
            y_train, y_test = y[train_index], y[test_index]
            pipe_lr.fit(X_train, y_train)
            score=pipe_lr.score(X_test,y_test)
            scores.append(score)
            print('test accurancy: %.3f ' %score)
    print ('total accourancy: %.3f +/- %.3f ' %np.mean(scores), np.std(scores))
    
    
    #CROSS VALIDATION SCORE
    from sklearn.model_selection import cross_val_score
    scores = cross_val_score(estimator=pipe_lr, X=X_train, y=y_train, cv=10, n_jobs=1)
    
    print ('total accourancy: %.3f +/- %.3f ' %np.mean(scores), np.std(scores))

    Il risultato

    Class label : [0 1 2]
    y label count : [50 50 50]
    y_train label count : [35 35 35]
    y_test label count : [15 15 15]
    wrong sample : 3
    perceptron accurancy : 0.93

  • Apprendimento ad albero decisionale

    L’algoritmo ad apprendimento ad albero consiste nel trovare una serie di domande che consentono di suddividere il dataset dei dati sulla base della caratteristica che produce il massino guadagno informativo. Ad esempio, nel caso volessimo identificare se un campione di sangue è affetto da anemia perniciosa possiamo addestrare il modello ponendo domande sul volume medio dei globuli rossi (< 12?) e sulla quantità di vitamina B12 (<187?) (ovviamente non sono gli unici indicatori ed è un esempio solo illustrativo ma serve per avere un quadro della situazione). In base alle risposte possiamo etichettare i campioni nella classe corrispondente.

    L’obiettivo è suddividere i campioni in modo da avere il massimo guadagno informativo IG.

    Il guadagno informativo è descritto in questo modo:

    IG(Dp,f)=I(Dp)-∑mj=1 Nj/Np I(Dj)

    dove f è la carattersitica su cui si basa la suddivisione. Dp, Dj sono il datase del genitore e del j-esimo figlio. I è la misura di impurità. Np, Nj sono rispettivamente il numero di campioni dei genitori e del j-esimo figlio. Dall’equazione, minore è l’impurità dei figli e maggiore sarà il guadagno informativo.

    Come individuiamo le impurità? generalmente vengono utilizzati 3 criteri di suddivisione o misure di impurità. Definendo p(i|t) come la proporzione dei campioni che appartengono al nodo t avremo:

    Entropia Ih: è massima se tutti i campioni appartengono in maniera uniforme alle diverse classi. Considerando una classificazione binaria, sarà Ih= 1 se sono distruibuiti uniformemente per le due classi, quindi, p(i=1|t)=0,5. Sarà Ih=0 se tutti i campioni appartengono ad una o ad un’altra classe, quindi, p(i=1|t)=1 oppure P(i=0|t)=0. L’entropia cerca di massimizzare l’informazione reciproca all’interno di un albero.

    Impurità di Gini Ig: cerca di minimizzare la probabilità di errori di classificazione. Maggiore è la mescolanza delle classi e maggiore sarà l’impurità di Gini.

    Errore di classificazione Ie: utilizzato per la potatura di alberi decisionali. Se parto da un nodo padre e trovo un criterio di suddivisione che classifica tutti i campioni su una determinata classe, avrò diminuito le dimensioni dell’albero ma avrò aumentato l’errore di classificazione.

    criteri di suddivisione dell’albero decisionale
  • Classificazione a massimo margine SVM

    Un’estensione del perceptron è la macchina a vettori di supporto. Mentre per il perceptron il nostro obiettivo era minimizzare gli errori di apprendimento, con la macchina SVM l’obiettivo è massimizzare il margine definito come distanza tra l’iperpiano di separazione ed i campioni più vicini a questo iperpiano (vettori di supporto).

    Massimizzando il margine possiamo effettuare nuove predizioni semplicemente usando un sottoinsieme dei dati di training che rappresentano i vettori di supporto.

    Massimizzare il margine è facilmente comprensibile per la classificazione di dati che sono linearmente separabili. Cosa succede invece per campioni che non sono linearmente separabili?

    esempio campioni linearmente separabili e non

    Per risolvere problemi di classificazione su campioni non lineari possiamo sfruttare l’algoritmo SVM in modo da kernizzarle su più dimensioni. L’obiettivo sarà di rappresentare i campioni non lineari con combinazioni tra i campioni in modo da aumentare la dimensionalità e cercare rappresentazioni non lineare ma con un marcato confine decisionale.

    aumento dimensioni su campioni non lineari

    Come si vede nell’immagine abbiamo aumentato la dimensionalità del modello semplicemente utilizzando la relazione X12 + X22 . Questo ha permesso di identificare un nuovo iperpiani di separazione dei campioni (seconda figura).

  • Regressione logista: modellazione della probabilità delle classi

    La regressione logistica è un modello di classificazione (come il Perceptron o Adaline) che usa la probabilità per determinare l’appartenenza ad una piuttosto che ad un’altra classe.

    Definiamo il rapporto probabilistico come il rapporto tra la probabilità di un evento positivo (p) e la probabilità di un evento negativo: p/(1-p). Rispettivamente p sarà la classe con etichetta y=1 e 1-p la classe con etichetta y=0.

    La funzione logit è il logaritmo del rapporto delle probabilità logit=log(p/(1-p)). Possiamo dire che il logit(p(y=1|x)) = w0x0 + w1x1 +…+ wnxn –> può essere espressa come relazione lineare. Quello che vogliamo studiare è l’appartenenza di un determinato campione alla classe y=1. Quindi dobbiamo considerare l’inversa della funzone logit: sigmoid –> Ø(z)=1/(1+e¯z).

    Intuitivamente l’algoritmo a regressione logistica calcola la probabilità che un campione appartenga ad una determinata classe. Si userà la funzione a passo unitario per determinare esattamente la classe di appartenenza.

    Anche in questo caso sarà necessario definire una funzione di costo che ci permetterà di trovare i pesi sulla base dell’errore di classificazione.

    Nel caso di Adaline la funzione di costo era la somma dei quadrati degli errori. Nel caso della regressione logistica la funzione di costo sarà una probabilità L(w)=P(y|x;w). Minimizzando la funzione di log-probabilità ed utilizzando l’algoritmo di discesa del gradiente riusciamo ad identificare i pesi per ogni iterazione. Questo algoritmo è possibile utilizzarlo anche per problemi multiclase.

  • Perceptron: MachineLearning con supervisione e funzione di attivazione

    In questo paragrafo spiegheremo come utilizzare l’algoritmo perceptron implementato con Python a partire da un dataset di dati utilizzati principalmente per la studio del machineLearning: l’insieme di caratteristiche che definiscono delle tipologie di fiori Iris.

    Iniziamo con l’implementazione del perceptron.py (l’algoritmo spiegato nell’articolo precedente) definendo i metodi fit (per l’apprendimento) e prediction (per la previsione dei nuovi dati)

    il dataset iris è una serie di dati, solitamente a matrice, che come righe si ha il numero dei campioni e sulle colonne le caratteristiche per ogni campione.

    esempio:
    0 5.1 3.5 1.4 0.2 Iris-setosa
    1 4.9 3.0 1.4 0.2 Iris-setosa
    2 4.7 3.2 1.3 0.2 Iris-setosa
    3 4.6 3.1 1.5 0.2 Iris-setosa
    4 5.0 3.6 1.4 0.2 Iris-setosa
    .. … … … … …
    145 6.7 3.0 5.2 2.3 Iris-virginica
    146 6.3 2.5 5.0 1.9 Iris-virginica
    147 6.5 3.0 5.2 2.0 Iris-virginica
    148 6.2 3.4 5.4 2.3 Iris-virginica
    149 5.9 3.0 5.1 1.8 Iris-virginica

    Il problema che vogliamo risolvere è: dato un campione di dati con determinate caratteristiche, a quale classe corrisponde? Iris-setosa oppure Iris-virginica?

    la prima cosa da fare è inputare all’algoritmo perceptron il set di dati.

    from perceptron import Perceptron

    pn = Perceptron(0.1, 10)
    pn.fit(X, y)

    print(“dataset”,df)
    print(“target”,y)
    print(“training”,X)

    print(“errors”,pn.errors)
    print(“weight”,pn.weight)

    Una volta importato l’algoritmo perceptron utilizziamo la funzione di apprendimento “fit” imputando il set di dati di training “X” ed il target “y” (classificazione attesa). Lanciamo il codice ed il risultato è il seguente:

    target [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
    -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
    -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1]

    Per comodità abbiamo classificato la prima tipologia di Iris in -1 e la seconda in 1. Il dataset. Come training dei dati prendiamo i primi 100 campioni.

    Mostriamo il risultato sulle dashboard di nodered ed interpretiamo i risultati.

    usiamo un grafico a dispersione per visualizzare il dataset inziale:

    Come si vede nel grafico abbiamo una netta distinzione della classificazione binaria. La parte alta sono campioni relativi al target -1 mentre la parte bassa sono campioni relativi alla classe 1.

    Proviamo ad importare questo dataset in modo da addestrare l’algoritmo. Per capire la precisione di classificazione dell’algoritmo dobbiamo osservare il grafico degli errori ad ogni step di apprendimento. L’algoritmo, inoltre, accetta due parametri in ingresso: il numero di iterazioni (i cicli nei quali si aggiornano i pesi) ed il tasso di apprendimento. Il risultato è il seguente:

    Notiamo che dalla quinta iterazione l’errore si azzera, ciò vuol dire che già dalla quinta iterazione l’algoritmo è in grado di predire il risultato per ogni nuovo campione in ingresso.

    Proviamo quindi la funzione predict con il campione: Y = np.array([4,1]), ovvero caratteristiche 4 e 1. L’algoritmo ci dovrà predire se sono caratteristiche di Iris-setosa oppure Iris-virginica.

    • print(“predict: ” perceptron.predict(Y))–> predict: -1
    • proviamo con Y = np.array([4,1]), predict: 1

    Un altro grafico interessante è l’andamento dei pesi ad ogni iterazione. Con questo grafico visualizziamo passo passo la correzione che l’algoritmo esegue sui pesi per migliorare la predizione.

    variazione dei pesi su tutti campioni

  • Machine Learning in teoria

    apprendimento con supervisione

    classificazione, esempio messaggi di spam (classificazione binaria) oppure la classificazione multiclasse (riconoscimento testo scritto a mano)

    regressione, trovare la dipendenza tra variabili predittive discrete ed una variabile target continua

    apprendimento di rafforzamento

    agente che migliora le prestazioni grazie all’interazione con l’ambiente. Siccome nelle informazioni relative all’ambiente includono anche un segnale di ricompensa, allora, si può dire che l’apprendimento di rafforzamento è l’esempio di un apprendimento con supervisione. Il target non è l’etichetta ma la “ricompensa” che misura la qualità con cui la funzione è stata misurata. Esempio, motore del gioco scacchi. Con try-and-error per migliorare la qualità dell’apprendimento

    apprendimento senza supervisione

    dati non etichettati o dati dalla struttura ignota. Necessario osservare i dati per cercare di capire informazioni cariche di significato.

    clustering: dati divisi su un determinato grado di similarità (popolazione delle malattie), marketing per classificare gruppi di clienti

    compressione dati (riduzione dimensionale): si esegue nella preelaborazione dei dati per cercare di ridurre il numero di dimensioni e ridurre il carico di memoria usata. si usa la matrice e vettori. Ogni colonna della matrice rappresenta la caratteristica del campione.

    Quali sono in generale gli step per la creazione di sistemi di apprendimento automatico?

    PRE-ELABORAZIONE

    questo step serve per dare una forma ai dati. Cercare di rendere le caratteristiche dei dati omogenei (grazie anche alle attività di normalizzazione), cancellazione delle ridondanze andando a verificare la correlazione delle caratteristiche. Riduzione della dimensionalità delle caratteristiche riducendo quindi anche le prestazioni computazionali

    ADDESTRAMENTO E SELEZIONE DI UN MODELLO PREDITTIVO

    In questo step si cerca il miglior modello predittivo per un determinato problema. Per trovare il modello migliore si utilizzano delle metriche per misurare le prestazioni di ciascun modello. Per l’addestramento del modello si utilizza un dataset di apprendimento mentre per la valutazione del modello si utilizza un dataset di test.

    VALUTAZIONE DEI MODELLI E PREVISIONI

    In questo step si utilizza il dataset di test per stimare la qualità del modello predittivo e per identificare l’errore di generalizzazione. Se, dall’analisi, siamo soddisfatti della prestazione allora possiamo utilizzare il modello scelto per predire nuovi dati.