Μονάδες
1. Εισαγωγή στην Τεχνητή Νοημοσύνη στην Επιστήμη Δεδομένων και την Ανάλυση: Ροή εργασιών, Ρόλοι, Όρια, Επικύρωση και Δεοντολογία 2. Συλλογή δεδομένων και κατανόηση πηγών: Σχήμα, δειγματοληψία, ποιότητα και επίγνωση διαρροών 3. Καθαρισμός και προεπεξεργασία δεδομένων: Λείπει τιμή, ακραία τιμή και μετατροπή τύπου 4. Διερευνητική Ανάλυση Δεδομένων (EDA): Διανομές, Σχέσεις και Αρχικές πληροφορίες 5. Μηχανική Χαρακτηριστικών: Δημιουργία παραλλαγών, Κωδικοποίηση, Κλιμάκωση και Αποφυγή Διαρροής 6. Κατασκευή μοντέλου: Ορισμός προβλήματος, επιλογή αλγορίθμου και διαίρεση εκπαίδευσης/δοκιμής 7. Αξιολόγηση μοντέλου: Μετρήσεις, Διασταυρούμενη επικύρωση και Ακραία Μάθηση 8. Οπτικοποίηση και αφήγηση: Ακριβή γραφικά, ειλικρινή γραφικά 9. Δημιουργία κώδικα: Ανάλυση υποβοηθούμενη από AI με Python (pandas) και SQL 10. Διαρροή δεδομένων και αναπαραγωγιμότητα: Σιωπηλές καταστροφές και πειθαρχία 11. Molps foundation, ηθική, ιδιωτικότητα και υπεύθυνη ανάλυση
Μονάδα 10 / 11

Διαρροή δεδομένων και αναπαραγωγιμότητα: Σιωπηλές καταστροφές και πειθαρχία

Κέρδη:

  • Δυνατότητα αναγνώρισης τύπων διαρροής δεδομένων (στόχος, χρόνος, προεπεξεργασία, ομαδοποιημένη σειρά) και αναζήτηση της βαθμολογίας «πολύ καλή για να είναι αληθινή» ως συναγερμός
  • Δυνατότητα αποτροπής διαρροής με πρόωρο διαχωρισμό του σετ δοκιμής, αγωγού και σωστή διαίρεση (χρονολογική/ομαδοποιημένη)
  • Δυνατότητα να κάνει την ανάλυση αναπαραγώγιμη με σταθερούς σπόρους, έλεγχο έκδοσης και αφαίρεση χειροκίνητων βημάτων

Υπάρχουν δύο λάθη που σπαταλούν τη μεγαλύτερη προσπάθεια στην επιστήμη των δεδομένων και είναι και τα δύο ύπουλα επειδή οδηγούν σε καταστροφή ακριβώς όταν όλα «μοιάζουν να είναι καλά». Το πρώτο είναι η διαρροή δεδομένων: το μοντέλο λειτουργεί εξαιρετικά στο σετ δοκιμών, αλλά καταρρέει στην παραγωγή. Το δεύτερο είναι η μη αναπαραγωγιμότητα: κάνεις μια ανάλυση έξι μήνες αργότερα και βγάζεις ένα τελείως διαφορετικό αποτέλεσμα. Αυτή η ενότητα είναι αφιερωμένη στη γνώση και την αποφυγή αυτών των δύο παγίδων σε βάθος. Η τεχνητή νοημοσύνη μπορεί να αυξήσει και τους δύο κινδύνους (δημιουργεί γρήγορα, προτείνει κρυφές διαρροές, σας διευκολύνει να κάνετε χειροκίνητα βήματα), αλλά μπορεί επίσης να τους μειώσει εάν χρησιμοποιηθεί σωστά. Η διαφορά είναι στην πειθαρχία.

Διαρροή δεδομένων: διόρατο μοντέλο

Διαρροή δεδομένων είναι όταν το μοντέλο βλέπει πληροφορίες κατά τη διάρκεια της εκπαίδευσης που δεν θα έχει τη στιγμή της πραγματικής πρόβλεψης. Το μοντέλο «απατάει» με αυτές τις πληροφορίες, δείχνει υπέροχο στο σετ δοκιμών, αλλά καταρρέει στην παραγωγή χωρίς αυτές τις πληροφορίες. Το σύμπτωμα μιας διαρροής είναι σχεδόν πάντα το ίδιο: πολύ καλό για να είναι αληθινό. Πριν χαρείτε όταν βλέπετε ακρίβεια 99%, θα πρέπει να ψάξετε για διαρροές.

Οι κύριοι τύποι διαρροής είναι:

1. Διαρροή γκολ: Ένα χαρακτηριστικό είναι αποτέλεσμα του στόχου. Στην πρόβλεψη "ακυρώθηκε", οι στήλες "ημερομηνία ακύρωσης" ή "ποσό επιστροφής χρημάτων" είναι το αποτέλεσμα του στόχου. Θα συμπληρωθούν μόνο όταν το αποτέλεσμα είναι ξεκάθαρο.

2. Διαρροή χρόνου: Φέρνοντας μελλοντικές πληροφορίες στο παρελθόν. Κατά τον υπολογισμό του "μέσου όρου των τελευταίων 30 ημερών", συμπεριλάβετε τις ημέρες μετά την ημέρα πρόβλεψης ή διαιρέστε τη χρονοσειρά τυχαία.

3. Διαρροή προεπεξεργασίας: Εκμάθηση μετασχηματισμών όπως κλιμάκωση, συμπλήρωση, κωδικοποίηση από όλα τα δεδομένα πριν από το διαμέρισμα εκπαίδευσης/δοκιμής. Ο υπολογισμός του μέσου όρου των δεδομένων των δοκιμών παρεμβαίνει στην εκπαίδευση.

4. Διπλότυπη/ομαδοποιημένη διαρροή σειρών: Σειρές που ανήκουν στο ίδιο άτομο υπάρχουν τόσο στην εκπαίδευση όσο και στην εξέταση (δύο επισκέψεις του ίδιου ασθενούς σε διαφορετικά σετ). Το μοντέλο απομνημονεύει το άτομο.

Τύπος διαρροής

Πώς γεννιέται

Πώς να αποτρέψετε

διαρροή στόχου

Στήλη που είναι το αποτέλεσμα του στόχου

Τεστ «Το έχω την ώρα της πρόβλεψης».

διαρροή χρόνου

Φέρνοντας το μέλλον στο παρελθόν

Χρονολογική διαίρεση, έλεγχος παραθύρων

Διαρροή προεπεξεργασίας

Μετατροπή πριν τον διαχωρισμό

Pipeline, ταιριάζει μόνο από την προπόνηση

Διαρροή ομαδοποιημένης σειράς

Ίδια μονάδα σε δύο σετ

Διαχωρισμός κατά ομάδα (GroupKFold)

Η μόνη πειθαρχία για την αποφυγή διαρροής

Η κοινή λύση για όλους τους τύπους διαρροών συνοψίζεται σε μία φράση: Απομονώστε το σετ δοκιμών όσο το δυνατόν νωρίτερα για να μιμηθείτε το πραγματικό μέλλον και μην του «διδάξετε» τίποτα. Πρακτικά, αυτό σημαίνει: πρώτα διαιρέστε, μετά μάθετε όλους τους μετασχηματισμούς μόνο από την εκπαίδευση και εφαρμόστε τους σε έναν αγωγό (μια δομή που συγκεντρώνει όλα τα βήματα σε μια ενιαία αλυσίδα). Για κάθε χαρακτηριστικό, κάντε την ερώτηση "έχω αυτές τις πληροφορίες τη στιγμή της πρόβλεψης;" Αν υπάρχει χρόνος, διαιρέστε τον χρονολογικά. Εάν η ίδια ενότητα είναι επαναλαμβανόμενη, διαιρέστε ανά ομάδα.

Προσοχή: Η πιο επικίνδυνη πτυχή μιας διαρροής είναι ότι παρουσιάζεται ως επιτυχία. Ένα κακό μοντέλο προφανώς θα έχει κακά αποτελέσματα και θα γίνει αντιληπτό. Ένα μοντέλο που έχει διαρρεύσει λειτουργεί υπέροχα, ευχαριστεί τους πάντες και βγαίνει στην παραγωγή — από εκεί αρχίζει η κατάρρευση. Γι' αυτό το «πολύ καλό» αποτέλεσμα είναι αιτία συναγερμού, όχι πανηγυρισμός.

