Analizoni të dhënat e simuluara në lidhje me sjelljen e përdoruesve të Starbucks dhe parashikoni efektivitetin e ofertës

Përkufizimi

Vështrim i përgjithshëm i projektit

Starbucks, një nga kafenetë më të njohura në botë, shpesh ofron oferta për klientët e saj përmes aplikacionit të tij të shpërblimeve për të nxitur më shumë shitje. Këto oferta mund të jenë thjesht një reklamë për një pije ose një ofertë aktuale si zbritje ose BOGO (blej një merr një falas). Ky projekt është i fokusuar në përshtatjen e ofertave promocionale për klientët bazuar në përgjigjet e tyre ndaj ofertave të mëparshme dhe parashikimin e përgjigjes së një klienti ndaj një oferte.

Jo çdo klient i përgjigjet në të njëjtën mënyrë këtyre ofertave. Disa klientë janë shumë aktivë me ofertat ndërsa shumë nuk përgjigjen fare. Për të analizuar ndërveprimet e klientëve dhe për të vazhduar të rekomandojmë oferta të shkëlqyera për përdoruesit e interesuar, duhet të analizojmë në mënyrë shteruese të dhënat e simuluara që imitojnë sjelljen e klientit në aplikacionin celular të shpërblimeve Starbucks.

Së pari, për të analizuar më së miri të dhënat tërësisht, ne do të kryejmë Analizën e të Dhënave Eksploative (EDA) për të gjetur paraqitjet dhe karakteristikat e të dhënave. Ky eksplorim do të mbulohet në pikat kyçe që do të diskutohen për popullatën e kombinuar deri në nivelin individual të personalizuar.

Së dyti, ne do të ndërtojmë modele të mësimit të makinerive që do të jenë në gjendje të parashikojnë përgjigjen e klientit ndaj një oferte, në mënyrë që Starbucks të mund të synojë siç duhet kujt i dërgojnë ofertat e tyre.

Të dhënat për këtë projekt ofrohen nga Starbucks & Udacity në tre skedarë:

  • portfolio.json — që përmban ID oferte dhe të dhëna meta për secilën ofertë (kohëzgjatja, lloji, etj.)
  • profile.json — të dhëna demografike për çdo klient
  • transcript.json — regjistrime për transaksionet, ofertat e marra, ofertat e shikuara dhe ofertat e përfunduara

Për të fituar njohuri nga këto grupe të dhënash, ne do të dëshironim t'i kombinonim ato dhe më pas të zbatonim teknikat e analizës së të dhënave dhe modelimit mbi to.

Deklarata e problemit

Qëllimi i këtij projekti është të përcaktojë më së miri se çfarë lloj ofertash t'i dërgohen çdo demografie klienti bazuar në përgjigjen e tyre ndaj ofertave të dërguara më parë, në mënyrë që të mund të ndërtohen modele të ndryshme të mësimit të makinerive për të parashikuar nëse një klient do t'i përgjigjet një oferte.

Hapat e mëposhtëm do të ndërmerren për të ndërtuar modelin tonë.

  1. Mblidhni të gjitha të dhënat përkatëse
  2. Pastroni dhe transformoni të dhënat sipas nevojës për modelim
  3. Trajnoni një klasifikues i cili do të parashikojë përgjigjen e klientëve

Metrikë

Një metrikë model nevojitet për të vlerësuar cilësinë e qasjes dhe për të përcaktuar se cili model jep rezultatet më të mira. Për këtë problem, vlerësimi i saktësisë dhe rikujtimit të një modeli ofron një pasqyrë më të mirë për performancën e tij. Ne do të përdorim metrikën e rezultatit F1 sepse mund të interpretohet si mesatarja e ponderuar e saktësisë dhe rikujtimit. Rezultati tradicional ose i balancuar F (rezultati F1) është mesatarja harmonike e saktësisë dhe rikujtimit, ku një rezultat F1 arrin vlerën e tij më të mirë në 100 dhe më i keqi në 0.

Eksplorimi dhe vizualizimi i të dhënave

Siç u tha më lart, ka tre pjesë të të dhënave. Ne duhet të eksplorojmë grupet e të dhënave individualisht për të marrë një ide të mirë se cilat veçori do të nevojiten për grupin përfundimtar të të dhënave hyrëse dhe për të marrë ide për çdo inxhinieri të veçorive. Kjo fazë na lejon gjithashtu të vëmë në dukje çdo anomali me të dhënat, siç janë vlerat që mungojnë, në mënyrë që ato të mund të adresohen përpara se të futemi në një model.

