TESINA INTELLIGENZA ARTIFICIALE

Documenti analoghi
e applicazioni al dominio del Contact Management Andrea Brunello Università degli Studi di Udine

Uso dell algoritmo di Quantizzazione Vettoriale per la determinazione del numero di nodi dello strato hidden in una rete neurale multilivello

Tesina Intelligenza Artificiale Maria Serena Ciaburri s A.A

Classificazione e regressione

Data Journalism. Analisi dei dati. Angelica Lo Duca

Progettazione di un Sistema di Machine Learning

Alberi di Decisione (2)

Classificazione k-nn con R. Strumenti quantitativi per la gestione

Multi classificatori. Prof. Matteo Golfarelli Alma Mater Studiorum - Università di Bologna

Business Intelligence per i Big Data

Naïve Bayesian Classification

Regressione. Lineare Simple linear regression Multiple linear regression Regression vs Geometrical fitting

Computazione per l interazione naturale: Regressione lineare

Computazione per l interazione naturale: Regressione lineare (MSE)

Alberi di Decisione (2)

Progettazione di un Sistema di Machine Learning

Corso di Intelligenza Artificiale A.A. 2016/2017

e applicazioni al dominio del Contact Management Andrea Brunello Università degli Studi di Udine

HR analyics. Analisi con le CP e analisi predittiva

Università degli Studi di Bergamo Intelligenza Artificiale (Codice: 38066) Secondo Parziale - 11 Giugno 2018

Metodi supervisionati di classificazione

Classificazione Validazione Decision Tree & kmeans. Renato Mainetti

Pulse Sense: la matematica per l individuazione di anomalie in un tracciato elettrocardiografico

Apprendimanto automatico

Università degli Studi di Bergamo Intelligenza Artificiale (Codice: 38066) 12 Giugno 2019

Valutazione di modelli

Stima della qualità dei classificatori per l analisi dei dati biomolecolari

Esercizio: apprendimento di congiunzioni di letterali

Richiamo di Concetti di Apprendimento Automatico ed altre nozioni aggiuntive

Statistical learning methods for classification and profiling

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Data mining: classificazione

Intelligenza Artificiale Complementi ed Esercizi

SUPPORT VECTOR MACHINES. a practical guide

Reti Neurali in Generale

Preprocessing. Corso di AA, anno 2017/18, Padova. Fabio Aiolli. 27 Novembre Fabio Aiolli Preprocessing 27 Novembre / 14

analisi di sensibilità lezione 22

Intelligenza Artificiale. Clustering. Francesco Uliana. 14 gennaio 2011

Università degli Studi di Bergamo Intelligenza Artificiale (Codice: 38066) 21 Giugno Primo Appello

Alberi di Regressione

Validazione dei modelli Strumenti quantitativi per la gestione

Programmare in Python

Validazione dei modelli. Strumenti quantitativi per la gestione

Analisi di un dataset di perizie assicurative. Esercitazione Data Mining

Progetto Machine Learning. Giacomo Lancia Fabio Peluso

Reti Neurali. Corso di AA, anno 2016/17, Padova. Fabio Aiolli. 2 Novembre Fabio Aiolli Reti Neurali 2 Novembre / 14. unipd_logo.

The Business Game for Data Scientists

Classificazione Mario Guarracino Data Mining a.a. 2010/2011

Training Set Test Set Find-S Dati Training Set Def: Errore Ideale Training Set Validation Set Test Set Dati

Classificazione DATA MINING: CLASSIFICAZIONE - 1. Classificazione

Riconoscimento automatico di oggetti (Pattern Recognition)

Data Science e Tecnologie per le Basi di Dati

Strutture dati e loro organizzazione. Gabriella Trucco

Tecniche avanzate per la progettazione e la gestione dei sistemi produttivi

Python Start. Docente: M. Chiara Debernardi. Lingua del corso. Descrizione del corso e obiettivi. Destinatari. Prerequisiti.

MODELLI MATEMATICI PER I SISTEMI DI INFORMAZIONE ALL UTENZA: introduzione ai modelli dell ingegneria dei trasporti

Reti Neurali (Parte I)

Tecniche di riconoscimento statistico

Classificazione bio-molecolare di tessuti e geni come problema di apprendimento automatico e validazione dei risultati

CHI SIAMO COME. COSA Capendo esigenze, obiettivi e preoccupazioni attraverso un approccio analitico, per offrire informazioni utili e sensate.

Python Start. Docente: M. Chiara Debernardi. Lingua del corso. Descrizione del corso e obiettivi. Destinatari. Italiano

e applicazioni al dominio del Contact Management Andrea Brunello Università degli Studi di Udine

CAPITOLO V. DATABASE: Il modello relazionale

WEKA. Ing. Antonio Brunetti Prof. Vitoantonio Bevilacqua

Apprendimento Automatico

DEEP LEARNING PER CONTROLLO QUALITA PRODOTTO E CONTROLLO DI PROCESSO Alessandro Liani, CEO e R&D Manager

Indice generale. Introduzione. Ringraziamenti dell autore...xxi. Capitolo 1 Dare ai computer la capacità di apprendere dai dati...

Classificazione Mario Guarracino Laboratorio di Sistemi Informativi Aziendali a.a. 2006/2007

Reti Neurali (Parte III)

Vivisezione di un algoritmo di machine learning. Francesco ESPOSITO Youbiquitous

Relazione progetto Fondamenti di Analisi dati e Laboratorio

La simulazione è l'imitazione di un processo o di un sistema reale per un

Concetti base programmazione. Antonio Gallo

Computazione per l interazione naturale: macchine che apprendono

Riconoscimento e recupero dell informazione per bioinformatica

MASTER IN DATA SCIENCE PER LA COMUNICAZIONE DIGITALE PROGRAMMA. Via Larga 13, Milano 13 Settembre Novembre 2019

Tempo disponibile: 60 minuti

Rischio statistico e sua analisi

Elementi di Psicometria con Laboratorio di SPSS 1

Apprendimento di Alberi di Decisione: Bias Induttivo

Sistemi per la gestione delle basi di dati

Informatica per la Comunicazione/ Verdicchio/ 19/06/2013/ Domande / Versione 1

Lezione 10 Alberi e gestione delle eccezioni

Rilevazione di messaggi spam con algoritmo Naive-Bayes

Università del Piemonte Orientale. Corso di Laurea Triennale di Infermieristica Pediatrica ed Ostetricia. Corso di Statistica Medica

COGNOME.NOME...MATR..

Introduzione all Intelligenza Artificiale a.a. 2016/17

Tecniche di Apprendimento Automatico in Applicazioni Bio-Mediche

Computazione per l interazione naturale: macchine che apprendono

Le previsioni contano

Otacon22 HgComo. Reti neurali artificiali

Elaborazione dati dati e costruzione della cartografia georeferenziata

[Giuseppe Alessandri, Appunti]

Algoritmi di classificazione supervisionati

Psicometria con Laboratorio di SPSS 1

Il Machine Learning: motore di innovazione guidato dai dati. Rosa Meo

Economia Politica. Appunti delle lezioni. L alternativa di breve periodo tra inflazione e disoccupazione

Data Mining and Machine Learning Lab. Lezione 8 Master in Data Science for Economics, Business and Finance 2018

Transcript:

Student Alessio Gallucci Professor Elio Piccolo TESINA INTELLIGENZA ARTIFICIALE 2015 2016 Benchmark Classification Model On Kaggle Santander Challange vers.1.0

AGENDA Background SLIDE 3 Database SLIDE 4-5 Benchmark SLIDE 6-7 Bias-Variance SLIDE 8-9 vers.1.0 2/9

BACKGROUND Kaggle Kaggle è la più grande comunità di data scientist, statistici, e esperti di machine learning. Questa comunità ha risolto molti dei più complessi problemi proposti da moltepli aziende leader nel mondo. Il format classico è quello della competizione/challange in cui un azienda propone una sfida da risolvere è in cambio mette a disposizione un premio di vario genere (spesso in denaro o posto di lavoro). Inoltre mette a disposizione un training set su cui allenarsi e tiene segreto un test set nel quale andrà a misurare e classificare le soluzioni proposte dagli utenti Kaggle. Santander Santader propone ricca Challange su Kaggle con in premio 60.000$ di montepremi. Il problema che vuole risolvere è capire il prima possibile se un cliente è contento o meno del servizio offerto infatti la soddisfazione del cliente è una misura importante di successo della banca. Inoltre è difficile capire se un cliente non è soddisfatto prima che esso lasci la banca e sia quindi un cliente perso. Santader chiede di identificare i clienti in maniera preventiva in modo che essa poi possa agire prima che il cliente lasci la banca. Il database che essa offre contiente 370 attributi anonimi per un totale di circa 75.000 esempi come training set. vers.1.0 3/9

DATABASE DESCRIPTION TARGET Il numero di clienti scontenti nel training set è molto basso, circa il 4% come mostra il grafico a torta qui di fianco. Questo sbilanciamento nelle etichette di classe complica molto tutte le fasi del modello di previsione. Un problema in questo tipo di problemi è che molte misure di performance vengono distorte e non rappresentano più un indice di bontà del modello. Si pensi per esempio all'accuratezza (predizioni corrette / totale elementi) che paradossalmente potrebbe essere del 96% per il classificatore banale che assegna a qualsiasi dato di input il valore 0 ovvero contento. Per queste ragioni si è scelto di usare come misura di performance l'auc ovvero l'area sotto la curve ROC. 0:Contenti TARGET 1:Scontenti vers.1.0 4/9

