Rispondere meno può essere utile, ma che cosa stiamo contando?
Un classificatore verticale riconosce categorie di difetti nei tessuti. L’impresa preferirebbe che i casi difficili fossero rinviati a un altro processo, invece di ricevere sempre una risposta. La scelta sembra semplice: accettare soltanto le previsioni con punteggio alto. Ma possiamo chiamare affidabile un sistema che sbaglia poco solo perché risponde a pochissimi casi? E alzare la soglia riduce sempre gli errori fra quelli rimasti? Costruiremo un esempio completo per separare tre domande: quanto lavoro viene coperto, quale rischio rimane nelle risposte e quale costo totale produce l’astensione.
Abstract. Usiamo venti punteggi sintetici ordinati e sei errori dichiarati. Accettare tutti dà rischio 30%; accettare i primi sette dà rischio osservato zero e copertura 35%, rinviando tredici casi. Mostriamo un tratto non monotono della curva rischio-copertura e calcoliamo il costo di ogni soglia con costo errore 1 e astensione 0,1. Il minimo osservato è 0,065 per caso, ma non è un’ottimizzazione su un test indipendente. Deriviamo inoltre un limite superiore unilaterale per zero errori in un ipotetico campione indipendente a soglia prefissata: con sette accettati il limite 95% è circa 34,82%, non zero. Nessuna rete neurale è stata addestrata.
Definire il denominatore prima della percentuale
Il classificatore f produce una categoria. Un secondo meccanismo g decide se usare la risposta: g=1 significa accettare, g=0 astenersi. Per un caso già etichettato conosciamo anche la perdita ℓ, che vale 1 se la categoria è sbagliata e 0 se è corretta. Il rischio selettivo divide gli errori accettati per il numero degli accettati; la copertura divide gli accettati per tutti i casi. Sono quantità diverse: scartare un errore cambia entrambi i denominatori in modo differente. L’astensione non modifica la previsione di f, ma decide se esporla o utilizzarla.
Se A=0, il rapporto E/A non è definito: non possiamo assegnare arbitrariamente rischio zero a un sistema che non risponde mai e confrontarlo come se avesse dimostrato perfezione. Si può comunque calcolare la copertura zero e il costo delle astensioni. Le formule sono empiriche sul campione; il rischio sulla popolazione dei futuri casi è un oggetto distinto. Useremo la notazione semplice per il conteggio osservato, specificando più avanti le ipotesi necessarie per parlare di un limite statistico.
Venti casi, non venti probabilità calibrate
I punteggi decrescono da 0,99 a 0,80, a passi 0,01. Gli errori sono nelle posizioni 8,10,13,16,19,20 dell’ordine, contando da 1. Il codice conserva l’intero vettore dei punteggi e le etichette di errore: non li genera un modello reale e non sono frequenze misurate su clienti. Il punteggio serve soltanto a ordinare i casi, quindi 0,99 non significa 99% di probabilità di correttezza. Un modello verticale potrebbe usare un margine, una risposta softmax o un altro criterio; qui non confrontiamo quei metodi di scoring.
Accettiamo i primi k casi, equivalenti a una soglia inclusiva sul punteggio, perché qui non ci sono pareggi. Tutti e 20 contengono sei errori:6/20=0,30. I primi sette contengono zero errori, quindi rischio 0/7=0 e copertura 7/20=0,35. Restano tredici casi da gestire altrove. Non sono tredici problemi risolti: la loro risposta può costare tempo, risorse e nuovi errori. Per questo un confronto che mostri soltanto la percentuale di risposte corrette senza la copertura nasconde parte del servizio richiesto.
Una soglia più alta non promette una curva monotona
Con k=9 accettati c’è un solo errore, quello in posizione 8: rischio 1/9≈11,11%. Alzare la soglia fino a k=8 elimina il nono caso, che era corretto, ma conserva l’errore: rischio 1/8=12,5%. La copertura scende da 45% a 40% mentre il rischio sale. Nessuna contraddizione: il selettore ha rifiutato una risposta buona. Continuando fino a k=7 rimuove anche l’errore e il rischio torna zero. Il disegno mostra perciò una curva con piccoli saliscendi, non una garanzia che ogni aumento di soglia migliori il rischio osservato.
| Accettati | Copertura | Errori | Rischio |
|---|---|---|---|
| 7 | 35% | 0 | 0% |
| 8 | 40% | 1 | 12.5% |
| 9 | 45% | 1 | 11.1111% |
| 20 | 100% | 6 | 30% |
La qualità utile del punteggio è la sua capacità di separare errori e casi corretti. Una trasformazione strettamente crescente dei punteggi lascia invariato l’ordine e quindi tutte le possibili coppie rischio-copertura, se scegliamo soglie corrispondenti. Non rende invece calibrate le probabilità. Questo distingue l’astensione dalla domanda affrontata quando si verifica se una confidenza 90% significhi davvero nove successi su dieci: qui possiamo valutare la selezione anche con un semplice ordine, ma dobbiamo misurare quale parte del lavoro rimane scoperta.
Rifiutare ha un costo: calcolare il servizio intero
Assegniamo costo normalizzato 1 a una risposta errata,0 a una corretta e 0,1 a ogni astensione. Sono ipotesi economiche astratte, non prezzi, tempi o prestazioni di un revisore umano. Il costo per caso si calcola su tutti i venti ingressi: sommiamo costo degli errori accettati e dei casi rinviati, poi dividiamo per 20. In questo modello il rinvio ha un costo fisso comprensivo del trattamento successivo; non stiamo dimostrando che quel trattamento dia sempre una risposta corretta.
Il programma valuta tutte le venti soglie non vuote e confronta anche l’astensione totale. Trova il minimo osservato a k=7:0,065 per ingresso, contro 0,3 rispondendo sempre e 0,1 senza rispondere mai. La parola osservato è decisiva: scegliamo usando gli stessi errori costruiti su cui riportiamo il costo. Non esiste qui un test indipendente, quindi il numero non è una stima imparziale del costo futuro e non autorizza a mettere in esercizio una soglia. In un problema reale cambiare il costo del rinvio può cambiare la scelta; la curva rischio-copertura da sola non specifica le preferenze dell’impresa.
Zero errori non significa rischio futuro zero
Facciamo ora un ragionamento statistico distinto dal campione costruito. Immaginiamo una regola di selezione fissata prima di osservare un nuovo test indipendente. Fra n casi accettati, indipendenti e con la stessa probabilità di errore r, la probabilità di non vedere errori è(1−r)ⁿ. Vogliamo un limite superiore unilaterale al 95% in caso di zero errori: troviamo u per cui(1−u)ⁿ=0,05. Sopra quel valore sarebbe raro ottenere tutti successi. È una derivazione binomiale sotto ipotesi esplicite, non un certificato ottenuto dai nostri venti dati artificiali.
Con n=7 il limite è 34,82%, non una stima che il rischio sia 34,82%. Sotto le ipotesi, ripetendo il campionamento la procedura copre il rischio vero almeno nel 95% dei casi; non assegna una probabilità posteriore al parametro. Con 100 accettati senza errori il limite è 2,9513%; con 149 scende sotto 2%. Conta il numero accettato, non tutte le richieste ricevute.
Perché non applichiamo il limite a k=7 della curva? I venti casi sono costruiti, non un campione indipendente da una popolazione definita. Inoltre abbiamo scelto la soglia guardando gli stessi errori. Fingere che fosse prefissata ignora la selezione. Serve un test indipendente o un procedimento con correzioni per la ricerca. Aggiungere la parola confidenza a una curva empirica non crea controllo del rischio.

La differenza con un controllo del rischio
Selective Classification for Deep Neural Networks di Yonatan Geifman e Ran El-Yaniv, arXivv 2 del 1 giugno 2017, formalizza il selettore e propone SGR, Selection with Guaranteed Risk. Abbiamo letto definizioni, algoritmo, limite binomiale ed esperimenti. La ricerca delle soglie corregge il parametro di confidenza; la prova separa scelta e valutazione, per esempio circa 5000/5000 casi CIFAR-10. Con VGG-16 gli autori riportano copertura di test 0,7856 e rischio 0,0092 per target 0,01. Non abbiamo riprodotto questi risultati.
Quel rischio non si trasferisce a tessuti o modelli EL-AI: distribuzione, rete e selettore sono diversi. Il nostro codice non implementa SGR né usa VGG o ImageNet. Il contributo è distinguere copertura, rischio osservato, costo e garanzia. Un cambiamento di dominio può alterare rischio e ranking: l’astensione non corregge automaticamente una distribuzione diversa. Anche rifiutare tutti i casi di un sottogruppo può migliorare il totale nascondendo un servizio assente proprio dove è richiesto.
Riprodurre il calcolo e rispondere alla domanda
L’allegato conserva venti punteggi, venti indicatori d’errore e tutte le soglie. Conteggi e limiti sono deterministici, senza seed. L’implementazione semplice risomma prefissi: O(N²); somme cumulative ridurrebbero il lavoro dopo l’ordinamento generale O(Nlog N). Con venti casi importa rendere ogni denominatore ispezionabile, non misurare velocità. Il frammento stampa i punti 7,8,9,20 e i limiti per 7 e 149 casi: collega codice, formule e figura senza chiedere al lettore di fidarsi di un numero isolato.
In esercizio servirebbe verificare anche chi gestisce i rinvii, la sua capacità e qualità, insieme ai sottogruppi importanti. Non sono risultati misurati né funzionalità attribuite a EL-AI. Astenersi conviene quando l’intero sistema offre un compromesso verificato migliore per il compito. Pochi errori nelle risposte accettate da soli non bastano: possono essere comprati con poca copertura, selezione ottimistica della soglia o campioni piccoli. La risposta scientifica è dunque una relazione fra servizio e rischio, non un numero di confidenza da scegliere senza contesto.
from experiment import curve,zero_upper
for row in curve():
if row["accepted"] in [7,8,9,20]:print(row)
print(zero_upper(7),zero_upper(149))
Codice, dati e istruzioni · JSON. Calcoli didattici eseguiti con Python 3.14.0; figure con Matplotlib 3.11.2. Analisi con assistenza AI, senza dichiarare peer review o revisione umana. Copertina originale ImageGen, illustrativa: non documenta persone, sedi o installazioni EL-AI. Fonti consultate il 17 ottobre 2026.

