Ο συμβολισμός X και y, ετικέτα και κλάση

19 λεπτά
Μπλοκ 1 — Το θεμελιώδες λεξιλόγιο
Στόχος
να κατακτήσετε τη σύμβαση συμβολισμού X / y και την προέλευσή της, να επαληθεύετε στον κώδικα τις διαστάσεις καθενός, να ορίσετε με αυστηρότητα μια ετικέτα και μια κλάση, να ορίζετε τη θετική κλάση σύμφωνα με ένα ρητό κριτήριο και να μετράτε τις συνέπειες, να διακρίνετε πλειοψηφική και μειοψηφική κλάση.
Εκτιμώμενη διάρκεια
35 λεπτά
Προαπαιτούμενα
κεφάλαια 001 έως 006
Σχετικά κουίζ
007.1-quiz-notation-x-y.md έως 007.6-quiz-classes-majoritaire-minoritaire.md

1. Η σύμβαση συμβολισμού X και y

1.1 Η διατύπωση που πρέπει να αποκωδικοποιηθεί

« Προσαρμόζουμε το μοντέλο επί των X και y, με X μορφής (n, p) και y μορφής (n,). »

Πλήρης απόδοση: εκπαιδεύουμε το μοντέλο επί ενός πίνακα ερμηνευτικών μεταβλητών με n γραμμές και p στήλες, και επί μιας στήλης n απαντήσεων, όπου η i-οστή απάντηση αντιστοιχεί στην i-οστή γραμμή. Αυτή η σύμβαση δεν είναι υφολογική: είναι τυποποιημένη, με τα κεφαλαία/πεζά να φέρουν πληροφορία για τη μαθηματική φύση του αντικειμένου.

1.2 Η προέλευση: η τυπογραφία της γραμμικής άλγεβρας

Μαθηματικό αντικείμενοΣυμβατική τυπογραφίαΠαράδειγμαΑριθμός διαστάσεων
ΒαθμωτόΠεζό πλάγιο, ή ελληνικό γράμμαn, p, α0
ΔιάνυσμαΠεζό, συχνά έντονοy, x, β1
ΠίνακαςΚεφαλαίοX, A, Σ2

Αυτή η πειθαρχία συμβολισμού, προγενέστερη κατά αρκετές δεκαετίες του Machine Learning, αποδίδεται στον Alston Householder (Principles of Numerical Analysis, 1953) και υιοθετήθηκε κατόπιν από τη βιβλιογραφία της αριθμητικής γραμμικής άλγεβρας.

Άμεση συνέπεια: το X είναι κεφαλαίο διότι είναι πίνακας (παρατηρήσεις και μεταβλητές)· το y είναι πεζό διότι είναι διάνυσμα (μία τιμή ανά παρατήρηση).

Η δεύτερη πηγή της σύμβασης είναι η μητρική διατύπωση του γραμμικού μοντέλου, πρότυπο στη στατιστική:

y = X β + ε , με εκτιμητή ελαχίστων τετραγώνων β̂ = (Xᵀ X)⁻¹ Xᵀ y

Επιχείρημα διαστατικής συνέπειας: το Xᵀ X έχει νόημα μόνο αν το X είναι πίνακας, και το Xᵀ y μόνο αν το y είναι διάνυσμα μήκους ίσου με τον αριθμό γραμμών του X. Ο συμβολισμός καθορίζει την αναγνωσιμότητα των τύπων του πεδίου.

ΟΡΙΣΜΟΣ — Πίνακας ερμηνευτικών μεταβλητών (X)

Αυστηρός ορισμός

Έστω ένα σύνολο δεδομένων n παρατηρήσεων που περιγράφονται από p ερμηνευτικές μεταβλητές. Ο πίνακας ερμηνευτικών μεταβλητών X είναι το στοιχείο του Rn×p\mathbb{R}^{\text{n×p}} του οποίου ο όρος xijx_{ij} είναι η τιμή που λαμβάνει η j-οστή ερμηνευτική μεταβλητή στην i-οστή παρατήρηση. Η i-οστή γραμμή του X, συμβολιζόμενη xix_i, είναι το διάνυσμα χαρακτηριστικών (feature vector) της παρατήρησης i. Συνώνυμα: πίνακας σχεδίου (design matrix), πίνακας προβλεπτικών, feature matrix.

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

Σημείο προσοχής: το X δεν περιέχει ούτε τον στόχο, ούτε τα αναγνωριστικά, ούτε τις στήλες ιχνηλασιμότητας· κάθε στήλη που διατηρείται θα χρησιμοποιηθεί από τον αλγόριθμο, συμπεριλαμβανομένου ενός αναγνωριστικού συσχετισμένου κατά τύχη με τον στόχο (κεφάλαια 005 και 028).

ΟΡΙΣΜΟΣ — Διάνυσμα στόχου (y)

Αυστηρός ορισμός

Το διάνυσμα στόχου y είναι το στοιχείο του Rn\mathbb{R}^n στην παλινδρόμηση, ή του Cn\mathcal{C}^n στην ταξινόμηση όπου 𝒞 είναι το πεπερασμένο σύνολο των κλάσεων, του οποίου η i-οστή συνιστώσα yiy_i είναι η τιμή της μεταβλητής-στόχου που παρατηρήθηκε για την i-οστή παρατήρηση. Η αντιστοιχία είναι θεσιακή: το yiy_i είναι η απάντηση που συνδέεται με τη γραμμή xix_i του X. Συνώνυμα: διάνυσμα απόκρισης, εξαρτημένη μεταβλητή, target, labels.

Μετάφραση σε καθημερινή γλώσσα: η στήλη των σωστών απαντήσεων, με τη σειρά των γραμμών του πίνακα.

Σημείο προσοχής: το y είναι αντικείμενο μίας διάστασης, μορφής (n,) και όχι (n, 1) — διάκριση χωρίς αποτέλεσμα στα μαθηματικά, αλλά πραγματική στον κώδικα (σημείο 2.3).

1.3 Ο διαχωρισμός του πίνακα σε X και y

python
df = pd.read_csv("transactions.csv")

CIBLE, HORS_MODELE = "statut", ["transaction_id", "date_operation"]
X = df.drop(columns=[CIBLE] + HORS_MODELE)
y = df[CIBLE]

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

Παραλλαγές και εσφαλμένος συμβολισμός: το κεφαλαίο Y δικαιολογείται για στόχο πολλαπλής εξόδου, μορφής (n, t), και είναι εσφαλμένο για μοναδικό στόχο. Ένα μέρος της βιβλιογραφίας των νευρωνικών δικτύων τοποθετεί τις παρατηρήσεις σε στήλες, με X μορφής (p, n): εσωτερικά συνεπής παραλλαγή, αλλά ασύμβατη με τη διεπαφή του scikit-learn, που απαιτεί τις παρατηρήσεις σε γραμμές.


2. Οι διαστάσεις και η επαλήθευσή τους στον κώδικα

2.1 Οι δομικοί ακέραιοι και το αναλλοίωτο

ΣύμβολοΌνομαΙσοδύναμο scikit-learnΤι μετρά
nΑριθμός παρατηρήσεωνn_samplesΟι γραμμές του X, το μήκος του y
pΑριθμός ερμηνευτικών μεταβλητώνn_featuresΟι στήλες του X
kΑριθμός κλάσεωνn_classesΟι διακριτές κατηγορίες του y

Ορισμένες αναφορές συμβολίζουν με d τον αριθμό μεταβλητών και με m εκείνον των παρατηρήσεων: το γράμμα λίγο μετρά, η θέση μετρά, ο πρώτος άξονας είναι εκείνος των παρατηρήσεων.

Η ισότητα των μηκών επαληθεύεται αυτόματα από το scikit-learn. Η αντιστοιχία γραμμή προς γραμμή δεν επαληθεύεται από καμία βιβλιοθήκη: είναι ιδιότητα του κώδικα που παρήγαγε τα X και y.

Υπενθύμιση λεξιλογίου: η μορφή (shape) είναι η πλειάδα των μεγεθών των αξόνων. Τα (n,) και (n, 1) περιέχουν τον ίδιο αριθμό τιμών αλλά όχι την ίδια τάξη — διάνυσμα από τη μία, πίνακας μίας στήλης από την άλλη.

2.2 Η συστηματική επαλήθευση

python
print("X :", X.shape)
print("y :", y.shape)
print("y ndim :", y.ndim)
print("ίσα μήκη :", X.shape[0] == y.shape[0])
X : (120000, 14)
y : (120000,)
y ndim : 1
ίσα μήκη : True

Ερμηνεία: 120 000 παρατηρήσεις περιγραφόμενες από 14 μεταβλητές και 120 000 τιμές-στόχοι· η τάξη 1 του y επιβεβαιώνει ότι πρόκειται για διάνυσμα. Μηδενικού κόστους, η επαλήθευση επαναλαμβάνεται μετά από κάθε φιλτράρισμα.

2.3 Η παγίδα του διανύσματος στήλης

python
y_correct = df["statut"]     # Series pandas -> μορφή (120000,)   ndim 1
y_faux = df[["statut"]]      # DataFrame     -> μορφή (120000, 1) ndim 2

Περασμένο σε έναν εκτιμητή, το δεύτερο ενεργοποιεί την ακόλουθη προειδοποίηση, που δεν διακόπτει την εκτέλεση και επαναλαμβάνεται σε κάθε επανάληψη επικύρωσης:

DataConversionWarning: A column-vector y was passed when a 1d array was
expected. Please change the shape of y to (n_samples,), for example using
ravel().

Διόρθωση: df["statut"] ή df[["statut"]].to_numpy().ravel().