Αναπαραγωγιμότητα: λήψη του ίδιου αποτελέσματος δύο φορές

Η αναπαραγωγιμότητα είναι η δυνατότητα να λαμβάνετε το ίδιο αποτέλεσμα όταν εκτελείτε ξανά μια ανάλυση σε άλλη στιγμή, σε άλλο μηχάνημα. Χωρίς αυτό, η ανάλυσή σας είναι συμπτωματική, όχι επιστημονική. Βασικές αιτίες και λύσεις που μειώνουν την αναπαραγωγιμότητα:

Μη αυτόματα βήματα: Μη αυτόματη αλλαγή κελιού στο Excel, μη αυτόματη επεξεργασία ενός γραφήματος. Λύση: έχετε κάθε βήμα στον κώδικα.

Μη καθορισμένη τυχαιότητα: Η εκπαίδευση μοντέλων, η δειγματοληψία, ο διαχωρισμός περιλαμβάνουν τυχαιότητα. Λύση: διορθώστε τον τυχαίο σπόρο (την αρχική τιμή της τυχαίας γεννήτριας) (random_state=42).

Μετατοπίσεις έκδοσης: Το αποτέλεσμα μπορεί να αλλάξει όταν αλλάξει η έκδοση της βιβλιοθήκης. Λύση: διόρθωση εξαρτήσεων (requirements.txt, αρχείο περιβάλλοντος).

Χωρίς τήρηση αρχείων: Δεν είναι σαφές ποια δεδομένα, ποιος κωδικός, ποια παράμετρος χρησιμοποιήθηκε. Λύση: έλεγχος έκδοσης (Git — το σύστημα που αποθηκεύει όλες τις εκδόσεις του κώδικα) και έκδοση δεδομένων.

"Λειτουργεί μόνο στο μηχάνημά μου": Λύση: τεκμηριώστε το περιβάλλον, χρησιμοποιήστε δοχεία (Docker) εάν είναι δυνατόν.

τρεις μίνι θήκες

Περίπτωση 1 — Διαρροή στόχου. Μια ανάλυση υγείας παρουσίασε τη στήλη "φάρμακα μετά το εξιτήριο" για την πρόβλεψη "αν ο ασθενής θα εισαχθεί εκ νέου". Αυτή η στήλη συμπληρώθηκε μόνο αφού ο ασθενής έλαβε εξιτήριο. Το μοντέλο έδωσε 96%, στην παραγωγή 61%. Το έργο των 8 εβδομάδων ήταν σκουπίδια. Μάθημα: ρωτήστε κάθε χαρακτηριστικό "είναι παρόν τη στιγμή της πρόβλεψης;"

Περίπτωση 2 — Διαρροή προεπεξεργασίας. Μια ομάδα κλιμάκωσε όλα τα δεδομένα και στη συνέχεια τα χώρισε. Ο μέσος όρος των δεδομένων δοκιμής εμπλέκεται στην κλιμάκωση. Βαθμολογία βιογραφικού 89%, πραγματική παραγωγή 76%. Η ψεύτικη επιτυχία εξαφανίστηκε όταν μετακόμισα στο Pipeline και έμαθα για τις μεταμορφώσεις μόνο από την προπόνηση. Μάθημα: πρώτα διαιρέστε, μεταμορφώστε αργότερα.

Περίπτωση 3 — Αποτυχία αναπαραγωγής. Ένας αναλυτής ήθελε να ενημερώσει το γράφημα που παρουσίασε στη διοίκηση τρεις μήνες αργότερα, αλλά δεν μπορούσε να θυμηθεί πώς το παρήγαγε. Πολλά βήματα έγιναν χειροκίνητα στο Excel. Το αποτέλεσμα δεν βγήκε και η εμπιστοσύνη κλονίστηκε. Μάθημα: χωρίς χειροκίνητα βήματα, όλα είναι σε κώδικα και Git.

Τέσσερα πρότυπα με δυνατότητα αντιγραφής

1) Έλεγχος διαρροής:

Ο ρόλος σας: επιθεωρητής διαρροών. Στόχος: "churn" (0/1), ημερομηνία αναφοράς πρόβλεψης: record_date. Θα σας δώσω αυτήν τη λίστα χαρακτηριστικών. Για ΚΑΘΕ χαρακτηριστικό: (α) είναι συνέπεια του στόχου, (β) είναι διαθέσιμο σε εμένα τη στιγμή της πρόβλεψης, (γ) το χρονικό παράθυρο περιλαμβάνει το μέλλον; Σημειώστε το ως "μη ασφαλές/ύποπτο/διαρροή" και γράψτε έναν λόγο. Χαρακτηριστικά: [λίστα]

2) Αγωγός χωρίς διαρροές:

Ρυθμίστε το sklearn Pipeline: πρώτα διαχωρίστε την αμαξοστοιχία/δοκιμή (στρωματοποιημένη, seed=42), ΜΕΤΑ τοποθετήστε όλες τις προεπεξεργασίες (εισαγωγή, κλίμακα, κωδικοποίηση) στον αγωγό ΜΟΝΟ από την εκπαίδευση. Εξηγήστε γιατί ο κώδικας είναι χωρίς διαρροές, ποιο βήμα μαθεύτηκε πού.

3) Κωδικός λίστας ελέγχου αναπαραγωγιμότητας:

Θέλω να κάνω την ανάλυσή μου αναπαραγώγιμη. Προτείνετε κώδικα/δομή που προσθέτει: (1) hard seed για κάθε τυχαιότητα, (2) εκδόσεις βιβλιοθήκης εκτύπωσης που χρησιμοποιούνται, (3) ετικέτα ημερομηνίας/έκδοσης για δεδομένα και έξοδο. Δώστε μου επίσης μια λίστα ελέγχου για να βεβαιωθώ ότι δεν υπάρχουν χειροκίνητα βήματα.

4) Ομαδοποιημένο διαμέρισμα (διαρροή ίδιας μονάδας):

Στα δεδομένα το ίδιο customer_id υπάρχει σε πολλές σειρές. Κάντε ένα διαχωρισμό (GroupKFold orGroupShuffleSplit, group = customer_id) που ΕΜΠΟΔΙΖΕΙ τον ίδιο πελάτη από το να βρίσκεται τόσο στην εκπαίδευση όσο και στη δοκιμή. Συμπεριλάβετε κωδικό για να επαληθεύσετε ότι δεν υπάρχουν πελάτες και στα δύο σετ μετά τον διαχωρισμό.

Αδύναμη προτροπή / Ισχυρή προτροπή

Αδύναμη προτροπή:

Το μοντέλο μου επέστρεψε 98% ακρίβεια, δεν είναι υπέροχο; Βελτιστοποιήστε τον κώδικα.

Ο γιορτασμός του 98% κρύβει τη διαρροή. Πριν από τη βελτιστοποίηση, θα πρέπει να τεθεί το ερώτημα εάν αυτή η βαθμολογία είναι πραγματική ή όχι.

Ισχυρή προτροπή:

Ο ρόλος σας: επιθεωρητής διαρροών. Το μοντέλο μου επιστρέφει ακρίβεια 98% στο σετ δοκιμών, κάτι που μου ακούγεται "πολύ καλό για να είναι αληθινό". Ελέγξτε: (1) είναι τυχόν χαρακτηριστικά που είναι αποτέλεσμα του στόχου, (2) είναι οι μετατροπές που έγιναν πριν από τον διαχωρισμό, (3) είναι η ίδια μονάδα σε δύο σετ, (4) υπάρχουν διαρροές χρόνου. Καταγράψτε τυχόν ύποπτα σημεία. Εστιάστε στην εύρεση της διαρροής, όχι στη διόρθωση του σκορ.

Εδώ, η υψηλή βαθμολογία αντιμετωπίζεται ως σημάδι που πρέπει να αμφισβητηθεί, όχι να πανηγυριστεί.

