Che materia stai cercando?

Tesi di laurea - Sviluppo di un'Intelligenza Artificiale di tipo Supervised Machine Learning in Python

Relazione tecnica, dettagliata e approfondita del progetto di Metodi Quantitativi per l'Informatica (del ramo di Intelligenza Artificiale e Robotica ma erogato per la triennale in Ingegneria Informatica e Automatica in quanto rappresenta conoscenze fondamentali di Machine Learning).

Game Ratings Predictor è una Intelligenza Artificiale di tipo Supervised Machine Learning interamente... Vedi di più

Materia di Metodi Quantitativi per l'Informatica relatore Prof. F. Pirri

Anteprima

ESTRATTO DOCUMENTO

Sapienza - Università di Roma

Corso di Laurea in Ingegneria Informatica e Automatica

Per problemi che trattano le multiclassi, possono essere utilizzati esclusivamente newton-

cg, sag e lbfgs.

Nel nostro caso quindi, avendo più classi su cui applicare la logistic regression ma ognuna

trattata singolarmente, la scelta poteva ricadere soltanto su liblinear e sag. Inizialmente

abbiamo quindi provato con sag, in quanto abbiamo ritenuto il nostro dataset

sufficientemente grande.

Tuttavia, abbiamo riscontrato l’impossibilità di applicare tale solver con la penalty L1:

ValueError: Solver sag supports only l2 penalties, got l1 penalty.

Volendo procedere proprio con la tecnica del Coarse-to-fine abbiamo quindi cercato di

procedere correggendo l’errore provando a reimpostare L2, anche se questo avrebbe, come

già dimostrato, aumentato il missclassification rate nel caso del solver liblinear.

Tuttavia, questa volta, abbiamo ottenuto un nuovo errore:

The max_iter was reached which means the coef_ did not converge.

Studiando la nuova situazione abbiamo verificato che in alcuni casi il modello può non

raggiungere la convergenza. La non-convergenza di un modello infatti indica che i coefficienti

sono “privi di significato”, ovvero che il processo iterativo non è stato in grado di trovare

delle soluzioni appropiate; per risolvere questo problema è necessaria l’applicazione di un

solver che sia più approfondito anche se meno rapido.

Per risolvere questo inconveniente della convergenza non ci è rimasto che reimpostare il

solver liblinear e di conseguenza la L1 penalty.

• Max_iter: è un parametro di rilevale importanza per i solver newton-cg, sag e lbfgs, in quanto

rappresenta il numero massimo di iterazioni di cui può avvalersi il modello per raggiungere

la convergenza.

Come abbiamo già analizzato nel punto precedente, non siamo riusciti a raggiungere la

convergenza con il solver sag.

Abbiamo così incrementato il numero di iterazioni massimo dallo standard 100 fino a 500

iterazioni massime, tuttavia abbiamo riscontrato esclusivamente un tempo di caricamento

superiore e non la soluzione al problema.

Nello specifico, con il solver = ‘liblinear’ e il max_iter=100 abbiamo riscontrato un tempo di

elaborazione pari a 15 secondi; con il solver = ‘sag’ e il max_iter = 500 abbiamo riscontrato

un tempo di elaborazione pari a 60 secondi e il verificarsi nuovamente del problema della

convergenza che non veniva raggiunta.

Si poteva quindi procedere ad incrementare ulteriormente il max_iter. Tuttavia, già con 500

iterazioni il solver sag superava notevolmente il tempo richiesto dal solver liblinear per

risolvere il problema; ma il vantaggio del solver sag (per dataset sufficientemente grandi)

dovrebbe essere proprio quello di un tempo di elaborazione inferiore al costo di una

accuratezza inferiore rispetto al solver liblinear. Visto che i tempi di elaborazione risultano

superiori, chiaramente non è necessario procedere con ulteriori tentativi per far funzionare

il solver sag che a questo punto viene definitivamente scartato.

Nel nostro caso quindi è stato lasciato ad un valore di default pari a 100.

• Multi_class: è un parametro che serve per regolare il peso delle multiclassi.

Nel nostro caso quindi non viene utilizzato e lasciato al parametro ‘ovr’.

Roberto Falconi 21

Federico Guidi Sapienza - Università di Roma

Corso di Laurea in Ingegneria Informatica e Automatica

• Warm_start: quando è settato a True riutilizza le soluzioni delle precedenti chiamate a

funzione per effettuare una nuova elaborazione, altrimenti semplicemente cancella i

risultati una volta restituiti.

• Nel nostro caso non abbiamo voluto creare dei precedenti e pertanto abbiamo impostato il

