ALLisCHAOS Δημοσ. 7 Ιουλίου 2016 Δημοσ. 7 Ιουλίου 2016 Καλησπέρα, έχω διάφορα καταστήματα τα οποία βαθμολογούνται απο χρήστες. Θέλω να δώσω τη δυνατότητα στους χρήστες να βλέπουν τα καταστήματα βάση της δημοτικότητας τους. Και κάπου εδώ ξεκινάει η αποροία. Πως μπορουμε να βγάλουμε μια συνάρτηση/αλγόριθμο/εξίσωση όπως θέλετε πείτε το η οποία θα υπολογίζει πόσο δημοφιλές είναι ένα κατάστημα βάση της βαθμολογίας του και τον αριθμό των βαθμολογιών? Αυτό που έχω σκεφτεί μέχρι στιγμής είναι: popularity = general_rate * rate_number * suntelestis Αυτός ο συντελεστής θα εξαρτάται απο το general_rate του καταστήματος, κάπως έτσι δλδ: 1-1.9 stars rating ----> 0.5 suntelestis 2-2.9 stars rating ----> 1 suntelestis 3-3.9 stars rating ----> 1.5 suntelestis 4-5 stars rating ----> 2 suntelestis και όσο μεγαλύτερο βγαίνει το popularity τόσο πιο μεγάλη θα ναι κ η δημοτικότητα του καταστήματοςΘα μπορούσε να υπάρχει και ένας ακόμη συντελεστης ανάλογα με τον αριθμό των βαθμολογιων ίσως.Έχετε να προτείνετε/ξέρετε κάτι καλύτερο?
Haldol Δημοσ. 7 Ιουλίου 2016 Δημοσ. 7 Ιουλίου 2016 Η βαθμολογία δεν έχει καμία (μα καμία όμως) σχέση με τη δημοτικότητα. Είναι απλά το πόσο ικανοποιημένοι έχουν μείνει οι πελάτες. Για να το καταλάβεις αυτό καλύτερα, σκέψου το e-shop και το msystems. Το πρώτο έχει πολύ μεγαλύτερη δημοτικότητα (με τον περισσότερο κόσμο να γκρινιάζει γι αυτό), ενώ το δεύτερο πιο ικανοποιημένους πελάτες (το γνωρίζουν όμως λιγότεροι). Ίσως θα έπρεπε να προσπαθήσεις να βγάλεις κάποιο συμπέρασμα από τα hits του καταστήματος.
parsifal Δημοσ. 7 Ιουλίου 2016 Δημοσ. 7 Ιουλίου 2016 Από τα δεδομένα που έχεις, το popularity συναρτάται άμεσα από τον αριθμό των αξιολογήσεων και μόνο. Οτιδήποτε άλλο βάλεις στη σχέση μεταξύ τους, θα εξάγεις κάτι σαν «σταθμισμένο» popularity (αξιοπιστία; ) Το θέμα του συντελεστή είναι arbitrary απόφαση. Θέλεις γραμμική σχέση ως προς το popularity με μέγιστο συντελεστή 2,0; Γιατί όχι 1,0; Γιατί όχι λογαριθμική σχέση; Είναι θέμα εκτίμησης: το εκάστοτε top κατάστημά σου πόσο εκτιμάς πως πρέπει το πολύ να «προικοδοτηθεί» σε σχέση με το τυχαίο πρωτοεμφανιζόμενο κατάστημα; Υπάρχει και μία άλλη οδός που σε «απελευθερώνει» από το να εφευρίσκεις δικά σου metrics, δίνει στον χρήστη του συστήματος αποτελέσματα πιο κοντά σε αυτό που θέλει, είναι όμως λίγο bold στην υλοποίηση: ο κάθε χρήστης του συστήματός σου να διαμορφώνει το δικό του προφίλ με weights τα οποία λαμβάνεις υπ' όψιν σου όταν πρέπει: 1. Από το 1-10, πόσο σημαντικό θεωρείτε το κατάστημα που θα επιλέξετε να έχει μεγάλο αριθμό πελατών; __ 2. Από το 1-10, πόσο σημαντικό θεωρείτε το κατάστημα που θα επιλέξετε να έχει ευχαριστημένους πελάτες; __ ή κάτι σαν το παραπάνω... 1
defacer Δημοσ. 8 Ιουλίου 2016 Δημοσ. 8 Ιουλίου 2016 Δεν το ξεκαθαρίζεις αλλά γενικά λέγοντας "popularity" είναι παραδεκτό πως μπαίνει και η χρονική συνιστώσα μέσα. Αν δεν έμπαινε καθόλου ο χρόνος τότε ο οποιοσδήποτε αλγόριθμος μπορεί να μας έβγαζε (τελείως τυχαίο παράδειγμα) τον MJ ως πιο popular παίκτη μπάσκετ μέχρι το 2100 που θα εμφανιστεί κάποιος ακόμα καλύτερος, αποτέλεσμα που είναι "εμφανώς λάθος". Υπάρχουν διάφορες γνωστές προσεγγίσεις από μεγάλα website (Reddit το πιο γνωστό) τις οποίες μπορείς να βρεις online, γενικά ψιλοόλες είναι της μορφής score = f® * f(t) ή score = f® + f(t) όπου f® συνάρτηση βάσει του rating και f(t) βάσει του χρόνου. Για τη δική σου περίπτωση τελείως μαγειρευτικά ας πούμε score = R * log(C/Κ1) / T^Κ2 όπου R ο μέσος όρος των αξιολογήσεων του καταστήματος C ο αριθμός των αξιολογήσεων (ένα κατάστημα με πολλές είναι καλύτερο από κατάστημα με λιγότερες, αλλά ο μέσος όρος είναι πολύ σημαντικότερος) Τ ο χρόνος (σε κάποια μονάδα) που υπάρχει το κατάστημα καταχωρημένο Κ1, Κ2 σταθερές που μπορείς να πειράξεις κατα βούληση Φυσικά μπορείς να τα μαγειρέψεις και πολύ διαφορετικά ανάλογα τις προτιμήσεις σου, θέλει μόνο να σκεφτείς τι μορφή θα έχουν οι f® και f(t) για να πετύχεις το επιθυμητό αποτέλεσμα (π.χ. αν ήταν για news θα ήθελες η f(t) να πέφτει αρκετά απότομα, you get the idea). 4
SIMkartaUK Δημοσ. 8 Ιουλίου 2016 Δημοσ. 8 Ιουλίου 2016 Έχει καμιά σχέση με τον αλγόριθμο PageRank της Google που βγάζει τα αποτελέσματα με βάση τη δημοφιλία τους?
Επισκέπτης Δημοσ. 8 Ιουλίου 2016 Δημοσ. 8 Ιουλίου 2016 Το PageRank χρησιμοποιεί καμιά διακοσαριά factors, συνυπολογίζοντας πόσα sites έχουν link στο συγκεκριμένο κι άλλα πολλά. Εδώ μιλάμε γιατί κάτι απλούστερο.
ALLisCHAOS Δημοσ. 9 Ιουλίου 2016 Μέλος Δημοσ. 9 Ιουλίου 2016 Αρχικά thanks! Ισως να μην έγινα πολύ κατανοητός και να μπέρδεψε ο όρος popularity. Πάμε ένα-ένα Η βαθμολογία δεν έχει καμία (μα καμία όμως) σχέση με τη δημοτικότητα. Είναι απλά το πόσο ικανοποιημένοι έχουν μείνει οι πελάτες. Για να το καταλάβεις αυτό καλύτερα, σκέψου το e-shop και το msystems. Το πρώτο έχει πολύ μεγαλύτερη δημοτικότητα (με τον περισσότερο κόσμο να γκρινιάζει γι αυτό), ενώ το δεύτερο πιο ικανοποιημένους πελάτες (το γνωρίζουν όμως λιγότεροι). Ίσως θα έπρεπε να προσπαθήσεις να βγάλεις κάποιο συμπέρασμα από τα hits του καταστήματος. Στην δικιά μου περίπτωση είναι το μόνο στοιχείο που έχω για τα καταστήματα από τους πελάτες (η βαθμολογία) οπότε αναγκαστικά πρέπει να πάω με αυτό. Από τα δεδομένα που έχεις, το popularity συναρτάται άμεσα από τον αριθμό των αξιολογήσεων και μόνο. Οτιδήποτε άλλο βάλεις στη σχέση μεταξύ τους, θα εξάγεις κάτι σαν «σταθμισμένο» popularity (αξιοπιστία; ) Το θέμα του συντελεστή είναι arbitrary απόφαση. Θέλεις γραμμική σχέση ως προς το popularity με μέγιστο συντελεστή 2,0; Γιατί όχι 1,0; Γιατί όχι λογαριθμική σχέση; Είναι θέμα εκτίμησης: το εκάστοτε top κατάστημά σου πόσο εκτιμάς πως πρέπει το πολύ να «προικοδοτηθεί» σε σχέση με το τυχαίο πρωτοεμφανιζόμενο κατάστημα; Υπάρχει και μία άλλη οδός που σε «απελευθερώνει» από το να εφευρίσκεις δικά σου metrics, δίνει στον χρήστη του συστήματος αποτελέσματα πιο κοντά σε αυτό που θέλει, είναι όμως λίγο bold στην υλοποίηση: ο κάθε χρήστης του συστήματός σου να διαμορφώνει το δικό του προφίλ με weights τα οποία λαμβάνεις υπ' όψιν σου όταν πρέπει: 1. Από το 1-10, πόσο σημαντικό θεωρείτε το κατάστημα που θα επιλέξετε να έχει μεγάλο αριθμό πελατών; __ 2. Από το 1-10, πόσο σημαντικό θεωρείτε το κατάστημα που θα επιλέξετε να έχει ευχαριστημένους πελάτες; __ ή κάτι σαν το παραπάνω... Για το θέμα του συντελεστή ισχύει, δε ξέρω τον αριθμό που πρέπει να χει(τυχαία έβαλα εδώ νούμερα) απλά θα έκανα κάποιες δοκιμές και ότι έβλεπα πως καθόταν καλύτερα θα επέλεγα. Τη 2η προσέγγιση σου δεν την είχα σκεφτεί και φένεται ενδιαφέρον ίσως θα μπορούσε να προστεθεί στο μέλλον κάποιο τετοιο feature αλλά αρχικά νομίζω θέλω κάτι πιο default το οποίο ας μη δινει και 100% ακριβές αποτελέσματα. Δεν το ξεκαθαρίζεις αλλά γενικά λέγοντας "popularity" είναι παραδεκτό πως μπαίνει και η χρονική συνιστώσα μέσα. Αν δεν έμπαινε καθόλου ο χρόνος τότε ο οποιοσδήποτε αλγόριθμος μπορεί να μας έβγαζε (τελείως τυχαίο παράδειγμα) τον MJ ως πιο popular παίκτη μπάσκετ μέχρι το 2100 που θα εμφανιστεί κάποιος ακόμα καλύτερος, αποτέλεσμα που είναι "εμφανώς λάθος". Υπάρχουν διάφορες γνωστές προσεγγίσεις από μεγάλα website (Reddit το πιο γνωστό) τις οποίες μπορείς να βρεις online, γενικά ψιλοόλες είναι της μορφής score = f® * f(t) ή score = f® + f(t) όπου f® συνάρτηση βάσει του rating και f(t) βάσει του χρόνου. Για τη δική σου περίπτωση τελείως μαγειρευτικά ας πούμε score = R * log(C/Κ1) / T^Κ2 όπου R ο μέσος όρος των αξιολογήσεων του καταστήματος C ο αριθμός των αξιολογήσεων (ένα κατάστημα με πολλές είναι καλύτερο από κατάστημα με λιγότερες, αλλά ο μέσος όρος είναι πολύ σημαντικότερος) Τ ο χρόνος (σε κάποια μονάδα) που υπάρχει το κατάστημα καταχωρημένο Κ1, Κ2 σταθερές που μπορείς να πειράξεις κατα βούληση Φυσικά μπορείς να τα μαγειρέψεις και πολύ διαφορετικά ανάλογα τις προτιμήσεις σου, θέλει μόνο να σκεφτείς τι μορφή θα έχουν οι f® και f(t) για να πετύχεις το επιθυμητό αποτέλεσμα (π.χ. αν ήταν για news θα ήθελες η f(t) να πέφτει αρκετά απότομα, you get the idea). Νομίζω κάτι τέτοιο θα χρησιμοποιήσω! Επίσης δεν είχα σκεφτεί καθόλου το παράγοντα χρόνο, κάτι το οποίο θέλω!
Lanike71 Δημοσ. 9 Ιουλίου 2016 Δημοσ. 9 Ιουλίου 2016 Και μία ερώτηση χαζή: Μήπως στην εξίσωση θα έπρεπε να μπαίνει και ένας δείκτης "τάση" ; Προς τα που τείνει δηλαδή η βαθμολογία; Αν υποθέσουμε ότι έχουμε ένα κατάστημα με 1500 αξιολογήσεις και στις 1000 πρώτες αξιολογήσεις η βαθμολογία είναι 6,5 και στις τελευταίες 500 είναι 8,3, αυτό δε σημαίνει κάτι; Ότι δηλαδή έχουμε μία τάση προς το καλύτερο που ίσως είναι ένας λόγος να εμπιστευτούμε ένα κατάστημα;
ALLisCHAOS Δημοσ. 9 Ιουλίου 2016 Μέλος Δημοσ. 9 Ιουλίου 2016 (επεξεργασμένο) Και μία ερώτηση χαζή: Μήπως στην εξίσωση θα έπρεπε να μπαίνει και ένας δείκτης "τάση" ; Προς τα που τείνει δηλαδή η βαθμολογία; Αν υποθέσουμε ότι έχουμε ένα κατάστημα με 1500 αξιολογήσεις και στις 1000 πρώτες αξιολογήσεις η βαθμολογία είναι 6,5 και στις τελευταίες 500 είναι 8,3, αυτό δε σημαίνει κάτι; Ότι δηλαδή έχουμε μία τάση προς το καλύτερο που ίσως είναι ένας λόγος να εμπιστευτούμε ένα κατάστημα; Η ταση θα μπορούσε να εκφράζετε από τη σταθερά Κ1 η οποία κάθε φορά θα είναι κ άλλη(ανάλογα τον ΜΟ των βαθμολογιών) ? H το Κ1 εξαρτάται από το πλήθος των βαθμολογιών? Άρα θα μπορούσε να υπάρχει κ μια σταθερά γι αυτό που λέει ο #Lanike71 Επεξ/σία 9 Ιουλίου 2016 από ALLisCHAOS
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα