SlideShare a Scribd company logo
1 of 48
MACHINE ING
INTELLIGENZA ARTIFICIALE
2016/2017
Prof. V. Deufemia
Prof. G. Polese
Enrica Loria
Alessia Antelmi
Martina Garofalo
Maria Angela Pellegrino
YELP
YELP
Cos’ è?
 Un social network
 Una guida online dove le persone si scambiano consigli e pareri circa luoghi visitati o attività
svolte.
La parola chiave in Yelp è REVIEW.
 Yelp è interessato ad intrattenere rapporti con la comunità scientifica.
Mette a disposizione dati su cui si possono applicare algoritmi di data mining, pianificazione
economiche o urbanistiche, machine learning.
DATASET
Il dataset si presenta come file json distinti. Ognuno rappresenta una certa categoria
 Utenti [1milione]
 Business [144 mila] dislocati in 11 città
 Recensioni [+4 milioni]
Ed altre informazioni…
 Tips ed immagini
Non pertinenti al nostro studio.
UTENTI
{
" user_id" : "id crittografato dell’utente",
" name" : "nome utente",
" review_count" : numero di recensioni,
" yelping_since" : data nel formato AAAA -MM -DD,
" friends" : ["un array di id crittografati degli utenti amici all’utente corrente"],
" useful" : "numero di voti useful rilasciati dall’utente",
" funny" : "numero di voti funny rilasciati dall’utente",
" cool" : "numero di voti cool rilasciati dall’utente",
" fans" : "numero di fan dell'utente corrente",
" elite" : [" array di anni che l'utente corrente stato considerato elite"],
" average_stars" : votazione media rilasciata in floating point, ad esempio 4.31,
" compliment_... " : numero di complimenti … ricevuti dall’utente
}
BUSINESS
{
" business_id " : "id crittografato del business ",
" name " : " nome del business ",
" neighborhood " : " vicinato ",
" city " : " città ",
" state " : " stato ", //altre info relative alla localizzazione geografica
" stars " : voto sotto forma di stelline arrotondate a half -stars ,
" review_count " : numero di review ,
" is_open " : 0/1 ( chiuso / aperto ),
" attributes " : ["array di stringhe : ogni elemento e un attributo"],
" categories " : ["array di stringhe di categorie a cui il business corrente e associato"],
" hours " : ["array di stringhe che riportano gli orari di apertura"],
" type " : " business "
}
REVIEW
{
" review_id ": "id crittografato della review",
" user_id ": "id crittografato dell 'utente ",
" business_id ": "id crittografato del business ",
" stars ": voto sotto forma di stelline , arrotondate a half -stars ,
" date ": "data nel formato AAAA -MM -DD",
" text ": "testo della review",
" useful ": numero di voti che hanno ritenuto la review utile ,
" funny ": numero di voti che hanno ritenuto la review divertente ,
" cool ": numero di voti che hanno ritenuto la review cool ,
" type ": "review"
}
IL PROBLEMA
QUANDO e A CHI dare un coupon promozionale.
Fornire uno strumento per valutare
quando sia più propizio dare un coupon e
se esistono degli utenti interessati a sconti che farebbero fruttare l'investimento.
LE SFIDE AFFRONTATE
Dataset di Yelp
non è etichettato
File di gradi
dimensioni
Necessità
di individuare
un criterio di
etichettamento
1. Filtrare e scomporre i business
 Il filtro applicato ai business è relativo alla categoria (restaurant, pub, cafè, etc.)
 Scomposizione in città
2. Scomporre le review in file di dimensioni minori
 In funzione della città di appartenenza (inferita dal business associato)
3. Etichettare gli utenti
 Criterio:
COUPON  utenti che hanno scritto una review contenente le keyword coupon, voucher o koupon.
NON COUPON  gli altri
PREPROCESSING ~ UTENTI
PREPROCESSING ~ UTENTI
PREPROCESSING ~ UTENTI
Filtro: selezione delle review che
contengono le keyword coupon,
koupon e voucher.
PREPROCESSING ~ UTENTI
1PREPROCESSING ~ BUSINESS
Dataset
business
etichettato
id_business {info business} january … december
Ex. jkqhwej-fwi {…} no … yes
× 12 valori di output
× classificazione multilabel  non supportato da weka (necessità di meka)
id_business {info business} january
id_business {info business} …
id_business {info business} december
Ex. jkqhwej-fwi {…} january no
jkqhwej-fwi {…} …
jkqhwej-fwi {…} december yes
 1 valori di output
 classificazione multivalue  supportato da weka
1PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO]
Non
Coupon
Coupon
Etichettare i business.
Il dataset etichettato è costituito
dalle informazioni del business
associate al mese e alla
classificazione.
 Dataset cresce di dimensione
 Unico valore di output da
produrre
Classi
PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO]
PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO]
Pizza
Restauran
t
CafèPub
Ba
r
Gelato
Wine
Chocolatier
s
DessertTea
BakeryCreperies
IceCream
Sushi
Tapa
s
Pita
Tacos
Gluten-Free
Vegeterian
Fruit & Veggies
Beer
PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO]
PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO]
Forse
Coupon
Non
Coupon
Coupon
Si passa da una
classificazione due valori ad
una classificazione a tre.
 Raffinamento della
classificazione
 Possibilità di estendere le
informazioni del business
PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO]
Elaborazione:
PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO]
foreach(Business business)
foreach(mese)
avg = calcolo star media
count review
PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO]
Business COUPON:
business nei mesi con review
che contengono keyword
coupon, koupon o voucher
Business POSSIBILI coupon:
business nei mesi con review
con 1 o 5 stelle
Business NON coupon :
altri
 id_business {info business} january
id_business {info business} …
id_business {info business} december
PREPROCESSING ~ BUSINESS [ULTERIORI TEST]
 id_business {info business} january #review_per_month star_avg_per_month
id_business {info business} …
id_business {info business} december #review_per_month star_avg_per_month
 YES  business con review che contengono le keyword
MAYBE  business nei mesi di picchi di minimo e massimo, in termini di affluenza
NO  i rimanenti
 YES  business nei mesi di picchi di minimo e massimo, in termini di affluenza
NO  i rimanenti
PREPROCESSING ~ BUSINESS [ULTERIORI TEST]
Per tutte le operazioni di preprocessing è stato impiegato il framework computazionale
Fork/Join.
 Task Reader
Gestione della lettura dalle delle review e il popolamento di due buffer in modo alternato.
 Task Filter
Filtro delle review legate ad un singola città.
IMPLEMENTAZIONE
A B
IMPLEMENTAZIONE
…
Filter
Filt
er
Filt
er
Filt
er
Reader
Filt
er
DMACHINE YELPING ~ IL TOOL
Processo computazionale
1. Training
Apprendimento basato sul dataset
generato dalla fase di preprocessing.
2. Predizione
Classificazione di una nuova istanza fornita
dall’utente.
DMACHINE YELPING ~ A CHI?
DMACHINE YELPING ~ A CHI?
DMACHINE YELPING ~ QUANDO? [RAGAZZI]
DMACHINE YELPING ~ QUANDO? [RAGAZZI]
DMACHINE YELPING ~ QUANDO? [FAMIGLIE]
DMACHINE YELPING ~ QUANDO? [FAMIGLIE]
DWEKA
 Waikato Environment for Knowledge Analysis, è un software per l'apprendimento automatico
sviluppato nell'università di Waikato in Nuova Zelanda.
 Usa un formato particolare : ARFF
 Descrive una lista di istanze che condividono un insieme di attributi.
 Header
lista degli attributi con il relativo tipo
 Dati
lista di istanze separate da a capo
@ relation
<name>
@attribute x
numeric
…
@data
DCLASSIFICATORI
“A computer program is said to learn from experience E with respect to some class of tasks T
and performance measure P, if its performance at tasks in T, as measured by P, improves with
experience E. ”
Tom Mitchell. Machine Learning 1997
DSVM
 Classe di macchine di apprendimento recentemente introdotte in letteratura.
 Nella sua forma più semplice SVM è un iperpiano che separa un insieme di esempi positivi da
un insieme di esempi negativi con il massimo margine.
 È un tipo di classificatore lineare.
Funzionano bene per problemi pratici, come la classificazione dei documenti e, più in generale,
per i problemi con molte variabili.
Migliore iperpiano? Quello che comporta la più grande separazione o margine tra le classi.
DSVM IN WEKA
 Implementato tramite SMO (Sequential minimal optimization) di John Platt.
 Problema di SVM: algoritmi lenti, specialmente per problemi molto grandi.
 La risposta di Platt è stata SMO, che è
concettualmente semplice
facile da implementare
più veloce
scala meglio su problemi difficili.
DALBERI DI DECISIONE
Nodo interno  Variabile
Arco  Possibile valore per una proprietà
Foglia  Il valore predetto per la variabile obiettivo a partire dai valori delle altre proprietà (classi)
 Robusti rispetto all'introduzione di feature irrilevanti
 Non variano a seguito di scaling
× Eccessiva crescita in profondità (overfitting)
DRANDOM FOREST
 Metodo di ensemble learning
opera costruendo una foresta di alberi di decisione in fase di training e restituendo in output la classe
che è moda statistica delle classi dei singoli alberi.
Random forest mitiga il problema dell’eccessiva profondità.
Effettua training su parti diverse dello stesso dataset considerando ad ogni split nel processo di
learning un sottoinsieme random delle feature.
Costruisce piccoli insiemi di alberi poco correlati sulla base delle caratteristiche prese in
considerazione.
DPARAMETRI VALUTATI
 Percentuale di istanze correttamente classificate
Confronta il valore della classe specificato nel test set quello fornito in output dalla predizione.
 Confusion matrix
Permette la visualizzazione delle performance di un algoritmo.
Predicted A Predicted B
118 12 Actual A
47 15 Actual B
#istanze = 192
#istanze classificate correttamente = 69%
DRISULTATI ~ A CHI?
Feature considerate: Review count, Friends, Useful, Fans, Èlite.
Classificatore: SMO
Training set: sia casi negativi che positivi [50K istanze].
Test set:
Yes No
50 21 Yes
0 111 No
Yes No
0 0 Yes
0 111 No
Solo casi negativiSia casi negativi che positivi
#istanze = 184
#istanze classificate correttamente = 89%
#istanze = 111
#istanze classificate correttamente = 100%
DRISULTATI ~ QUANDO? [PRIMO APPROCCIO]
Approccio a target: Ragazzi e Famiglie.
Feature [Ragazzi]  HasTv, GoodForGroups e Music.
Feature [Famiglie]  GoodForKids, BusinessParking e TableService.
Classificatori: SMO e Random Forest, con split del 80%
Training set: sia casi negativi che positivi [13K istanze].
DRISULTATI ~ QUANDO? [PRIMO APPROCCIO]
Yes No
958 290 Yes
657 541 No
Yes No
1000 248 Yes
684 514 No
SMORandom Forest
#istanze = 2466
#istanze classificate correttamente = 61%
#istanze = 2466
#istanze classificate correttamente = 62%
TARGET RAGAZZI
DRISULTATI ~ QUANDO? [PRIMO APPROCCIO]
Yes No
959 289 Yes
651 647 No
Yes No
1073 175 Yes
658 540 No
SMORandom Forest
#istanze = 2466
#istanze classificate correttamente = 66%
#istanze = 2466
#istanze classificate correttamente = 66%
TARGET FAMIGLIE
DRISULTATI ~ QUANDO? [PRIMO APPROCCIO]
Yes No
885 363 Yes
338 860 No
Yes No
915 333 Yes
411 787 No
SMORandom Forest
#istanze = 2466
#istanze classificate correttamente = 71%
#istanze = 2466
#istanze classificate correttamente = 70%
FEATURES SELECTION
Feature  BusinessParking, Ambience, GoodForMeal, WheelchairAccesible e #Review.
DRISULTATI ~ QUANDO? [SECONDO APPROCCIO]
Le classi diventano da {yes, no} a {yes, no, maybe}
Feature  Feature Selection
Classificatori  Random Forest e SMO, con split del 80%
Training set: sia casi negativi che positivi.
Yes No Maybe
832 129 278 Yes
99 521 98 No
269 168 233 Maybe
Yes No Maybe
977 262 0 Yes
112 606 0 No
384 286 0 Maybe
SMORandom Forest
#istanze = 2627
#istanze classificate correttamente = 60%
#istanze = 2627
#istanze classificate correttamente = 60%
 Idea!
Introdurre la logica fuzzy per valutare
grado con cui dare un coupon a un utente
grado con cui è consigliato distribuire un coupon in un certo mese.
 Dataset business – Alternativa
Testare la classificazione con approccio multi-label.
 NLP
Condurre analisi di altra natura (ex. Sentiment Analysis)
SVILUPPI FUTURI
Assegnare coupon significa valutare diverse scelte di marketing e considerare le caratteristiche
di un locale.
Lo studio condotto ha portato a risultati
ottimi per la selezione di consumatori interessati ai coupon
positivi per la scelta del momento propizio in cui rilasciarli.
Limitazioni
dataset non etichettato
assenza di attributi discriminanti relativi ai business
CONCLUSIONI
Machine Yelping

More Related Content

Similar to Machine Yelping

Lean Web Solutions with WP [versione italiana]
Lean Web Solutions with WP [versione italiana]Lean Web Solutions with WP [versione italiana]
Lean Web Solutions with WP [versione italiana]Carlo Beschi
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Power B: Cleaning data
Power B: Cleaning dataPower B: Cleaning data
Power B: Cleaning dataMarco Pozzan
 
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETMarco Zamana
 
Web Usability + Data
Web Usability + DataWeb Usability + Data
Web Usability + DataChiara Danese
 
Mario Incarnati - The power of data visualization
Mario Incarnati - The power of data visualizationMario Incarnati - The power of data visualization
Mario Incarnati - The power of data visualizationMeetupDataScienceRoma
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
 
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data AnalysisIntroduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data AnalysisVincenzo Manzoni
 
Nudo e crud - a Pimcore aperto
Nudo e crud - a Pimcore apertoNudo e crud - a Pimcore aperto
Nudo e crud - a Pimcore apertoLorenzo Nicoletti
 
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...GMSL S.r.l.
 
Industria 4.0 e gestione dei contenuti
Industria 4.0 e gestione dei contenutiIndustria 4.0 e gestione dei contenuti
Industria 4.0 e gestione dei contenutiKEA s.r.l.
 
LabTECH 2018 - Cultura Tecnica Passione tecnologica
LabTECH 2018 - Cultura Tecnica Passione tecnologicaLabTECH 2018 - Cultura Tecnica Passione tecnologica
LabTECH 2018 - Cultura Tecnica Passione tecnologicaFondazione Aldini Valeriani
 
Flavio atzeni smau mi 2013
Flavio atzeni smau  mi 2013Flavio atzeni smau  mi 2013
Flavio atzeni smau mi 2013Paradisi63
 
JugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningJugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningOnofrio Panzarino
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & AnalyticsDavide Mauri
 
Classificazione documenti spark_ml_ciuffa
Classificazione documenti spark_ml_ciuffaClassificazione documenti spark_ml_ciuffa
Classificazione documenti spark_ml_ciuffaDeep Learning Italia
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RGiuseppe Cramarossa
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009Massimiliano Dessì
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meetingguest67beeb9
 

Similar to Machine Yelping (20)

Lean Web Solutions with WP [versione italiana]
Lean Web Solutions with WP [versione italiana]Lean Web Solutions with WP [versione italiana]
Lean Web Solutions with WP [versione italiana]
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Power B: Cleaning data
Power B: Cleaning dataPower B: Cleaning data
Power B: Cleaning data
 
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NET
 
Web Usability + Data
Web Usability + DataWeb Usability + Data
Web Usability + Data
 
Mario Incarnati - The power of data visualization
Mario Incarnati - The power of data visualizationMario Incarnati - The power of data visualization
Mario Incarnati - The power of data visualization
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
Agile software lifecycle
Agile software lifecycleAgile software lifecycle
Agile software lifecycle
 
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data AnalysisIntroduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
 
Nudo e crud - a Pimcore aperto
Nudo e crud - a Pimcore apertoNudo e crud - a Pimcore aperto
Nudo e crud - a Pimcore aperto
 
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
 
Industria 4.0 e gestione dei contenuti
Industria 4.0 e gestione dei contenutiIndustria 4.0 e gestione dei contenuti
Industria 4.0 e gestione dei contenuti
 
LabTECH 2018 - Cultura Tecnica Passione tecnologica
LabTECH 2018 - Cultura Tecnica Passione tecnologicaLabTECH 2018 - Cultura Tecnica Passione tecnologica
LabTECH 2018 - Cultura Tecnica Passione tecnologica
 
Flavio atzeni smau mi 2013
Flavio atzeni smau  mi 2013Flavio atzeni smau  mi 2013
Flavio atzeni smau mi 2013
 
JugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningJugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learning
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & Analytics
 
