elemzése Telco ügyfél lemorzsolódás adatkészlet
Oké! Csináljuk..
tehát elkészítettem ezt a történetet, hogy kicsit jobban megismerjem az egyensúlyhiány adatait.
az adatkészlet a következő linken érhető el:
tehát merüljünk bele.
a végső cél az lesz értékelje a különböző modelleket annak megjóslására, hogy az ügyfél “lemorzsolódik-e” vagy sem.
mert nem ismeri a lemorzsolódást leggyakrabban azoknak a szolgáltatási előfizetőknek a százalékában (vagy számában) fejezik ki, akik egy adott időszakon belül abbahagyják előfizetésüket.
kezdjük azzal, hogy elvégezzük az EDA-t (feltáró Adatelemzés)
úgy tűnt, hogy az adattípusok rendben vannak, az idős Polgár kivételével ennek is tényezőnek kell lennie. (Kétség esetén ellenőrizze az adatkészlet linkjét és könyvtárát)
vizualizáljuk az adatkészlet összefoglalóját
van néhány NaN a TotalCharges oszlopban, tehát egy kicsit tovább ásunk ezeken a sorokon
mivel a Nan értékekkel rendelkező sorok száma nagyon kicsi (az adatok 1,5% – A), és figyelembe véve, hogy az összes ezek churn=”nem”, ami felülreprezentált az adatokban. Csak töröljük ezeket a sorokat a munkadatokból
nézzük meg a sávokat a kategorikus oszlopok eloszlásához
most ábrázoljuk a függő változót
mint korábban említettük, most láthatjuk a függő változó adatainak egyensúlyhiányát. A modellezés előtt ezt később meg kell oldanunk.
most ábrázoljuk a kvantitatív változók dobozait.
a boxplot nem mutat kiugró értéket a disztribúcióban.
most nézzük meg a kvantitatív változók korrelációját:
magas pozitív korreláció van a teljes Díjak és a havi díjak, valamint a teljes díjak és a birtoklás között.
most ábrázoljunk néhány hisztogramot, figyelembe véve a kvantitatív jellemzők lemorzsolódását:
a fenti kép azt mutatja, hogy a lemorzsolódás mértéke csökken a birtoklás növekedésével, ami jól jelzi, hogy a vállalat képes hosszú távú ügyfeleket tartani.👏👏👏
a fenti telkek néhány tippet adnak olyan funkciókra, mint például:
- úgy tűnik, funkciók, mint a nemek, telefon szolgáltatás, és több vonal nem igazán nagy hatással lemorzsolódás;
- nem úgy tűnik, hogy sok különbség a funkciók Streaming TV és Streaming filmek;
- az Online biztonság, az eszközvédelem és a technikai támogatás nagyon hasonló hisztogrammal és lemorzsolódás X nem lemorzsolódás kapcsolattal rendelkezik.
további ásni le egy bi-variate elemzés, beleértve a mennyiségi jellemzők (birtoklás, havi díjak, és a teljes díjak) nézzük átalakítani őket tényezők osztva 5 különböző szinten, az egyes funkciók szerint ott 20.percentilis.
amint azt korábban megjegyeztük, a lemorzsolódás százaléka csökken a hónapok számával, ami azt jelzi, hogy a régi ügyfeleket kevésbé nehéz fenntartani
ez a sávdiagram azt jelzi, hogy minél magasabb az ügyfélnek felszámított teljes díj, annál csökken a lemorzsolódás százaléka. Ami akkor van értelme, ha úgy gondolja, hogy a hosszú ideig az ügyfelek magasabb “teljes díjat” kapnak, és amint azt korábban láttuk, a hosszú ideig az ügyfelek alacsonyabb lemorzsolódási százalékkal rendelkeznek
ez barplot egy kicsit intuitív, és azt mutatja, hogy a magasabb havi díjak általában magasabb lemorzsolódás százalékos.
modellezés
most, hogy jobban megértjük az adatokat, kezdjük el a modellezés előkészítését annak érdekében, hogy megjósoljuk a jövőbeli ügyfelek lemorzsolódását.
osszuk fel ezt a folyamatot lépésekre, az azonnali bajnak megfelelően:
- az egyensúlytalanság kezelése
- algoritmusaink és Mérőszámaink meghatározása
- algoritmusaink tesztelése
- a funkcióválasztás kezelése
- végső eredmények
az egyensúlyhiány kezelése
amint azt korábban láttuk, függő változónk kiegyensúlyozatlan. Számos alternatíva van a probléma kezelésére:
- Túlmintavétel
- Alulmintavétel
- különböző súlyköltségek használata
- stb.
itt megpróbáljuk alatt, over-mintavétel és SMOTE technika.
algoritmusaink és Mérőszámaink meghatározása
Nos, mivel osztályozási problémával van dolgunk, pl. a nap végén csak a “lemorzsolódást” vagy a “nem lemorzsolódást” tudjuk megjósolni, ezért egy algoritmust kell választanunk ebben a konkrét “birodalomban”. Ez hagy nekünk néhány lehetőséget, mint például:
- naiv-Bayes
- logisztikai regresszió
- döntési fák (vagy véletlenszerű erdő)
- SVM
- GBM
a metrika kiválasztásához meg kell értenünk a problémát. Például,
- “a hamis pozitívnak vagy a hamis negatívnak vannak-e károsabb következményei?”🤔
esetünkben úgy tűnik, hogy nincsenek különböző súlyok a hamis pozitív vagy hamis negatívok esetében, ezért a pontosságot fogjuk használni összehasonlító mutatóként.
algoritmusaink tesztelése
5 algoritmust fogunk telepíteni (naiv-Bayes, Logistic regression, Random Forest, SVM és LightGBM). 10 kereszthajtásos érvényesítést fogunk használni, és minden algoritmust 10-szer futtatunk, és kiszámítjuk az eredményeket.
ezt a módszertant mind a 3 adat esetében megismételjük(Alulmintavétel, Túlmintavétel és ütés).
az algoritmusok eredményeivel egyetlen pontossági Adatkeretet állítunk össze
most projekt boxplots minden algoritmus és minden kiegyensúlyozott adatok
a fenti kép azt mutatja, hogy mind a véletlenszerű erdő a Túlminta kiegyensúlyozott adatok és a SMOTE kiegyensúlyozott adatok a legjobb eredményt : 87%-os pontossággal.
a funkcióválasztás kezelése
most, hogy megvannak az algoritmusok és a kiegyensúlyozott adatok, amelyek a legjobb eredményeket mutatták, próbáljuk meg javítani a pontosságot vagy egyszerűsíteni az algoritmust a funkcióválasztással.
tehát úgy döntök, hogy a SMOTE balance adatokkal dolgozom.
használjuk a varImp függvényt, hogy lássuk azokat a funkciókat, amelyek a legjobban képviselik a lemorzsolódást a véletlenszerű erdő algoritmusban
az első négy funkció elég intuitívnak tűnt, figyelembe véve az EDA során látott vizualizációkat.
tehát 2 másik adatkeretet hozunk létre, egyet az első 4 funkcióval, egyet pedig az összes top funkcióval a Sreaming TV-ig.
most futtassuk a véletlenszerű erdőt 10-cv ismétléssel 10-szer.
most hozzunk létre egy új boxplot-ot a 3 adatkeret mindegyikének pontossági eloszlásával.
tehát a mid_features és a teljes adatok eredményei jobbnak tűnnek. Vizsgáljuk meg, hogy jelentősen különböznek-e egymástól
tehát a statisztikai teszt elutasítja a nullhipotézist, így a full_data és a mid_features_data pontossági eloszlása jelentősen eltér.
tehát véget vetünk ennek a funkcióválasztásnak, amely ténylegesen fenntartja az összes oszlopot. Mivel a funkciók eltávolításával még mindig jelentős a pontosság elvesztése.
végső eredmények
összefoglaljuk a végső előrejelzési modellünket. Átlagosan 87% – os pontosságot értünk el, a SMOTE-ot használva az adatok kiegyensúlyozására, és ismételt 10 keresztkötéses validációt hajtottunk végre 10-szer, véletlenszerű erdőt használva algoritmusunkként.
emellett néhány érdekes szempontot rögzítettünk az ügyféladatainkból, például:
- úgy tűnik, hogy a vállalat “rendben van” a régi ügyfelek megtartásával. Az energiának nagyobb hangsúlyt kell fektetnie az új ügyfelek stratégiáinak végrehajtására.
- a havi típusú szerződéseknek nagyobb a lemorzsolódási aránya még a magas havi díjak esetén is, összehasonlítva más típusú szerződésekkel.
- száloptika magasabb kavargó aránya, mint a DSL az ügyfelek, amelyek internet szolgáltatás.
- míg száloptika, magasabb kavargó aránya, ők is szállít a magasabb teljes töltés számít. Ezért fontos annak jobb vizsgálata, hogy az ügyfelek miért nem elégedettek a száloptikai szolgáltatással.
Igen, megcsináltuk! Remélem, élvezted az utazást, és örömmel hallom a gondolataidat.
jövőbeli lépések
emlékeztetőül: még mindig sok más dolgot tehet ebben az adatkészletben, például:
- próbáljon ki új algoritmusokat
- optimalizálja néhány tunning paramétert, hogy lássa, javíthatja-e a pontosságot.
még egyszer köszönöm!