Материал: Плагіат

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

record = pd.merge(credit_record, application_record, on='ID', how='left')

record.head()

record.isnull().sum()

Рис. 5.11 – Кількість пропущених даних після злиття таблиць для кожної ознаки

Виявилось, що дані з 2 таблиць співпадають не до кінця, і 270860 заявок на кредити залишились без статусу. Для навчання моделі, необхідно щоб всі заявки мали свої класи, тож видалимо рядки, що не мають класу і виведемо кількість заявок, що мають всі ознаки і приналежність до класу (лістинг 5.7, рисунок 5.12).

Лістинг 5.7 – Програмний код видалення рядків з пустими значеннями і виведення даних

record.dropna(inplace=True)

record['Label'].value_counts()

Рис. 5.12 – Кількість заявок кожного класу, з описом всіх ознак

Оглянувши дані, можна зробити висновок, що після видалення пустих рядків статистична ситуація не змінилась відношення і залишилось приблизно 62:38. Представимо це графіком (рисунок 5.12)

Рис. 5.13 – Співвідношення вдалих класів заявок до кількості

Далі, змінимо дані таким чином, щоб алгоритм використав їх правильно. Загалом, з усіх ознак виділимо нові, для того щоб значення ознак змінились з номінальних на порядкові або індикаторні (лістинг 5.8, рисунок 5.14).

Лістинг 5.9 – Програмний код спрощення номінальних даних

record = pd.get_dummies(record, columns=['CODE_GENDER','FLAG_OWN_CAR','FLAG_OWN_REALTY','NAME_INCOME_TYPE', 'NAME_EDUCATION_TYPE','NAME_FAMILY_STATUS','NAME_HOUSING_TYPE'], drop_first = False)

Рис. 5.14 – Спрощення номінальних даних

Після того як дані були оброблені, відсіяні пропущені значення, таблиці об’єднані, виділення класів було здійснено тепер є можливість проводити навчання моделей. Для початку проведемо навчання простої моделі дерева рішень CART (лістинг 5.10).

Лістинг 5.10 – Програмний код навчання моделі CART

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(random_state=0, max_depth=25)

tree.fit(features_train, label_train)

# predict train set

pred_train=tree.predict(features_train)

# predict test set

pred_test=tree.predict(features_test)

from sklearn.metrics import accuracy_score

accuracy_train = accuracy_score(pred_train,label_train)

accuracy_test = accuracy_score(pred_test,label_test)

Тепер подивимось результати класифікації, та проаналізуймо їх (рисунок 5.15).

Рис 5.15 – Класифікаційний звіт роботи методу CART

Перевіряючи на тестових даних, виявилось що точність моделі дорівнює близько 64%. Користуючись алгоритмом, що описаний у пункті 2.3 розглянемо як модель зробила оцінку ознак (рисунок 5.16). Після цього, необхідно підібрати мінімальну оцінку ознак Wmin для навчання наступної моделі на основі алгоритму SVM.

Рис. 5.16 – Оцінка ознак за допомогою моделі CART

Далі проаналізуємо цифри, для того щоб підібрати Wmin (рисунок 5.17).

Рис. 5.17 – Важливість ознак

Отже можна побачити, що деякі ознаки мають більший вплив на те, чи буде виданий кредит чи ні, а деякі майже не грають ролі. Тож, відсіємо зовсім неважливі ознаки, задавши значення Wmin = 0.00125 (рисунок 5.18).

Рис. 5.18 – Ознаки, що мають W > Wmin

Далі відбувається фільтрація стовпців вибірки, та дані подаються для навчання моделі SVM (лістинг 5.11).

Лістинг 5.11 – Подання даних для навчання алгоритму SVM

from sklearn import svm classification_svm = svm.SVC(kernel='linear')

classification_svm.fit(features_train, label_train)

pred_train = classification_svm.predict(features_train)

pred_test=classification_svm.predict(features_test)

from sklearn.metrics import accuracy_score

accuracy_train = accuracy_score(pred_train,label_train)

accuracy_test = accuracy_score(pred_test,label_test)

Тепер проаналізуємо результат роботи комбінованого методу, за допомогою класифікаційного звіту (рисунок 5.19).

Рис. 5.19 – Класифікаційний звіт для комбінованого методу

Отже, класифікаційний звіт показує оцінку точності – 72%. В порівнянні з використанням чистого методу CART різниця майже у 8%. Чи можна сказати, що даний метод на будь-яких даних буде показувати кращі результати? Ні, не можна, дуже часто результати залежать від самих даних, та методик їх обробки, нормалізації. Щодо предметної області, та проектованої системи 72% – і досить непоганий результат, проте недосконалий. Для покращення методу, можливо, потрібно використати інші методи в ансамблі, спробувати техніки Stacking, Boosting.

Загалом, таку модель можна використовувати у реальній системі, так як комбінований метод буде виконувати роль лише підтримки рішення співробітника банку, а видавати, чи не видавати кредит буде його рішенням.

Для того, щоб отримати передбачення щодо клієнтської заявки на отримання банківського кредиту необхідно подати дані про клієнта на вхід до навченої моделі (лістинг 5.12, рисунок 5.20)

Лістинг 5.12 – Програмний код подання даних про заявку до навченої моделі

predict = classification_svm.predict(clientData)

print("Predicted=%s" % (defaulter" if predict == 0 else "non_defaulter"));

Рис. 5.20 – Приклад прогнозування методу

Отже, подавши дані на вхід до методу, був отриманий прогноз щодо заявки, та клас заявки – боржник.

ВИСНОВКИ

В атестаційній роботі проведено дослідження систем методів інтелектуального аналізу даних, а також спроектовано систему підтримки прийняття рішень на основі комбінування обраних методів.

Під час аналізу предметної області та проблеми оцінки кредитоспроможності клієнтів банку були розглянуті основні існуючі рішення розрахунку кредитного ризику, досліджені методи інтелектуального аналізу даних, а також системи підтримки прийняття рішень. В результаті аналізу предметної області були виділені основні задачі, що були розглянуті та виконані в рамках атестаційної магістерської роботи.

В атестаційній роботі вирішувалась проблема підвищення ефективності вирішення задачі класифікації заявок на отримання банківських кредитів за рахунок СППР на основі комбінованого методу інтелектуального аналізу даних.

Було проведено проектування СППР, а саме:

  • визначено функціональні вимоги до системи;

  • розроблена діаграма прецедентів;

  • обрано архітектуру системи;

  • обрано СУБД;

  • проведено логічне та фізичне моделювання бази даних;

  • обрано мову програмування для кожного шару архітектури.

У роботі детально описаний метод комбінування існуючих алгоритмів таких як CART та SVM. В ході тестування описаного методу, використовувалися дані з публічного доступу, схожі до реальних. В результаті тестування, було проведено аналіз результатів роботи методу за допомогою класифікаційного звіту, наданого пакетами мови Python. Він дозволив дізнатися точність навченої моделі, а також виконати порівняльний аналіз моделі, навченої за допомогою алгоритму CART та моделі на основі комбінування. Виявилося, що розроблений метод в атестаційній роботі показав кращі результати, відносно моделі на основі алгоритму CART та його можна розгортувати до спроектованої в рамках роботи системи СППР.

Источник: https://studfile.net/preview/16469205/