Използване на kNN, логистична регресия, произволна гора, дърво на решенията, SVM, XGBoost и Lightgbm

„Съвкупност от операции, извършвани за предотвратяване на придобиване на пари или собственост под фалшив претекст, е известна като откриване на измами.“

Измамата може да бъде извършена по различни начини и в широк диапазон от сектори. За да се направи преценка, по-голямата част от техниките за откриване интегрират няколко набора от данни за откриване на измами, за да предоставят свързана картина както на легитимни, така и на невалидни данни за плащане.

През 2017 г. 16,7 милиона души са били жертви на неразрешени дейности с карти. Според Федералната търговска комисия (FTC) размерът на исковете за измами с кредитни карти през 2017 г. е бил с 40% по-голям от предходната година. Около 13 000 случая са регистрирани в Калифорния и 8 000 във Флорида, двата щата с най-висок процент на този вид престъпност на глава от населението. До 2020/21 г. залозите ще се повишат до над 30 милиарда долара.

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

Конвенционалното откриване на измами:

  • Завършването отнема много време.
  • Необходими са множество средства за проверка, което е тромаво за потребителя.
  • Открива само очевидна измама.
  • Процедурите за вземане на решения за определяне на схеми трябва да бъдат установени ръчно.

Защо откриване на измами, базирано на машинно обучение:

  • Автоматично откриване на измами
  • Стрийминг в реално време
  • По-малко време е необходимо за методите за проверка
  • Идентифициране на скрити корелации в данните

Основа

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

Стратегия на проекта

Стъпките на проекта са показани по-долу. В тази статия ще покажа кратки скриптове на Python, използвани за постигане на някои от резултатите от моя анализ.

Импортиране на библиотеки

  • Ще използваме библиотеки на Python, включително Pandas (почистване/манипулиране на данни), Numpy (работа с масиви), Matplotlib (визуализация на данни), StandardScaler (нормализиране на данни).
  • Преди да започнем, нека импортираме библиотеки, необходими за проекта, като използваме скриптовете на Python по-долу:

Проучвателен анализ на данни и обработка на данни:

  • Както казах в предишната си статия, проучвателният анализ на данни — накратко EDA, ви помага да знаете липсващите стойности, корелиращи характеристики и идентифициране на различни тенденции, които съществуват в набора от данни.
  • По-долу са скриптове на Python за импортиране на набор от данни в среда на преносим компютър Jupyter:
  • По-долу имаме общ преглед на това как изглеждат нашите данни:

Сега имаме нашите данни в подходяща среда.

  • Той включва характеристики от V1 до V28, които са основните компоненти, получени с помощта на PCA. Ще пренебрегнем елемента време, който няма стойност за създаването на моделите. Функцията „Сума“, която предоставя общата сума на транзакцията, и функцията „Клас“, която показва дали транзакцията е случай на измама или не, са останалите функции.

Сега ще проучим:

  • Брой случаи.
  • Брой случаи, които не са измама.
  • Брой случаи на измама.
  • Процент на случаите на измама.

По-долу са скриптове на Python за изследване на набора от данни в средата на преносим компютър Jupyter:

  • Имаме изхода по-долу като:

  • От диаграмата по-горе можем да видим, че имаме 284 807 проби, като 492 случая са измамни, което е около 0,17 процента от всички данни за извадката. Данните са небалансирани и поради това трябва да бъдем внимателни при моделиране и оценка.

Нека да получим статистически изглед както на данните за сумата на транзакциите за измами, така и за транзакциите, които не са измами, като използваме метода „describe“ в python.

По-долу са скриптове на Python за изследване на набора от данни в средата на преносим компютър Jupyter:

  • Имаме изхода по-долу като:

Нормализиране на данни

Докато преглеждате статистическото описание на характеристиките на примерния набор от данни за кредитната карта. Вижда се, че стойностите в променливата „Сума“ варират значително в сравнение с останалите променливи. За да намалим широкия му диапазон от стойности, можем да го нормализираме с помощта на метода „StandardScaler“ в python.

По-долу са дадени скриптове на Python за намаляване на широкия диапазон от стойности в примерния набор от данни:

  • Имаме изхода по-долу като:

Извличане на функции и разделяне на данни

Тук ще разделим данните на набор за обучение и набор за тестване, който допълнително се използва за моделиране и оценка. Можем лесно да разделим данните с помощта на алгоритъма „train_test_split“ в python.

По-долу са скриптове на Python за разделяне на набора от данни в средата на преносим компютър Jupyter:

  • Имаме изхода по-долу като:

Модел на сграда

Ние ще изградим седем (7) различни типа класификационни модели, а именно дърво на решенията, K-най-близки съседи (KNN), логистична регресия, опорна векторна машина (SVM), произволна гора, XGBoost и lightgbm.

Сега, нека се захващаме за работа, като внедрим тези модели в python, използвайки скрипта на python по-долу:

Оценка на модел

Основната ни цел в този процес е да намерим най-добрия модел за дадения ни случай. Метриката за оценка, която ще използваме, е метрика за оценка f1.

Последни мисли

Ще забележим, че от нашия изход в рамката с данни на pandas по-горе, имаме:

  • Моделът KNN е най-ефективният модел с приблизително 86% точност.
  • Моделът XGBoost като най-ефективният модел след модела KNN с приблизително 85% точност.
  • Моделът на дървото на решенията като най-ефективният модел след модела XGBoost с приблизително 81% точност.
  • Lightgbm като най-ефективният модел след модела на дървото на решенията с приблизително 80% точност.
  • Моделът SVM като най-ефективният модел след модела Lightgbm с приблизително 77% точност.
  • Случайният модел на гората като най-ефективният модел след SVM модела с приблизително 76% точност.
  • Логистичен регресионен модел като най-ефективния модел след модела на произволната гора с приблизително 74% точност.

Благодаря, че отделихте време да прочетете тази статия. Можете да прочетете още статии, като отидете в моя профил (скоро ще има повече).

Забележки

Всички използвани препратки бяха хипервръзки в статията. За да видите пълния код на Python, написан на Jupyter Notebook, Github и моите страници в социалните медии. Моля, използвайте връзките по-долу: