masteripper Δημοσ. 9 Δεκεμβρίου 2021 Δημοσ. 9 Δεκεμβρίου 2021 (επεξεργασμένο) Γεια χαρά Σίγουρα μια μάλλον περίεργη ερώτηση αλλά ... Δοκιμάζω κάποιους Classifiers σε δεδομένα που το τελικό αποτέλεσμα είναι 0 ή 1 Το πρόβλημα είναι ότι κυμαίνονται ανάμεσα 40% - 50% επιτυχία πρόβλεψης σχεδόν με ότι παραμέτρους και να βάλω. Αλλά λόγω της φύσεως του αποτελέσματος σκεφτόμουν ότι εαν π.χ χαμήλωνα το accuracy στο 20% περίπου θα μπορούσα απλώς να πάρω το αντίθετο των προβλέψεων και να φτάσω ας πούμε περίπου 80% επιτυχίας πρόβλεψης. Μια 1η σκέψη θα ήταν να κάνω "μαύρα - ασπρα" στο training αλλά πιστεύω ότι το πιο σωστό είναι να γίνει το training οπως είναι τα δεδομένα και μετά "κάπως" να πειράξω τις παραμέτρους και να "χαντακώσω" την πρόβλεψη. Καμμιά ιδέα Επεξ/σία 9 Δεκεμβρίου 2021 από masteripper
DrKo Δημοσ. 9 Δεκεμβρίου 2021 Δημοσ. 9 Δεκεμβρίου 2021 8 λεπτά πριν, masteripper είπε Γεια χαρά Σίγουρα μια μάλλον περίεργη ερώτηση αλλά ... Δοκιμάσω κάποιους Classifiers σε δεδομένα που το τελικό αποτέλεσμα είναι 0 ή 1 Το πρόβλημα είναι ότι κυμαίνονται ανάμεσα 40% - 50% επιτυχία πρόβλεψης σχεδόν με ότι παραμέτρους και να βάλω. Αλλά λόγω της φύσεως του αποτελέσματος σκεφτόμουν ότι εαν π.χ χαμήλωνα το accuracy στο 20% περίπου θα μπορούσα απλώς να πάρω το αντίθετο των προβλέψεων και να φτάσω ας πούμε περίπου 80% επιτυχίας πρόβλεψης. Μια 1η σκέψη θα ήταν να κάνω "μαύρα - ασπρα" στο training αλλά πιστεύω ότι το πιο σωστό είναι να γίνει το training οπως είναι τα δεδομένα και μετά "κάπως" να πειράξω τις παραμέτρους και να "χαντακώσω" την πρόβλεψη. Καμμιά ιδέα Τι ακριβώς εννοείς με το "Classifiers" και με τι αλγόριθμους είναι υλοποιημένοι; Δηλαδή, έχεις κάποιους pre-trained classifiers που χρησιμοποιείς ή εκπαιδεύεις νέους; Μετά, έχεις τσεκάρει εάν το dataset σου είναι balanced; Πώς μετράς την επιτυχία; Δηλαδή, χρησιμοποιείς accuracy ή κάποιο άλλο metric; Υ.Γ. Γενικά, αυτό που λες δεν είναι ενδεδειγμένο (expressed με ένα mild statement).
masteripper Δημοσ. 9 Δεκεμβρίου 2021 Μέλος Δημοσ. 9 Δεκεμβρίου 2021 Ας πάρουμε την περίπτωση 1 πολύ γνωστού Classifier :SVM Το τρέχω και το prediction κυμαίνεται μεταξύ 40% -50% svclassifier = SVC(kernel='rbf') svclassifier.fit(X_train, y_train) svm_pred = svclassifier.predict(X_test) svm_accuracy = accuracy_score(y_test, svm_pred) Υπάρχει τρόπος να επηρρέασω αυτό το Prediction ωστε να είναι "χαμηλότερο" χωρίς να πειράξω το fit ? Παραθέτω για παράδειγμα το αποτέλεσμα και την πρόβλεψη (επιτυχία 48%) 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1
DrKo Δημοσ. 9 Δεκεμβρίου 2021 Δημοσ. 9 Δεκεμβρίου 2021 (επεξεργασμένο) @masteripper Υπάρχει ένας σκασμός παραμέτρων που επηρεάζουν την απόδοση. Γενικά, το να προσπαθήσεις να κάνεις το μοντέλο σου να είναι "λάθος" και μετά να πεις "ΟΚ, αφού είναι 100% λάθος, τότε παίρνω τα αντίστροφα και είναι 100% σωστά", είναι 100% λάθος. Εάν θέλεις να αυξήσεις την απόδοση του μοντέλου σου, δεν είναι ο σωστός δρόμος αυτός. Βασικά, είναι από τους πιο λάθος δρόμους. Εάν θέλεις βοήθεια, προσωπικά εικάζω ότι το πρόβλημά σου είναι κλασικό XY problem και το πραγματικό πρόβλημα είναι σε ένα ή όλα από: 1. Dataset splitting: δεν έχεις κάνει σωστό spitting στο dataset. 2. Υπάρχει imbalance στο dataset, το οποίο κάνει το metric που χρησιμοποιείς λάθος καθώς και την διαδικασία training λάθος. 3. Τα δεδομένα σου δεν είναι αρκετά για τα features που έχεις Για παραπάνω βοήθεια, εγώ θα χρειαστώ λίγο παραπάνω inside info από το τι κάνεις. Π.χ., τι data έχεις, κατανομή examples per class, και τι features χρησιμοποιείς για αρχή. Υ.Γ. Π.χ., σε αυτό που παρέθεσες, παρατηρώ καλό class imbalance. Δηλαδή, εάν έχεις 80 παραδείγματα με κλάση 1 και 20 με κλάση 0, τότε 50% ευστοχία (όπως την μετράς εσύ στον κώδικα που έδωσες) μπορεί να ειναι τα: 1. 50/80 για κλάση 1 και 0/20 για κλάση 0 2. 30/80 για κλάση 1 και 20/20 για κλάση 0 3. 40/80 για κλάση 1 και 10/20 για κλάση 0 Το παραπάνω είναι ένα απλοποιημένο παράδειγμα για να σου δώσει να καταλάβεις ένα από τα προβλήματα που μπορεί να έχεις. Επεξ/σία 9 Δεκεμβρίου 2021 από DrKo
masteripper Δημοσ. 9 Δεκεμβρίου 2021 Μέλος Δημοσ. 9 Δεκεμβρίου 2021 Απαντώντας 1. To splitting είναι συγκεκριμένο : παίρνω δεδομένα προηγούμενων ημερών και τα εφαρμόζω σε 1 μόνο ημέρα 2.Αν ήταν "balanced" τότε θα είχαμε λύσει πολλά προβλήματα... ... σίγουρα το input είναι εντελώς προβληματικό εκ φύσεως 3. Δεδομένα υπάρχουν (του τύπου "λεφτά υπάρχουν") αλλά τα περιορίζω σε αυτά που έχουν κάποιας μορφής διασύνδεση με την συγκεκριμένη μέρα. π.χ τι νόημα π.χ να παίρνεις δεδομένα απο 100 μέρες με Κόκκινα/Μπλε/Ασπρα όταν μπορείς να περιοριστείς σε 1 υποδείγμα μόνο με Κόκκινα και να ψάξεις μόνο τα Κόκκινα της ημέρας.
DrKo Δημοσ. 9 Δεκεμβρίου 2021 Δημοσ. 9 Δεκεμβρίου 2021 3 λεπτά πριν, masteripper είπε 1. To splitting είναι συγκεκριμένο : παίρνω δεδομένα προηγούμενων ημερών και τα εφαρμόζω σε 1 μόνο ημέρα Αυτό, ας πούμε, δείχνει ότι έχεις πρόβλημα στο splitting. Εσύ έχεις φροντίσει μόνο το train/val/test και, το πιο πιθανό, δεν έχεις πάρει καθόλου υπόψη το πώς μπορείς να κάνεις το split έτσι ώστε να έχεις καλό condition representation. 5 λεπτά πριν, masteripper είπε 2.Αν ήταν "balanced" τότε θα είχαμε λύσει πολλά προβλήματα... ... σίγουρα το input είναι εντελώς προβληματικό εκ φύσεως Άρα, και εδώ έχεις πρόβλημα. Υπάρχουν αρκετές τεχνικές να λύσεις αυτό το πρόβλημα, το οποίο είναι (συνήθως) αρκετά συνηθισμένο. Το ότι απαντάς έτσι, δείχνει πως δεν το έχεις φροντίσει καθόλου κατά το training και, σίγουρα, είναι αφρόντιστο στο πως αξιολογείς το μοντέλο σου. Ειδικά για την αξιολόγηση υπάρχουν αρκετά trivial πράγματα για να κάνεις. 6 λεπτά πριν, masteripper είπε 3. Δεδομένα υπάρχουν (του τύπου "λεφτά υπάρχουν") αλλά τα περιορίζω σε αυτά που έχουν κάποιας μορφής διασύνδεση με την συγκεκριμένη μέρα. π.χ τι νόημα π.χ να παίρνεις δεδομένα απο 100 μέρες με Κόκκινα/Μπλε/Ασπρα όταν μπορείς να περιοριστείς σε 1 υποδείγμα μόνο με Κόκκινα και να ψάξεις μόνο τα Κόκκινα της ημέρας. Θαρρώ ότι αυτό δεν απαντάει στην ερώτηση και, επιπλέον, δείχνει ότι δεν έχεις γνώση για το πως λειτουργεί ο αλγόριθμος που έχεις διαλέξει. Γενικά, (εντελώς φιλικά, για να μην παρεξηγηθώ) τα προβλήματα που έχεις δείχνουν ότι θα βοηθηθείς εάν πάρεις βοήθεια από κάποιον που ξέρει να κάνει τέτοια πράγματα. Π.χ., ενδέχεται να βοηθηθείς εάν πάρεις δεδομένα από 100 μέρες με Κόκκινα/Μπλε/Άσπρα αντί να κάνεις αυτό που λες.
masteripper Δημοσ. 9 Δεκεμβρίου 2021 Μέλος Δημοσ. 9 Δεκεμβρίου 2021 1 λεπτό πριν, DrKo είπε Αυτό, ας πούμε, δείχνει ότι έχεις πρόβλημα στο splitting. Εσύ έχεις φροντίσει μόνο το train/val/test και, το πιο πιθανό, δεν έχεις πάρει καθόλου υπόψη το πώς μπορείς να κάνεις το split έτσι ώστε να έχεις καλό condition representation. Άρα, και εδώ έχεις πρόβλημα. Υπάρχουν αρκετές τεχνικές να λύσεις αυτό το πρόβλημα, το οποίο είναι (συνήθως) αρκετά συνηθισμένο. Το ότι απαντάς έτσι, δείχνει πως δεν το έχεις φροντίσει καθόλου κατά το training και, σίγουρα, είναι αφρόντιστο στο πως αξιολογείς το μοντέλο σου. Ειδικά για την αξιολόγηση υπάρχουν αρκετά trivial πράγματα για να κάνεις. Θαρρώ ότι αυτό δεν απαντάει στην ερώτηση και, επιπλέον, δείχνει ότι δεν έχεις γνώση για το πως λειτουργεί ο αλγόριθμος που έχεις διαλέξει. Γενικά, (εντελώς φιλικά, για να μην παρεξηγηθώ) τα προβλήματα που έχεις δείχνουν ότι θα βοηθηθείς εάν πάρεις βοήθεια από κάποιον που ξέρει να κάνει τέτοια πράγματα. Π.χ., ενδέχεται να βοηθηθείς εάν πάρεις δεδομένα από 100 μέρες με Κόκκινα/Μπλε/Άσπρα αντί να κάνεις αυτό που λες. Θα τα εξετάσω αυτά που μου έδωσες ... και αν είναι το ξανασυζητάμε. 1
masteripper Δημοσ. 9 Δεκεμβρίου 2021 Μέλος Δημοσ. 9 Δεκεμβρίου 2021 Εριξα μια ματιά σε αυτά που μου έγραψες και έχω τα εξής: 1. To splitting είναι άχρηστο αν γίνει με άλλο τρόπο...δεν κυνηγάμε πέταλα...ή θα προβλέψουμε σωστά για συγκεκριμένο αριθμό εγγραφών ή απλώς το ξεχνάμε. 2. Το dataset είναι balanced απλώς έχει τιμές με μεγάλη διακύμανση... 3. Τα Κόκκινα/Μπλε/Άσπρα θεωρώ με τα στοιχεία που έχω ότι δεν συνδέονται μεταξύ τους...το καθένα γκρουπ έχει την δικιά του συμπεριφορά.
vs_skg Δημοσ. 9 Δεκεμβρίου 2021 Δημοσ. 9 Δεκεμβρίου 2021 4 ώρες πριν, masteripper είπε Γεια χαρά Σίγουρα μια μάλλον περίεργη ερώτηση αλλά ... Δοκιμάζω κάποιους Classifiers σε δεδομένα που το τελικό αποτέλεσμα είναι 0 ή 1 Το πρόβλημα είναι ότι κυμαίνονται ανάμεσα 40% - 50% επιτυχία πρόβλεψης σχεδόν με ότι παραμέτρους και να βάλω. Αλλά λόγω της φύσεως του αποτελέσματος σκεφτόμουν ότι εαν π.χ χαμήλωνα το accuracy στο 20% περίπου θα μπορούσα απλώς να πάρω το αντίθετο των προβλέψεων και να φτάσω ας πούμε περίπου 80% επιτυχίας πρόβλεψης. Μια 1η σκέψη θα ήταν να κάνω "μαύρα - ασπρα" στο training αλλά πιστεύω ότι το πιο σωστό είναι να γίνει το training οπως είναι τα δεδομένα και μετά "κάπως" να πειράξω τις παραμέτρους και να "χαντακώσω" την πρόβλεψη. Καμμιά ιδέα garbage in, garbage out. Απο που πηγαζει η πεποιθηση οτι μπορεις να κανεις ενα μοντελο να μαθει με βαση τα δεδομενα σου, αφου οτι κι αν εχεις κανει ουσιαστικα ειναι μια τρυπα στο νερο (1/Κ ακριβεια οπου Κ οι κλασσεις σου)? Αυτα με αναστροφη της προβλεψης κλπ δεν εχουν κανενα νοημα σε δυαδικο προβλημα, λογω συμμετριας δεν υπαρχει καμια απολυτως λογικη στη σκεψη να παρεις το αντιθετο των προβλεψεων... οσο δυσκολο ειναι να μοντελοποιησεις τον classifier που δινει 10% τοσο δυσκολο ειναι το ιδιο για το 90%...
DrKo Δημοσ. 9 Δεκεμβρίου 2021 Δημοσ. 9 Δεκεμβρίου 2021 (επεξεργασμένο) 2 ώρες πριν, masteripper είπε Εριξα μια ματιά σε αυτά που μου έγραψες και έχω τα εξής: 1. To splitting είναι άχρηστο αν γίνει με άλλο τρόπο...δεν κυνηγάμε πέταλα...ή θα προβλέψουμε σωστά για συγκεκριμένο αριθμό εγγραφών ή απλώς το ξεχνάμε. 2. Το dataset είναι balanced απλώς έχει τιμές με μεγάλη διακύμανση... 3. Τα Κόκκινα/Μπλε/Άσπρα θεωρώ με τα στοιχεία που έχω ότι δεν συνδέονται μεταξύ τους...το καθένα γκρουπ έχει την δικιά του συμπεριφορά. Ό,τι πεις. Το πιο δύσκολο είναι να μάθει κανείς κάτι σε κάποιον που νομίζει ότι ήδη το ξέρει (κάποιος αρχαίος το είπε αυτό). FWIW, αυτά που λες είναι λάθος. Π.χ., όταν έχεις 0/1, τι ακριβώς μεγάλη διακύμανση εννοείς; Εάν έχεις 50% examples με κλάση 0 και 50% με κλάση 1, τότε και μόνο τότε δεν έχεις imbalanced dataset. Η διακύμανση που γράφεις, είναι πέρα ως πέρα άσχετη. Ξαναλέω, συνεργάσου με κάποιον που ξέρει τι συμβαίνει, γιατί εσύ ούτε ξέρεις αλλά (και το πιο σημαντικό) ούτε θέλεις να μάθεις. Επεξ/σία 9 Δεκεμβρίου 2021 από DrKo
masteripper Δημοσ. 9 Δεκεμβρίου 2021 Μέλος Δημοσ. 9 Δεκεμβρίου 2021 (επεξεργασμένο) 17 λεπτά πριν, DrKo είπε Ό,τι πεις. Το πιο δύσκολο είναι να μάθει κανείς κάτι σε κάποιον που νομίζει ότι ήδη το ξέρει (κάποιος αρχαίος το είπε αυτό). FWIW, αυτά που λες είναι λάθος. Π.χ., όταν έχεις 0/1, τι ακριβώς μεγάλη διακύμανση εννοείς; Εάν έχεις 50% examples με κλάση 0 και 50% με κλάση 1, τότε και μόνο τότε δεν έχεις imbalanced dataset. Η διακύμανση που γράφεις, είναι πέρα ως πέρα άσχετη. Ξαναλέω, συνεργάσου με κάποιον που ξέρει τι συμβαίνει, γιατί εσύ ούτε ξέρεις αλλά (και το πιο σημαντικό) ούτε θέλεις να μάθεις. Δυστυχώς δεν μπορώ να σου δώσω περισσότερες πληροφορίες αλλά με βάση το γεγονός ότι κανένας στο Internet δεν το εχει καταφέρει ή τουλάχιστον δεν το έχει αναφέρει νομίζω ότι δεν είμαι τόσο λάθος.παράδειγμα μιας γραμμής του dataset (το τελευταίο είναι το αποτέλεσμα) 3;3,5;2;1,5;1,25;1,25;1,75;1,75;3;1,75;3,25;29;1,25;3;2;1,75;3,5;1,25;5;13;22;6,75;4,75;4,75;26;13;3;3,5;2;2,5;7,5;13;9,5;31;23;29;81;61;75;125;9;5,75;13,5;55;151;6;8;7;15;14;23;35;33;51;95;29;51,5;0,25;1;2;2;2;2;2;2;1 Πάντως παράπονο δεν έχω ... η κουβέντα με έκανε να σκεφτώ και άλλες δυνατότητες προσέγγισης του προβλήματος Thanks Υ.Γ θεωρείστε ότι το θέμα έχει κλείσει καθώς θα κινηθώ προς άλλη κατεύθυνση Επεξ/σία 9 Δεκεμβρίου 2021 από masteripper
Lanike71 Δημοσ. 10 Δεκεμβρίου 2021 Δημοσ. 10 Δεκεμβρίου 2021 Στις 9/12/2021 στις 7:25 ΜΜ, vs_skg είπε garbage in, garbage out. Απο που πηγαζει η πεποιθηση οτι μπορεις να κανεις ενα μοντελο να μαθει με βαση τα δεδομενα σου, αφου οτι κι αν εχεις κανει ουσιαστικα ειναι μια τρυπα στο νερο (1/Κ ακριβεια οπου Κ οι κλασσεις σου)? Αυτα με αναστροφη της προβλεψης κλπ δεν εχουν κανενα νοημα σε δυαδικο προβλημα, λογω συμμετριας δεν υπαρχει καμια απολυτως λογικη στη σκεψη να παρεις το αντιθετο των προβλεψεων... οσο δυσκολο ειναι να μοντελοποιησεις τον classifier που δινει 10% τοσο δυσκολο ειναι το ιδιο για το 90%... Όταν συγκεντρώνεις δεδομένα, ποτέ δεν ξέρεις αν σου πετάξει garbage , μέχρι να τρέξεις τον αλγόριθμο ή αλγορίθμους. Ο αλγόριθμος απλά αποτυπώνει τη σχέση αιτίου και αιτιατού και τίποτα παραπάνω. Όλοι ξεκινάνε με απλά δεδομένα, αυτά που νομίζουν ότι επηρεάζουν την y μεταβλητή και στην πορεία ψάχνουν. Αν τα ξέραμε εξ' αρχής, θα ήταν εύκολο το έργο αυτού που ψάχνει. 1
vs_skg Δημοσ. 10 Δεκεμβρίου 2021 Δημοσ. 10 Δεκεμβρίου 2021 37 λεπτά πριν, Lanike71 είπε Όταν συγκεντρώνεις δεδομένα, ποτέ δεν ξέρεις αν σου πετάξει garbage , μέχρι να τρέξεις τον αλγόριθμο ή αλγορίθμους. Ο αλγόριθμος απλά αποτυπώνει τη σχέση αιτίου και αιτιατού και τίποτα παραπάνω. Όλοι ξεκινάνε με απλά δεδομένα, αυτά που νομίζουν ότι επηρεάζουν την y μεταβλητή και στην πορεία ψάχνουν. Αν τα ξέραμε εξ' αρχής, θα ήταν εύκολο το έργο αυτού που ψάχνει. Ας συμφωνησουμε οτι διαφωνουμε. Αερα πατερα ισως ξεκιναει ο χομπιστας η ο software engineer, ο ML engineer εχει μια αρκετα καλη ιδεα του αν ειναι εφικτο να μοντελοποιησει το προβλημα με ML η οχι. Το να πετας σκατα στον τοιχο κι οτι κολλησει σιγουρα δεν ειναι ουτε η δημοφιλεστερη ουτε η καλυτερη προσέγγιση απο αποψη και χρονου και αποτελεσματος. 1
Lanike71 Δημοσ. 10 Δεκεμβρίου 2021 Δημοσ. 10 Δεκεμβρίου 2021 3 λεπτά πριν, vs_skg είπε Ας συμφωνησουμε οτι διαφωνουμε. Αερα πατερα ισως ξεκιναει ο χομπιστας η ο software engineer, ο ML engineer εχει μια αρκετα καλη ιδεα του αν ειναι εφικτο να μοντελοποιησει το προβλημα με ML η οχι. Το να πετας σκατα στον τοιχο κι οτι κολλησει σιγουρα δεν ειναι ουτε η δημοφιλεστερη ουτε η καλυτερη προσέγγιση απο αποψη και χρονου και αποτελεσματος. Εγώ δεν είπα αυτό που λες. Εγώ είπα ότι μόνο με τα δεδομένα, κανένας δεν ξέρει τι αποτέλεσμα θα του φέρουν, μέχρι να τρέξει κάποια τεστς. Το αν έχει μία καλή ιδέα, είναι ένα άλλο ζήτημα.
vs_skg Δημοσ. 10 Δεκεμβρίου 2021 Δημοσ. 10 Δεκεμβρίου 2021 50 λεπτά πριν, Lanike71 είπε Εγώ δεν είπα αυτό που λες. Εγώ είπα ότι μόνο με τα δεδομένα, κανένας δεν ξέρει τι αποτέλεσμα θα του φέρουν, μέχρι να τρέξει κάποια τεστς. Το αν έχει μία καλή ιδέα, είναι ένα άλλο ζήτημα. Δεν είπα ότι είπες κάτι άλλο. Αυτό που σου λέω, και ο λόγος που έκφραση garbage in garbage out είναι θεμελιώδης αρχή της αναγνώρισης προτύπων είναι ότι στην αρχή κάθε πετυχημένου πρότζεκτ έχεις δεδομένα τα οποία θεωρείς λογικό ότι μπορούν να αντιπροσωπευσουν έναν καλό κατηγοριοποιητη. Τον κώδικα τον χρειάζεσαι όχι για να κάνει κάτι μαγικό που δεν μπορείς να φανταστείς εσύ ως άνθρωπος, αλλά γιατί δεν έχεις την απαραίτητη επεξεργαστική ισχύ στο μυαλό σου να αποτυπώσεις μαθηματικά τη σχέση εισόδου εξόδου. Και εντρυφωντας στην φύση των δεδομένων προκύπτει και το πως θα κάνεις συλλογή και sanitation των δεδομένων, τι είδος μοντέλου θα διαλέξεις και χίλια δύο άλλα. Αυτά από μένα 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα