analiza Telco client putinei set de date

bine! Să facem asta..

deci, am pregătit această poveste pentru a mă familiariza un pic mai mult cu datele de dezechilibru.

setul de date este disponibil în următorul link:

deci, să ne scufundăm direct în el.

obiectivul final va fi evalua diferite modele pentru a prezice dacă un client va “putinei” sau nu.

pentru nu familiar putinei este cel mai frecvent exprimată ca procent (sau numărul) de abonați de servicii care întrerupe abonamentele lor într-o anumită perioadă de timp.

să începem prin a face EDA (analiza datelor Exploratorii)

tipurile de date păreau să fie ok, cu excepția persoanelor în vârstă, care ar trebui să fie și un factor. (În dubiu verifica link-ul set de date și este biblioteca)

să vizualizăm rezumatul setului de date

există unele NaN în coloana TotalCharges, așa că vom săpa un pic mai departe pe aceste rânduri

deoarece numărul de rânduri cu valori NaN sunt foarte mici (1,5% din date), și luând în considerare faptul că toate ele sunt churn= “nu”, care este supra-reprezentată în date. Vom șterge doar aceste rânduri din datele de lucru

să vedem barplots pentru distribuirea coloanelor categorice

acum, să complot pentru variabila dependentă

așa cum am menționat mai devreme, putem vedea acum dezechilibrul datelor pentru variabila dependentă. Va trebui să ne ocupăm de asta mai târziu înainte de modelare.

acum să trasăm casetele pentru variabilele cantitative.

boxplot nu prezintă valori aberante în distribuție.

acum să vedem corelația pentru variabilele cantitative:

există o corelație pozitivă ridicată între taxele totale și taxele lunare și taxele totale și mandatul.

acum să complot unele histograme având în vedere caracteristica putinei pentru caracteristicile cantitative:

imaginea de mai sus arată că rata putinei scade odată cu creșterea mandatului, ceea ce este un bun indiciu că compania este capabilă să păstreze clienți de lungă durată.👏👏👏

parcelele de mai sus ne oferă câteva indicii de caracteristici precum:

  • se pare că caracteristicile de gen, serviciul telefonic și mai multe linii nu au prea mult efect asupra putinei;
  • nu pare să existe prea multe diferențe între funcțiile de Streaming TV și Streaming de filme;
  • securitatea Online, protecția dispozitivului și suportul tehnic au histograme foarte similare și relația putinei X Non putinei.

pentru a săpa în continuare în jos într-o analiză bi-variate, inclusiv caracteristicile cantitative (Titularizare, taxe lunare, și taxele totale) să le transforme în factori prin împărțirea în 5 niveluri diferite, pentru fiecare caracteristici, în conformitate cu acolo percentila 20.

după cum sa menționat înainte de procentul de putinei scade cu numărul de luni, ceea ce indică faptul că clienții vechi sunt mai puțin dificil de întreținut

acest grafic bar indică faptul că cea mai mare taxele totale efectuate la un client există o scădere a procentului putinei. Ceea ce are sens dacă credeți că clienții de mult timp vor avea o “taxă totală” mai mare și, așa cum am văzut înainte, clienții de mult timp au un procent mai mic de putinei

acest barplot este un pic mai intuitiv și arată că taxele lunare mai mari tind să aibă procent mai mare putinei.

modelare

acum, că avem o mai bună înțelegere a datelor să începem pregătirea pentru modelare, în scopul de a prezice viitorul putinei client.

Să împărțim acest proces în pași, în funcție de problemele imediate pe care le abordăm:

  1. tratarea dezechilibrului
  2. definirea algoritmilor și a valorilor noastre
  3. testarea algoritmilor noștri
  4. tratarea selecției caracteristicilor
  5. rezultate finale

tratarea dezechilibrului

așa cum am văzut înainte ca variabila noastră dependentă să fie dezechilibrată. Avem multe alternative pentru a aborda această problemă:

  • supra-eșantionare
  • sub-eșantionare
  • folosind costuri de greutate diferite
  • etc.

aici vom încerca sub, supra-eșantionare și tehnica lovit.

în cadrul eșantionului de echilibrare a datelor

peste eșantionarea de echilibrare a datelor

definirea algoritmilor și a valorilor noastre

Ei bine, deoarece avem de-a face cu o problemă de clasificare, adică. la sfârșitul zilei putem prezice doar ” putinei “sau” nu putinei”, prin urmare, trebuie să alegem un algoritm sub acest”tărâm” specific. Asta ne lasă câteva opțiuni, cum ar fi:

  • naiv-Bayes
  • regresie logistică
  • arbori de decizie (sau pădure aleatoare)
  • SVM
  • GBM

pentru a alege metrica am ajuns să înțelegem problema. De exemplu,

  • “falsurile pozitive sau falsele negative au implicații mai dăunătoare?”🤔

în cazul nostru, nu pare să existe greutăți diferite pentru fals pozitive sau fals negative, prin urmare, vom folosi precizia ca metrică de comparație.

testarea algoritmilor noștri

vom implementa 5 algoritmi (naive-Bayes, regresie logistică, Random Forest, SVM și LightGBM). Vom folosi validarea 10-cross fold și vom rula fiecare algoritm de 10 ori și vom calcula rezultatele.

vom repeta această metodologie pentru toate cele 3 Date (echilibrat folosind sub-eșantionare, supra-eșantionare și SMOTE).

cu rezultatele algoritmilor construim un singur cadru de date de precizie

precizie Dataframe structura

acum proiectăm boxplots pentru fiecare algoritm și fiecare date echilibrate

Boxplot de precizie pentru 10-CV repetat de 10 ori

imaginea de mai sus arată că atât pădurea aleatorie pentru datele echilibrate peste eșantion, cât și pentru datele echilibrate afectate au prezentat cele mai bune rezultate : precizie de 87%.

tratarea selecției caracteristicilor

acum că avem algoritmii și datele echilibrate care au arătat cele mai bune rezultate, să încercăm să îmbunătățim acuratețea sau să simplificăm algoritmul făcând selecția caracteristicilor.

așa că am ales să lucrez cu datele de echilibru lovit.

să folosim funcția varImp pentru a vedea caracteristicile care reprezintă cel mai bine putinei în algoritmul de pădure aleatoare

primele patru caracteristici păreau destul de intuitive, având în vedere vizualizările pe care le-am văzut în timpul EDA.

deci, vom crea 2 alte dataframes, unul cu primele 4 caracteristici și unul cu toate facilitate de top până la Sreaming TV.

acum să rulăm pădurea aleatorie cu 10-cv repetat de 10 ori.

acum să creăm un nou boxplot cu distribuția de precizie pentru fiecare dintre cele 3 cadre de date.

deci, rezultatele pentru mid_features și date complete par a fi mai bine. Să testăm dacă acestea sunt semnificativ diferite

deci, testul statistic respinge ipoteza nulă, astfel încât distribuția de precizie de la full_data și de la mid_features_data sunt semnificativ diferite.

deci încheiem această selecție de caracteristici menținând de fapt toate coloanele. Deoarece există încă o pierdere semnificativă de precizie prin eliminarea caracteristicilor.

rezultate finale

să recapitulăm modelul nostru final de predicție. Am obținut o precizie medie de 87%, folosind SMOTE ca modalitate de echilibrare a datelor și efectuând validări repetate de 10 ori încrucișate de 10 ori, folosind Random Forest CA algoritm.

de asemenea, am captat câteva aspecte interesante din datele clienților noștri, cum ar fi:

  • compania pare să facă “ok” cu păstrarea clienților vechi. Energia trebuie să se concentreze mai mult în implementarea strategiilor pentru noii clienți.
  • tipul de contract lunar are o rată mai mare de putinei chiar și pentru taxe lunare ridicate, în comparație cu alte tipuri de contracte.

  • fibra optica au rate mai mari churning decât DSL pentru clienții care au servicii de internet.

  • în timp ce fibra optica, au rate mai mari churning, ele oferă, de asemenea, numărul total de încărcare mai mare. Prin urmare, este importantă o investigație mai bună a motivului pentru care clienții nu sunt mulțumiți de serviciul de fibră optică.

Da, am reușit! Sper că v-ați bucurat de plimbare și mă bucur să vă aud gândurile.

pași viitoare

ca un memento există încă o mulțime de alte lucruri pe care le-ar putea face în acest set de date, cum ar fi:

  • încercați algoritmi noi
  • Optimizați unii parametri de tunning pentru a vedea dacă puteți îmbunătăți precizia.

Vă mulțumim din nou!

Lasă un răspuns

Adresa ta de email nu va fi publicată.