Автори

Робин Радж | Датски усмани | Приянка Далмия | Пиюш Кашяп

Важни връзки

  1. Връзка към GitHub Repository — https://github.com/apollo-robin/customer-churn
  2. Набор от данни от Kaggle (С уважение към Sakshi Goyal, софтуерен инженер, Wipro) — ВРЪЗКА
  3. Отчет за профил на данни с помощта на инструмента за профилиране на Panda — ВРЪЗКА
  4. Ето връзката към хостваната услуга на Streamlit — https://share.streamlit.io/apollo-robin/algo_server/main/server.py

Обхват на проекта и изложение на проблема

Банките и финансовите институции имат голям брой потребители в днешния бизнес климат. Банкомати, дебитни карти, кредитни карти, онлайн банкиране и други канали се използват от банките за предоставяне на услуги. Броят на клиентите се увеличи и те все повече осъзнават качеството на услугата. Клиентите преминават от една банка в друга по различни причини, което насърчава ожесточеното съперничество между банките.

Следователно, като част от този проект, ние разработваме и внедряваме модел, който може да предскаже кой клиент е вероятно да се оттегли въз основа на демографските, психографските и историческите транзакционни данни на клиентите, обслужвайки належащата нужда от такива решения на пазара на финансови решения като цяло и доставчици на услуги за кредитни карти в частност. Прогнозата може да помогне на банките да идентифицират кой има вероятност да напусне, защо напускат и какво трябва да направят по въпроса.

Преглед на набора от данни и отчет за профила на данните

Наборът от данни има 20 входни характеристики за повече от 10 000 клиенти, който се състои от 14 числени характеристики, 5 категориални характеристики и 1 булева характеристика с целева променлива като флаг за изтощение или отлив, обозначаващ съществуващ или изтощен клиент.

Докладът за профила на данни на Panda е създаден, за да разбере естеството на всяка налична функция. За едновариантния анализ беше използван подробен отчет за индивидуалните характеристики за намиране на дисбаланс и липсващи стойности.

От горния десен ъгъл по-горе моментните снимки показват разпределението на пол, семейно положение, категория на картата, възраст, категория на доходите и ниво на образование. Въпреки че има по-малък брой жени в набора от данни, няма значително отклонение към който и да е пол. Наборът от данни съдържа много слабо представителство на картодържатели, които не са сини, разведени, студенти и по-богати хора.

За бивариантния анализ корелационната топлинна карта на Pearson за числени характеристики показа, че „Средната отвореност за покупка“ е силно свързана с „Кредитен лимит“, което ясно показва, че колкото по-висок е кредитният лимит на клиент, толкова по-висок ще бъде отворен за покупка кредитна линия и само един от тях трябва да се използва допълнително за анализ. Корелацията на Спирман за категоричните характеристики показва някаква положителна корелация между пола и категорията на доходите, което показва присъщото пристрастие в обществото, че доходите на мъжете са по-високи в сравнение с жените.

Предварителна обработка на данни

С помощта на констатациите от доклада за профила на данните ние внедрихме три стъпки за обработка на данни. Първо, за да избегнем голям брой фиктивни променливи, използващи One Hot Encoding, внедрихме Target Encoding за някои от категоричните променливи „Ниво на образование“, „Категория на дохода“ и „ Категория на картата”. За категориални променливи само с две възможни стойности като „Пол“ и „Семейно положение“ внедрихме One Hot Encoding. За някои от числените функции „Общ револвиращ баланс“, „Средно отворено за покупка“ и „Обща сума на транзакция“ внедрихме групиране на функции, за да въведем известна нелинейност в модела за по-добра производителност.

Импутирането на K най-близките съседи (kNN) беше внедрено за категориалните характеристики „Ниво на образование“, „Семейно положение“ и „Категория на доходите“, така че не се налага да премахваме нито един от тези записи от набора от данни.

Също така забелязахме, че наборът от данни за обучение е силно дисбалансиран, като положителната класа отпаднали клиенти е много по-малко в сравнение с отрицателната класа на съществуващи клиенти. Тъй като класът, който ни интересува, т.е. атритираният клас, е рядък, ние използвахме SMOTE Sampling, за да се справим с този дисбаланс, тъй като той генерира синтетични проби за класа на малцинството и след това обученият модел няма да бъде предубеден. След тази обработка ние съхранихме набора от данни във формат на pickle.

Проследяване на експеримента, избор на най-добър модел и функция

Внедрихме различни модели и използвахме тегла и отклонения за проследяване на експеримента. Моля, намерете обобщението на всички експерименти. Разделянето 80:20 беше използвано за Train-Test Dataset.

Използвахме търсене в мрежата за настройка на хиперпараметър с 5 кръстосано валидиране. Моделът XG Boostпредостави най-добрите стойности за точност, F1 резултат, прецизност, запомняне и резултат за крайна класификация, затова продължихме напред с XG Boost Model. Също така, той се оказа най-добре представящият се модел според ROC & Precision vs Recall Curves за всички експерименти в W&B.

Беше използван избор на функция, базиран на модел, като метод за вграждане, където най-добрите 10 функции в реда на важност, както е показано в таблицата, бяха разгледани допълнително. Моделът XG Boost беше преквалифициран само с тези топ 10 функции с помощта на Grid Search за настройка на хиперпараметър. Използвано е едно стандартно правило за избор на най-добрия набор от хиперпараметри.

Внедряване на модела

Окончателният преквалифициран модел XG Boost с 10 функции след това беше внедрен като уеб приложение. За тази цел моделът първо беше записан като pickle файл. След това беше използвана стратегията Model-in-Service за внедряване на модела, така че да бъде вграден в приложението. Хостинг услугата Streamlit е използвана за внедряване. По-долу са дадени моментни снимки на проектирания потребителски интерфейс за множество сценарии:

