{"id":30044,"date":"2019-10-31T21:33:22","date_gmt":"2019-10-31T18:33:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu\/"},"modified":"2019-10-31T21:33:22","modified_gmt":"2019-10-31T18:33:22","slug":"kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu","title":{"rendered":"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Soms is het nodig om een probleem vanuit een ander perspectief te bekijken om het op te lossen. Zelfs als dergelijke problemen de afgelopen tien jaar op dezelfde manier zijn opgelost met verschillende effecten, betekent dat niet dat deze manier de enige is.<\/p>\n<p>Er is een onderwerp zoals klantenuitstroom. Het is een onvermijdelijk fenomeen, omdat klanten van elk bedrijf om verschillende redenen kunnen stoppen met het gebruiken van zijn producten of diensten. Natuurlijk is uitstroom voor een bedrijf, hoewel natuurlijk, niet de meest gewenste actie, waardoor iedereen probeert deze uitstroom te minimaliseren. Nog beter is het om de kans op uitval van een bepaalde gebruikerscategorie of een specifieke gebruiker te voorspellen en stappen voor te stellen om deze te behouden.<\/p>\n<p>Het analyseren en proberen om een klant te behouden, als dat mogelijk is, is om minstens de volgende redenen noodzakelijk:<\/p>\n<ul>\n<li><b>het aantrekken van nieuwe klanten is duurder dan het behoud van bestaande klanten<\/b>. Voor het aantrekken van nieuwe klanten moet meestal een bepaald bedrag worden uitgegeven (advertentie), terwijl bestaande klanten geactiveerd kunnen worden met een speciaal aanbod met unieke voorwaarden;<\/li>\n<li><b>begrip van de redenen voor het vertrek van klanten is de sleutel tot het verbeteren van producten en diensten<\/b>.<\/li>\n<\/ul>\n<p>\nEr zijn standaardbenaderingen voor het voorspellen van uitstroom. Maar tijdens een van de kampioenschappen in AI besloten we om de Weibull-verdeling hiervoor te proberen. Het wordt meestal gebruikt voor overlevingsanalyse, weersvoorspelling, analyse van natuurrampen, industri\u00eble engineering en dergelijke. De Weibull-verdeling is een speciale kansverdeling die wordt gekarakteriseerd door twee parameters. <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/d30a25becc44269d51957349c6e8b4a0.png\" style=\"display:block;margin: 0 auto;\" \/> en <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/42092030604bf54a98c8379fd532bffe.png\" style=\"display:block;margin: 0 auto;\" \/>. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/444694\/\"><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/62e1933c8335dd16d765f0e358952d84.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>KB van Fortinet<\/i><\/p>\n<p>Over het algemeen is het een interessante zaak, maar voor het voorspellen van uitval en over het algemeen in fintech wordt het niet zo vaak gebruikt. In de uitleg zullen we vertellen hoe wij (Laboratorium voor Intelligente Gegevensanalyse) dit hebben gedaan, terwijl we goud veroverden op het Kunstmatige Intelligentie Kampioenschap in de categorie 'AI in banken'.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Over uitval in het algemeen<\/h2>\n<p>\nLaten we eens kijken naar wat klantverloop is en waarom het zo belangrijk is. Voor een onderneming is de klantenbasis van groot belang. Nieuwe klanten komen binnen, bijvoorbeeld door te horen over een product of dienst via reclame, blijven een tijdje (gebruikend de producten) en stoppen dan na een tijd met gebruiken. Deze periode wordt de \"Levenscyclus van de klant\" genoemd \u2014 een term die de stadia beschrijft die een klant doorloopt wanneer hij of zij meer te weten komt over een product, besluit te kopen, betalingen doet, het gebruikt en een loyale consument wordt, en uiteindelijk stopt met het gebruik om uiteenlopende redenen. Klantverloop is dus de laatste fase van de levenscyclus van de klant, wanneer de klant geen gebruik meer maakt van de diensten, en voor het bedrijf betekent dit dat de klant geen winst en in het algemeen geen waarde meer oplevert. <\/p>\n<p>Elke bankklant is een individu die een specifieke bankkaart kiest die aansluit bij zijn of haar behoeften. Reis je vaak? Dan komt een kaart met mijlen van pas. Doe je veel aankopen? Welkom, een kaart met cashback. Koop je veel in specifieke winkels? Dan is er al een speciale partnerkaarts voor. Uiteraard kiezen sommige mensen een kaart ook op basis van de voorwaarde \"De goedkoopste service\". Kortom, er zijn hier genoeg variabelen.<\/p>\n<p>Daarnaast kiest iemand zelf de bank \u2014 wat heeft het voor zin om een bankkaart van een bank te kiezen, waarvan de filialen alleen in Moskou en de regio zijn, terwijl je uit Chabarovsk komt? Zelfs al is de kaart van die bank twee keer zo voordelig, het hebben van bankfilialen in de buurt blijft een belangrijk criterium. Ja, 2019 is hier al en digital is ons alles, maar voor bepaalde vragen bij sommige banken kan je alleen in een filiaal terecht. Bovendien vertrouwt een deel van de bevolking veel meer een fysieke bank dan een app op hun smartphone, dit moet ook in overweging worden genomen.<\/p>\n<p>Als gevolg hiervan zijn er tal van redenen voor een persoon om af te zien van de producten van een bank (of zelfs van de bank zelf). Je hebt van baan gewisseld en de tariefstructuur van de kaart is veranderd van een salariskaart naar een \"Voor gewone stervelingen\"-kaart, die minder voordelig is. Je bent verhuisd naar een andere stad waar geen bankfilialen zijn. Je vond de interactie met een ongeschoolde medewerker in het filiaal niet prettig. Dat wil zeggen, er kunnen zelfs veel meer redenen zijn om een rekening te sluiten dan om een product te gebruiken.<\/p>\n<p>Daarnaast kan een klant niet alleen expliciet zijn intentie uiten - door naar de bank te gaan en een aanvraag te schrijven - maar ook gewoon stoppen met het gebruiken van producten zonder het contract te be\u00ebindigen. Om dergelijke situaties te begrijpen, is besloten om machine learning en AI te gebruiken.<\/p>\n<p>Bovendien kan klantverloop zich in elke sector voordoen (telecom, internetproviders, verzekeringsmaatschappijen, kortom, overal waar een klantenbasis en periodieke transacties zijn).<\/p>\n<h2>What we did<\/h2>\n<p>\nAllereerst was het nodig om een duidelijke grens te trekken - vanaf wanneer we een klant als vertrokken beschouwen. Voor de bank die ons de gegevens ter beschikking stelde, was de klantactiviteit binair - hij is ofwel actief of niet. Er was een ACTIVE_FLAG in de tabel 'Activiteit', waarvan de waarde ofwel '0' of '1' kon zijn (respectievelijk 'Inactief' en 'Actief'). En dat zou prima zijn, maar een mens kan een tijdlang actief zijn en daarna een maand inactief worden - hij kan ziek zijn, naar een ander land op vakantie gaan, of zelfs een andere bankpas gaan testen. En misschien begint hij na een lange periode van inactiviteit weer gebruik te maken van de diensten van de bank.<\/p>\n<p>Daarom hebben we besloten om een inactiviteitsperiode te noemen als een bepaald aaneengeschakeld tijdsinterval waarin de flag op '0' werd gezet. <\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/c4263f11be0f122e54ed7985ba0d2c9d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKlanten schakelen van inactief naar actief na inactiviteitsperioden van verschillende lengtes. We krijgen de mogelijkheid om de empirische waarde \"betrouwbaarheid van inactiviteitsperioden\" te berekenen - dat is de waarschijnlijkheid dat iemand na een tijdelijke inactiviteit weer gebruik gaat maken van de producten van de bank. <\/p>\n<p>Bijvoorbeeld, in deze grafiek is het herstel van de activiteit (ACTIVE_FLAG=1) van klanten weergegeven na enkele maanden van inactiviteit (ACTIVE_FLAG=0).<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/3828c06a86ca6b43e77a6de61f768804.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier zullen we de dataset die we zijn gaan gebruiken iets verduidelijken. Dus, de bank heeft geaggregeerde informatie over 19 maanden in de volgende tabellen geleverd:<\/p>\n<ul>\n<li>\"Activiteit\" - maandelijkse transacties van klanten (per kaarten, in internet- en mobiele bank), inclusief salarisbetalingen en informatie over omzetten.<\/li>\n<li>\"Kaarten\" - gegevens over alle kaarten die de klant heeft, met gedetailleerde tarifering.<\/li>\n<li>\u00abContracten\u00bb - informatie over de contracten van de klant (zowel open als gesloten): leningen, deposito's en meer, met specificatie van de parameters van elk.<\/li>\n<li>\u00abKlanten\u00bb - verzameling van demografische gegevens (geslacht en leeftijd) en de aanwezigheid van contactgegevens.<\/li>\n<\/ul>\n<p>\nVoor ons werk hadden we alle tabellen nodig, behalve \u00abKaarten\u00bb. <\/p>\n<p>De moeilijkheid lag hier ook in het feit dat de bank in deze gegevens niet aangaf welke activiteit op de kaarten plaatsvond. We konden begrijpen of er transacties waren of niet, maar het type ervan bepalen - dat konden we niet. Het was dus onduidelijk of de klant contant geld opnam, of dat hij salaris ontving, of dat hij geld uitgaf aan aankopen. Bovendien hadden we geen gegevens over de saldi op de rekeningen, wat nuttig zou zijn geweest. <\/p>\n<p>De steekproef was niet bevooroordeeld - in deze periode van 19 maanden heeft de bank geen pogingen ondernomen om klanten te behouden en het verloop te minimaliseren.<\/p>\n<p>Dus, over perioden van inactiviteit.<\/p>\n<p>Om de definitie van verloop te formuleren, moet een periode van inactiviteit worden gekozen. Om een verloopvoorspelling te maken op een bepaald moment, <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/d2faf7d1a11c2770987ab6316b1db5e8.png\" style=\"display:block;margin: 0 auto;\" \/>moet men ten minste 3 maanden klantgeschiedenis hebben binnen het interval <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/194e5601c2f0f49866d8e8e5a9ff5993.png\" style=\"display:block;margin: 0 auto;\" \/>. Onze geschiedenis was beperkt tot 19 maanden, daarom besloten we een periode van inactiviteit van 6 maanden te nemen, indien aanwezig. Voor de minimale periode voor een kwalitatieve voorspelling hebben we 3 maanden genomen. De cijfers van 3 en 6 maanden hebben we empirisch vastgesteld op basis van de analyse van het gedrag van deze klanten.<\/p>\n<p>We hebben de definitie van verloop als volgt geformuleerd: de maand van het verloop van de klant <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/3d581f5378975105aa6e73cacc175aeb.png\" style=\"display:block;margin: 0 auto;\" \/> is de eerste maand met ACTIVE_FLAG=0, waarin vanaf deze maand niet minder dan zes nullen achtereenvolgend in het veld ACTIVE_FLAG staan, met andere woorden, de maand waar vanaf de klant 6 maanden inactief was. <\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/04ea6d4c59a9497733e4a181a4a5847c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Aantal vertrokken klanten<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/4d470cbe91bbc6ee7ddfd1933e90e62c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Aantal resterende klanten<\/i><\/p>\n<h2>Zoals gebruikelijk wordt het verloop beschouwd<\/h2>\n<p>\nIn dergelijke competities, en eigenlijk in de praktijk, wordt het verloop vaak op deze manier voorspeld. De klant gebruikt producten en diensten op verschillende tijdstippen, en de gegevens over interactie met hem worden gepresenteerd als een vector van vaste lengte n. Meestal omvat deze informatie:<\/p>\n<ul>\n<li>Kenmerken van de gebruiker (demografische gegevens, marketingsegment).<\/li>\n<li>Historie van het gebruik van bankproducten en -diensten (dit zijn klantacties die altijd zijn gekoppeld aan een specifiek tijdstip of periode van het benodigde interval).<\/li>\n<li>Extern gegevens, indien beschikbaar - bijvoorbeeld, beoordelingen uit sociale media.<\/li>\n<\/ul>\n<p>\nEn pas daarna maken ze de churn-bepaling, specifiek voor elke taak. Vervolgens gebruiken ze een machine learning-algoritme dat de kans op klantverloop voorspelt. <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/79ce2d7f3193a9aab0b985c9a0cd0ee1.png\" style=\"display:block;margin: 0 auto;\" \/> op basis van een vector van factoren. <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/546791c513159e41d5950adca001d620.png\" style=\"display:block;margin: 0 auto;\" \/>Voor het trainen van het algoritme wordt een van de bekende frameworks voor het bouwen van ensembles van beslissingsbomen gebruikt, <noindex><a rel=\"nofollow\" href=\"https:\/\/xgboost.readthedocs.io\/en\/latest\/\">XGBoost<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Microsoft\/LightGBM\">LightGBM<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/catboost\/catboost\">CatBoost<\/a><\/noindex> of hun modificaties. <\/p>\n<p>Op zichzelf is het algoritme goed, maar voor wat betreft het voorspellen van churn heeft het enkele serieuze nadelen.<\/p>\n<ul>\n<li><b>Het heeft niet de zogenaamde \"geheugen\".<\/b>Op de input van het model komt een vast aantal kenmerken dat overeenkomt met het huidige tijdstip. Om informatie over de geschiedenis van parameterwijzigingen op te nemen, moeten speciale kenmerken worden berekend die de veranderingen van parameters in de tijd karakteriseren, zoals het aantal of de som van banktransacties in de afgelopen 1, 2, 3 maanden. Deze aanpak kan slechts gedeeltelijk het karakter van tijdsgebonden veranderingen weergeven. <\/li>\n<li><b>Een vaste voorspellingshorizon.<\/b> Het model kan alleen klantverloop voorspellen voor een vooraf gedefinieerde tijdsperiode, bijvoorbeeld een prognose voor \u00e9\u00e9n maand vooruit. Indien een prognose voor een andere tijdsperiode nodig is, bijvoorbeeld voor drie maanden, dan moet de trainingsset opnieuw worden opgebouwd en moet er een nieuw model worden getraind. <\/li>\n<\/ul>\n<p><\/p>\n<h2>Onze aanpak<\/h2>\n<p>\nWe hebben meteen besloten dat we geen standaardbenaderingen zouden gebruiken. In het kampioenschap zijn naast ons nog 497 mensen geregistreerd, elk met aanzienlijke ervaring. Het proberen om iets volgens een standaardprotocol te doen onder deze omstandigheden is geen goed idee.<\/p>\n<p>We gingen de problemen aanpakken waarmee het binaire classificatiemodel werd geconfronteerd door de kansverdeling van de tijd van klantverloop te voorspellen. Zo'n aanpak is te bekijken, <noindex><a rel=\"nofollow\" href=\"https:\/\/ragulpr.github.io\/assets\/draft_master_thesis_martinsson_egil_wtte_rnn_2016.pdf\">hier<\/a><\/noindex>het stelt ons in staat om flexibeler churn te voorspellen en complexere hypothesen te toetsen dan in de klassieke benadering. Als verdeling voor het modelleren van de tijd van klantverloop hebben we de distributie gekozen <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%92%D0%B5%D0%B9%D0%B1%D1%83%D0%BB%D0%BB%D0%B0\">Weibull<\/a><\/noindex> vanwege het brede gebruik in overlevingsanalyse. Het gedrag van een klant kan worden beschouwd als een soort overleving. <\/p>\n<p>Hier zijn voorbeelden van Weibull waarschijnlijkheidsdichtheidsverdelingen, afhankelijk van de parameters <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/57c935da52faf825ceedb4389d21c354.png\" style=\"display:block;margin: 0 auto;\" \/> en <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/85d1c92d5b9dfa83d13092edefb29a09.png\" style=\"display:block;margin: 0 auto;\" \/>:<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/371e51ab8df2c10d5b139aadf290ebf8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDit is de waarschijnlijkheidsdichtheid van klantverloop voor drie verschillende klanten in de loop van de tijd. De tijd wordt weergegeven in maanden. Met andere woorden, deze grafiek laat zien wanneer het waarschijnlijk is dat een klant in de komende twee maanden vertrekt. Zoals te zien is, heeft de klant met de verdeling een groter potentieel om eerder te vertrekken dan klanten met de Weibull verdelingen(2, 0.5) en Weibull(3,1). <\/p>\n<p>Uiteindelijk ontstaat er een model dat voor elke klant voor elke<br \/>\nmaand de Weibull verdelingsparameters voorspelt, die het beste de waarschijnlijkheid van verloop in de loop van de tijd weergeeft. In detail: <\/p>\n<ul>\n<li>Doelkenmerken in de trainingsset zijn de tijd die overblijft totdat de klant in een specifieke maand vertrekt.<\/li>\n<li>Als er geen verloopcijfer voor de klant is, nemen we aan dat de vertrekperiode langer is dan het aantal maanden vanaf nu tot het einde van onze beschikbare geschiedenis.<\/li>\n<li>Gebruikt model: recurrent neuraal netwerk met een LSTM-laag.<\/li>\n<li>Als verliesfunctie gebruiken we de negatieve log-likelihood functie voor de Weibull verdeling.<\/li>\n<\/ul>\n<p>\nDit zijn de voordelen van deze methode: <\/p>\n<ul>\n<li>De waarschijnlijkheidsverdeling, naast de evidente mogelijkheid van binaire classificatie, stelt ons in staat om flexibel verschillende gebeurtenissen te voorspellen, bijvoorbeeld of de klant binnen 3 maanden zal stoppen met het gebruik van de bankdiensten. Ook kunnen we, indien nodig, verschillende metrische waarden naar deze verdeling gemiddeld.<\/li>\n<li>Het recurrente neuraal netwerk LSTM heeft geheugen en benut effectief de gehele beschikbare geschiedenis. Met uitbreiding of specificatie van de geschiedenis neemt de nauwkeurigheid toe.<\/li>\n<li>Deze aanpak is probleemloos opschaalbaar bij het splitsen van tijdsintervallen in kleinere (bijvoorbeeld door maanden in weken te splitsen).<\/li>\n<\/ul>\n<p>\nMaar het is niet genoeg om een goed model te cre\u00ebren, het is ook belangrijk om de kwaliteit ervan goed te evalueren.<\/p>\n<h2>Hoe we de kwaliteit beoordeelden<\/h2>\n<p>\nAls metriek hebben we de Lift Curve gekozen. Deze wordt in het bedrijfsleven voor dergelijke situaties gebruikt vanwege de duidelijke interpretatie; het is goed beschreven. <noindex><a rel=\"nofollow\" href=\"http:\/\/www2.cs.uregina.ca\/~dbd\/cs831\/notes\/lift_chart\/lift_chart.html\">here<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.information-management.com\/news\/why-lift\">hier<\/a><\/noindex>Als je de betekenis van deze metriek in \u00e9\u00e9n zin zou moeten beschrijven, zou het zijn: \"In hoeveel betere voorspellingen maakt het algoritme de eerste <img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/72818f84f73c2838fe7d63b33a96fd7b.png\" style=\"display:block;margin: 0 auto;\" \/>% dan willekeurig.\" <\/p>\n<h2>We trainen de modellen<\/h2>\n<p>\nDe voorwaarden van de wedstrijd stelden geen specifieke kwaliteitsmetrieken vast waarmee verschillende modellen en benaderingen vergeleken konden worden. Bovendien kan de definitie van churn verschillen en kan afhankelijk zijn van de taakstelling, die op haar beurt wordt bepaald door de bedrijfsdoelstellingen. Daarom hebben we twee modellen getraind om te begrijpen welke methode beter is:<\/p>\n<ol>\n<li>Een vaak gebruikte benadering van binaire classificatie met behulp van een machine learning-algoritme van een ensemble van beslissingsbomen (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Microsoft\/LightGBM\">LightGBM<\/a><\/noindex>);<\/li>\n<li> Weibull-LSTM-model<\/li>\n<\/ol>\n<p>\nDe testset bestond uit 500 vooraf geselecteerde klanten, die niet in de trainingsset aanwezig waren. Voor het model werd er hyperparameteroptimalisatie uitgevoerd met behulp van cross-validatie, opgesplitst per klant. Voor de training van elk model werden dezelfde sets van kenmerken gebruikt. <\/p>\n<p>Aangezien het model geen geheugen heeft, werden speciale kenmerken genomen die het verband aangaven tussen de wijziging van parameters in \u00e9\u00e9n maand en de gemiddelde waarde van de parameters over de afgelopen drie maanden. Dit karakteriseerde de snelheid waarmee waarden veranderden in de laatste periode van drie maanden. Zonder dit zou het Random Forest-model in een nadelige positie zijn ten opzichte van Weibull-LSTM.<\/p>\n<h2>Waarom is LSTM met een Weibulldistributie beter dan een aanpak op basis van een ensemble van beslissingsbomen? <\/h2>\n<p>\nHier is alles visueel, letterlijk met een paar afbeeldingen.<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/0a87a27804f1b285f66a889ed798cf6b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Vergelijking van de Lift Curve voor het klassieke algoritme en Weibull-LSTM<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/6c281677260098c7993a690c923692c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Vergelijking van de Lift Curve-metriek per maand voor het klassieke algoritme en Weibull-LSTM<\/i><\/p>\n<p>Over het algemeen presteert LSTM beter dan het klassieke algoritme in bijna alle gevallen.<\/p>\n<h2>Voorspelling van churn<\/h2>\n<p>\nEen model op basis van een recurrent neurale netwerk met LSTM-cellen met een Weibulldistributie kan churn van tevoren voorspellen, bijvoorbeeld het vertrek van een klant in de komende n maanden. Laten we de situatie voor n = 3 bekijken. In dit geval moet het neuronale netwerk voor elke maand correct bepalen: vertrekt de klant vanaf de volgende maand tot de n-de maand? Met andere woorden, het moet correct bepalen of de klant na n maanden blijft. Dit kan worden beschouwd als een vooruitziende voorspelling: het voorspellen van het moment waarop een klant begint na te denken over het vertrek. <\/p>\n<p>Laten we de Lift Curve voor Weibull-LSTM vergelijken na 1, 2 en 3 maanden voor churn:<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/4b2ed9cb21844cf5dc8f54bcfe092a9d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe hebben eerder vermeld dat ook de voorspellingen belangrijk zijn voor klanten die tijdelijk inactief zijn. Daarom voegen we in deze selectie gevallen toe waarin een vertrokken klant al een of twee maanden inactief was, en we zullen controleren of de Weibull-LSTM dergelijke gevallen correct als churn classificeert. Aangezien dergelijke gevallen in de selectie aanwezig waren, verwachten we dat het netwerk goed met hen omgaat:<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/4fe6e918aff2f16758c671c8d547895d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Klantbehoud<\/h2>\n<p>\nEigenlijk is dit het belangrijkste wat je kunt doen met de informatie dat bepaalde klanten zich voorbereiden om het product niet meer te gebruiken. Als we het hebben over het bouwen van een model dat iets nuttigs voor klanten kan voorstellen om hen te behouden - dat kan niet worden gedaan zonder een geschiedenis van soortgelijke pogingen die goed zijn afgelopen.<\/p>\n<p>We hadden geen dergelijke geschiedenis, daarom hebben we het op deze manier besloten.<\/p>\n<ol>\n<li>We bouwen een model dat interessante producten voor elke klant identificeert.<\/li>\n<li>Elke maand draaien we de classificator en bepalen we potenti\u00eble vertrekkende klanten.<\/li>\n<li>We bieden een deel van de klanten producten aan, volgens het model in punt 1, en onthouden onze acties.<\/li>\n<li>Na een paar maanden kijken we wie van deze potenti\u00eble vertrekkende klanten is vertrokken en wie is gebleven. Zo vormen we een trainingsset.<\/li>\n<li>We trainen het model op de geschiedenis die in punt 4 is verkregen.<\/li>\n<li>Optioneel herhalen we de procedure, waarbij we het model uit punt 1 vervangen door het model uit punt 5.<\/li>\n<\/ol>\n<p>\nEen kwaliteitscontrole van zo'n behoud kan eenvoudig A\/B-testen zijn - we splitsen potenti\u00eble vertrekkende klanten in twee groepen. De ene groep biedt producten aan op basis van ons behoudmodel, de andere groep krijgt niets aangeboden. We besloten een model te trainen dat al in punt 1 van ons voorbeeld nuttig kon zijn.<\/p>\n<p>We wilden de segmentatie zo interpreteerbaar mogelijk maken. Daarom hebben we verschillende kenmerken gekozen die gemakkelijk te interpreteren waren: het totale aantal transacties, salaris, totale omzet op de rekening, leeftijd, geslacht. Kenmerken uit de tabel 'Kaarten' werden niet in aanmerking genomen wegens gebrek aan informatie, en kenmerken uit tabel 3 'Contracten' vanwege de complexiteit van verwerking om gegevenslekken tussen de validatieset en trainingsset te voorkomen.<\/p>\n<p>Clustering werd uitgevoerd met behulp van Gaussian mixture models. De Akaike-informatienorm stelde ons in staat om 2 optimumbepalingen vast te stellen. De eerste optimum komt overeen met 1 cluster. De tweede optimum, die minder uitgesproken is, komt overeen met 80 clusters. Uit dit resultaat kan de volgende conclusie worden getrokken: het is uiterst moeilijk om gegevens in clusters te verdelen zonder a priori gegeven informatie. Voor een betere clustering zijn gegevens nodig die elke klant gedetailleerd beschrijven.<\/p>\n<p>Daarom werd de taak van supervised learning overwogen om elke afzonderlijke klant een specifiek product aan te bieden. De volgende producten werden overwogen: 'Termijndeposito', 'Creditcard', 'Overdraft', 'Consumentenlening', 'Autolening', 'Hypotheek'. <\/p>\n<p>Binnen de gegevens was er nog een ander type product: 'Huidige rekening'. Maar we hebben dit niet overwogen vanwege de geringe informativiteit. Voor de gebruikers die klanten van de bank zijn, d.w.z. die niet gestopt zijn met het gebruiken van zijn producten, werd er een model gebouwd dat voorspelt welk product hen zou kunnen interesseren. Als model werd logistische regressie gekozen en als kwaliteitsmeetwaarde werd de Lift-waarde voor de eerste 10 percentielen gebruikt. <\/p>\n<p>De kwaliteit van het model kan worden beoordeeld aan de hand van de afbeelding.<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/77cab18988ab9c3b768b86e31479817f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Resultaten van het productaanbevelingsmodel voor klanten <\/i> <\/p>\n<h2>Conclusie<\/h2>\n<p>\nDeze aanpak heeft ons de eerste plaats opgeleverd in de nominatie 'AI in banken' tijdens het RAIF-Challenge 2017.<\/p>\n<p><img decoding=\"async\" alt=\"Zoals we de uitstroom voorspelden, beschouwen we het als een natuurramp\" src=\"\/wp-content\/uploads\/2019\/03\/0c321869dfd02323766c025ed4021bcf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZonder twijfel was het belangrijkste om het probleem vanuit een minder gebruikelijke invalshoek te benaderen en een methode te gebruiken die gebruikelijk is voor andere situaties.<\/p>\n<p>Een massa-exodus van gebruikers kan echter heel goed een ramp zijn voor diensten.<\/p>\n<p>Deze methode kan ook voor elke andere sector worden overwogen waar het belangrijk is om klantverloop in overweging te nemen, niet alleen in banken. Bijvoorbeeld, we hebben het ook gebruikt om ons eigen verloop te berekenen - in de Siberische en St. Petersburg vestigingen van Rostelecom.<\/p>\n<p><i>'Laboratorium voor Intelligente Gegevensanalyse' van het bedrijf 'Zoekportaal Sputnik'<\/i><br \/>\n<br \/>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/444694\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043b\u0435\u0442 10 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0440\u0435\u0448\u0430\u043b\u0438 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c, \u043d\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0442\u0435\u043c\u0430, \u043a\u0430\u043a \u043e\u0442\u0442\u043e\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u0428\u0442\u0443\u043a\u0430 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u0430\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u0447\u0438\u043d \u0432\u0437\u044f\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-30044","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e\u0442\u0442\u043e\u043a, \u043f\u043e\u0434\u043e\u0439\u0434\u044f \u043a \u043d\u0435\u043c\u0443 \u043a\u0430\u043a \u043a \u0441\u0442\u0438\u0445\u0438\u0439\u043d\u043e\u043c\u0443 \u0431\u0435\u0434\u0441\u0442\u0432\u0438\u044e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:33:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:33:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Zoals we voorspeld hebben, hebben we het klantenverloop benaderd als een natuurramp | ProHoster","description":"Soms is het nodig om een probleem vanuit een ander perspectief te bekijken om het op te lossen.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e\u0442\u0442\u043e\u043a, \u043f\u043e\u0434\u043e\u0439\u0434\u044f \u043a \u043d\u0435\u043c\u0443 \u043a\u0430\u043a \u043a \u0441\u0442\u0438\u0445\u0438\u0439\u043d\u043e\u043c\u0443 \u0431\u0435\u0434\u0441\u0442\u0432\u0438\u044e | ProHoster","og:description":"\u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c.","og:url":"https:\/\/prohoster.info\/nl\/blog\/kak-my-predskazyvali-ottok-podojdya-k-nemu-kak-k-stihijnomu-bedstviyu","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:33:22+00:00","article:modified_time":"2019-10-31T18:33:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30044","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-20 23:33:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:43:15","updated":"2026-01-20 23:33:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=30044"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30044\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=30044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=30044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=30044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}