portofol

  • id (string) - ofertë id
  • oferta_type (string) — lloji i ofertës dmth BOGO, zbritje, informative
  • vështirësi (int) - shpenzimet minimale të nevojshme për të përfunduar një ofertë
  • shpërblim (int) - shpërblim i dhënë për plotësimin e një oferte
  • kohëzgjatja (int) - koha që oferta të jetë e hapur, në ditë
  • kanale (lista e vargjeve)

Kolona oferta_type në portofol, përshkruan llojet e ofertave që Starbucks po kërkon të dërgojë potencialisht klientët e saj:

  1. BOGO (Ble-One-Get-One): Kjo ofertë i mundëson klientit të marrë një produkt shtesë dhe të barabartë pa kosto shtesë. Klienti duhet të shpenzojë një prag të caktuar në mënyrë që të mundësojë këtë shpërblim.
  2. Informative: Kjo ofertë nuk përfshin domosdoshmërisht një shpërblim, por më tepër një mundësi për një klient që të blejë një objekt të caktuar me një shumë të kërkuar parash.
  3. Zbritje: Me këtë ofertë, një klienti i jepet një shpërblim që ul një përqindje të caktuar nga kostoja origjinale e produktit që ata zgjedhin të blejnë, duke iu nënshtruar kufizimeve.

profil

  • mosha (int) - mosha e klientit
  • become_member_on (int) - data kur klienti krijoi një llogari aplikacioni
  • gjinia (str) - gjinia e klientit (vini re se disa shënime përmbajnë 'O' për të tjerët dhe jo për M ose F)
  • id (str) - id klienti
  • të ardhura (float) - të ardhurat e klientit

Sipas përshkrimit të kornizës së të dhënave të profilit dhe kontrollit të vlerave null, mungojnë si gjinia ashtu edhe të ardhurat për moshën 118 vjeç. Të gjitha vlerat e moshës që mungojnë janë të koduara si 118

Duket sikur njerëzit me moshë mbi 80 vjeç nuk e përdorin shumë aplikacionin ose mund të mos pinë shumë pije. Pra, ne do t'i konsiderojmë njerëzit me moshën e mësipërme si të jashtëm. Ne do të merremi me ta në seksionin e ardhshëm.

transkript

  • ngjarje (str) - përshkrimi i regjistrimit (p.sh. transaksioni, oferta e pranuar, oferta e parë, etj.)
  • person (rr) - id i klientit
  • koha (int) - koha në orë që nga fillimi i testit. Të dhënat fillojnë në kohën t=0
  • vlera - (dikt i vargjeve) - ose një id oferte ose shumë transaksioni në varësi të rekordit

Përgatitja dhe Pastrimi i të Dhënave

Tre grupet individuale të të dhënave që kemi analizuar duhet të kombinohen në një për t'u përdorur për analizën e të dhënave eksploruese dhe ndërtimin e modelit. Megjithatë, përpara se të bëhet kjo, duhet të bëjmë shumë grindje të të dhënave. Së pari, ne do të përgatisim të dhënat për EDA, dhe më vonë do të përpunojmë më shumë për përshtatjen e tyre në model.

Portofoli i pastrimit

  • Riemërtoni disa kolona për lexueshmëri më të mirë dhe lehtësi në bashkimin e mëtejshëm të kornizave të të dhënave.

Profili i pastrimit

  • Riemërtoni disa kolona për lexueshmëri më të mirë dhe lehtësi në bashkimin e mëtejshëm të kornizave të të dhënave.
  • Për të mos humbur të dhënat me vlera null, është më mirë t'i impononi ato. Pra, ne duhet të konsiderojmë të imponojmë vlerat e munguara të moshës dhe të ardhurave me mesataren dhe vlerat e munguara të gjinisë me modalitetin.
  • Siç u tregua më parë, konsideroni njerëzit me moshën mbi 80 vjeç si të jashtëzakonshëm, hiqni ata nga grupi i të dhënave.
  • Klasifikimi i moshave në grupe për të kuptuar më mirë në analizën e të dhënave eksploruese, si:

nen 20 vjec

‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏- ‎20–45

‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏-‎ ‏‏‎46–60

‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎- ‎61–80

Të dhënat e profilit të pastruar tani nuk përmbajnë asnjë vlerë nule pasi të kryhen të gjitha detyrat e dhëna. Është gati për t'u përdorur në hapin tjetër, d.m.th., duke kombinuar të gjitha kornizat e të dhënave.

Pastrimi i transkriptit

Të dhënat tona të transkriptit kanë një "vlerë" të kolonës që përmban çelësa dhe këto duhet të zgjerohen në kolona të ndryshme. Ka një pjesë të ndërlikuar në këtë kolonë, çelësat e fjalorit janë "id-ja e ofertës" dhe "id_oferta" d.m.th. me një hapësirë ​​në mes dhe të tjerët me një nënvizim. Ne duhet t'i konsiderojmë të dyja si të njëjta dhe t'i përdorim të dyja në vetëm një kolonë 'offer_id' në kornizën tonë të pastruar të të dhënave.

  • Riemërtoni disa kolona për lexueshmëri më të mirë dhe lehtësi në bashkimin e mëtejshëm të kornizave të të dhënave.
  • Zgjeroni çelësat e fjalorit të kolonës 'vlera' në kolona të reja.

Bashkimi i kornizave të pastruara të të dhënave

Tani është koha për të bashkuar të gjitha kornizat e pastruara të të dhënave në mënyrë që të gjitha veçoritë të përmbahen brenda një kornize të dhënash dhe më pas të aplikoni Analizën e të Dhënave Eksploratore.

Analiza e të dhënave eksploruese

Për të maksimizuar njohuritë në kornizën tonë të pastruar të të dhënave dhe për të gjetur tiparet dhe paraqitjet e tij karakteristike interesante, ne do të mbulojmë pikat kyçe për popullatën e kombinuar deri në nivelin individual të personalizuar.

Të ardhurat mesatare të klientëve që përdorin aplikacionin Starbucks

Oferta më e përdorur nga klientët

Shpërndarja e klientëve në moshë

Kjo është mjaft befasuese të shohësh që klientët midis moshës 46-60 vjeç përdorin më së shumti aplikacionin Starbucks, ata me moshën 61-80 janë në vendin e dytë. Zakonisht dikush do të mendonte se klientët e moshës 20-45 vjeç përdorin më së shumti aplikacionin, por ky nuk është rasti aktual.

Veprimet ndaj ofertave që morën klientët

Kjo nënkupton që shumica e klientëve nuk i kushtojnë vëmendje ofertës, madje as nuk i hedhin një sy asaj. Gjithashtu, ka më shumë një numër klientësh që thjesht e shikojnë dhe injorojnë ofertën sesa ata që në të vërtetë e plotësojnë ofertën.

Shpërndarja e klientëve meshkuj dhe femra

Grupmosha e klientëve meshkuj dhe femra Të dhënat tona përmbajnë më shumë klientë meshkuj

Shpërndarja gjinore në çdo lloj oferte

Veprimet ndaj ofertave të marra nga klientët meshkuj dhe femra

Veprimet ndaj ofertave në çdo lloj oferte

Veprimet ndaj ofertave në çdo grupmoshë

Ndërtoni modele të mësimit të makinerisë

Duke rishikuar objektivin tonë të dytë, ne po krijojmë dy modele të ndryshme klasifikimi për të parashikuar efektivitetin e një oferte, d.m.th., për të parashikuar përgjigjen e një klienti ndaj një oferte.

Përgatitja dhe Pastrimi i të Dhënave II

Përpara se të ndërtojmë një model, ne do të duhet të pastrojmë dhe përgatisim të dhënat për t'u përshtatur në model. Për ta bërë këtë ne do të kryejmë disa detyra si:

  • Kodoni të dhënat kategorike si gjinia, lloji i ofertës, kanali dhe grupmoshat.
  • Kodoni të dhënat e 'ngjarjes' në vlera numerike:

oferta e pranuar — › 1

oferta e shikuar — › 2

oferta e përfunduar — › 3

  • Kodoni ID-në e ofertës dhe ID-në e klientit.
  • Hiqni kolonën 'became_member_on' dhe shtoni kolona të veçanta për muajin dhe vitin.
  • Shkallëzimi dhe normalizimi i të dhënave numerike.

Ndani të dhënat e trenit dhe testimit

Të dhënat përfundimtare janë gati pas detyrave 1–5. Tani duhet t'i ndajmë të dhënat (si veçoritë ashtu edhe etiketat e tyre) në grupe trajnimi dhe testimi, duke marrë 60% të të dhënave për trajnim dhe 40% për testim.

Modeli standard

Një model i shpejtë dhe mjaft i saktë mund të konsiderohet si pikë referimi. Ne do të përdorim KNeighborsClassifier për të ndërtuar standardin, pasi është një metodë e shpejtë dhe standarde për problemet e mësimit të makinerive të klasifikimit binar dhe vlerësojmë rezultatin e modelit duke përdorur rezultatin F1 si metrikë vlerësimi.

Modelet e zbatimit

Modelet që duhet të zbatojmë duhet të plotësojnë rezultatin e standardit F1. Ky problem mund të zgjidhet duke përdorur modele klasifikimi. Ne planifikojmë të zbatojmë dy modele të mësimit të makinerive, RandomForestClassifier dhe DecisionTreeClassifier. Të dy modelet bazohen në tress, ndryshimi është se një pemë vendimi është ndërtuar mbi një grup të dhënash të tërë, duke përdorur të gjitha tiparet/ndryshoret e interesit, ndërsa një pyll i rastësishëm zgjedh rastësisht vëzhgime/rreshta dhe veçori/variabla specifike për të ndërtuar pemë të shumta vendimesh. nga dhe pastaj mesatarizon rezultatet.

Përfundime & Vlerësim

1. Analiza Përfundimtare

Meshkujt përbëjnë 62.7% të të dhënave dhe përdorin aplikacionin Starbucks më shumë se femrat. Në mënyrë të veçantë, si meshkujt ashtu edhe femrat e grupmoshës 46-60 vjeç e përdorin më së shumti aplikacionin. Ofertat me zbritje janë më të preferuara nga klientët. Gjithashtu, ka më pak numër të klientëve që në fakt plotësojnë ofertën në krahasim me ata që thjesht e shikojnë dhe e injorojnë atë. Meshkujt në përgjithësi injorojnë ofertat më shumë dhe ofertat plotësohen pothuajse në mënyrë të barabartë nga meshkujt dhe femrat. Raporti i meshkujve ndaj femrave në çdo lloj oferte është pothuajse i njëjtë, ku klientët meshkuj janë më shumë. Mund të shikojmë më shumë shifrat dhe informacionin në seksionin Analiza e të dhënave eksploruese për të përcaktuar më mirë se çfarë lloj ofertash t'u dërgojmë klientëve.

2. Vlerësimi i modelit

Problemi që ne zgjodhëm të zgjidhnim ishte të ndërtonim një model që parashikon nëse një klient do t'i përgjigjet një oferte. Strategjia që kemi ndjekur ka katër hapa. Së pari, ne kombinuam portofolin e ofertës, profilin e klientit dhe të dhënat e transaksionit. Së dyti, ne bëmë më shumë para-përpunim të të dhënave të kombinuara për t'u përshtatur në model. Së treti, ne vlerësuam rezultatin F1 të një modeli standard KNeighborsClassifier. Së katërti, ne krahasuam performancën e modeleve RandomForestClassifier dhe DecisionTreeClassifier për të përcaktuar se cili model përfaqëson më mirë të dhënat tona në dispozicion.

Kompleti i vlefshmërisë (bashkësia e të dhënave të testit) përdoret për të vlerësuar modelin. Të dy modelet janë më të mira se standardi. Modeli DecisionTreeClassifier performon më së miri nga dy, pasi rezultati i tij i vërtetuar F1 është 85.10, që është shumë më i lartë se standardi. RandomForestClassifier shënon gjithashtu rezultate të mira, krahasuar me standardin, me një rezultat të testit F1 prej 69.30. Problemi ynë për t'u zgjidhur nuk është aq i ndjeshëm që kërkon një rezultat shumë të lartë në F1, kështu që këto rezultate janë të mjaftueshme dhe modeli ynë nuk i përshtatet më shumë të dhënave të stërvitjes.

Përmirësimet

Rezultatet që kemi arritur janë të mira për problemin tonë të klasifikimit. Ne ende mund të përmirësojmë RandomForestClassifier duke rafinuar hiperparametrat duke përdorur Grid Search me Cross Validation dhe DecisionTreeClassifier me K-Fold Cross Validation për akordimin e hiperparametrave.

Unë do të doja t'ju falënderoja për ndjekjen e punës sime dhe për leximin e këtij artikulli. Të gjitha llojet e pyetjeve dhe kritikave konstruktive janë të mirëseardhura. Depoja e Github që përmban të gjithë kodin për këtë projekt së bashku me grupet e të dhënave të përdorura mund të gjendet "këtu".