Мониторинг на модела

За да оценим качеството на прогнозите и да разберем дали е необходимо повторно обучение, ние наблюдавахме отклонението на модела и генерирахме отчет за отклонението на данните, използвайки библиотеката очевидно. По-долу е дадена моментна снимка на доклада.

Дрейфът беше открит за 81,8% от функциите, т.е. 9 от 11 функции в производствения комплект не следваха същото разпределение като набора за обучение. Ние също така изчислихме отчета за ефективността на класификацията, за да разберем въздействието на отклоненията в данните върху производителността на модела.

Производителността на модела се влошава при производствения комплект в сравнение с референтния набор. Ефективността и на четирите показателя е намаляла. Това е възможно, тъй като производственият набор е слабо избран, тъй като положителният клас е недостатъчно представен в производствения набор.

Мониторинг на модела — Анализ на грешките на подсегмента относно пола

Сравнихме точността и други показатели на модела в двете категории на пола. Моделът не показа релевантно отклонение от референтния модел както в мъжките, така и в женските категории.

Резултати от дрифта на модела в категорията „МЪЖЕ“:

Резултати от дрифта на модела в категорията „ЖЕНСКИ“:

Обяснение на модела

Глобална интерпретация

Използвайки Обобщението на стойностите на Shapley, можем да тълкуваме, че общият брой транзакции е най-важният фактор, докато полът е най-маловажният фактор. Нисък Общ брой транзакции показва по-голямо изтощение. Високата Обща сума на транзакцията показва ниско изтощение. Използвайки графика на частична зависимост, можем да интерпретираме, че с увеличаването на общия брой транзакции вероятността от изтощение намалява. По същия начин, по-високият брой взаимоотношения показва по-малко изтощение.

Местно тълкуване (Сценарий 1)

Използвайки LIME, можем да обясним случая без изтощение с вероятност от 0,62. Стойностите на характеристиките, които допринасят за липсата на изчерпване, са: Нисък револвиращ баланс, нисък среден коефициент на използване и т.н. Разгледахме също случаи на изчерпване с вероятност 1,00. ИзползвайкиSHAP,можем да видим, че стойността на характеристиките, които допринасят за липсата на загуба, са: Промяна в броя на транзакциите (Q4 спрямо Q1), общ брой взаимоотношения и т.н. Тези характеристики се отдалечават от базовата стойност.

Местно тълкуване (Сценарий 2)

Използвайки LIME, можем да обясним случая на изтощение с вероятност 1,00. Стойността на характеристиките, които допринасят за изтощението, са: слаб брой връзки, висока стойност на неактивни месеци през последните 12 месеца и т.н. ИзползвайкиSHAP,можем да видим, че стойността на характеристиките, която допринася за изтощението, е: Ниска револвираща баланс, нисък общ брой транзакции и др.

Диаграма за калибриране на модела

Тази диаграма се използва за измерване на надеждността на модела. Според графиката, моделът Final XG Boost не е близо до перфектното калибриране, но може да се счита за надежден модел за прогнозиране на отлив.

Отчитане на модела — Карта на модела

По-долу е моментна снимка на картата на модела с обобщение на модела на машинно обучение. Беше отчетена разлика в производителността и точността на модела за прогнозиране на мъжкия и женския сегмент.

Файлова структура на GitHub

За да поддържаме ресурсите на нашия проект по структуриран начин, използвахме GitHub като система за контрол на версиите. Както можем да видим в дървовидната диаграма на директорията на проекта, имаме файл Readme за описание на проекта, който не се ограничава до изявлението на проблема. Освен това има 5 директории за съхраняване на различни видове ресурси. Файловете с данни се състоят от всички необработени и обработени файлове с данни, използвани при тестване, обучение и валидиране. Директорията Models съхранява модела във файлов формат pickle. Директорията на папката Бележник се състои от всички файлове на бележника на Python, използвани в проекта, като обработка на данни, разработване на модел, внедряване на модел и мониторинг на модела. Папката Python/Files се състои от кода, използван за създаване и хостване на потребителски интерфейс на уеб приложение за демонстрационни цели на проекта. И накрая, директорията на папката Отчети се състои от всички HTML отчети като карти с модели, отчети за профили на данни от pandas, отчети за наблюдение на отклонението на данните, отчети за ефективността на класификацията на модела, анализ на точността на подсегменти в отчети за пола и други. GitHub също даде възможност за съвместна работа между членовете на групата.

Предизвикателства и ключови уроци

  1. За да изберем модела с най-добри резултати, ние вземаме предвид различни показатели за оценка като точност, прецизност, запомняне и F1 резултат. Завършихме използването на резултата от F1, тъй като и FN, и FP имаха съображения за равни разходи.
  2. Беше предизвикателство да се настанят множество сътрудници от групата за хранилището на код на GitHub, което породи множество конфликти по време на процеса на разработка. Научихме се да разрешаваме тези конфликти, да създаваме множество клонове за разработка, да изтегляме заявки и периодично да ги обединяваме към основния клон.
  3. Включихме Model-In-Service като стратегия за внедряване на модела в нашия проект за опростяване във фазата на обучение. Ние разбираме всички предизвикателства с тази стратегия като тясно свързване между модела и приложението, което прави трудно избягването на престой по време на актуализации на модела и т.н.
  4. Научихме методологията и значението на представянето на нашите проекти чрез създаване на добре подбрана средна статия с цялото подходящо съдържание.
  5. Ние разбрахме значението на изучаването и докладването на присъщите отклонения в модела за сегменти като мъжки/женски пол, за да улесним интерпретациите на резултатите.