Παράρτημα: Μοντέλο στατιστικών — ευθυγράμμιση XG / gnuBG / blunderDB

Η σελίδα αυτή περιγράφει πώς το blunderDB υπολογίζει τους δείκτες που εμφανίζει — PR (Performance Rating), Snowie Error Rate, απώλεια MWC, τύχη και νίκες/ήττες — και πώς ευθυγραμμίζονται με το eXtreme Gammon (XG) και το gnuBG (ανοικτή αναφορά).

Τυπικοί ορισμοί

PR (Performance Rating)

Το PR (που ονομάζεται επίσης «error rate per decision» στο gnuBG) μετρά το μέσο κόστος των λαθών ανά μετρούμενη απόφαση, στην κλίμακα του eXtreme Gammon και του gnuBG: το μέσο σφάλμα ισοδυναμίας, πολλαπλασιασμένο επί 500.

\[\mathrm{PR} = \frac{\sum_i |\mathrm{erreur}_i|}{\mathrm{N_{compté}}} \times 500\]
  • Ο αριθμητής είναι το απόλυτο άθροισμα των σφαλμάτων EMG (σε equity cubeful) επί όλων των αποφάσεων του πεδίου.

  • Ο παρονομαστής \(N_\text{compté}\) είναι ο αριθμός των μετρούμενων αποφάσεων (βλ. παρακάτω).

  • Ο συντελεστής 500 είναι η σύμβαση του XG και του gnuBG (πρβλ. gnubg/formatgs.c:399–409). Δεν πρόκειται για μετατροπή σε millipoints: ένα μέσο σφάλμα ισοδυναμίας 0,010 — δηλαδή 10 millipoints (mpt) — δίνει PR 5,0. Τα σφάλματα μιας θέσης, αντιθέτως, διαβάζονται όντως σε millipoints, δηλαδή σε χιλιοστά της ισοδυναμίας: το κατώφλι του blunder παρακάτω, τα φίλτρα αναζήτησης e> και E>, το ιστόγραμμα των μεγεθών του πίνακα Stats.

Snowie Error Rate

Το Snowie ER χρησιμοποιεί τον ίδιο αριθμητή με το PR, αλλά ο παρονομαστής είναι ο συνολικός αριθμός κινήσεων και των δύο παικτών, συμπεριλαμβανομένων των αναγκαστικών κινήσεων (όλες οι αποφάσεις, χωρίς φίλτρο):

\[\mathrm{SnowieER} = \frac{\sum_i |\mathrm{erreur}_i|}{N_\text{P1} + N_\text{P2}} \times 500\]

Αναφορά: gnubg/formatgs.c:415–424.

Το Snowie ER είναι πιο σταθερό μεταξύ των εργαλείων επειδή ο παρονομαστής του δεν εξαρτάται από το φίλτρο των αναγκαστικών/τετριμμένων αποφάσεων. Χρησιμεύει ως μετρική διασταύρωσης XG ↔ gnuBG ↔ blunderDB.

Σημαντικό

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

Σημείωση

Το Snowie ER ενός παίκτη είναι τυπικά περίπου το μισό του PR του, επειδή ο παρονομαστής περιλαμβάνει τις κινήσεις και των δύο παικτών, ενώ το PR χρησιμοποιεί μόνο τις αποφάσεις αυτού του παίκτη.

Απώλεια MWC (Match Winning Chance)

Η απώλεια MWC εκφράζει σε ποσοστιαίες μονάδες πιθανότητας νίκης του αγώνα το σωρευτικό αποτέλεσμα των σφαλμάτων ενός παίκτη. Για κάθε απόφαση, το σφάλμα EMG μετατρέπεται σε MWC μέσω του πίνακα MET (Match Equity Table) στο τρέχον σκορ:

\[\mathrm{MWCLoss} = \sum_i \mathrm{eq2mwc}(\mathrm{erreur}_i, \mathrm{score}_i)\]

Αναφορά: gnubg/analysis.c:1449–1464.