DATABASE DESCRIPTION Dimensioni TARGET Gli attributi non vengono descritti nella challenge è sta alla nostra abilità capirne il significato. Vi sono inizialmente 370 attributi tutti di tipo numerico e si distribuiscono in binari, interi, reali il che complica l'analisi in quanto bisogna fare attenzione ad usare modelli che non capiscono la differenza nel dominio degli attributi oppure effettuare una normalizzazione prima. Il training set inoltre contiente 76020 esempi numero relativamente grande, ma non necessariamente sufficiente per allenare modelli complessi quali le reti neurali artificiali considerando anche la bassa frequenza della classe positiva. INFORMAZIONI TRAINING SET Int64Index: 76020 entries, 1 to 151838 Columns: 370 entries, var3 to TARGET dtypes: float64(111), int64(259) memory usage: 215.2 MB vers.1.0 5/9

BENCHMARK Numero di attributi 227. Il numero di attributi si riduce in prima istanza a 306 eliminando le colonne con deviazione standard nulla (colonne costanti) e poi eliminando le colonne duplicate. Da 306 a 227 è stata chiamata la funzione SelectKBest di sklearn. Vista la complessità del database gli unici modelli che possono competere alla gara sono quelli ensamble (insiemi di classificatori deboli) oppure le reti neurali come si evince dal grafico delle curve AUC generate con parametri base di tutti i modelli. vers.1.0 6/9

BENCHMARK CODE PYTHON-SKLEARN VARIABLES GP = {'seed':22*7}; np.random.seed(gp['seed']) Models = [GradientBoostingClassifier(), MLPClassifier(), AdaBoostClassifier(), RandomForestClassifier(n_estimators=50,max_depth=5), DecisionTreeClassifier(max_depth=25,class_weight={0:0.96,1:0.04}), KNeighborsClassifier(n_neighbors=5), GaussianNB()] Labels = ['GrdBoost','MLPNN','AdaBoost','RndForest','DecisionTree','KNN','NaiveBayes'] LOADING AND PREPROCESSING training = pd.read_csv("input/train.csv",index_col = 0) training = training.replace(-999999,2) fdupl = sfs.list_duplicate(training); fcost = sfs.list_constant(training); fall = list(training) fsel = [f for f in fall if (f not in fcost and f not in fdupl)] id_training = training.index X = training[fsel].iloc[:,:-1]; y = training.target X = StandardScaler().fit(X).transform(X) X = SelectKBest(f_classif, k=227).fit(x, y).transform(x) RUNNING MODELS X_train, X_test, y_train, y_test = cv.train_test_split(x1_train, y1_train, test_size=0.33) for clf,lab in zip(models,labels): print("processing", lab) y_score = clf.fit(x_train,y_train).predict_proba(x_test) fpr, tpr, thresholds = roc_curve(y_test, y_score[:,1]) roc_auc = auc(fpr, tpr) vers.1.0 7/9

BIAS-VARIANCE TRADEOFF DECISION TREE Analizziamo la il trade-off tra bias e variance nel caso dell albero decisione in quanto è il classificatore debole più usato negli ensamble. Come si può notare dal grafico un ottimo valore di profondità massima dell albero è 9 ovvero quando si distaccano la curva dell errore nel training set e nel test set. Chiaramente negli ensamble si lavorerà con una profondità massima più piccola (eg. 6) in modo da non fare overfitting. vers.1.0 8/9

BIAS-VARIANCE CODE PYTHON-SKLEARN MODEL clf = DecisionTreeClassifier(class_weight={0: 0.96, 1: 0.04}, criterion='gini', max_depth=3, max_features=0.85, max_leaf_nodes=none, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=false, random_state=none, splitter='best') X_train, X_test, y_train, y_test = cv.train_test_split(x, y, test_size=0.75) auc_test = []; auc_train = [] dep_list = [6,9,12,15,18,21,24,27,30,33] ITERATION ON DEPTH for n_dep in dep_list: clf.max_depth = n_dep clf.fit(x_train,y_train).predict_proba(x_test) y_score = clf.predict_proba(x_test) y_score_train = clf.predict_proba(x_train) fpr, tpr, thresholds = roc_curve(y_test, y_score[:,1]) fpr_train, tpr_train, thresholds_train = roc_curve(y_train, y_score_train[:,1]) auc_test.append(auc(fpr, tpr)); auc_train.append(auc(fpr_train,tpr_train) vers.1.0 9/9