Classificazione documenti spark_ml_ciuffa
Classificazione documenti spark_ml_ciuffaClassificazione documenti spark_ml_ciuffa
Classificazione documenti spark_ml_ciuffa
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-R
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meeting
 

Machine Yelping

  • 1. MACHINE ING INTELLIGENZA ARTIFICIALE 2016/2017 Prof. V. Deufemia Prof. G. Polese Enrica Loria Alessia Antelmi Martina Garofalo Maria Angela Pellegrino YELP
  • 2. YELP Cos’ è?  Un social network  Una guida online dove le persone si scambiano consigli e pareri circa luoghi visitati o attività svolte. La parola chiave in Yelp è REVIEW.  Yelp è interessato ad intrattenere rapporti con la comunità scientifica. Mette a disposizione dati su cui si possono applicare algoritmi di data mining, pianificazione economiche o urbanistiche, machine learning.
  • 3. DATASET Il dataset si presenta come file json distinti. Ognuno rappresenta una certa categoria  Utenti [1milione]  Business [144 mila] dislocati in 11 città  Recensioni [+4 milioni] Ed altre informazioni…  Tips ed immagini Non pertinenti al nostro studio.
  • 4. UTENTI { " user_id" : "id crittografato dell’utente", " name" : "nome utente", " review_count" : numero di recensioni, " yelping_since" : data nel formato AAAA -MM -DD, " friends" : ["un array di id crittografati degli utenti amici all’utente corrente"], " useful" : "numero di voti useful rilasciati dall’utente", " funny" : "numero di voti funny rilasciati dall’utente", " cool" : "numero di voti cool rilasciati dall’utente", " fans" : "numero di fan dell'utente corrente", " elite" : [" array di anni che l'utente corrente stato considerato elite"], " average_stars" : votazione media rilasciata in floating point, ad esempio 4.31, " compliment_... " : numero di complimenti … ricevuti dall’utente }
  • 5. BUSINESS { " business_id " : "id crittografato del business ", " name " : " nome del business ", " neighborhood " : " vicinato ", " city " : " città ", " state " : " stato ", //altre info relative alla localizzazione geografica " stars " : voto sotto forma di stelline arrotondate a half -stars , " review_count " : numero di review , " is_open " : 0/1 ( chiuso / aperto ), " attributes " : ["array di stringhe : ogni elemento e un attributo"], " categories " : ["array di stringhe di categorie a cui il business corrente e associato"], " hours " : ["array di stringhe che riportano gli orari di apertura"], " type " : " business " }
  • 6. REVIEW { " review_id ": "id crittografato della review", " user_id ": "id crittografato dell 'utente ", " business_id ": "id crittografato del business ", " stars ": voto sotto forma di stelline , arrotondate a half -stars , " date ": "data nel formato AAAA -MM -DD", " text ": "testo della review", " useful ": numero di voti che hanno ritenuto la review utile , " funny ": numero di voti che hanno ritenuto la review divertente , " cool ": numero di voti che hanno ritenuto la review cool , " type ": "review" }
  • 7. IL PROBLEMA QUANDO e A CHI dare un coupon promozionale. Fornire uno strumento per valutare quando sia più propizio dare un coupon e se esistono degli utenti interessati a sconti che farebbero fruttare l'investimento.
  • 8. LE SFIDE AFFRONTATE Dataset di Yelp non è etichettato File di gradi dimensioni Necessità di individuare un criterio di etichettamento
  • 9. 1. Filtrare e scomporre i business  Il filtro applicato ai business è relativo alla categoria (restaurant, pub, cafè, etc.)  Scomposizione in città 2. Scomporre le review in file di dimensioni minori  In funzione della città di appartenenza (inferita dal business associato) 3. Etichettare gli utenti  Criterio: COUPON  utenti che hanno scritto una review contenente le keyword coupon, voucher o koupon. NON COUPON  gli altri PREPROCESSING ~ UTENTI
  • 11. PREPROCESSING ~ UTENTI Filtro: selezione delle review che contengono le keyword coupon, koupon e voucher.
  • 13. 1PREPROCESSING ~ BUSINESS Dataset business etichettato id_business {info business} january … december Ex. jkqhwej-fwi {…} no … yes × 12 valori di output × classificazione multilabel  non supportato da weka (necessità di meka) id_business {info business} january id_business {info business} … id_business {info business} december Ex. jkqhwej-fwi {…} january no jkqhwej-fwi {…} … jkqhwej-fwi {…} december yes  1 valori di output  classificazione multivalue  supportato da weka
  • 14. 1PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO] Non Coupon Coupon Etichettare i business. Il dataset etichettato è costituito dalle informazioni del business associate al mese e alla classificazione.  Dataset cresce di dimensione  Unico valore di output da produrre Classi
  • 15. PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO]
  • 16. PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO] Pizza Restauran t CafèPub Ba r Gelato Wine Chocolatier s DessertTea BakeryCreperies IceCream Sushi Tapa s Pita Tacos Gluten-Free Vegeterian Fruit & Veggies Beer
  • 17. PREPROCESSING ~ BUSINESS [PRIMO APPROCCIO]
  • 18. PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO] Forse Coupon Non Coupon Coupon Si passa da una classificazione due valori ad una classificazione a tre.  Raffinamento della classificazione  Possibilità di estendere le informazioni del business
  • 19. PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO]
  • 20. Elaborazione: PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO] foreach(Business business) foreach(mese) avg = calcolo star media count review
  • 21. PREPROCESSING ~ BUSINESS [SECONDO APPROCCIO] Business COUPON: business nei mesi con review che contengono keyword coupon, koupon o voucher Business POSSIBILI coupon: business nei mesi con review con 1 o 5 stelle Business NON coupon : altri
  • 22.  id_business {info business} january id_business {info business} … id_business {info business} december PREPROCESSING ~ BUSINESS [ULTERIORI TEST]
  • 23.  id_business {info business} january #review_per_month star_avg_per_month id_business {info business} … id_business {info business} december #review_per_month star_avg_per_month  YES  business con review che contengono le keyword MAYBE  business nei mesi di picchi di minimo e massimo, in termini di affluenza NO  i rimanenti  YES  business nei mesi di picchi di minimo e massimo, in termini di affluenza NO  i rimanenti PREPROCESSING ~ BUSINESS [ULTERIORI TEST]
  • 24. Per tutte le operazioni di preprocessing è stato impiegato il framework computazionale Fork/Join.  Task Reader Gestione della lettura dalle delle review e il popolamento di due buffer in modo alternato.  Task Filter Filtro delle review legate ad un singola città. IMPLEMENTAZIONE A B
  • 26. DMACHINE YELPING ~ IL TOOL Processo computazionale 1. Training Apprendimento basato sul dataset generato dalla fase di preprocessing. 2. Predizione Classificazione di una nuova istanza fornita dall’utente.
  • 29. DMACHINE YELPING ~ QUANDO? [RAGAZZI]
  • 30. DMACHINE YELPING ~ QUANDO? [RAGAZZI]
  • 31. DMACHINE YELPING ~ QUANDO? [FAMIGLIE]
  • 32. DMACHINE YELPING ~ QUANDO? [FAMIGLIE]
  • 33. DWEKA  Waikato Environment for Knowledge Analysis, è un software per l'apprendimento automatico sviluppato nell'università di Waikato in Nuova Zelanda.  Usa un formato particolare : ARFF  Descrive una lista di istanze che condividono un insieme di attributi.  Header lista degli attributi con il relativo tipo  Dati lista di istanze separate da a capo @ relation <name> @attribute x numeric … @data
  • 34. DCLASSIFICATORI “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E. ” Tom Mitchell. Machine Learning 1997
  • 35. DSVM  Classe di macchine di apprendimento recentemente introdotte in letteratura.  Nella sua forma più semplice SVM è un iperpiano che separa un insieme di esempi positivi da un insieme di esempi negativi con il massimo margine.  È un tipo di classificatore lineare. Funzionano bene per problemi pratici, come la classificazione dei documenti e, più in generale, per i problemi con molte variabili. Migliore iperpiano? Quello che comporta la più grande separazione o margine tra le classi.
  • 36. DSVM IN WEKA  Implementato tramite SMO (Sequential minimal optimization) di John Platt.  Problema di SVM: algoritmi lenti, specialmente per problemi molto grandi.  La risposta di Platt è stata SMO, che è concettualmente semplice facile da implementare più veloce scala meglio su problemi difficili.
  • 37. DALBERI DI DECISIONE Nodo interno  Variabile Arco  Possibile valore per una proprietà Foglia  Il valore predetto per la variabile obiettivo a partire dai valori delle altre proprietà (classi)  Robusti rispetto all'introduzione di feature irrilevanti  Non variano a seguito di scaling × Eccessiva crescita in profondità (overfitting)
  • 38. DRANDOM FOREST  Metodo di ensemble learning opera costruendo una foresta di alberi di decisione in fase di training e restituendo in output la classe che è moda statistica delle classi dei singoli alberi. Random forest mitiga il problema dell’eccessiva profondità. Effettua training su parti diverse dello stesso dataset considerando ad ogni split nel processo di learning un sottoinsieme random delle feature. Costruisce piccoli insiemi di alberi poco correlati sulla base delle caratteristiche prese in considerazione.
  • 39. DPARAMETRI VALUTATI  Percentuale di istanze correttamente classificate Confronta il valore della classe specificato nel test set quello fornito in output dalla predizione.  Confusion matrix Permette la visualizzazione delle performance di un algoritmo. Predicted A Predicted B 118 12 Actual A 47 15 Actual B #istanze = 192 #istanze classificate correttamente = 69%
  • 40. DRISULTATI ~ A CHI? Feature considerate: Review count, Friends, Useful, Fans, Èlite. Classificatore: SMO Training set: sia casi negativi che positivi [50K istanze]. Test set: Yes No 50 21 Yes 0 111 No Yes No 0 0 Yes 0 111 No Solo casi negativiSia casi negativi che positivi #istanze = 184 #istanze classificate correttamente = 89% #istanze = 111 #istanze classificate correttamente = 100%
  • 41. DRISULTATI ~ QUANDO? [PRIMO APPROCCIO] Approccio a target: Ragazzi e Famiglie. Feature [Ragazzi]  HasTv, GoodForGroups e Music. Feature [Famiglie]  GoodForKids, BusinessParking e TableService. Classificatori: SMO e Random Forest, con split del 80% Training set: sia casi negativi che positivi [13K istanze].
  • 42. DRISULTATI ~ QUANDO? [PRIMO APPROCCIO] Yes No 958 290 Yes 657 541 No Yes No 1000 248 Yes 684 514 No SMORandom Forest #istanze = 2466 #istanze classificate correttamente = 61% #istanze = 2466 #istanze classificate correttamente = 62% TARGET RAGAZZI
  • 43. DRISULTATI ~ QUANDO? [PRIMO APPROCCIO] Yes No 959 289 Yes 651 647 No Yes No 1073 175 Yes 658 540 No SMORandom Forest #istanze = 2466 #istanze classificate correttamente = 66% #istanze = 2466 #istanze classificate correttamente = 66% TARGET FAMIGLIE
  • 44. DRISULTATI ~ QUANDO? [PRIMO APPROCCIO] Yes No 885 363 Yes 338 860 No Yes No 915 333 Yes 411 787 No SMORandom Forest #istanze = 2466 #istanze classificate correttamente = 71% #istanze = 2466 #istanze classificate correttamente = 70% FEATURES SELECTION Feature  BusinessParking, Ambience, GoodForMeal, WheelchairAccesible e #Review.
  • 45. DRISULTATI ~ QUANDO? [SECONDO APPROCCIO] Le classi diventano da {yes, no} a {yes, no, maybe} Feature  Feature Selection Classificatori  Random Forest e SMO, con split del 80% Training set: sia casi negativi che positivi. Yes No Maybe 832 129 278 Yes 99 521 98 No 269 168 233 Maybe Yes No Maybe 977 262 0 Yes 112 606 0 No 384 286 0 Maybe SMORandom Forest #istanze = 2627 #istanze classificate correttamente = 60% #istanze = 2627 #istanze classificate correttamente = 60%
  • 46.  Idea! Introdurre la logica fuzzy per valutare grado con cui dare un coupon a un utente grado con cui è consigliato distribuire un coupon in un certo mese.  Dataset business – Alternativa Testare la classificazione con approccio multi-label.  NLP Condurre analisi di altra natura (ex. Sentiment Analysis) SVILUPPI FUTURI
  • 47. Assegnare coupon significa valutare diverse scelte di marketing e considerare le caratteristiche di un locale. Lo studio condotto ha portato a risultati ottimi per la selezione di consumatori interessati ai coupon positivi per la scelta del momento propizio in cui rilasciarli. Limitazioni dataset non etichettato assenza di attributi discriminanti relativi ai business CONCLUSIONI