Going Stellar

Acasă/Cercetare

Măsurare · risc de refuz

Geografia prezice refuzul. Costul de transport doar lasă să se scurgă răspunsul.

Un model de refuz antrenat pe circa 628.000 de comenzi finalizate obține AUC 0,686 pe un holdout temporal corect, iar cincimea cea mai riscantă de comenzi conține 39% din toate refuzurile. Prima versiune a dat 0,55, fiindcă citea răspunsul dintr-un câmp care apare abia după ce coletul se întoarce. Cele mai multe reguli de adresă în care aveam încredere n-au însemnat nimic după ce le-am pus un grup de control alături.

Publicat

La ce îți folosește o listă ordonată după risc

Modelul e antrenat pe circa 628.000 de comenzi finalizate. Aproximativ 16% au fost refuzate. 92% erau cu plata ramburs, mecanismul care face refuzul aproape gratuit pentru client și scump pentru noi: coletul face drumul de două ori și nu-l plătește nimeni.

Evaluarea se face pe un holdout temporal. Antrenăm pe trecut și testăm pe săptămânile cele mai recente, niciodată pe o împărțire aleatoare. O împărțire aleatoare lasă modelul să învețe din comenzi plasate după cele pe care le evaluează, iar în datele de livrare există destulă sezonalitate și destui clienți care revin încât să conteze. Pe împărțirea corectă, modelul obține AUC 0,686.

Cât valorează asta în operațional: cele mai riscante 20% dintre comenzi conțin 39% din toate refuzurile, la o precizie de 29%, adică de 1,9 ori rata de bază. Dacă restrângi pragul la cele mai riscante 10%, acolo stau 24% din refuzuri, la 37% precizie. E o listă de sunat, ordonată după pierderea așteptată, nu o sentință despre un colet anume.

Cele mai puternice variabile sunt codul poștal și orașul. Geografia e cel mai bun predictor din acest set de date. Printre cele mai puternice sunt și valoarea comenzii, și rata de refuz din istoricul clientului, ținută pe numărul de telefon. Ce cântărește cel mai mult spune unde pleacă coletul și cine l-a comandat, nu ce e în el.

Primul model citea răspunsul

Prima rulare a dat AUC 0,55, iar costul de transport domina importanța variabilelor. Combinația asta ar fi trebuit să fie primul semnal de alarmă. Un câmp care domină un model și totuși îl lasă abia peste nivelul ghicitului la întâmplare nu e, de obicei, o variabilă explicativă. E un simptom.

Costul de transport lasă să se scurgă eticheta. Un colet întors costă mai mult, fiindcă suma înregistrată include și drumul de retur. Numărul descrie deci, în parte, chiar rezultatul pe care vrem să-l prezicem și, mai important, nu există în momentul în care avem nevoie de predicție. La plasarea comenzii nimeni nu știe că acel colet se va întoarce.

Scoaterea costului de transport și a celorlalte câmpuri completate după expediere a urcat AUC-ul corect de la 0,55 la 0,686. Direcția ne-a surprins, fiindcă o scurgere ar trebui să umfle scorul, nu să-l coboare. Explicația care ni se pare cea mai plauzibilă, și n-a fost nevoie s-o lămurim, e că returul se facturează târziu, așa că în săptămânile recente folosite la testare costul suplimentar încă nu apăruse. Modelul s-a sprijinit pe o coloană informativă în perioada de antrenare și lipsită de acea informație exact acolo unde era evaluat.

Regula pe care o aplicăm de atunci fără excepție: într-un model de livrare sau de refuz nu folosești niciodată un câmp cunoscut abia după rezultat. Varianta practică e să iei coloană cu coloană și să spui ce proces o scrie și când. Tot ce scrie expedierea, decontarea cu curierul sau biroul de retururi iese din model, oricât de puternic ar arăta.

Două variabile evidente care n-au schimbat nimic

Am adăugat apoi două variabile în care aveam încredere: validitatea numărului de telefon și o analiză a completitudinii adresei. Amândouă se calculează ușor, amândouă sunt recomandări standard și amândouă descriu exact genul de neglijență despre care presupuneam că precede un refuz.

AUC a trecut de la 0,686 la 0,687. Niciuna nu a apărut în primele cincisprezece variabile după câștig.

Motivul nu e că ideea ar fi greșită, ci că semnalul era deja în model. Îl duc geografia și istoricul clientului, iar un telefon invalid ca structură e suficient de rar încât să nu mai rămână aproape nicio variație de explicat. O variabilă poate fi adevărată și, în același timp, redundantă.