Τύχη (luck)

Η τύχη μιας ζαριάς είναι η διαφορά ανάμεσα σε αυτό που έδωσαν τα ζάρια και σε αυτό που δίνουν κατά μέσο όρο:

\[\mathrm{luck} = \mathrm{eq}(\text{καλύτερη κίνηση με τη ζαριά που ήρθε}) - \frac{1}{36}\sum_{d} \mathrm{eq}(\text{καλύτερη κίνηση με } d)\]

με το άθροισμα να εκτείνεται στις 36 εκβάσεις της ζαριάς (30 μη διπλές ζαριές για την πρώτη κίνηση της παρτίδας, που δεν μπορεί να είναι διπλή). Θετική τιμή σημαίνει ευνοϊκή ζαριά. Αναφορά: gnubg/analysis.c:199–269 (LuckNormal / LuckFirst, αξιολόγηση cubeful σε 0 ply).

Σημαντικό

Το blunderDB δεν υπολογίζει ποτέ ξανά την τύχη: ο ενσωματωμένος αξιολογητής δεν χρησιμεύει σε αυτό. Παίρνει αυτούσια την τιμή που έγραψε το εργαλείο που ανέλυσε τον αγώνα — ErrLuck για το eXtreme Gammon, την ιδιότητα LU για το gnuBG — αφού επαληθεύσει ότι και τα δύο μοιράζονται την ίδια σύμβαση (ίδια μονάδα, θετικό = τυχερό).

Πρακτικές συνέπειες:

  • Οι μορφές που δεν μεταφέρουν την τύχη (BGF, Jellyfish .mat) δεν παράγουν καμία τιμή.

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

  • Μια απούσα τιμή σημαίνει άγνωστη, ποτέ μηδενική — το μηδέν είναι μια πραγματικά ουδέτερη ζαριά. Οι μέσοι όροι τύχης διαιρούν επομένως μόνο με το πλήθος των ζαριών των οποίων η τύχη είναι γνωστή.

  • Ένας αγώνας στον οποίο όλες οι ζαριές θα είχαν τύχη ακριβώς μηδέν θεωρείται μη αναλυμένος από αυτή την άποψη (το eXtreme Gammon γράφει 0 τόσο για το «ουδέτερο» όσο και για το «μη υπολογισμένο»): οι ζαριές του παραμένουν άγνωστες. Στο gnuBG η διάκριση είναι ρητή — μια μη αξιολογημένη ζαριά φέρει LU[-inf] — και οι ζαριές αυτές παραμένουν επίσης άγνωστες, αντί να μετατραπούν σε τιμή.

Νίκες και ήττες

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

  • Αγώνας σε N πόντους — νικητής = ο παίκτης που φτάνει τους N. Αν δεν τους φτάσει κανείς, ο αγώνας είναι ημιτελής (κολοβωμένο αρχείο, εγκατάλειψη) και δεν μετρά ούτε νίκη ούτε ήττα, για κανέναν.

  • Παιχνίδι για χρήματα (χωρίς στόχο) — νικητής = όποιος πήρε τους περισσότερους πόντους· σε ισοπαλία, ούτε νίκη ούτε ήττα. Αυτή είναι η σύμβαση αποτελέσματος συνεδρίας του gnuBG (+1 / 0 / −1, gnubg/relational.c).

Συνέπεια που πρέπει να γνωρίζετε διαβάζοντας την καρτέλα Παίκτες: νίκες + ήττες μπορεί να είναι λιγότερες από το πλήθος των αγώνων. Η διαφορά είναι οι ημιτελείς αγώνες.

Λάθη και σοβαρά λάθη

Μια απόφαση μετρά ως σφάλμα μόλις το σχετικό σφάλμα equity φτάσει το κατώφλι σφάλματος της βιβλιοθήκης, και ως blunder μόλις φτάσει το κατώφλι blunder της. Και τα δύο ρυθμίζονται στην καρτέλα Βιβλιοθήκη των ρυθμίσεων και έχουν εξ ορισμού τιμές 0,050 και 0,100 EMG (50 και 100 mpt). Η σύγκριση είναι συμπεριληπτική: ένα σφάλμα ακριβώς 0,100 είναι blunder με το προκαθορισμένο κατώφλι, σε όλες τις οθόνες (κατανομή ανά ενέργεια κύβου, λεπτομέρεια αγώνα, πίνακας παικτών), και το ίδιο ζεύγος εξυπηρετεί τον μετρητή της γραμμής κατάστασης και τη λίστα που προτείνεται μετά από μια εισαγωγή.

Αυτά τα κατώφλια είναι ίδια για κάθε βιβλιοθήκη, και οι προκαθορισμένες τιμές είναι ίδιον του blunderDB: το gnuBG κατατάσσει τις κινήσεις σε τρεις βαθμίδες (0.03 αμφίβολη, 0.06 κακή, 0.12 πολύ κακή — gnubg/gnubg.c:281–286) αντί για μία μόνο κατηγορία, και το eXtreme Gammon χαράζει τα δικά του στο 0,020 και στο 0,080. Και τα δύο προσφέρονται ως προκαθορισμένες ρυθμίσεις.

Μετρούμενες αποφάσεις στον παρονομαστή του PR

Το blunderDB ακολουθεί τους ίδιους κανόνες αποκλεισμού με το XG και το gnuBG.

Κινήσεις πουλιών — μετρούμενες αποφάσεις

Μετρώνται μόνο οι μη αναγκαστικές κινήσεις:

  • Μια κίνηση είναι αναγκαστική αν τα ζάρια προσφέρουν μόνο μία νόμιμη κίνηση (cMoves == 1 στο gnubg/analysis.c:458).

  • Οι αναγκαστικές κινήσεις έχουν μηδενικό σφάλμα εξ ορισμού: ο παίκτης δεν είχε επιλογή. Η συμπερίληψή τους στον παρονομαστή θα μείωνε τεχνητά το PR.

Αποφάσεις κύβου — μετρούμενες αποφάσεις

Μετρώνται μόνο οι οριακές αποφάσεις κύβου:

  • Μια απόφαση κύβου είναι οριακή αν βρίσκεται εντός του παραθύρου equity [-0.16, +0.16] γύρω από το σημείο διπλασιασμού (κατηγόρημα isCloseCubedecision στο gnubg/eval.c:5088–5100).

  • Ένα τετριμμένο «No Double» (πολύ αρνητικό ή πολύ θετικό equity) δεν είναι μια πραγματική στρατηγική απόφαση· η συμπερίληψή του θα διόγκωνε τον παρονομαστή και θα μείωνε το PR.

Σύνοψη φίλτρου

Τύπος απόφασης

Συμπεριλαμβάνεται στο \(N_\text{compté}\) (PR)

Μη αναγκαστική κίνηση

Ναι

Αναγκαστική κίνηση

Όχι

Οριακός κύβος

Ναι

Τετριμμένο No Double

Όχι

Take / Pass

Πάντα (είναι απαντήσεις σε διπλασιασμό)

Αντιστοιχία blunderDB ↔ XG ↔ gnuBG

Οι μετρικές είναι ευθυγραμμισμένες εντός των παρακάτω ορίων. Πρόκειται για όρια που επαληθεύονται από τη σουίτα δοκιμών, και όχι για μέσες αποκλίσεις: η δοκιμή συγκρίνει αγώνα προς αγώνα τους αριθμούς του blunderDB με εκείνους που έχουν καταγραφεί για τους αγώνες αναφοράς του αποθετηρίου, και αποτυγχάνει μόλις μία και μόνη απόκλιση ξεπεράσει το όριο. Οι αναφορές XG αφορούν δύο αγώνες — έναν πλήρη (317 μετρούμενες αποφάσεις, 156 και 161 ανά παίκτη) και έναν άλλο περιορισμένο μόνο στο PR του, με το όριο ανεβασμένο στο 0,15 εξαιτίας μιας κίνησης που δεν ταιριάχτηκε· οι αναφορές gnuBG αφορούν δύο άλλους αγώνες. Η έκδοση του eXtreme Gammon που παρήγαγε αυτούς τους αριθμούς δεν έχει καταγραφεί.