2.4 Το κλασικό σφάλμα: η αποστοίχιση μεταξύ X και y

Το πιο διαδεδομένο σενάριο συνίσταται στο φιλτράρισμα του X αφού έχει εξαχθεί το y.

python
X = df.drop(columns=["transaction_id", "date_operation", "statut"])
y = df["statut"]

X = X.dropna()          # 2 570 γραμμές αφαιρέθηκαν από το X, καμία από το y
RandomForestClassifier().fit(X, y)
ValueError: Found input variables with inconsistent numbers of samples:
[117430, 120000]

Ερμηνεία: το σφάλμα είναι καλοήθη διότι είναι θορυβώδες — ο έλεγχος συνέπειας διακόπτει την εκτέλεση πριν από κάθε μάθηση. Η σωστή μορφή φιλτράρει τον πίνακα-πηγή πριν από τον διαχωρισμό.

Η επικίνδυνη περίπτωση είναι η σιωπηλή αποστοίχιση: τα μήκη διατηρούνται, αλλά η σειρά των γραμμών αποκλίνει.

python
X = df.drop(columns=["transaction_id", "date_operation", "statut"])
X = X.sort_values("montant")      # αναδιάταξη μόνο του X
y = df["statut"]

print(X.shape[0] == y.shape[0])
print(cross_val_score(RandomForestClassifier(), X, y, cv=5,
                      scoring="roc_auc").mean().round(3))
True
0.501

Ερμηνεία: καμία εξαίρεση δεν εγείρεται. Οι εκτιμητές μετατρέπουν τα αντικείμενα pandas σε πίνακες NumPy και αγνοούν τον δείκτη: η αντιστοιχία χάνεται χωρίς σήμα, και το μοντέλο μαθαίνει μια σύνδεση μεταξύ συναλλαγών και των ετικετών άλλων συναλλαγών. Ένα ROC-AUC 0,501 σε ένα πρόβλημα που θεωρείται προβλέψιμο είναι η υπογραφή μιας αποστοίχισης, όχι εκείνη ενός κακού αλγορίθμου.

Προστασία: ο δείκτης είναι τότε ο μόνος μάρτυρας της αντιστοιχίας — assert X.index.equals(y.index). Ένα φιλτράρισμα εγείρει εξαίρεση, άρα παραμένει καλοήθη· τα sort_values(), sample(frac=1) και ένα μονομερές reset_index(drop=True) είναι σιωπηλά, άρα κρίσιμα.


3. Ετικέτα και label

Το label αποδίδεται ως ετικέτα· οι δύο όροι είναι ισοδύναμοι και συνυπάρχουν στα ελληνικά επαγγελματικά περιβάλλοντα, όπως και τα επισημαίνω, σχολιάζω και ο αγγλισμός labelliser.

ΟΡΙΣΜΟΣ — Ετικέτα (label)

Αυστηρός ορισμός

Τιμή της μεταβλητής-στόχου συνδεδεμένη με μια παρατήρηση σε ένα σύνολο δεδομένων επιβλεπόμενης μάθησης, θεωρούμενη ως η απάντηση αναφοράς αυτής της παρατήρησης. Το διατεταγμένο σύνολο των ετικετών αποτελεί το διάνυσμα στόχου y.

Μετάφραση σε καθημερινή γλώσσα: η σωστή απάντηση, ήδη γνωστή, προσαρτημένη σε μια γραμμή του πίνακα.

Εμβέλεια του όρου: με την αυστηρή έννοια, μια ετικέτα είναι μια κατηγορική τιμή που ονομάζει την κατηγορία ένταξης της παρατήρησης. Στην ταξινόμηση, μια ετικέτα είναι μια κλάση· στην παλινδρόμηση, η συνδεδεμένη τιμή είναι μια αριθμητική τιμή-στόχος και όχι ετικέτα με την αυστηρή έννοια, ακόμη και αν η επαγγελματική χρήση επεκτείνει τη λέξη και στις δύο καταστάσεις.

Σημείο προσοχής: μια ετικέτα δεν είναι απόλυτη αλήθεια αλλά μια καταγεγραμμένη τιμή, που μπορεί να είναι εσφαλμένη ή να αντανακλά την απόφαση ενός σφάλλοντος χειριστή. Η αλήθεια εδάφους (ground truth), σύνολο των τιμών αναφοράς που χρησιμεύουν για την κρίση του μοντέλου, δεν είναι λοιπόν η πραγματικότητα αλλά η διαθέσιμη μέτρησή της: ένα σύνολο απάτης περιέχει τις ανιχνευθείσες απάτες, οι άλλες φέροντας την ετικέτα «Κανονική».

3.1 Ετικέτα ταξινόμησης και τιμή-στόχος παλινδρόμησης

ΚριτήριοΤαξινόμησηΠαλινδρόμηση
Φύση του yiy_iΚατηγορίαΠραγματικός αριθμός
Αυστηρός όροςΕτικέτα κλάσης (class label)Τιμή-στόχος, τιμή απόκρισης
Σύνολο άφιξηςΠεπερασμένο σύνολο 𝒞, πληθικότητας kℝ ή διάστημα του ℝ
Απόκλιση μεταξύ δύο τιμώνΜη ορισμένηΟρισμένη και ερμηνεύσιμη
Παράδειγμαstatut ∈ {Fraude, Normal}montant_sinistre = 4 380,50 $

Σημείο προσοχής: η διάκριση δεν διαβάζεται στον πληροφορικό τύπο της στήλης — ένας στόχος κωδικοποιημένος 0 και 1 είναι αριθμητικός με την έννοια του pandas και κατηγορικός με τη στατιστική έννοια. Το κριτήριο είναι η φύση του μετρώμενου φαινομένου (κεφάλαιο 010).

Ποιότητα της επισημείωσης: μεταξύ του φαινομένου και της τιμής που εγγράφεται στο y παρεμβάλλονται μια ανίχνευση και μια καταγραφή, και οι δύο σφάλουσες. Όταν πολλοί χειριστές επισημειώνουν τις ίδιες παρατηρήσεις, το ποσοστό διαφωνίας τους οριοθετεί την επιτεύξιμη επίδοση· το κάπα (Cohen, 1960) μετρά αυτή τη συμφωνία διορθώνοντας το αποτέλεσμα της τύχης.


4. Η κλάση, η κωδικοποίηση 0/1 και οι συμβάσεις της

ΟΡΙΣΜΟΣ — Κλάση

Αυστηρός ορισμός

Κατηγορία της μεταβλητής-στόχου ενός προβλήματος ταξινόμησης. Το σύνολο των k κλάσεων σχηματίζει μια διαμέριση του χώρου των παρατηρήσεων: κάθε παρατήρηση ανήκει σε μία κλάση και μόνο σε μία· οι κλάσεις είναι λοιπόν αμοιβαία αποκλειόμενες και συλλογικά εξαντλητικές.

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

Πληθικός αριθμός: k = 2 στη δυαδική ταξινόμηση, k > 2 στην πολυκλασική· η πολυετικετική ταξινόμηση αίρει την υπόθεση αποκλειστικότητας (κεφάλαιο 011).

Σημείο προσοχής: μια κλάση είναι κατηγορία του στόχου· οι κατηγορίες μιας ερμηνευτικής μεταβλητής είναι κατηγορίες (κεφάλαιο 022).

4.1 Από την κειμενική ετικέτα στον αριθμητικό κωδικό

Οι περισσότεροι εκτιμητές χειρίζονται αριθμητικές ετικέτες. Η μετατροπή είναι μηχανική, αλλά φέρει μια σιωπηρή απόφαση: ποια κλάση λαμβάνει το 1.

python
from sklearn.preprocessing import LabelEncoder

encodeur = LabelEncoder().fit(df["statut"])
print(dict(zip(encodeur.classes_, encodeur.transform(encodeur.classes_))))
{'Fraude': 0, 'Normal': 1}

Ερμηνεία: ο LabelEncoder ταξινομεί τις κατηγορίες κατά λεξικογραφική σειρά. Καθώς το «Fraude» προηγείται του «Normal» στο αλφάβητο, η απάτη λαμβάνει τον κωδικό 0 και η κανονική συμπεριφορά τον κωδικό 1· καθώς οι μετρικές κρατούν pos_label=1 από προεπιλογή, η θετική κλάση γίνεται «Normal» — το αντίστροφο της επιχειρησιακής πρόθεσης, χωρίς καμία προειδοποίηση.

Συνιστώμενη μορφή: να δηλώνεται ρητά η κωδικοποίηση αντί να υφίσταται.

python
y = (df["statut"] == "Fraude").astype(int)
print(y.value_counts())
statut
0    119652
1       348
Name: count, dtype: int64

Ερμηνεία: ο κωδικός 1 δηλώνει την απάτη εκ κατασκευής και όχι από αλφαβητικό ατύχημα, και μία γραμμή κώδικα τεκμηριώνει την απόφαση.

4.2 Οι συμβάσεις κωδικοποίησης που πρέπει να γνωρίζετε

ΣύμβασηΠεριεχόμενοΠλαίσιο
0 / 10 = απουσία του φαινομένου, 1 = παρουσίαΠρότυπο στη δυαδική ταξινόμηση
Λεξικογραφική σειράΟι κατηγορίες ταξινομούνται και έπειτα αριθμούνταιΠροεπιλεγμένη συμπεριφορά του scikit-learn
classes_Ιδιότητα που εκθέτει τη σειρά που κράτησε ο εκτιμητήςΝα συμβουλεύεται συστηματικά

