Teretana može svaki mjesec dovesti 100 novih članova, otvoriti šampanjac zbog odlične kampanje i svejedno stajati na mjestu.

Zašto? Zato što na druga vrata možda izađe njih 95.

To je ona neugodna growth matematika koju nitko ne stavlja na Instagram. Akvizicija izgleda seksi. Retention izgleda kao Excel koji je netko zaboravio zatvoriti. Zato se budžeti često troše na nove leadove dok postojeći članovi tiho nestaju iz evidencije dolazaka, a zatim i iz prihoda.

Pa sam odlučio testirati jednostavno pitanje:

Možemo li iz ponašanja člana prepoznati da će u sljedećih 30 dana otkazati članstvo?

Ne pomoću kristalne kugle, motivacijskog gurua ni AI agenta s LinkedIna. Pomoću podataka koje bi normalna teretana već mogla imati: dolasci, rezervacije, onboarding, korištenje aplikacije i plaćanja.

Rezultat je zanimljiv. Ali nije zanimljiv na način na koji ga prodaju AI prezentacije.

Teretana nema samo problem s leadovima. Ima probušenu kantu

Churn je odlazak korisnika iz pretplatničkog poslovanja. Kod teretane to na prvu izgleda jednostavno: član je otkazao članarinu i više ne plaća.

U stvarnosti postoji nekoliko različitih stanja:

  • član je službeno otkazao

  • članarina je istekla i nije obnovljena

  • naplata nije prošla

  • član još plaća, ali već tjednima ne dolazi

  • član je zamrznuo članstvo

  • član se preselio, ozlijedio ili promijenio životni ritam

Ako sve to strpaš u jednu kolonu churn = da/ne, model će nešto izračunati. Računalo je vrlo uslužno na taj način. Neće ti reći da si poslovni problem definirao kao krumpir.

U ovom eksperimentu churn znači samo jedno:

Član će otkazati ili neće obnoviti članstvo u sljedećih 30 dana.

To je ista poslovna logika koju je koristio WSDM Cup 2018 KKBox Churn Prediction Challenge. Tamo su natjecatelji predviđali hoće li korisnik obnoviti glazbenu pretplatu unutar 30 dana nakon isteka. Natjecanje je trajalo od rujna do prosinca 2017., a problem i podaci kasnije su opisani u WSDM radu o preporukama i churnu.

Glazbeni streaming nije teretana. Ali pretplatnička matematika ima isti neugodan refren: dovesti korisnika nije dovoljno ako ga ne znaš zadržati.

Zašto sam koristio sintetičke podatke

Nisam imao legalno dostupan dataset s poviješću dolazaka, naplate i otkazivanja stvarnih članova hrvatske teretane.

Mogao sam skinuti prvi sumnjivi CSV s interneta, ne pitati odakle je došao i ponašati se kao da sam otkrio penicilin. Nisam.

Napravio sam 12.000 sintetičkih mjesečnih snapshotova članova. Svaki red predstavlja stanje jednog anonimnog člana u određenom mjesecu. Nema stvarnih imena, e-mailova, zdravstvenih podataka ni ljudi koji su se slučajno našli u nečijem exportu.

Generator je namjerno ugradio razumne odnose:

  • dulja neaktivnost povećava rizik

  • pad broja dolazaka povećava rizik

  • neuspjela plaćanja povećavaju rizik

  • česta otkazivanja rezervacija povećavaju rizik

  • odrađen onboarding smanjuje rizik

  • treninzi s trenerom i referral signal smanjuju rizik

To ne znači da su ti odnosi jednaki u svakoj stvarnoj teretani. Znači samo da imamo kontrolirani poligon na kojem možemo provjeriti pipeline bez prodavanja tuđe privatnosti za jedan blog post.

Istraživanja daju razuman kontekst za takvu simulaciju. Longitudinalna studija novih članova 25 fitness centara pratila je dolaske i dropout kroz 3 i 12 mjeseci te navodi da se u ranijoj literaturi procjenjuje kako 40%–65% ljudi koji započnu vježbati odustane u prvih 3–6 mjeseci. Važna sitnica: exercise dropout nije isto što i otkazivanje plaćene članarine. Ta razlika je upravo razlog zašto ne treba lijepiti dramatične fitness statistike na financijski churn bez čitanja fusnota. Studija je javno dostupna u PMC-u.

Što se nalazi u datasetu

Skup podatakaPrimjeri varijabli
Članstvotrajanje članstva, tip plana, mjesečna cijena
Aktivnostdolasci zadnjih 30 dana, dolasci mjesec ranije, promjena dolazaka
Neaktivnostbroj dana od posljednjeg dolaska
Engagementkorištenje aplikacije, rezervacije i otkazivanja termina
Odnos s teretanomonboarding, treninzi s trenerom, referral
Operativaproblemi s naplatom i zahtjevi prema podršci
Ciljotkazivanje u sljedećih 30 dana

Dataset ima dvije godine mjesečnih snapshotova, od siječnja 2024. do prosinca 2025. Ukupna sintetička churn stopa iznosi 4,44%, a u testnom razdoblju 4,45%.

Sve možeš provjeriti, skinuti i rastaviti:

Preuzmi izvršeni Python notebook

Preuzmi sintetički CSV s 12.000 redaka

Preuzmi rezultate u JSON formatu

Kod koji generira podatke i notebook nalazi se i u javnom Nimerep/site repozitoriju. Ako dobiješ drugačiji rezultat s istim seedom, nešto se raspalo — i to je korisnija informacija od još jednog savršenog screenshot grafa.

Kako sam namjerno izbjegao varanje

Kod churn modela vrlo je lako slučajno gledati u budućnost.

Ako u featuree ubaciš datum otkazivanja, konačni status članarine ili transakciju koja se dogodila nakon trenutka predviđanja, model će izgledati kao genij. U stvarnosti si mu dao odgovor na ispitu.

Zato sam napravio vremenski split:

  • 9.976 redaka do kolovoza 2025. koristi se za trening

  • 2.024 retka od rujna do prosinca 2025. koristi se za test

Nema random miješanja prošlosti i budućnosti. Model u testu vidi samo informacije koje bi bile dostupne u trenutku kada se odluka stvarno mora donijeti.

Također nisam ubacio:

  • datum budućeg otkazivanja

  • konačni status ugovora

  • buduće naplate

  • razlog odlaska zapisan nakon odlaska

  • zdravstvene podatke

To bi trebalo biti očito. U churn projektima često nije.

Prije AI-ja: pravilo od 14 dana

Prije modela postavio sam glupo jednostavan baseline:

Ako član nije došao 14 ili više dana, označi ga kao rizičnog.

Nema strojnog učenja. Nema GPU-a. Nema konzultanta koji izgovara “digital transformation” dok traži HDMI adapter.

Pravilo je na testnim podacima imalo:

  • precision 17,1%

  • recall 64,4%

  • ROC-AUC 0,749

Drugim riječima, pravilo uhvati dosta budućih odlazaka, ali istodobno označi mnogo ljudi koji neće otići. To nije katastrofa. To je sasvim pristojan operativni početak koji se može složiti u gotovo svakom CRM-u.

Ako tvoj ML model ne može pobijediti razumno poslovno pravilo, ne treba ti bolji model. Treba ti hrabrost da ugasiš projekt.

Dva modela. Jer zoološki vrt algoritama nikome ne pomaže

Testirao sam:

  1. logističku regresiju

  2. random forest

Logistička regresija je namjerno uključena. Objašnjiva je, brza i dosadna. To su često odlične osobine za model koji treba završiti u stvarnom poslovnom procesu.

Random forest je fleksibilniji i može uhvatiti nelinearne odnose. Ali “kompleksniji” nije poslovni KPI.

Usporedba churn modela

ModelROC-AUCPR-AUCPrecision u top 10%Recall u top 10%
Logistička regresija0,8630,43126,2%58,9%
Random forest0,8520,35924,8%55,6%
Pravilo: nema dolaska 14+ dana0,7490,12617,1%*64,4%*

* Kod poslovnog pravila prikazani su precision i recall svih članova koje je pravilo označilo, a ne fiksnog top-decile segmenta.

Logistička regresija je pobijedila.

Nije spektakularno. Nije Transformer. Ne traži podatkovni centar veličine manjeg hrvatskog grada. Samo je bolje rangirala članove prema riziku.

Accuracy je ovdje ukras za lošu prezentaciju

U testnom setu churn je 4,45%.

Model koji svakome kaže “ostat će” imao bi accuracy od 95,55%. Bio bi potpuno beskoristan, ali bi na slajdu izgledao odlično.

Zato sam gledao:

  • ROC-AUC: koliko dobro model općenito razdvaja churnere od ostalih

  • PR-AUC: koliko dobro radi kada je pozitivna klasa rijetka

  • precision u top 10%: koliko je stvarnih budućih churnera među članovima koje možemo kontaktirati

  • recall u top 10%: koliki dio svih budućih churnera nalazimo u toj maloj grupi

Teretana ne može svaki mjesec zvati sve članove. Može kontaktirati, primjerice, 10% najrizičnijih. Zato je precision u toj grupi operativno razumljiviji od jednog velikog postotka koji ništa ne pokreće.

U našem testu najrizičnijih 10% sadrži 26,2% stvarnih budućih churnera.

Bazna churn stopa je 4,45%. To znači da model u toj ciljanoj grupi koncentrira budući churn oko 5,9 puta bolje od nasumičnog odabira. Ujedno u tih 10% članova pronalazi 58,9% svih budućih odlazaka.

To je koristan ranking. Još uvijek nije retention strategija.

Risk decili pokazuju radi li model ili samo lijepo govori

Članove sam podijelio u deset grupa prema predviđenom riziku. Prvi decil ima najniži rizik, deseti najviši.

Churn stopa kroz risk decile

Ako se stvarna churn stopa ne povećava prema višim decilima, model nema stabilan ranking. Može imati finu metriku, ali neće dati dobru listu prioriteta.

Ovdje je rast jasan. Najrizičniji decil zaista sadrži znatno više budućih odlazaka.

To je ono što voditelj retentiona treba: ne još jedan dashboard, nego sortiranu listu na kojoj prvih 50 ljudi stvarno zaslužuje pažnju.

Što je model prepoznao

Najjači pozitivni signali rizika bili su:

  • više dana od posljednjeg dolaska

  • pad broja posjeta u odnosu na prethodni mjesec

  • neuspjela plaćanja

  • otkazivanje rezerviranih termina

  • vrlo kratko trajanje članstva

Zaštitni signali bili su:

  • odrađen onboarding

  • aktivnost u aplikaciji

  • stabilni dolasci

  • treninzi s osobnim trenerom

  • doveden prijatelj

Najjači churn signali

Ovo nisu kauzalne istine. Koeficijent ne znači da će slanje čovjeka na onboarding automatski poništiti churn. Znači da je u našem generatoru i modelu taj signal povezan s manjim rizikom kada ostale varijable držimo pod kontrolom.

U stvarnom datasetu rezultat može biti drugačiji. Možda problem nije onboarding nego parking. Možda trener odlazi. Možda je klima pokvarena treći tjedan. Model ne živi u teretani; on vidi samo kolone koje mu pošalješ.

Pad dolazaka je signal. Nije dijagnoza

Prosječan pad dolazaka prije churn-a

Članovi koji će otkazati u sintetičkim podacima u prosjeku pokazuju pad dolazaka. To ima intuitivnog smisla i poklapa se s idejom da ponašanje često oslabi prije formalnog odlaska.

Ali isti signal može značiti:

  • godišnji odmor

  • bolest ili ozljedu

  • promjenu radnog vremena

  • trudnoću

  • selidbu

  • trening na drugoj lokaciji

  • jednostavno loš mjesec

Zato retention poruka ne bi trebala glasiti:

Naš algoritam je zaključio da ćete nas napustiti. Evo 15% popusta.

To je marketinški ekvivalent tipa koji te prati po trgovini i šapće da zna što želiš.

Bolja intervencija može biti obična, ljudska i nenametljiva:

Nismo te vidjeli neko vrijeme. Je li se promijenio termin koji ti odgovara ili ti možemo pomoći prilagoditi plan?

Model prioritizira razgovor. Ne vodi ga.

Najvažniji problem: churn risk nije isto što i mogućnost spašavanja

Ovo je dio koji se zgodno izgubi u prodajnoj prezentaciji.

Churn model odgovara na pitanje:

Tko će vjerojatno otići?

Retention tim zapravo treba odgovor na drugo pitanje:

Kod koga će naša intervencija promijeniti odluku?

To nisu isti ljudi.

Netko ima visok rizik jer se preselio 300 kilometara dalje. Možeš mu poslati personaliziranu poruku, proteinsku pločicu i fotografiju cijelog tima. I dalje se neće voziti tri sata na leg day.

Druga osoba možda ima srednji rizik, ali bi ostala kada bi dobila novi termin grupnog treninga ili kratak razgovor s trenerom.

Randomizirani terenski eksperiment s tjednim e-mail podsjetnicima pokazao je upravo zašto treba razlikovati aktivnost od poslovnog ishoda: podsjetnici su povećali tjednu učestalost vježbanja za 13%, ali istraživači nisu pronašli učinak na trajanje ili obnovu članstva. Rezultati su objavljeni u časopisu Experimental Economics.

Više dolazaka zvuči dobro. Ali nije automatski isto što i više obnove.

Za procjenu inkrementalnog učinka treba:

  1. odabrati rizične članove

  2. nasumično dio staviti u treatment, a dio u holdout grupu

  3. provesti istu intervenciju

  4. mjeriti razliku u obnovi članstva

  5. tek nakon toga graditi uplift model

Uplift modeliranje pokušava pronaći ljude kod kojih će intervencija uzrokovati promjenu, a ne samo ljude s visokim rizikom. Javni churn benchmark za takve modele opisan je u radu A churn prediction dataset from the telecom sector: a new benchmark for uplift modeling.

Drugim riječima:

Predikcija govori gdje gori. Eksperiment govori pomaže li tvoj aparat za gašenje.

Koliko bi ovakav model mogao vrijediti

Napravimo scenarij za 1.000 aktivnih članova:

  • kontaktiramo 10% najrizičnijih, odnosno 100 ljudi

  • precision modela u toj grupi je 26,2%

  • očekujemo oko 26 stvarnih budućih churnera

  • pretpostavimo da intervencija spasi 20% njih

  • to je oko 5,2 spašena člana

  • mjesečna contribution marža je 33 €

  • prosječno dodatno zadržavanje traje 6 mjeseci

  • intervencija košta 8 € po kontaktiranom članu

Rezultat:

StavkaProcjena
Bruto vrijednost zadržavanjaoko 1.039 €
Trošak intervencije800 €
Neto vrijednost prije fiksnih troškovaoko 239 €

Je li to dobar posao? Možda.

Broj ovisi o najvažnijoj pretpostavci: spašava li intervencija stvarno 20% rizičnih članova?

Model to nije dokazao. Tu brojku sam postavio za scenarij. Bez holdout grupe ne znaš jesi li spasio člana ili dao popust osobi koja bi ionako ostala.

Upravo zato retention kampanje često izgledaju uspješno dok potajno pale novac. Ljudi koji prime ponudu ostanu, dashboard se zazeleni, svi se čestitaju — a nitko ne zna koliko bi ih ostalo bez ponude.

Kako bih ovo pustio u stvarnu teretanu

Ne bih prvi dan spojio model na automatizirani sustav za popuste. Nisam toliko hrabar, a ni toliko lud.

Krenuo bih u četiri koraka.

1. Definicija churn-a

Dogovoriti razliku između:

  • dobrovoljnog otkazivanja

  • isteka bez obnove

  • payment failurea

  • zamrznutog članstva

  • neaktivnosti bez otkazivanja

Ako financije, prodaja i marketing koriste tri definicije churn-a, model je najmanji problem u zgradi.

2. Jedan mjesečni member snapshot

Za svakog člana spremiti samo podatke dostupne na datum scoriranja. Ne prepisivati konačno stanje iz CRM-a unatrag.

Minimalan dataset:

  • member_id

  • snapshot_date

  • tenure_months

  • visits_30d

  • visits_prev_30d

  • days_since_last_visit

  • classes_cancelled_30d

  • onboarding_completed

  • payment_failures_90d

  • churn_next_30d

Ne treba ti data lake. Treba ti tablica kojoj vjeruješ.

3. Baseline prije modela

Testirati pravilo neaktivnosti od 14 dana i možda kombinaciju:

14+ dana bez dolaska
ILI pad posjeta veći od 50%
ILI neuspjela naplata

Ako ta pravila rade dovoljno dobro za kapacitet retention tima, možda je to rješenje za prvu fazu.

4. Randomizirani retention test

Najrizičnije članove podijeliti na:

  • kontrolnu grupu bez nove intervencije

  • ljudsku check-in poruku

  • razgovor s trenerom

  • prilagodbu termina ili plana

Popust bih testirao zasebno. Popust je najlakši način da naučiš kupca čekati popust.

Privatnost: ne treba ti krvna grupa za churn model

Fitness podaci mogu vrlo brzo postati osjetljivi.

Za ovaj problem najčešće ti ne trebaju:

  • dijagnoze

  • ozljede

  • tjelesna masa

  • fotografije

  • detaljni podaci sa smart watcha

  • precizna lokacija izvan teretane

Za početak su dovoljni operativni podaci o članstvu i korištenju usluge.

U stvarnom projektu provjerio bih:

  • pravnu osnovu obrade

  • svrhu i minimalni opseg podataka

  • rok čuvanja member snapshotova

  • pristup individualnim risk scoreovima

  • mogućnost prigovora na automatizirano profiliranje

  • koristi li se rezultat za pomoć članu ili agresivno cjenovno razlikovanje

GDPR problem ne nestaje zato što si stupac nazvao feature_17.

Što ovaj eksperiment dokazuje

Dokazuje da:

  • churn problem možemo prevesti u jasan prediction window

  • jednostavan vremenski pipeline može rangirati rizične članove

  • logistička regresija može pobijediti složeniji model

  • top-decile precision daje operativno razumljiv rezultat

  • sintetički podaci mogu poslužiti za razvoj i provjeru procesa

  • churn score možemo prevesti u retention eksperiment i poslovni scenarij

Što ovaj eksperiment ne dokazuje

Ne dokazuje da:

  • model radi na stvarnoj hrvatskoj teretani

  • prikazani signali uzrokuju churn

  • kontaktiranje rizičnih članova smanjuje churn

  • popust donosi inkrementalnu vrijednost

  • sintetička stopa predstavlja industrijski benchmark

  • AI zna zašto je konkretna osoba prestala dolaziti

Ovaj popis nije pravno pokriće sitnim slovima. To je pola kredibiliteta cijelog projekta.

Zaključak: model nije retention strategija

Da, model može pomoći teretani prepoznati članove koji pokazuju obrasce odlaska.

U ovom eksperimentu najrizičnijih 10% članova sadrži gotovo šest puta veću koncentraciju budućeg churn-a od prosjeka. To je dovoljno dobro da pametnije rasporedimo ograničeno vrijeme retention tima.

Ali model ne zna:

  • tko se može spasiti

  • koja će poruka pomoći

  • hoće li popust stvoriti vrijednost

  • je li problem u cijeni, treneru, parkingu ili životu člana

To otkriva eksperiment.

Najbolji retention sustav zato nije automat koji dijeli kupone svima s crvenim scoreom. To je kombinacija dobrog podatkovnog signala, ljudske intervencije i poštenog mjerenja inkrementalnog učinka.

AI ti može reći kome prvo pokucati na vrata.

Još uvijek moraš znati razgovarati kada ih otvori.