Συνήθη λάθη

  • Πανηγυρίζοντας το «πολύ καλό» αποτέλεσμα. Μια πολύ καλή βαθμολογία είναι μια ειδοποίηση διαρροής, όχι ένα επίτευγμα.
  • Εκμάθηση του μετασχηματισμού από όλα τα δεδομένα πριν από τη διαίρεση. Η πιο κοινή διαρροή? Διαχωρίστε πρώτα με αγωγό.
  • Τυχαία διαίρεση της χρονοσειράς. Το μοντέλο βλέπει το μέλλον. Η χρονολογική διαίρεση είναι απαραίτητη.
  • Αφήνοντας την ίδια μονάδα σε δύο σετ. Το μοντέλο απομνημονεύει το άτομο. Χωρίστε ανά ομάδα.
  • Δεν μπαίνουμε με μη αυτόματο τρόπο και δεν γράφουμε στον κώδικα. Η ανάλυση γίνεται μη αναπαραγώγιμη. όλα πρέπει να είναι σε κώδικα και Git.
Συμβουλή: Γράψτε μια δύο προτάσεις "υπόσχεση τιμής" στην αρχή του έργου σας: "Δεν έχω αγγίξει το δοκιμαστικό σετ με κανέναν τρόπο πριν το δω στην παραγωγή. Κάθε βήμα είναι στον κώδικα και ο σπόρος είναι σταθερός." Εάν δεν μπορείτε να υπογράψετε αυτές τις δύο προτάσεις με ειλικρίνεια, το αποτέλεσμά σας δεν είναι ακόμη αξιόπιστο.

Συνοπτικά

Η διαρροή δεδομένων και η μη αναπαραγωγιμότητα είναι τα δύο πιο ακριβά σιωπηλά σφάλματα στην επιστήμη των δεδομένων. Η διαρροή είναι το όραμα του μοντέλου για το μέλλον και παρουσιάζεται ως ψευδής επιτυχία. Η λύση είναι να χωρίσετε το σετ δοκιμής νωρίς, να μάθετε τους μετασχηματισμούς μόνο από την προπόνηση (pipeline), να κάνετε σε κάθε χαρακτηριστικό την ερώτηση "Το έχω τη στιγμή της πρόβλεψης" και να κάνετε σωστό διαχωρισμό (χρονολογικό/ομαδικό). Η αναπαραγωγιμότητα είναι να μπορείς να έχεις το ίδιο αποτέλεσμα δύο φορές. Η λύση του είναι να αφαιρέσει με μη αυτόματο τρόπο τα βήματα, να καρφώσει το seed, να παγώσει τις εκδόσεις και να διατηρήσει τα πάντα στο Git. Η τεχνητή νοημοσύνη μπορεί είτε να αυξήσει είτε να μειώσει αυτούς τους κινδύνους. Είναι η πειθαρχία σας που καθορίζει.

Εργασία εφαρμογής

Πάρτε τη λίστα χαρακτηριστικών ενός μοντέλου που έχετε δημιουργήσει (ή ένα υποθετικό) και κάντε σε κάθε χαρακτηριστικό την ερώτηση "έχω αυτές τις πληροφορίες τη στιγμή της πρόβλεψης;" γραπτώς? Βρείτε τουλάχιστον έναν υποψήφιο για διαρροή. Στη συνέχεια, συμπληρώστε μια λίστα ελέγχου για να κάνετε την ανάλυσή σας αναπαραγώγιμη: έχει διορθωθεί ο σπόρος, υπάρχουν χειροκίνητα βήματα, έχουν καταχωρηθεί οι εκδόσεις, είναι στο Git. Διορθώστε τις ελλείψεις.

λίστα ελέγχου

  • [ ] Έβαλα ερώτημα για τη βαθμολογία "πολύ καλή για να είναι αληθινή" ως ειδοποίηση διαρροής;
  • [ ] Έμαθα όλους τους μετασχηματισμούς μετά το split, μόνο από την προπόνηση;
  • [ ] Έχω χωρίσει ανάλογα με τη δομή του χρόνου/ομάδας (χρονολογική/GroupKFold);
  • [ ] Έχω κάνει όλες τις τυχαίες επαναλήψεις με σταθερό σπόρο;
  • [ ] Κατάργησα τα μη αυτόματα βήματα και διατήρησα τα πάντα σε κώδικα και έλεγχο έκδοσης;