Σημείο προσοχής για το predict_proba: ο επιστρεφόμενος πίνακας περιλαμβάνει μία στήλη ανά κλάση, διατεταγμένες σύμφωνα με το estimateur.classes_. Με classes_ ίσο με [0 1] και το 1 να δηλώνει την απάτη, το predict_proba(X_test)[:, 1] φέρει πράγματι την πιθανότητα απάτης· με μη επανακωδικοποιημένες κειμενικές ετικέτες, θα έφερε εκείνη του να είναι κανονική, παράγοντας ROC-AUC κάτω του 0,5 χωρίς να εγερθεί κανένα σφάλμα.


5. Η επιλογή της θετικής κλάσης

ΟΡΙΣΜΟΣ — Θετική κλάση και αρνητική κλάση

Αυστηρός ορισμός

Σε ένα πρόβλημα δυαδικής ταξινόμησης, η θετική κλάση είναι η κατηγορία της μεταβλητής-στόχου που ορίζεται ως γεγονός ενδιαφέροντος· χρησιμεύει ως αναφορά στον υπολογισμό των ποσοτήτων TP, FP, FN και TN και όλων των ασύμμετρων μετρικών που παράγονται από αυτές, ενώ η αρνητική κλάση είναι η συμπληρωματική κατηγορία. Το λεξιλόγιο προέρχεται από την ιατρική διάγνωση, όπου ένα τεστ «θετικό» σηματοδοτεί την παρουσία της αναζητούμενης κατάστασης.

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

Σημείο προσοχής: «θετικό» δεν σημαίνει «ευνοϊκό». Σε ένα μοντέλο διαλογής, η θετική κλάση είναι «πάσχων»· σε ένα μοντέλο αποχώρησης, «καταγγέλλει». Ο όρος είναι περιγραφικός, όχι αξιολογικός.

ΑΝΑΛΟΓΙΑ — Το τεστ διαλογής

Ένας ασθενής του οποίου το τεστ επιστρέφει θετικό δεν έλαβε καλά νέα. Το εργαστήριο δεν εξέφρασε αξιολογική κρίση: σήμανε ότι η αναζητούμενη ουσία ανιχνεύθηκε.

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

5.1 Το κριτήριο ορισμού

Τα τρία κριτήρια συγκλίνουν σχεδόν πάντα: αυτό που ο οργανισμός επιδιώκει να ανιχνεύσει είναι επίσης αυτό που είναι σπάνιο και αυτό του οποίου η παράλειψη κοστίζει ακριβά. Σε περίπτωση απόκλισης, προέχει το πρώτο, ως επιχειρησιακό.

Περίπτωση χρήσηςΘετική κλάσηΑρνητική κλάσηΕνεργοποιούμενη ενέργεια
Ανίχνευση απάτηςΑπάτηΚανονικήΑποκλεισμός ή χειροκίνητη ανασκόπηση
Ιατρικός διαλογισμόςΠάσχωνΥγιήςΣυμπληρωματική εξέταση
Αποχώρηση πελάτηΚαταγγέλλειΠαραμένειΠροσφορά διατήρησης
Προγνωστική συντήρησηΒλάβη σε 30 ημέρεςΟνομαστική λειτουργίαΠροληπτική παρέμβαση

5.2 Οι συνέπειες στις μετρικές

Έστω ένα μοντέλο αξιολογημένο επί 24 000 συναλλαγών εκ των οποίων 70 απάτες, με την απάτη ορισμένη ως θετική:

Προβλέφθηκε ΚανονικήΠροβλέφθηκε Απάτη
Πραγματική ΚανονικήTN = 23 620FP = 310
Πραγματική ΑπάτηFN = 28TP = 42
python
for nom, val in [("Accuracy", accuracy_score(y_test, y_pred)),
                 ("Precision fraude", precision_score(y_test, y_pred, pos_label=1)),
                 ("Recall fraude", recall_score(y_test, y_pred, pos_label=1)),
                 ("F1 fraude", f1_score(y_test, y_pred, pos_label=1)),
                 ("F1 normal", f1_score(y_test, y_pred, pos_label=0))]:
    print(f"{nom:<17}: {val:.4f}")
Accuracy         : 0.9859
Precision fraude : 0.1193
Recall fraude    : 0.6000
F1 fraude        : 0.1990
F1 normal        : 0.9929

Ερμηνεία: το ίδιο μοντέλο, επί των ίδιων προβλέψεων, εμφανίζει F1-score 0,199 ή 0,993 ανάλογα με την κλάση που ορίζεται ως θετική: μέτριος ανιχνευτής από τη μία, φαινομενικά άριστο σύστημα που αφήνει να περάσει το 40 % των απατών από την άλλη.

ΜετρικήΣυμπεριφορά κατά την αντιστροφή της θετικής κλάσης
Accuracy, Balanced Accuracy, Log Loss, συντελεστής MatthewsΑναλλοίωτες
Precision, RecallΓίνονται αντίστοιχα η αρνητική προγνωστική αξία και η ειδικότητα του παλαιού ορισμού
F1-score, PR-AUCΑλλάζουν, ριζικά σε περίπτωση ανισορροπίας
ROC-AUCΑμετάβλητη αν το χρησιμοποιούμενο σκορ είναι εκείνο της νέας θετικής κλάσης· γίνεται 1 − AUC διαφορετικά

Αυτές οι μετρικές ορίζονται μία προς μία στα κεφάλαια 052 έως 065· αυτό που πρέπει να κατακτηθεί εδώ είναι η εξάρτησή τους από την κλάση αναφοράς. Ο ορισμός διέπει επίσης την ανάγνωση του πίνακα σύγχυσης, όπου η ανταλλαγή των ρόλων μετατρέπει ένα ψευδώς αρνητικό σε ψευδώς θετικό (κεφάλαιο 052), την κατεύθυνση μετατόπισης του κατωφλίου (κεφάλαιο 062) και την κλάση που ενισχύουν τα class_weight και η υπερδειγματοληψία (κεφάλαιο 051).

5.3 Τα κλασικά σφάλματα ορισμού

Κλασικό σφάλμαΕκδήλωσηΔιόρθωση
Να αφήνεται η αλφαβητική σειρά να αποφασίζει«Fraude» κωδικοποιημένο 0 από τον LabelEncoderΡητή κωδικοποίηση της κλάσης ενδιαφέροντος ως 1
Σύγχυση θετικού και ευνοϊκού«Πιστός πελάτης» ορισμένος ως θετικός σε μοντέλο αποχώρησηςΘετικό = αναζητούμενο γεγονός
Ορισμός της πλειοψηφικής κλάσηςΚολακευτικές και μη αξιοποιήσιμες μετρικέςΟρισμός του σπάνιου γεγονότος προς ανίχνευση
Παράλειψη του pos_label με κειμενικές ετικέτεςValueError: pos_label=1 is not a valid labelΠέρασμα pos_label="Fraude" ή επανακωδικοποίηση σε 0/1
Ανάγνωση του confusion_matrix().ravel() χωρίς επαλήθευση της σειράςTN, FP, FN, TP εναλλαγμέναΚαθορισμός labels= και έλεγχος του classes_

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


6. Πλειοψηφική κλάση και μειοψηφική κλάση

ΟΡΙΣΜΟΣ — Πλειοψηφική κλάση, μειοψηφική κλάση, επιπολασμός

Αυστηρός ορισμός

Η πλειοψηφική κλάση είναι εκείνη της οποίας το πλήθος είναι το υψηλότερο στο εξεταζόμενο σύνολο, η μειοψηφική εκείνη της οποίας το πλήθος είναι το χαμηλότερο· στην πολυκλασική, ο χαρακτηρισμός επεκτείνεται κατά φθίνουσα σειρά πληθυνών. Ο επιπολασμός της θετικής κλάσης είναι το ποσοστό παρατηρήσεων αυτής της κλάσης, π = n₁ / n· ο λόγος ανισορροπίας (imbalance ratio) είναι το πηλίκο IR = nmajn_{\mathrm{maj}} / nminn_{\mathrm{min}}.

Μετάφραση σε καθημερινή γλώσσα: η συχνότερη και η σπανιότερη κλάση· το ποσοστό θετικών περιπτώσεων και ο αριθμός αρνητικών ανά ένα θετικό.

Σημείο προσοχής: αυτοί οι χαρακτηρισμοί είναι εμπειρικοί· περιγράφουν τη σύνθεση ενός δείγματος, όχι μια ιδιότητα του φαινομένου. Ένα επαναδειγματοληπτημένο σύνολο μπορεί να παρουσιάζει ίσα πλήθη ενώ το φαινόμενο παραμένει σπάνιο στον πληθυσμό, λόγος για τον οποίο το σύνολο δοκιμής δεν πρέπει ποτέ να επανισορροπείται (κεφάλαιο 051).

Δεύτερο σημείο προσοχής: αυτό που περιορίζει τη μάθηση δεν είναι μόνο ο λόγος αλλά το απόλυτο πλήθος της μειοψηφικής κλάσης. Ένας λόγος 100:1 με 5 000 θετικά είναι αξιοποιήσιμος· ο ίδιος λόγος με 30 θετικά δεν είναι, όποια τεχνική και αν χρησιμοποιηθεί.

6.1 Διαπίστωση στον κώδικα

python
effectifs = df["statut"].value_counts()
print(effectifs)
print("Επιπολασμός :", round(effectifs["Fraude"] / effectifs.sum(), 5))
print("Λόγος ανισορροπίας :", round(effectifs.max() / effectifs.min(), 1), ": 1")
statut
Normal    119652
Fraude       348
Name: count, dtype: int64

Επιπολασμός : 0.0029
Λόγος ανισορροπίας : 343.8 : 1

