Πολυτεχνείο Κρήτης Σχολή Ηλεκτρονικών Μηχανικών Και Μηχανικών Η/Υ ΠΛΗ 53 Αυτόνομοι Πράκτορες Εύρεση του utility χρηστών με χρήση Markov chain Monte Carlo Παπίλαρης Μιχαήλ Άγγελος 29349
Περίληψη Η εργασία αυτή έχει ως σκοπό την εξαγωγή των προτιμήσεων (utility) χρηστών ώστε να χρησιμοποιηθούν για την δημιουργία εξατομικευμένων προτάσεων για ένα σύστημα κράτησης ξενοδοχείων. Αναλυτικότερα, για τις ανάγκες των πειραμάτων δημιουργήσαμε χρήστες των οποίων το utility function είναι linearly additive. Πιο συγκεκριμένα το Utility των χρηστών αποτελείται από subutilities όπως είναι η προτίμηση του κόστους ανα βραδιά που είναι διατεθειμένος να δώσει ένας χρήστης για ένα ξενοδοχείο (u(price)), ο αριθμός των αστεριών που προτιμάει να έχει ένα ξενοδοχείο (u(stars)), το πόσο κοντά βρίσκεται στο κέντρο της πόλης (u(region)) και το πόσο υψηλή βαθμολογία (user ratings) έχει το ξενοδοχείο από άλλους χρήστες (u(ratings)). Πολλές φορές ο χρήστης δεν είναι σε θέση να ποσοτικοποιήσει τις προτιμήσεις του. Για παράδειγμα είναι δύσκολο να προσδιορίσει πόση σημασία δίνει στα user ratings για ένα ξενοδοχείο έτσι οι αποφάσεις που καλείται να πάρει στο σύστημά μας είναι πιο γενικές. Ο χρήστης καλείται να κάνει κάποιες επιλογές βάσει των προτιμήσεων του όπως για παράδειγμα αν προτιμάει ξενοδοχεία με χαμηλή, μέση ή υψηλή τιμή, αν δίνει μεγάλη βαρύτητα στα user ratings ή όχι, αν προτιμάει ξενοδοχεία με πολλά ή λίγα αστέρια. Οι επιλογές αυτές αναπαρίστανται στο σύστημα μέσου δένδρου απόφασης (decision tree). Μέσω των επιλογών που κάνει εξάγουμε κάποια constraints (Uc). Έτσι η παρατήρηση των επιλογών που κάνει ο χρήστης και η εξαγωγή των constraints χρησιμοποιούνται ως στοιχεία για την ενημέρωση του prior distribution έτσι ώστε να εξάγουμε το posterior distribution το οποίο θα είναι πιο κοντά στο πραγματικό utility του χρήστη. Για την εξαγωγή του posterior distribution έγινε χρήση του αλγορίθμου Markov Chain Monte Carlo και πιο συγκεκριμένα χρησιμοποιήσαμε μια παραλλαγή του Metropolis - Hastings αλγόριθμο των οποίο περιγράφω αναλυτικότερα παρακάτω. Simulated Users Για την διεξαγωγή των πειραμάτων κατασκευάστηκαν Users, όπου κάναμε την υπόθεση ότι το Utility function τους είναι linearly additive. m U(l) = a l,j u j j= Για τις ανάγκες της συγκεκριμένης άσκησης κάναμε την υπόθεση ότι κάθε user διαθέτει τέσσερα sub utilities. Πιο συγκεκριμένα το κόστος που είναι διατεθειμένος να πληρώσει σε ένα ξενοδοχείο για ένα βράδυ, το πλήθος των αστεριών που προτιμά να έχει ένα ξενοδοχείο, την προτίμηση για την απόσταση του ξενοδοχείου από το κέντρο της πόλης και τέλος το πόσο των ενδιαφέρουν τα user ratings που έχει ένα ξενοδοχείο. Έτσι δημιουργήσαμε τα πραγματικά sub utility των χρηστών παίρνοντας sample από τις ανάλογες κατανομές με τον παρακάτω τρόπο.
Δημιουργία του πραγματικού utility των χρηστών: u(price) : Για τον κάθε user αρχικά παίρνουμε ένα sample από μια Burr type XII distribution με παραμέτρους c=3 και k=. Αυτό το sample αντιπροσωπεύει την προτίμηση τιμής που έχει ο χρήστης για ένα ξενοδοχείο/ημέρα..5 Burr Distribution c = 3, k =.5 2 2.5 3 3.5 4 4.5 5 u(region) : Στη συνέχεια κάνουμε δειγματοληψία από μια beta distribution με παραμέτρους α= και β=.5 με σκοπό να εξάγουμε την προτίμηση που έχει ο χρήστης για την απόσταση του ξενοδοχείου από το κέντρο της πόλης..5 Beta Distribution a = b =.5..2.3.4.6.7.8.9 u(stars) : Για την εξαγωγή της προτίμησης των αστεριών ενός ξενοδοχείου χρησιμοποίησα 3 Beta distributions. Πιο συγκεκριμένα αν ο χρήστης διαθέτει υψηλό ποσό για την διαμονή/ημέρα τότε αναμένεται και να αναζητά ξενοδοχείο με πολλά αστέρια (>=4) και έτσι κάνω δειγματοληψία από μια Beta(8,2), αν ο χρήστης διαθέτει χαμηλό ποσό για την διαμονή
του ανά ημέρα τότε παίρνω ένα sample από μια Beta(2,8) γιατί ο χρήστης αναμένετε να μην έχει υψηλές προσδοκίες για τον αριθμό των αστεριών. Σε διαφορετική περίπτωση δειγματοληπτώ μια Beta(8,8). 4 3.5 3 Beta Distribution a = 8 b = 2 a = 2 b = 8 a = 8 b = 8 2.5 2.5..2.3.4.6.7.8.9 u(ratings) : Τέλος χρησιμοποιώ μια Beta distribution με παραμέτρους α=8 και b=2 για να εξάγω την προτίμηση των χρηστών σε σχέση με τα user ratings που έχει ένα ξενοδοχείο. 4 3.5 Beta Distribution a = 8 b = 2 3 2.5 2.5..2.3.4.6.7.8.9 * Όλοι οι χρήστες αποθηκεύονται σε μία βάση δεδομένων και όλες οι προτιμήσεις (sub - utilities) τους είναι κανονικοποιημένες στο διάστημα [ ].
Decision Tree Για την αναπαράσταση των επιλογών των χρηστών επέλεξα το δένδρο απόφασης. Το πρώτο node του δένδρου αφορά την προτίμηση τιμής και διαθέτει τρία παιδιά. Έτσι ο χρήστης μπορεί να επιλέξει χαμηλή, μεσαία ή υψηλή ανάλογα με το u(price) που διαθέτει. Στη συνέχεια καλείται να επιλέξει κατά πόσο των ενδιαφέρει το ξενοδοχείο που επιθυμεί να βρίσκεται κοντά στο κέντρο ή δεν έχει ιδιαίτερη προτίμηση. Μετά επιλέγει αν επιθυμεί το ξενοδοχείο να έχει πάνω από έναν αριθμό αστεριών (αυτός ο αριθμός μεταβάλλεται ανάλογα με την επιλογή που έκανε στο πρώτο βήμα της επιλογής τιμής/ βράδυ γιατί υποθέτουμε ότι ο user είναι rational και για παράδειγμα δεν έχει την απαίτηση να διανυκτερεύσει σε ξενοδοχείο πέντε αστέρων ενώ ταυτόχρονα θέλει να δώσει και λίγα χρήματα). Τέλος ο χρήστης καλείται να επιλέξει αν δίνει μεγάλη βαρύτητα στα user rating που διαθέτει ένα ξενοδοχείο ή δεν αποτελεί πρωτεύων ζήτημα. Παρακάτω παρουσιάζεται το decision tree:
Αφού ο χρήστης κάνει τις επιλογές του, εξάγουμε ορισμένα constarints και έτσι δημιουργούμε το Uc το οποίο χρησιμοποιούμε στη συνέχεια στον αλγόριθμο Markov Chain Monte Carlo, σε συνδυασμό με το prior distribution με σκοπό να αποκτήσουμε το posterior. Markov Chain Monte Carlo Για την εξαγωγή του posterior distribution το οποίο δημιουργείται διασχίζοντας το σύνολο Uc το οποίο αποτελείται από τα constraints που έχουμε πάρει μέσω της παρατήρησης των επιλογών που έκανε ο χρήστης (και αποτελεί υπερσύνολο του πραγματικού utility του χρήστη), και στην prior dstribution. Αναλυτικότερα χρησιμοποιήσαμε μία παραλλαγή του Metropolis - Hastings αλγορίθμου που βρίσκεται στο paper Learning an Agent s Utility Function by Observing Behavior(http://ai.stanford.edu/users/koller/Papers/Chajewska+al:ICML.pdf ). Αρχικά δημιουργήσαμε ένα regular grid σε ένα m - διάστατο κύβο [, ] m. Αυτό το grid ορίζει μια διαμέριση από [, ] m σε κύβους, όπου m είναι το πλήθος των sub-utilities. Η διαβάθμιση του Grid επιλέξαμε να είναι.2. Έτσι έχουμε για κάθε διάσταση 5 διαβαθμίσεις και συνολικά επειδή έχουμε τέσσερις διαστάσεις υπάρχουν 6.25. υπέρ κύβοι (hyper-cubes). Αρχικοποίηση και Burn In phase πρώτου sample Αρχικοποιούμε το πρώτο sample για την κάθε διάσταση να έχει τιμή ίση με το μέσο της τιμής min και max (constraints) που έχουμε πάρει από την παρατήρηση των επιλογών του εκάστοτε χρήστη. Επειδή (δεν είναι το χειρότερο σημείο που μπορεί να ξεκινήσει ο αλγόριθμος) δεν αποτελεί το καλύτερο σημείο εκκίνησης και γι αυτό το λόγο προσθέσαμε στον αλγόριθμο μία burn in phase στην οποίο τρέχει ο αλγόριθμος MCMC 3 φορές για να βρει ένα καλύτερο (με μεγαλύτερη πιθανότητα) σημείο εκκίνησης έτσι ώστε ο αλγόριθμος να καλύψει γρηγορότερα (με λιγότερα iterations) την κατανομή μας. Συλλογή δειγμάτων Στη συνέχεια τρέχουμε τον MCMC αλγόριθμο για να συλλέξουμε δείγματα. Χρησιμοποιήσαμε μια μεταβλητή που την ονόμασα lag και έτσι καθορίζω μετά από πόσα iterations του αλγορίθμου θα κρατήσω το επόμενο sample. Σε αυτή την μεταβλητή έθεσα την τιμή, δηλαδή ανά iteration του αλγορίθμου κρατάμε ένα sample και έτσι η δειγματοληψία που κάνουμε είναι πιο αραιή. Αλγόριθμος (MCMC steps) Ο αλγόριθμος αποτελείται από τα εξής βήματα : Ξεκινάμε από τη τρέχουσα τοποθεσία στο πλέγμα x(t-) Διαλέγουμε το υποψήφιο δείγμα με τον εξής τρόπο: Με πιθανότητα κρατάμε το δείγμα x(t-)
Με πιθανότητα το νέο sample επιλέγεται ομοιόμορφα ανάμεσα από του x(t-) 2*m γείτονες, έτσι ώστε για κάθε γείτονα του η πιθανότητα επιλογής είναι /(4*m) Ελέγχουμε αν το νέο sample βρίσκεται έξω από το σύνολο U C, αν βρίσκεται έξω τότε κρατάμε το x(t-) σε διαφορετική περίπτωση δεχόμαστε το νέο sample με πιθανότητα min[, p(new sample)/p(x(t-)) ] Έτσι μετά τον αλγόριθμο MCMC έχουμε πάρει samples από το posterior distribution τα οποία μπορούμε να χρησιμοποιήσουμε για να αποκτήσουμε μία προσέγγιση του πραγματικού utility του χρήστη. Πειράματα Αρχικά δημιουργήσαμε ένα user (η δημιουργία των προτιμήσεων του έγινε με τον τρόπο που περιγράφεται στην ενότητα Simulated Users) του οποίου οι πραγματικές προτιμήσεις (sub - utilities) φαίνονται παρακάτω : User U(price) :.627556224259 U(region) :.4498694232687 U(stars) :.6955498749498 U(ratings) :.83898378795297 Στη συνέχεια παρατηρώντας τις επιλογές που έκανε ο χρήστης στο σύστημα μας, εξήγαμε κάποια constraints τα οποία θα τα χρησιμοποιήσουμε κατά την διάρκεια της δειγματοληψία έτσι ώστε τα δείγματα που θα πάρουμε από Markov Chain Monte Carlo αλγόριθμο να προέρχονται από το posterior distribution. Ως posterior distribution χρησιμοποιήσαμε μια beta κατανομή, με παραμέτρους α= 8 και b= 2 και για τις τέσσερεις διαστάσεις. 4 3.5 Beta Distribution a = 8 b = 2 3 2.5 2.5..2.3.4.6.7.8.9
Για λόγους αναπαράστασης στο παρακάτω γράφημα φαίνονται τα samples που πήραμε μόνο από τα τρία sub-utilitys. McMc Samples.7.6 region.4.3.2.8.6 stars.4.2.4 Price.6.7.8 Στο παρακάτω γράφημα οι κόκκινες και μπλε διακεκομμένες γραμμές υποδηλώνουν την περιοχή των ορίων που έχουμε βγάλει από την παρατήρηση των επιλογών του χρήστη. Ακόμα όπως παρατηρούμε όλα τα samples που πήραμε από των αλγόριθμο δεν παραβιάζουν αυτά τα constraints. Τέλος το σημείο με κόκκινο χρώμα και αστερίσκο(*) αναπαριστούμε το πραγματικό utility του χρήστη και παρατηρούμε ότι στη συγκεκριμένη περιοχή υπάρχει υψηλή πυκνότητα από samples. McMc Samples.9.8.7.6 stars.4.3.2. McMc Samples minpriceconstraint maxpriceconstraint minstarsconstraint maxstarsconstraint TrueUserUtility..2.3.4.6.7.8.9 Price