Σύγκριση XG ↔ blunderDB (ίδια μηχανή ανάλυσης)

Μετρική

Μέγιστη απόκλιση

Συνολικές αποφάσεις

≤ 5

Μη αναγκαστικές κινήσεις

≤ 7

PR

≤ 0.10

Απώλεια MWC

≤ 1.0 pp

Συνολικό equity (EMG)

≤ 0.05

Σύγκριση gnuBG ↔ blunderDB (εισαγωγή SGF — διαφορετικές μηχανές)

Μετρική

Μέγιστη απόκλιση

Κύρια αιτία

PR (checker)

≤ 0.20

διαφορές equity μεταξύ μηχανών

Απώλεια MWC

≤ 3.5 pp

ελλιπή δεδομένα οριακού κύβου στο SGF

Snowie ER

≤ 0.50

αναγκαστικές κινήσεις χωρίς ανάλυση (SGF)

Σημείωση

Τα αρχεία SGF (gnuBG) δεν περιλαμβάνουν τις εναλλακτικές για τις αναγκαστικές κινήσεις, πράγμα που σημαίνει ότι το blunderDB δεν μπορεί να εντοπίσει όλες τις αναγκαστικές κινήσεις κατά την εισαγωγή SGF. Αυτό δημιουργεί μια δομική απόκλιση στο Snowie ER (ελαφρώς διαφορετικός παρονομαστής).

Επαλήθευση των δικών σας αριθμών

Αν οι τιμές σας PR ή MWC αποκλίνουν από τους αριθμούς του XG, ελέγξτε τα ακόλουθα σημεία:

  1. Πλήρεις αναλύσεις — Το PR μπορεί να υπολογιστεί μόνο σε θέσεις που διαθέτουν ανάλυση. Οι θέσεις χωρίς ανάλυση μετρώνται ως μηδενικό σφάλμα αλλά δεν συμπεριλαμβάνονται στο \(N_\text{compté}\).

  2. Έκδοση XG — Το XG μπορεί να αλλάξει τους υπολογισμούς του μεταξύ εκδόσεων. Το blunderDB ευθυγραμμίζεται με τη συμπεριφορά που παρατηρείται στις πρόσφατες εκδόσεις.

  3. Μορφή εισαγωγής — Τα αρχεία SGF του gnuBG παράγουν μεγαλύτερες αποκλίσεις στις μετρικές κύβου (βλ. πίνακα παραπάνω) επειδή το αρχείο δεν περιλαμβάνει πλήρεις αναλύσεις για όλες τις αποφάσεις κύβου.

  4. Μετάβαση βάσης — Μετά την ενημέρωση του blunderDB, οι υπάρχουσες βάσεις μεταφέρονται αυτόματα. Δημιουργήστε αντίγραφο ασφαλείας πριν ανοίξετε μια βάση με νέα έκδοση.

Αναφορά gnuBG

Οι τύποι έχουν επαληθευτεί στα ακόλουθα αρχεία πηγαίου κώδικα (αποθετήριο gnuBG):

  • gnubg/formatgs.c:399–409 — PR («Error rate per decision»).

  • gnubg/formatgs.c:415–424 — Snowie Error Rate.

  • gnubg/analysis.c:458–462 — Συσσώρευση checker, αποκλεισμός αναγκαστικών κινήσεων (cMoves > 1).

  • gnubg/analysis.c:1430–1474 — Μετατροπή EMG → MWC ανά απόφαση.

  • gnubg/analysis.c:1449–1464 — Συσσώρευση της απώλειας MWC (eq2mwc).

  • gnubg/eval.c:5088–5100 — Κατηγόρημα isCloseCubedecision (κατώφλι 0.16).