Ερμηνεία: η πλειοψηφική είναι «Normal» με 99,71 % των παρατηρήσεων, η μειοψηφική «Fraude» με 0,29 %, δηλαδή σχεδόν 344 κανονικές συναλλαγές ανά μία δόλια συναλλαγή. Το απόλυτο πλήθος των 348 απατών είναι χαμηλό: μετά από διαχωρισμό 80/20, η δοκιμή θα περιέχει περίπου 70, γεγονός που καθιστά κάθε μετρική υπολογισμένη επί αυτής της κλάσης ασταθή και επιβάλλει στρωματοποιημένο διαχωρισμό (κεφάλαιο 027).

Σύσταση: το value_counts() επί του στόχου είναι η πρώτη εντολή που εκτελείται μετά τη φόρτωση ενός συνόλου ταξινόμησης· καθορίζει την επιλογή των μετρικών, τη στρατηγική διαχωρισμού και την αντιμετώπιση της ανισορροπίας. Οι επιπολασμοί κυμαίνονται από 15 % έως 30 % στην αποχώρηση τηλεπικοινωνιών έως κάτω του 0,1 % στην ανίχνευση εισβολής: η ανισορροπία είναι η κανονική κατάσταση.

6.2 Θετική και μειοψηφική: δύο διακριτές έννοιες

Η κυρίαρχη διαμόρφωση συνδέει θετική και μειοψηφική, αλλά ένας έλεγχος ποιότητας όπου το 92 % των τεμαχίων είναι σύμφωνα και όπου πιστοποιείται η συμμόρφωση ορίζει νόμιμα την πλειοψηφική ως θετική. Μετά την επανισορρόπηση, η θετική δεν είναι πλέον μειοψηφική στο train, αλλά παραμένει στο test.

6.3 Η άμεση συνέπεια: η παραπλανητική ορθότητα

python
modele_nul = DummyClassifier(strategy="most_frequent").fit(X_train, y_train)
y_nul = modele_nul.predict(X_test)

print("Accuracy      :", round(accuracy_score(y_test, y_nul), 4))
print("Recall fraude :", round(recall_score(y_test, y_nul, pos_label=1), 4))
Accuracy      : 0.9971
Recall fraude : 0.0

Ερμηνεία: ένα μοντέλο που προβλέπει συστηματικά «Normal» επιτυγχάνει ορθότητα 99,71 % και δεν ανιχνεύει καμία απάτη — απολύτως άχρηστο και απολύτως καλά βαθμολογημένο. Αυτός είναι ο λόγος για τον οποίο η ορθότητα αποκλείεται μόλις η ανισορροπία είναι έντονη. Ένα τέτοιο μοντέλο αποτελεί την υποχρεωτική γραμμή βάσης του έργου: ένα μοντέλο που δεν την υπερβαίνει δεν έχει μάθει τίποτα (κεφάλαια 050 και 051).


7. Συχνά λάθη συλλογισμού

ΣΦΑΛΜΑ — Θεώρηση της ισότητας των μηκών ως απόδειξης στοίχισης

Το X.shape[0] == y.shape[0] είναι αναγκαία συνθήκη, ποτέ επαρκής: μια ταξινόμηση, μια ανάμειξη ή μια επανευρετηρίαση εφαρμοσμένες σε ένα μόνο από τα δύο αντικείμενα διατηρούν τα μήκη και καταστρέφουν την αντιστοιχία, σιωπηλά.

Σωστή διατύπωση: «Το αναλλοίωτο που πρέπει να διατηρηθεί είναι η θεσιακή αντιστοιχία: η γραμμή i του X και η τιμή yiy_i περιγράφουν την ίδια παρατήρηση. Κάθε φιλτράρισμα ή ταξινόμηση εφαρμόζεται στον πίνακα-πηγή, πριν από τον διαχωρισμό.»

ΣΦΑΛΜΑ — Να αφήνεται η κωδικοποίηση να ορίζει τη θετική κλάση

Ο LabelEncoder ταξινομεί τις κατηγορίες κατά λεξικογραφική σειρά: με «Fraude» και «Normal», η απάτη λαμβάνει τον κωδικό 0 και οι μετρικές, που κρατούν pos_label=1 από προεπιλογή, μετρούν τότε την κλάση «Normal».

Σωστή διατύπωση: «Η θετική κλάση δηλώνεται ρητά, για παράδειγμα y = (df["statut"] == "Fraude").astype(int), και επαληθεύεται με ανάγνωση του classes_ μετά την προσαρμογή.»

ΣΦΑΛΜΑ — Σύγχυση θετικής κλάσης και ευνοϊκής κλάσης

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

Σωστή διατύπωση: «Η θετική κλάση είναι το γεγονός που το μοντέλο έχει αποστολή να ανιχνεύσει, ανεξάρτητα από τον επιθυμητό χαρακτήρα του.»

ΣΦΑΛΜΑ — Αναγγελία μετρικής χωρίς ονομασία της κλάσης

Precision, recall, F1-score και PR-AUC είναι ασύμμετρες: στο ίδιο μοντέλο, το F1-score αξίζει 0,199 για την απάτη και 0,993 για την κανονική συμπεριφορά.

Σωστή διατύπωση: «Το F1-score επί της κλάσης Απάτη είναι 0,199», και ποτέ «το F1-score του μοντέλου είναι 0,199».

ΣΦΑΛΜΑ — Ταύτιση εξ ορισμού μειοψηφικής κλάσης και θετικής κλάσης

Η θετική κλάση προκύπτει από μεθοδολογική απόφαση, η μειοψηφική κλάση από καταμέτρηση· η σύμπτωσή τους είναι εμπειρικό γεγονός. Μετά την επανισορρόπηση, η θετική κλάση δεν είναι πλέον μειοψηφική στο train αλλά παραμένει στο test.

Σωστή διατύπωση: «Η θετική κλάση ορίζεται, η μειοψηφική κλάση διαπιστώνεται.»


8. Σύνθεση

ΣΥΜΒΟΛΙΣΜΟΣ
    X   πίνακας ερμηνευτικών μεταβλητών   μορφή (n, p)   ΚΕΦΑΛΑΙΟ
    y   διάνυσμα στόχου                   μορφή (n,)     πεζό
    Προέλευση: τυπογραφία της γραμμικής άλγεβρας
    πίνακας = κεφαλαίο, διάνυσμα = πεζό, βαθμωτό = πλάγιο

ΑΝΑΛΛΟΙΩΤΟ ΣΤΟΙΧΙΣΗΣ
    Αναγκαίο : X.shape[0] == y.shape[0]
    Επαρκές  : η γραμμή i του X και το y_i περιγράφουν την ΙΔΙΑ παρατήρηση
    Η σιωπηλή αποστοίχιση δεν εγείρει καμία εξαίρεση.

ΕΤΙΚΕΤΑ ΚΑΙ ΚΛΑΣΗ
    Ετικέτα : τιμή της μεταβλητής-στόχου για μια παρατήρηση.
        ταξινόμηση = ετικέτα κλάσης, κατηγορική
        παλινδρόμηση  = τιμή-στόχος, αριθμητική
    Κλάση : κατηγορία του στόχου· οι κλάσεις σχηματίζουν διαμέριση,
        αποκλειόμενες και εξαντλητικές.
    Η αλήθεια εδάφους είναι μέτρηση, όχι η πραγματικότητα.

ΘΕΤΙΚΗ ΚΛΑΣΗ
    ΟΡΙΖΕΤΑΙ, δεν διαπιστώνεται.
    Κριτήριο : το γεγονός που επιδιώκουμε να ανιχνεύσουμε
               και που ενεργοποιεί μια ενέργεια.
    Θετικό = παρουσία του φαινομένου, ποτέ «ευνοϊκό».
    Καθορίζει precision, recall, F1, PR-AUC
    και την ανάγνωση του πίνακα σύγχυσης.

ΠΛΕΙΟΨΗΦΙΚΗ / ΜΕΙΟΨΗΦΙΚΗ ΚΛΑΣΗ
    ΔΙΑΠΙΣΤΩΝΟΝΤΑΙ με καταμέτρηση: value_counts()
    Επιπολασμός = n_θετικών / n     Λόγος = n_πλειο / n_μειο
    Το ΑΠΟΛΥΤΟ πλήθος της μειοψηφικής μετρά όσο και ο λόγος.

Συνθετική διατύπωση

Το X είναι κεφαλαίο διότι είναι πίνακας μορφής (n, p) και το y πεζό διότι είναι διάνυσμα μορφής (n,), με την αντιστοιχία τους να είναι θεσιακή και μη εγγυημένη από μόνη την ισότητα των μηκών τους· μια ετικέτα είναι η τιμή της μεταβλητής-στόχου που καταγράφηκε για μια παρατήρηση, μια κλάση είναι μια κατηγορία αυτής της μεταβλητής, και η θετική κλάση είναι εκείνη που ο οργανισμός επιδιώκει να ανιχνεύσει — μεθοδολογικός ορισμός, διακριτός από τη διαπίστωση μειονότητας, από τον οποίο εξαρτώνται ο πίνακας σύγχυσης και όλες οι ασύμμετρες μετρικές.


Σχετικά κουίζ

  • 007.1-quiz-notation-x-y.md
  • 007.2-quiz-dimensions-alignement.md
  • 007.3-quiz-etiquette-label.md
  • 007.4-quiz-classe-encodage.md
  • 007.5-quiz-classe-positive.md
  • 007.6-quiz-classes-majoritaire-minoritaire.md

Επόμενο κεφάλαιο: 008-algorithme-vs-modele.md