Verificarea pe care trebuie s-o faci înainte de a adăuga o variabilă „evidentă” e dacă nu cumva e deja acoperită. Antrenezi cu ea și fără ea, pe același holdout, și te uiți și la scor, și la locul din ierarhia importanțelor. Ideea care trece testul merită codul. Cea care nu trece e cost de întreținere fără nimic în schimb.

Studiul de adrese și ce face un grup de control

A doua măsurătoare e separată de model. Pe 24 august 2026 am luat 7.426 de comenzi pe care chiar curierul le marcase cu adresă proastă și am comparat fiecare semnal candidat cu un grup de control format din comenzi nemarcate. Grupul de control e tot rostul exercițiului. Fără el, orice regulă care se declanșează suficient de des produce exemple convingătoare.

Validatorul nostru de adrese a considerat valide 95% dintre acele comenzi. Obiecțiile lui nu prezic aproape nimic. Adresele fără număr la casă s-au pierdut în 8,9% din cazuri. Cele al căror cod poștal nu a putut fi dedus au ieșit la 7,0%, adică sub media de 8,4%. Strada pe care validatorul o consideră neinterpretabilă dă 9,7%. O singură obiecție are semnal real: localitate negăsită, la 15,0%, cam de două ori media.

Cel mai bun semnal produs de noi e mai grosolan decât toate regulile astea: o adresă în care nu apare nicio cifră. Apare pe 14,6% dintre comenzile respinse de curier, față de 3,2% în grupul de control, adică un factor de 4,5. Fără număr la stradă, fără bloc, fără apartament, nimic numeric nicăieri în câmp.

Cel mai puternic semnal nu e însă al nostru. E verdictul de adresă al integrării de curierat, pe care îl tratam ca zgomot. Verdictul INCOMPLETE apare pe 13,2% dintre comenzile respinse, față de 0,9% în control, un factor de 14,7. UNKNOWN apare pe 7,2% față de 0,5%, factor 15,4. Împreună, cele două verdicte prind 20,4% din toate respingerile curierului atingând doar 1,4% dintre comenzi, raportul care face suportabilă o coadă verificată manual. Verdictul WRONG al aceleiași integrări e slab prin comparație: doar de 1,8 ori.

Patru presupuneri desființate de grupul de control

Adresa dintr-un sat nu e mai riscantă decât una din oraș: 8,1% față de 8,3%. Ne formasem exact convingerea opusă și o duceam mai departe în felul în care vorbeam despre livrările la țară.

Adresa la bloc e mai sigură, nu mai riscantă: 7,1%. Codul poștal lipsă e sub medie, la 5,6%, ceea ce se potrivește cu rezultatul de mai sus, unde obiecțiile validatorului pe cod poștal nu valorează nimic. Iar lipsa prefixului de tip de stradă nu a făcut absolut nicio diferență.

Toate convingerile astea veneau din cazuri reale. Fiecare dintre noi văzuse un colet pierdut la o adresă de sat, fără număr la poartă. Ce nu făcusem era să întrebăm cât de des apare aceeași trăsătură la coletele care ajung fără probleme. Întrebarea aceea e grupul de control și e cel mai ieftin instrument din tot exercițiul.

Cum verifici singur

Împarte după timp, nu la întâmplare. Antrenezi pe tot ce e până la o dată-limită și calculezi scorurile pentru săptămânile de după. Dacă scorul scade când treci de la o împărțire aleatoare la una temporală, numărul dinainte n-a fost niciodată real.

Fă un audit al coloanelor după momentul scrierii. Pentru fiecare câmp, spune ce proces îl completează și în ce moment din parcursul comenzii încetează să fie gol. Câmpurile scrise de expediere, de decontarea cu curierul sau de retururi sunt inutilizabile, chiar dacă arată ca proprietăți ale comenzii. Costul de transport e capcana, fiindcă pe rândurile vechi e completat și pare fix.

Măsoară fiecare regulă față de un grup de control și raportează raportul dintre cele două rate, nu rata brută. O regulă care se declanșează pe 8,9% dintre comenzile proaste nu spune nimic până nu știi cât face pe cele bune. Pune rata de bază în același tabel, ca o obiecție care cade sub ea să se vadă imediat.

Apoi verifică acoperirea înainte să te bucuri de un raport bun. O regulă cu factor 15,4 care atinge o mână de comenzi e o curiozitate. Perechea de verdicte de mai sus e utilă fiindcă 20,4% dintre respingeri stau în 1,4% dintre comenzi. Raportul îți spune dacă să ai încredere într-un semnal. Acoperirea îți spune dacă merită să construiești un proces în jurul lui.

Limite

E o singură piață, un singur ecosistem de curierat și un mix de comenzi în care 92% sunt ramburs. Aici refuzul e aproape gratuit pentru client, ceea ce nu se întâmplă acolo unde plata se ia în avans. Niciunul dintre numerele de mai sus nu se mută pe o piață cu plata cu cardul fără să refaci măsurătoarea.

Modelul e un instrument de ordonare, nu o sentință pe o comandă anume. La 29% precizie, cele mai multe comenzi din cincimea riscantă ajung totuși și se încasează. Orice se construiește peste el trebuie să fie ieftin și fără consecințe pentru client: un apel de confirmare, o verificare de adresă, o altă decizie de ambalare. Anularea pe baza scorului ar distruge mai mult decât ar salva.

Cele două măsurători nu sunt același lucru. Modelul prezice refuzul clientului. Studiul de adrese descrie comenzi marcate de curier ca nelivrabile, dintr-o extragere de o singură zi. Se suprapun, dar sunt eșecuri diferite, iar un semnal care separă bine unul nu-l separă automat pe celălalt. În fine, importanța variabilelor după câștig spune ce a folosit modelul, nu ce cauzează ce.

Întrebări și răspunsuri

Ce prezice dacă un colet ramburs va fi refuzat?

Geografia prezice cel mai bine refuzul unui colet ramburs: codul poștal și orașul au fost cele mai puternice variabile din modelul descris. Printre cele mai puternice au fost și valoarea comenzii și rata de refuz din istoricul clientului, ținută pe numărul de telefon. Contează unde pleacă coletul și cine l-a comandat, nu ce e în el. Modelul ordonează comenzile după risc, nu dă sentințe.

De ce nu trebuie folosit costul de transport ca să prezici refuzurile?

Costul de transport nu trebuie folosit ca să prezici refuzurile pentru că lasă să se scurgă eticheta. Un colet întors costă mai mult, fiindcă suma înregistrată include drumul de retur, iar acest cost nu există la plasarea comenzii. În articol, scoaterea costului de transport și a celorlalte câmpuri completate după expediere a urcat AUC-ul corect de la 0,55 la 0,686.

Un model de predicție a livrărilor se testează pe împărțire aleatoare sau temporală?

Un model de predicție a livrărilor se testează pe o împărțire temporală: antrenezi pe tot ce e până la o dată-limită și calculezi scorurile pentru săptămânile de după. Împărțirea aleatoare lasă modelul să învețe din comenzi plasate după cele evaluate, iar datele de livrare au destulă sezonalitate și destui clienți care revin. Dacă scorul scade pe împărțirea temporală, numărul dinainte n-a fost real.

De ce contează un grup de control când testezi reguli de risc pentru adrese?

Grupul de control contează când testezi reguli de risc pentru adrese pentru că orice regulă care se declanșează suficient de des produce exemple convingătoare. Comparând fiecare semnal cu comenzile nemarcate de curier, multe riscuri presupuse, precum adresele de la sat sau codul poștal lipsă, s-au dovedit fără semnal. Cele mai puternice semnale au fost verdictele INCOMPLETE și UNKNOWN ale integrării de curierat.

Ce faci cu o comandă care are scor mare de risc de refuz?

O comandă cu scor mare de risc de refuz merită doar acțiuni ieftine și fără consecințe pentru client: un apel de confirmare, o verificare de adresă sau o altă decizie de ambalare. Modelul de refuz ordonează comenzile după risc, nu dă o sentință, iar cele mai multe comenzi din grupul riscant ajung totuși și se încasează. Anularea pe baza scorului ar distruge mai mult decât ar salva.

Cum se citează

Going Stellar (2026). Geografia prezice refuzul. Costul de transport doar lasă să se scurgă răspunsul.. GOING STELLAR S.R.L..
https://goingstellar.ro/ro/cercetare/ce-prezice-un-colet-refuzat/

Citește ca Markdown

Toată cercetarea

Contact

Spune-ne ce nu merge

Scrie în română sau în engleză. Citește un om — de obicei chiar cel care ar face treaba — și răspunde într-o zi lucrătoare.