valore a False.

• N_jobs: rappresenta semplicemente il numero di core della CPU utilizzati durante

l’elaborazione, se viene impostato a -1 vengono utilizzati tutti i core.

Nel nostro caso abbiamo deciso di sfruttare al massimo la CPU impostando a -1 il parametro.

log_reg.fit(Xtrain, ytrain)

y_val_l = log_reg.predict(Xtest)

In scikit-learn uno stimatore per la classificazione è un oggetto Python che implementa i metodi

e .

fit(X, y) predict(T)

Tutti gli stimatori per il supervised learning implementano il primo di questi due metodi per adattarsi

al modello e il secondo per predire il valore della y dato un certo array di valori X.[26]

ris = accuracy_score(ytest, y_val_l)

mis = accuracy_score(ytest, y_val_l, normalize=False)

print("Logistic Regression Rating_Everyone accuracy: ", ris)

print("Logistic Regression Rating_Everyone misclassification: ",

ytest.size - mis)

La funzione rappresenta il metodo standard fornito con sklearn per calcolare la

accuracy_score

percentuale di accuratezza che ha ottenuto la predizione.

Al contrario se si desidera un misclassification rate sarà sufficiente sottrarre l’accuratezza a cento.

Nel nostro caso abbiamo deciso di stampare a schermo l’accuratezza in percentuale del progetto e

il numero esatto di volte che la predizione è fallita, normalizzando l’accuratezza otteniamo il numero

di successi, che sottratto alla dimensione del test set ci dà il numero esatto di volte in cui la

predizione è fallita.

Roberto Falconi 22

Federico Guidi Sapienza - Università di Roma

Corso di Laurea in Ingegneria Informatica e Automatica

7. Random Forest

Introduzione alla Random Forest

Le Random Forest sono un metodo di apprendimento d’insieme (utilizzato per la classificazione,

regressione e altro) che operano costruendo una moltitudine di alberi di decisione durante

l’allenamento del modello e dando come output la classe che è la moda delle classi (nel caso della

classificazione) oppure la predizione della media (nel caso della regressione) dei singoli alberi.

Le Random Forest correggono l’abitudine degli alberi di decisione di fare overfitting rispetto al

proprio training set. In particolare, gli alberi che sono cresciuti molto in profondità tendono a

imparare pattern altamente irregolari: si adattano ai loro training set, hanno un bias basso ma una

varianza alta. Le Random Forest sono un modo per fare una media tra più alberi di decisione, allenati

in parti diverse dello stesso training set, con l’obiettivo di ridurne la varianza[27]. Tutto questo si

traduce in un piccolo aumento del bias e qualche perdita di interpretabilità, ma generalmente

aumenta di molto le performance del modello finale.

Spiegazione della Random Forest

L’algoritmo di allenamento delle Random Forests applica la tecnica generale del bagging ai tree

learners. Dato un training set a cui corrisponde una , il bagging seleziona


PAGINE

43

PESO

488.81 KB

AUTORE

Falkons

PUBBLICATO

+1 anno fa


DESCRIZIONE TESI

Relazione tecnica, dettagliata e approfondita del progetto di Metodi Quantitativi per l'Informatica (del ramo di Intelligenza Artificiale e Robotica ma erogato per la triennale in Ingegneria Informatica e Automatica in quanto rappresenta conoscenze fondamentali di Machine Learning).

Game Ratings Predictor è una Intelligenza Artificiale di tipo Supervised Machine Learning interamente sviluppata in Python; è in grado di stabilire in totale autonomia una fascia d'età del pubblico a cui è rivolto un prodotto d'intrattenimento.

La relazione è stata realizzata dopo mesi da parte di un team di lavoro.
Contiene la descrizione, riga per riga, dell'intero codice del software e la spiegazione di tutto ciò che c'è da sapere sul Machine Learning avanzato di livello universitario e sui metodi dello stesso.
Vi eviterà di comprare libri e cercare informazioni spesso poco chiare su internet.


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica e automatica
SSD:
Docente: Pirri Fiora
A.A.: 2017-2018

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Falkons di informazioni apprese con la frequenza delle lezioni di Metodi Quantitativi per l'Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università La Sapienza - Uniroma1 o del prof Pirri Fiora.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in ingegneria informatica e automatica

Sistemi di Calcolo parte 2 - Tutta la teoria
Appunto
Linguaggi e Tecnologie per il Web - Come fare gli esercizi 4, 5 e 6
Appunto
Basi di dati
Appunto
Sistemi Operativi - Appunti
Appunto