Ela.kpi.ua



НАЦ?ОНАЛЬНИЙ ТЕХН?ЧНИЙ УН?ВЕРСИТЕТ УКРА?НИ?КИ?ВСЬКИЙ ПОЛ?ТЕХН?ЧНИЙ ?НСТИТУТ?мен? ?ГОРЯ С?КОРСЬКОГО??нститут прикладного системного анал?зуКафедра математичних метод?в системного анал?зуДо захисту допущено:В.о. зав?дувача кафедри_______ Оксана ТИМОЩУК ?___?_____________20__ р.Дипломна роботана здобуття ступеня бакалавраза осв?тньо-профес?йною програмою ?Системи та методи штучного ?нтелекту? спец?альност? 122 ?Комп’ютерн? науки та ?нформац?йн? технолог???на тему: ?Модел? ?нтелектуального анал?зу даних для прогнозування р?шень по заявкам на отримання в?зи?Виконав: студент IV курсу, групи КА-65Чеберяка Максим Васильович__________Кер?вник: доцент кафедри ММСАНедашк?вська Над?я ?ван?вна__________Консультант з економ?чного розд?лу:доцент кафедри теоретично? ? прикладно? економ?ки ФММШевчук Олена Анатол??вна__________Рецензент:доцент кафедри СП ?ПСА, кандидат техн?чних наукБулах Богдан В?кторович__________Засв?дчую, що у ц?й дипломн?й робот? нема? запозичень з праць ?нших автор?в без в?дпов?дних посилань.Студент _____________Ки?в – 2020 рокуНац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського??нститут прикладного системного анал?зуКафедра математичних метод?в системного анал?зуР?вень вищо? осв?ти – перший (бакалаврський)Спец?альн?сть – 122 ?Комп’ютерн? науки та ?нформац?йн? технолог???Осв?тньо-профес?йна програма ?Системи та методи штучного ?нтелекту?ЗАТВЕРДЖУЮВ.о. зав?дувача кафедри_______ Оксана ТИМОЩУК?25? травня 2020 р.ЗАВДАННЯна дипломну роботу студентуЧеберяц? Максиму Васильовичу1. Тема роботи ?Модел? ?нтелектуального анал?зу даних для прогнозування р?шень по заявкам на отримання в?зи?, кер?вник роботи Недашк?вська Над?я ?ван?вна, доцент кафедри ММСА, затверджен? наказом по ун?верситету в?д ?25? травня 2020 р. № 1143-с2. Терм?н подання студентом роботи 8.06.2020.3. Вих?дн? дан? до роботи: дан? щодо в?дкриття в?зи США категор?? H-1B, взят? з ресурсу kaggle.4. Зм?ст роботи: анал?тичний та статистичний огляд в?зового режиму щодо громадян Укра?ни, теоретичн? в?домост? та основи ?нтелектуального анал?зу даних, методи ?нтелектуального анал?зу даних, прогнозування р?шень по заявкам на отримання в?зи на основ? вх?дних даних, функц?онально-варт?сний анал?з програмного продукту.5. Перел?к ?люстративного матер?алу (?з зазначенням плакат?в, презентац?й тощо): зображення вх?дних даних, арх?тектур побудованих моделей, результат?в прогнозування та моделювання, презентац?я до виступу.6. Консультанти розд?л?в роботиРозд?лПр?звище, ?н?ц?али та посада консультантаП?дпис, датазавдання видавзавданняприйнявЕконом?чнийШевчук О.А., доцент7. Дата видач? завдання Календарний план№ з/пНазва етап?в виконання дипломно? роботиТерм?н виконання етап?в роботиПрим?тка1.Формування теми БДР21.10.2019Виконано2.Огляд л?тератури за тематикою роботи та ?? опрацювання21.10.2019-6.03.2020Виконано3.Узгодження теми БДР з науковим кер?вником09.03.2020Виконано4.Вивчення в?зово? пол?тики США10.03.2020-28.03.2020Виконано5.Написання першого розд?лу БДР02.04.2020-12.04.2020Виконано6.Написання другого розд?лу БДР14.04.2020-01.05.2020Виконано7.Програмна реал?зац?я продукту01.05.2020-18.05.2020Виконано8.Написання третього ? четвертого розд?л?в БДР18.05.2020-30.05.2020ВиконаноСтудентМаксим ЧЕБЕРЯКАКер?вникНад?я НЕДАШК?ВСЬКАРЕФЕРАТДипломна робота м?стить: 101 с., 4 ч., 7 табл., 23 рис., 2 дод. та 14 джерел.?НТЕЛЕКТУАЛЬНИЙ АНАЛ?З ДАНИХ, ПРОГНОЗУВАННЯ, ДЕРЕВА Р?ШЕНЬ, ОПОРН? ВЕКТОРИ, Л?Н?ЙНА РЕГРЕС?Я, ГРАД??НТНИЙ БУСТ?НГ, В?ЗОВИЙ РЕЖИМ, МОДЕЛ?.Об’?ктом досл?дження ? виб?рка р?шень дипломатичних установ США, щодо надання в?з громадянам ?нших кра?н. Предметом досл?дження ? методи ?нтелектуального анал?зу даних для прогнозування р?шень по заявкам на в?зи. Методи досл?дження – дерева р?шень, метод опорних вектор?в, лог?стична регрес?я, штучн? нейронн? мереж?, на?вний бай?с?вський класиф?катор.Програмною мовою була обрана Python.В дан?й робот? проведено досл?дження в?зово? пол?тики держави США. Для побудови моделей були використан? методи ?нтелектуального анал?зу даних.При виконанн? роботи було встановлено два методи, що дають найкращ? результати, як? достатньо близьк? до реальних. Напрямок розвитку роботи ? розширення функц?оналу, покращення якост? вх?дних даних та зменшення похибки прогнозування р?шень. ABSTRACTThesis: 101 p., 4 sect., 7 tabl., 23 fig., 2 add., 14 srcs. DATA MINING PROCESS, FORECASTING, DECISION TREES, SUPPORT VECTORS, LINEAR REGRESSION, GRADIENT BUSTING, VISA REGIME, MODELS.The object of research is a sample of decisions of US diplomatic missions on the issuance of visas to citizens of other countries.The subject of the research is the methods of data mining for forecasting decisions on visa applications.Research methods – decision trees, reference vectors method, logistic regression, artificial neural networks, naive Bayesian classifier.Python was chosen as the programming language.This work is examines the visa policy of the United States. Data mining methods were used to build models.When performing the work, two methods were established that give the best results, which are quite close to the real ones. The direction of work development is to expand the functionality, improve the quality of input data and reduce the error of forecasting solutions.ЗМ?СТ TOC \o "1-3" \h \z \u ВСТУП8РОЗД?Л 1 ДОСЛ?ДЖЕННЯ ПРЕДМЕТНО? ОБЛАСТ?101.1.Актуальн?сть задач? прогнозування р?шень по заявкам на в?зи101.2.Анал?з ?снуючих п?дход?в до вир?шення задач? прогнозування р?шень по заявкам на отримання в?зи171.3.Формал?зац?я постановки задач? досл?дження181.4.Висновки до розд?лу 118РОЗД?Л 2 МАТЕМАТИЧН? ОСНОВИ РОЗВ'ЯЗАННЯ ЗАДАЧ? ?НТЕЛЕКТУАЛЬНОГО АНАЛ?ЗУ ДАНИХ ДЛЯ ПРОГНОЗУВАННЯ Р?ШЕНЬ ПО ЗАЯВКАМ НА ОТРИМАННЯ В?ЗИ202.1.Основи ?нтелектуального анал?зу даних202.2.Завдання ?нтелектуального анал?зу даних252.3.Процес ?нтелектуального анал?зу даних282.4.Пор?вняння класичних метод?в ?нтелектуального анал?зу даних322.4.1.Random forest322.4.2.Л?н?йний класиф?катор (Linear model)342.4.3.Метод опорних вектор?в (Support Vector Machines)392.6.Висновки до розд?лу 244РОЗД?Л 3 ПРОГРАМНА РЕАЛ?ЗАЦ?Я ТА ЕКСПЕРИМЕНТАЛЬН? РЕЗУЛЬТАТИ453.1.Виб?р ?нструмента для реал?зац?? модел?453.2.Використан? б?бл?отеки463.3.Попередн?й анал?з та ф?льтрац?я даних473.4.Тренування модел? та експерименти з прогнозуванням р?шень523.5.Висновки до розд?лу 358РОЗД?Л 4 ФУНКЦ?ОНАЛЬНО-ВАРТ?СНИЙ АНАЛ?З ПРОГРАМНОГО ПРОДУКТУ594.1.Функц?ональний анал?з програмного продукту594.2.Об?рунтування функц?й програмного продукту594.3.Економ?чний анал?з вар?ант?в розробки654.4.Виб?р кращого вар?анта програмного продукту684.5.Висновки до розд?лу 468ВИСНОВКИ70СПИСОК ВИКОРИСТАНО? Л?ТЕРАТУРИ71ДОДАТОК А ДЕМОНСТРАЦ?ЙН? МАТЕР?АЛИ73ДОДАТОК Б Л?СТИНГ ПРОГРАМИ88ВСТУПМайже кожен з нас у сво?му житт? мав нагоду подорожувати за кордон. Саме тому поняття ?в?за? зовс?м не нове для сучасно? людини. В?зовим режимом для громадян Укра?ни вважаються адм?н?стративн? обмеження на законодавчому р?вн? ?нших кра?н, щодо в?дв?дування ?х громадянами Укра?ни. У загальному рейтингу паспорт?в св?ту, укра?нський документ пос?да? 20 позиц?ю. Станом на березень 2020 року, громадяни Укра?ни можуть без оформлення в?зи або отримуючи ?? по прибуттю, в?дв?дувати 141 кра?ну св?ту (з? 198 незалежних на даний момент), та з урахуванням залежних територ?й.Проте не вс? кра?ни можна в?льно та безперешкодно в?дв?дувати. Для в’?зду у понад 60 держав св?ту, або для довготривалого перебування у деяких з них, укра?нськ? громадяни повинн? оформлювати в?зу у в?дпов?дних дипломатичних установах. Процес подач? документ?в на отримання в?зи в ту чи ?ншу кра?ну ? досить складним ? довготривалим. А р?шення щодо позитивно? чи негативно? в?дпов?д? заявнику залежить в?д багатьох фактор?в ? керу?ться виключно м?грац?йною пол?тикою ?ноземно? держави. Саме тому прогнозування р?шень по заявкам на в?зи ? важливим фактором, який дасть можлив?сть заявнику оц?нити сво? шанси, ? у випадку низько? ймов?рност? позитивного результату зробити в?дпов?дн? поправки. Метою дано? роботи ? прогнозування р?шень по заявкам на в?зи, використовуючи ?снуюч? модел?, методи ? алгоритми ?нтелектуального анал?зу даних, а також модиф?кац?я цих метод?в та покращення ?х точност?. Актуальн?сть даного досл?дження поляга? у тому, що завдяки виявленню невидимих на перший погляд законом?рностей або вза?мозв'язк?в м?ж зм?нними у великих масивах даних, можна спрогнозувати р?шення в?дпов?дного органу, яке допоможе об’?кту пол?пшити сво? шанси у вир?шенн? даного питання.Структура роботи передбача? наявн?сть чотирьох розд?л?в. У першому розд?л? буде детально розглянуто предмет досл?дження, проанал?зовано наявн? п?дходи та методи вир?шення поставлених завдань, проведено ?х пор?вняльну характеристику. У другому розд?л? буде сформован? основн? принципи ?нтелектуального анал?зу даних, розглянуто класичн? методи та п?дходи до вир?шення дано? проблеми. Також будуть показан? математичн? основи та принципи практично? реал?зац?? даних метод?в, проведено ?х пор?вняльний анал?з. У третьому розд?л? буде описано роботу програми, розглянуто арх?тектуру програмного продукту, проведено експерименти щодо вир?шення дано? задач?, побудовано д?аграми в?дпов?дних клас?в та таблиц? бази даних. Також буде проведений опис ?нтерфейсу користувача та зд?йснено основний анал?з щодо роботи програмного продукту. У четвертому розд?л? буде проведено функц?онально-варт?сний анал?з роботи.РОЗД?Л 1 ДОСЛ?ДЖЕННЯ ПРЕДМЕТНО? ОБЛАСТ? ПРОГНОЗУВАННЯ Р?ШЕНЬ ПО ЗАЯВКАМ НА В?ЗИ1.1 Актуальн?сть задач? прогнозування р?шень по заявкам на в?зиНезважаючи на всесв?тню пандем?ю короно-в?русно? хвороби, яка сколихнула весь св?т, людство потрохи оговту?ться ? поверта?ться до звичного режиму життя. Разом з цим кра?ни поступово в?дкриватимуть сво? кордони для турист?в ? робочих, як? були змушен? ви?хати на деякий пер?од додому.На сьогодн? понад 10 м?льйон?в укра?нц?в оформили б?ометричний паспорт, який дозволя? безперешкодно в?дв?дати понад 140 кра?н св?ту, в тому числ? кра?ни ?вросоюзу [8].Це стало можливим завдяки тому, що 11 травня 2017 року Рада ?вропейського Союзу ухвалила ?сторичне для Укра?ни р?шення про скасування в?з для короткострокових по?здок (90 на 180 д?б) для громадян при в?дв?дуванн? 30-ти кра?н ?С ? Шенгенсько? зони (за виключенням Сполученого Корол?вства та ?рланд??). А вже р?вно за м?сяць, 11 червня, "безв?з" запрацював.Вт?м, як видно з рисунку 1.1., в св?т? ще залиша?ться низка кра?н, в’?зд до яких для громадян Укра?ни потребу? наявност? в?зи. Зокрема, це Сполучен? Штати Америки, Канада, Велика Британ?я, Китай, П?вденна Корея, С?нгапур, Япон?я, П?вденна Африканська Республ?ка, Австрал?я та ?нш?.Рисунок 1.1. – Карта в?зових вимог для громадян Укра?ниСаме поняття в?за?– це дозв?льний документ, що да? право людин? на перетин тих чи ?нших меж. Як правило, п?д в?зою передбача?ться фактичний дозв?л ?ноземцю на в'?зд на територ?ю ?ншо? держави. Однак ?снують також ?ви?зн?? в?зи, що дають право на ви?зд з кра?ни. Оформлю?ться в?за спец?альним уповноваженим державним органом, як правило, консульство або посольство кра?ни в ?нш?й кра?н?. ?нод? цим питанням можуть також займатися акредитован? в?зов? центри.Кр?м звичайно? туристично? в?зи ?сну? ще низка тип?в в?з, як? кожна кра?на класиф?ку? по сво?му. Узагальнено ц? типи можна розбити на дек?лька клас?в:Транзитн? в?зи – для про?зду через кра?ну ви?зду до пункту призначення за межами ц??? кра?ни. Терм?н д?? транзитних в?з зазвичай обмежений в?д к?лькох годин до десяти дн?в, залежно в?д розм?ру кра?ни або обставин конкретного транзитного маршруту:Транзитна в?за в пов?тряному простор?, необх?дна деяким кра?нам для транзиту через ?хн? аеропорти, нав?ть не проходячи паспортний контроль.В?за члена ек?пажу, управляючого або вод?я, вида?ться особам, працюючим на л?таках, кораблях, по?здах, вантажних автомоб?лях, автобусах та будь-яких ?нших засобах м?жнародних перевезень або на суднах, що ловлять рибу в м?жнародних водах.Не?мм?грац?йн? в?зи – для коротких або тривалих перебувань у кра?н? з р?зних причин:Приватна в?за, для приватних подорожей за запрошенням жител?в кра?ни, що в?дв?ду?ться.Туристична в?за, для короткотривало? подорож?, яка забороня? трудову д?яльн?сть.В?за з медичних причин, для проведення д?агностики або курсу л?кування в л?карнях кра?ни, що в?дв?ду?ться, або в ?нших медичних установах.Д?лова в?за, для зд?йснення комерц?? в кра?н?. Ц? в?зи, як правило, виключають пост?йне працевлаштування.Робоча в?за для в?дпустки ос?б, як? подорожують м?ж кра?нами, пропонують програму робочих в?дпусток, що дозволя? молод? знайти тимчасову роботу п?д час подорож?.Атлетична або мистецька в?за, видана спортсменам та митцям (? ?х обслуговуючому персоналу), як? виступають на змаганнях, концертах, шоу та ?нших заходах.В?за для культурного обм?ну, зазвичай вида?ться особам, що беруть участь у програм? культурного обм?ну.В?за для б?женц?в, видана особам, як? рятуються в?д небезпекипересл?дування, в?йни чи стих?йного лиха.Паломницька в?за: цей вид в?зи в основному вида?ться тим, хто ма? нам?р в?дв?дати рел?г?йн? напрямки, наприклад, в Сауд?вськ?й Арав?? чи ?ран? та взяти участь у конкретних рел?г?йних обрядах. Так? в?зи, як правило, можна отримати в?дносно швидко та за низькою варт?стю; тим, хто ?х використову?, зазвичай дозволя?ться подорожувати лише як група. Найкращий приклад - в?зи Хадж для Сауд?всько? Арав??.Цифрова в?за коч?вник?в, для цифрових коч?вник?в, як? хочуть тимчасово проживати в кра?н? п?д час виконання в?ддалених роб?т. Та?ланд запустив свою SMART Visa, ор??нтовану на ?ноземц?в та п?дпри?мц?в високо? квал?ф?кац??, щоб довше перебувати в Та?ланд?. Естон?я також оголосила про плани отримання цифрово? в?зи коч?вник?в п?сля запуску програми електронно? резиденц??.Студентська в?за (F-1 у Сполучених Штатах), яка дозволя? ?? власников? навчатися у вищому навчальному заклад? в кра?н?, що вида? документ. В?за F-2 дозволя? оп?кунам студента супроводжувати ?х у США.Досл?дницька в?за для студент?в, як? виконують польов? роботи в кра?н? перебування.Тимчасова робоча в?за для затвердженого працевлаштування в кра?н? перебування. Як правило, ?х отримати складн?ше, але вони д?ють довше, н?ж д?лова в?за. Прикладами цього ? в?зи H-1B та L-1 США. Залежно в?д конкретно? кра?ни статус тимчасового прац?вника може переростати у статус пост?йного жителя чи натурал?зац?ю.Журнал?стська в?за, яку деяк? кра?ни вимагають в?д людей, як? займаються ц??ю профес??ю, п?д час подорож? до в?дпов?дних новинних орган?зац?й. Серед кра?н, як? наполягають на цьому, ? Куба, Китай, ?ран, Япон?я, П?вн?чна Корея, Сауд?вська Арав?я, США (I-в?за) та З?мбабве.В?за на проживання, яка нада?ться людям, як? отримують тривалепроживання в кра?н? перебування. У деяких кра?нах, таких як Нова Зеланд?я, довготривале проживання ? необх?дним кроком для отримання статусу пост?йного жителя.В?за на притулок, видана людям, як? зазнали або об?рунтованопобоюються пересл?дування у власн?й кра?н?, через свою пол?тичну д?яльн?сть чи думку, особливост? чи асоц?ац?ю з соц?альною групою; або були вислан? з власно? кра?ни.?мм?грац?йн? в?зи – нада?ться тим, хто ма? нам?р пост?йно оселитися в кра?н?-ем?тент? (отримати статус пост?йного резидента з перспективою можливо? натурал?зац?? в майбутньому):В?за для подружжя або в?за для партнера, надана подружжю, громадянським партнером або фактичним партнером резидента або громадянина певно? кра?ни, щоб дати можлив?сть пар? оселитися в ц?й кра?н?.В?за для члена с?м’? для ?нших член?в с?м’? резидента або громадянина дано? кра?ни. Зазвичай охоплюються лише найближч? родич?.Батьки, часто обмежен? ф?зично, або т?, хто через л?тн?й в?к або стан здоров'я потребу? пост?йного догляду.Д?ти (включаючи усиновлених), часто т?, хто не досяг в?ку зр?лост? або ? безпорадними.Часто також поширю?ться на онук?в чи бабусь ? д?дус?в, коли ?хн? безпосередн? батьки чи д?ти, в?дпов?дно, з будь-яко? причини не мають можливост? п?клуватися про них.Шлюбна в?за, надана протягом обмеженого пер?оду до передбачуваного шлюбу або укладення цив?льного партнерства на основ? доведених стосунк?в з громадянином кра?ни призначення. В?за для пенс?онер?в, видана обмеженою к?льк?стю кра?н (Австрал?я, Аргентина, Та?ланд, Панама та ?н.) Для тих, хто може продемонструвати ?ноземне джерело доходу та не ма? нам?ру працювати в кра?н?-?м?грац??. В деяких випадках застосовуються в?ков? обмеження.Оф?ц?йн? в?зи – вони надаються посадовим особам, як? виконують роботу для сво?х уряд?в або ?ншим чином представляють сво? кра?ни у приймаюч?й кра?н?:Дипломатичн? в?зи, як правило, доступн? лише власникам дипломатичних паспорт?в.В'?здн? в?зи видаються представникам закордонних уряд?в або м?жнародних орган?зац?й, як? не мають права на дипломатичний статус, але заслуговують на швидке, вв?чливе поводження – приклад цього – в?за для спец?ального призначення в Австрал?ю.Як бачимо, в св?т? ?сну? досить багато категор?й в?з, виб?р яких залежить в?д певних параметр?в. Вт?м, незважаючи на пол?пшення позиц?й укра?нського паспорта в глобальному рейтингу паспорт?в, сьогодн? нер?дко зустр?ча?ться в?дмова дипломатичних осередк?в р?зних кра?н у в?дкритт? в?зи нашим громадянам.Так, наприклад, за даними Державного департаменту США частка в?дмов у в?зах, що надаються для тимчасового перебування у США громадянам Укра?ни у б?знес-справах (B1), для в?дпочинку чи л?кування (B2) у 2019 роц? становила 45,06%. Це означа?, що майже кожен другий громадянин Укра?ни, що звертався по американську в?зу, отримував в?дмову. Варто зауважити, що це один з найвищих показник?в на пострадянському простор?. За статистикою б?льше в?дмов отримують лише громадяни Таджикистану, Узбекистану, Груз?? та Молдови, що можна побачити на рисунку 1.2.Рисунок 1.2. В?дсоток в?дмов у в?зах США типу B за кра?нами Як? ж ?снують причини в?дмови у в?з??Як правило, заявнику може бути в?дмовлено у видач? в?зи, якщо в?н не в?дпов?да? вимогам щодо прийому чи в'?зду зг?дно ?мм?грац?йного законодавства дано? кра?ни. Б?льш конкретно, у видач? в?з? може бути в?дмовлено, коли заявник:вчинив шахрайство, обман або надав неправдив? дан? в сво?й чинн?й заяв?, або у попередн?х заявах;отримав судим?сть, був заарештований або проти нього порушенокрим?нальну справу;може загрожувати нац?ональн?й безпец? кра?ни;ма? проблеми з моральними якостями;ма? попередн? порушення в?зи / ?мм?грац?? (нав?ть якщо порушення не в?дбулося в кра?н?, яка вида? в?зу);в?дхилено попередню заявку на отримання в?зи або заяву на ?мм?грац?йн? п?льги ? не можуть довести, що причини попередн?х в?дмов б?льше не ?снують або б?льше не застосовуються (нав?ть якщо в?дмови ран?ше не в?дбувалися в кра?н?, яка вида? нову в?зу);не можуть довести, що мають м?цн? зв’язки з? сво?ю нин?шньою кра?ною громадянства або м?сця проживання (для тих, хто пода? заяву на отримання тимчасових або не?м?грац?йних в?з);ма? нам?р пост?йно проживати або пост?йно працювати в кра?н?, яку в?н / в?н в?дв?да?, якщо не зробить запит на ?мм?грантську або робочу в?зу в?дпов?дно;не виявля? нам?ру повернутися (для не?м?грант?в);не нада? достатн?х доказ?в / документ?в, як? п?дтверджують право наотримання в?зи;не ма? законно? причини для подорож?;не ма? адекватних засоб?в ф?нансово? п?дтримки н? для себе, н? для с?м’?;не ма? належно? медично? страховки, особливо якщо це стосу?ться роду занять з високими ризиками (наприклад, скелелаз?ння, катання на лижах тощо);не ма? домовленостей про подорож? (тобто транспорт ? проживання) в кра?н? призначення;не ма? медичного / туристичного страхування, д?йсного для м?сця призначення та тривалост? перебування;? громадянином кра?ни, до яко? кра?на призначення ? ворожою або з якою вою?;ран?ше в?дв?дував або ма? нам?р в?дв?дати кра?ну, до яко? кра?на призначення ? ворожою;ма? ?нфекц?йне захворювання, таке як туберкульоз або ебола, або венеричне захворювання;ма? паспорт, строк зак?нчення якого найближчим часом.Нав?ть якщо мандр?вников? не потр?бна в?за, вищезазначен? критер?? також можуть використовуватись службовцями прикордонного контролю для в?дмови в'?зду подорожуючого у в?дпов?дну кра?ну.Саме тому завчасне оц?нювання вс?х ризик?в ? прогнозування можливих р?шень дипломатичних установ на заявку ?ноземця – ? запорукою усп?шно? процедури отримання в?зи, а отже тема даного досл?дження ? надзвичайно актуальною. 1.2 Анал?з ?снуючих п?дход?в до вир?шення задач? прогнозування р?шень по заявкам на отримання в?зиНа даний час ч?тких алгоритм?в чи метод?в вир?шення конкретно? задач? прогнозування отримання в?зи нема?. Вт?м, для вир?шення такого плану задач можна виокремити три базових п?дходи: статистичний п?дх?д;лог?чний п?дх?д;б?он?чний п?дх?д.В нашому випадку можна вид?лити наступн? методи прогнозування:Неформальн?. Заявник може покластися на р?зн? джерела письмово? та усно? ?нформац?? з метою прогнозування власно? задач? та вироблення ц?лей щодо ?? реал?зац??. Методи збору тако? ?нформац?? часто використовуються п?д час анал?зу зовн?шнього св?ту. Це ? ?нформац?я, отримана з рад?о й телепередач, в?д споживач?в, подорожуючих, знайомих, на нарадах у профес?йних орган?зац?ях. Джерела письмово? ?нформац?? про зовн?шн? оточення – це газети, торгов? журнали, ?нформац?йн? бюлетен?, профес?йн? журнали та р?зн? зв?ти. К?льк?сн?. Застосовуються для прогнозування, якщо ? п?дстави вважати, що под?бна д?яльн?сть у минулому мала певну тенденц?ю, яку можна продовжити в майбутньому, ? коли ц??? ?нформац?? достатньо для виявлення певних тенденц?й або залежност?. Кр?м того, людина повинна знати, як використати к?льк?сну модель, та пам'ятати, що вигоди в?д прийняття ефективн?шого р?шення мають покривати витрати на створення модел?.1.3 Формал?зац?я постановки задач? прогнозуванняПроанал?зувавши предметну область та вже ?снуюч? п?дходи у вир?шенн? дано? проблеми, можна провести таку формал?зац?ю постановки задач?:провести досл?дження п?дход?в до вир?шення задач? прогнозування р?шень щодо заявок на отримання в?зи шляхом метод?в ?нтелектуального анал?зу даних;розробити власний алгоритм вир?шення дано? задач?;проанал?зувати отриман? результати;розробити програмний продукт, який буде використовувати побудований алгоритм.1.4 Висновки до розд?лу 1У даному розд?л? було розглянуто р?зн? п?дходи для вир?шення проблем отримання в?зи з якими стика?ться заявник. Проведено анал?з актуальност? та поширеност? дано? проблеми. У результат? чого був сформований основний напрямок роботи. Прогнозування р?шень дипломатичних установ щодо в?дкриття в?зи допоможе б?льш ретельно ? як?сно п?дготувати пакет документ?в ? ?нших необх?дних речей.Окремим пунктом даного розд?лу ? формал?зац?я постановки задач? предметно? област?, в як?й ч?тко були визначен? напрямки та пр?оритети роботи.РОЗД?Л 2 МАТЕМАТИЧН? ОСНОВИ РОЗВ'ЯЗАННЯ ЗАДАЧ? ?НТЕЛЕКТУАЛЬНОГО АНАЛ?ЗУ ДАНИХ ДЛЯ ПРОГНОЗУВАННЯ Р?ШЕНЬ ПО ЗАЯВКАМ НА ОТРИМАННЯ В?ЗИ 2.1 Основи ?нтелектуального анал?зу данихВперше поняття ?нтелектуального анал?зу даних прозвучало в 1978 роц?. Його основною ц?ллю була обробка та анал?з даних з прикладно? статистики. При цьому оброблялися невелик? бази даних. Вже пот?м в процес? удосконалення, пошук прихованих знань у великих базах даних став основним ? головним завданням ?нтелектуального анал?зу даних [9].?нтелектуальний анал?з даних можна вважати м?ждисципл?нарним напрямком, адже в?н охоплю? наступн? галуз? комп'ютерних наук, як теор?ю нейронних мереж, генетичн? алгоритми та еволюц?йне програмування. Серед метод?в ?нтелектуального анал?зу даних виокремлюють ? деяк? методи статистики:- дисперс?йний анал?з;- кореляц?йний анал?з; - факторний анал?з; - регрес?йний анал?з; - та ?н.Не останню роль у всьому процес? в?д?грають методи машинного навчання, а також в?зуал?зац?? результат?в.Оск?льки п?сля застосування ?нтелектуального анал?зу даних з’являються не лише хорош? ? бажан? результати, а й неправильн?, а отже в такому випадку можна користуватися методами машинного навчання. Саме поняття машинне навчання – це наука, що займа?ться вивченням комп'ютерних алгоритм?в, як? автоматично покращуються п?д час роботи.В?зуал?зац?я використову?ться для визначення ?дентиф?кованих шаблон?в. Застосування в?зуал?зац?? дозволя? створити граф?чне зображення даних, що анал?зуються, а сам образ допомага? розглед?ти в процес? анал?зу аномал??, структури ? тенденц??. Для вир?шення проблеми в?зуал?зац?? використовуються граф?чн? методи, що показують наявн?сть шаблон?в у даних. В?зуал?зац?ю також можна розглядати як окремий метод анал?зу, який назива?ться Visual Mining.У процес? ?нтелектуального анал?зу даних в?дбува?ться досл?дження багатьох об'?кт?в. У б?льшост? випадк?в в?н може бути представлений у вигляд? таблиц?, в як?й кожен рядок в?дпов?да? певному вар?анту, а стовпець м?стить значення параметр?в, як? його характеризують. Залежна зм?нна – параметр, значення якого вважа?ться залежним в?д ?нших параметр?в. Насправд? цю залежн?сть якраз потр?бно визначити, використовуючи методи ?нтелектуального анал?зу даних [9].Використання ?нтелектуального анал?зу даних включа? в себе два або три етапи:Перший етап. Знаходження законом?рностей. П?д час цього етапу досл?джують певн? набори даних з метою знаходження прихованих законом?рностей. Загальн? г?потези щодо типу законом?рностей на цьому етап? ще не сформован?. На цьому етап? необх?дно зд?йснювати перев?рку достов?рност? знайдених шаблон?в, використовуючи дан?, як? не брали участь в ?х формуванн? (тобто контрольна виб?рка). Сам результат даного тесту при цьому повинен в?дпов?дати попередньому результату.В нейронних мережах часто використову?ться саме такий под?л на навчальну множину ? множину, яка перев?ря?ться.Виявлен? законом?рност? використовуються для прогнозування нев?домих значень (прогнозоване моделювання). У цьому раз? можуть бути використан? результати роботи першого етапу. Прогнозоване моделювання склада?ться з двох етап?в: - прогноз розвитку процес?в;- прогноз нев?домих значень.Шукан? на перш?й стад?? законом?рност?, формуються в?д часткового до загального, тобто ?ндуктивно. У п?дсумку ми отриму?мо знання про клас об'?кт?в на основ? вивчення набору окремих представник?в цього класу. Прогнозоване моделювання, навпаки, ? дедуктивним. Отриман? на цьому етап? законом?рност?, формуються в?д загального до часткового.Анал?з винятк?в. Мета цього етапу – виявлення та об?рунтування аномал?й, як? до цього були знайден? в законом?рностях. Можлив? два вар?анти:?сну? деяке лог?чне пояснення, яке також можна видати у форм? правила.В?дхилення тракту?ться як помилка вих?дних даних. У цьому випадку для очищення даних може бути використаний крок анал?зу винятк?в.Розглянемо к?лька в?домих класиф?кац?й метод?в ?нтелектуального анал?зу даних за р?зними ознаками.Ус? методи ?нтелектуального анал?зу даних розд?ляються на дв? велик? групи за принципом роботи з вих?дними навчальними даними. При цьому верхн?й р?вень дано? класиф?кац?? визнача?ться виходячи з того, чи збер?гаються дан? п?сля ?нтелектуального анал?зу даних або вони перекидаються для подальшого використання [9].Охарактеризу?мо дан? групи:У першому випадку вих?дн? дан? можуть збер?гатися в явному детал?зованому вигляд? ? безпосередньо використовуватися для прогнозованого моделювання та/або анал?зу виключень – це так зван? методи м?ркувань на основ? анал?зу прецедент?в. Головною проблемою ц??? групи метод?в ? ускладнен?сть ?х використання на великих обсягах даних, хоча саме при анал?з? великих сховищ даних методи ?нтелектуального анал?зу даних приносять найб?льшу користь. Виокремимо методи дано? групи:- метод найближчого сус?да; - кластерний анал?з; - мислення за аналог??ю; - метод k-найближчого сус?да.У другому випадку ?нформац?я спочатку витягу?ться з первинних даних ? перетворю?ться в деяк? формальн? конструкц?? (?х вид залежить в?д конкретного методу). Зг?дно з попередньою класиф?кац??ю, цей етап викону?ться на стад?? в?льного пошуку, яка у метод?в першо? групи в принцип? в?дсутня. Таким чином, для прогностичного моделювання та анал?зу винятк?в використовуються результати ц??? стад??, як? набагато б?льш компактн?, н?ж сам? масиви вих?дних даних. При цьому отриман? конструкц?? можуть бути або "прозорими" (?нтерпретуються), або "чорними скриньками" (як? не трактуються). Виокремимо методи дано? групи:- лог?чн? методи; - методи крос-табуляц??; - методи, заснован? на р?вняннях;- методи в?зуал?зац??.До ?нтелектуальних засоб?в також в?дносяться нейронн? мереж?, дерева р?шень, ?ндуктивн? висновки, методи м?ркування за аналог??ю, неч?тк? лог?чн? висновки, генетичн? алгоритми, алгоритми визначення асоц?ац?й ? посл?довностей, анал?з з виборчим д??ю, лог?чна регрес?я, еволюц?йне програмування, в?зуал?зац?я даних. ?нод? перерахован? методи застосовуються в р?зних комб?нац?ях. Нейронн? мереж? належать до класу нел?н?йних адаптивних систем з арх?тектурою, що умовно ?м?ту? нервову тканину, яка склада?ться з нейрон?в. Математична модель нейрона представля? деякий ун?версальний нел?н?йний елемент, що допуска? можлив?сть зм?ни ? налаштування його характеристик.Нейронн? мереж? широко застосовуються для вир?шення задач класиф?кац??. Побудовану мережу спочатку потр?бно ?навчити? на прикладах, для яких в?дом? значення вих?дних даних ? результати. Процес ?навчання? мереж? поляга? в п?дбор? ваг м?жнейронних зв'язк?в та модиф?кац?? внутр?шн?х параметр?в активац?йно? функц?? нейрон?в. ?Навчена? мережа здатна класиф?кувати нов? об'?кти (або вир?шувати ?нш? задач?), проте правила класиф?кац?? залишаються нев?домими користувачу.Дерева р?шень – метод структурування завдання у вигляд? деревовидного графа, вершини якого в?дпов?дають продукц?йним правилам, що дозволя? класиф?кувати дан? або зд?йснювати анал?з насл?дк?в р?шень. Цей метод да? наочне уявлення про систему класиф?куючих правил, якщо ?х не дуже багато.Прост? завдання вир?шуються за допомогою цього методу набагато швидше, н?ж з використанням нейронних мереж. Для складних проблем ? для деяких тип?в даних дерева р?шень можуть виявитися неприйнятними. Кр?м того, для цього методу характерна проблема значущост?. Одним з насл?дк?в ??рарх?чно? кластеризац?? даних ? те, що для багатьох приватних випадк?в в?дсутня достатня к?льк?сть навчальних приклад?в, в зв'язку з чим класиф?кац?ю не можна вважати над?йною.Методи ?АД також класиф?кують за завданнями ?нтелектуального анал?зу даних [9].В?дпов?дно до тако? класиф?кац?? вид?ляють дв? групи. Перша група – це п?дрозд?л метод?в, що займа?ться вир?шенням завдань сегментац?? (тобто завдання класиф?кац?? ? кластеризац??) та прогнозування.В?дпов?дно до друго? класиф?кац?? методи ?нтелектуального анал?зу даних можуть бути спрямован? на отримання описових ? прогнозованих результат?в.До метод?в, що спрямован? на отримання прогнозованих результат?в, в?дносяться так? методи:- дерева р?шень; - нейронн? мереж?; - метод опорних вектор?в; - л?н?йна регрес?я; - метод найближчого сус?да; - ? т.д.Р?зн? методи ?АД характеризуються певними властивостями, як? можуть бути визначальними при вибор? методу анал?зу даних. Методи можна пор?внювати м?ж собою, оц?нюючи характеристики ?х властивостей.Основн? властивост? ? характеристики метод?в ?АД: точн?сть, масштабован?сть, ?нтерпретован?сть, трудом?стк?сть, гнучк?сть, швидк?сть ? популярн?сть.Масштабован?сть – властив?сть обчислювально? системи, що забезпечу? передбачуваний р?ст системних характеристик, наприклад, швидкост? реакц??, загально? продуктивност? та ?н., при додаванн? до не? обчислювальних ресурс?в.В?дзначимо, що кожен з метод?в ма? сво? сильн? ? слабк? сторони. Але жоден метод, якою б не була його оц?нка з точки зору властивих йому характеристик, не може забезпечити вир?шення всього спектру завдань ?АД [9].2.2 Завдання ?нтелектуального анал?зу данихВ основу технолог?? ?АД покладена концепц?я шаблон?в, що представляють собою законом?рност?. В результат? виявлення цих, прихованих в?д неозбро?ного ока законом?рностей, вир?шуються завдання ?АД. Р?зним типам законом?рностей, як? можуть бути виражен? в форм?, зрозум?л?й людин?, в?дпов?дають певн? завдання ?АД.Виокремемо основн? з них:Класиф?кац?я (Classification)Найб?льш проста ? поширена задача ?АД. В результат? вир?шення дано? задач? виявляються ознаки, як? характеризують групи об'?кт?в досл?джуваного набору даних – класи; за цими ознаками новий об'?кт можна в?днести до того чи ?ншого класу.Методи р?шення. Для вир?шення завдання класиф?кац?? можуть використовуватися методи: найближчого сус?да (Nearest Neighbor); k-найближчого сус?да (k-Nearest Neighbor); бай?совськ? мереж? (Bayesian Networks); ?ндукц?я дерев р?шень; нейронн? мереж? (neural networks).Кластеризац?я (Clustering)Кластеризац?я ? лог?чним продовженням ?де? класиф?кац??. Це завдання б?льш складне, особлив?сть кластеризац?? поляга? в тому, що класи об'?кт?в спочатку не визначен?. Результатом кластеризац?? ? розбиття об'?кт?в на групи.Приклад методу розв'язання задач? кластеризац??: навчання "без вчителя" особливого виду нейронних мереж – самоорган?зованих карт Кохонена.Асоц?ац?я (Associations)В результат? виконання завдання пошуку асоц?ативних правил в?дшукуються законом?рност? м?ж пов'язаними под?ями в набор? даних.В?дм?нн?сть асоц?ац?? в?д двох попередн?х задач ?АД: пошук законом?рностей зд?йсню?ться не на основ? властивостей анал?зованого об'?кта, а м?ж к?лькома под?ями, як? в?дбуваються одночасно.Найб?льш в?домий алгоритм р?шення задач? пошуку асоц?ативних правил - алгоритм Apriori.Посл?довн?сть (Sequence), або посл?довна асоц?ац?я (sequential association)Посл?довн?сть дозволя? знайти тимчасов? законом?рност? м?ж транзакц?ями. Завдання посл?довност? под?бне до асоц?ац??, але його метою ? встановлення законом?рностей не м?ж одночасно наступаючими под?ями, а м?ж под?ями, пов'язаними в час? (тобто в?дбуваються з деяким певним ?нтервалом у час?). ?ншими словами, посл?довн?сть визнача?ться високою ймов?рн?стю ланцюжка пов'язаних у час? под?й. Фактично, асоц?ац?я ? окремим випадком посл?довност? з тимчасовим кроком, р?вним нулю. Це завдання ?АД також називають завданням знаходження посл?довних шаблон?в (sequential pattern).Правило посл?довност?: п?сля под?? X через певний час в?дбудеться под?я Y.Прогнозування (Forecasting)В результат? вир?шення задач? прогнозування на основ? особливостей ?сторичних даних оц?нюються пропущен? або ж майбутн? значення ц?льових чисельних показник?в.Для вир?шення таких завдань широко застосовуються методи математично? статистики, нейронн? мереж? та ?н.Визначення в?дхилень або викид?в (Deviation Detection) Мета вир?шення даного завдання – виявлення та анал?з даних, як? найб?льш в?др?зняються в?д загально? множини даних, виявлення так званих нехарактерних шаблон?в.Оц?нювання (Estimation)Завдання оц?нювання зводиться до передбачення безперервних значень ознаки.Анал?з зв'язк?в (Link Analysis) - задача знаходження залежностей в набор? даних.В?зуал?зац?я (Visualization, Graph Mining)В результат? в?зуал?зац?? створю?ться граф?чний образ анал?зованих даних. Для вир?шення завдання в?зуал?зац?? використовуються граф?чн? методи, що показують наявн?сть законом?рностей в даних.Приклад метод?в в?зуал?зац?? – представлення даних в 2D ? 3D вим?рах.П?дведення п?дсумк?в (Summarization) – задача, мета яко? – опис конкретних груп об'?кт?в з анал?зованого набору даних.В?дпов?дно до класиф?кац?? по стратег?ям, завдання ?АД розд?ляють на наступн? групи:навчання з учителем; навчання без вчителя.Категор?я навчання з учителем представлена ??наступними завданнями ?АД: класиф?кац?я, оц?нка, прогнозування.Категор?я навчання без вчителя представлена ??завданням кластеризац??.Завдання ?АД, залежно в?д використовуваних моделей, можуть бути дескриптивними ? прогнозованими. В?дпов?дно до ц??? класиф?кац??, завдання Data Mining представлен? групами описових ? прогнозують завдань.В результат? р?шення описових (descriptive) завдань анал?тик отриму? шаблони, що описують дан?, як? п?ддаються ?нтерпретац??.Ц? завдання описують загальну концепц?ю анал?зованих даних, визначають ?нформативн?, п?дсумков?, в?дм?нн? риси даних. Концепц?я описових завдань ма? на уваз? характеристику ? пор?вняння набор?в даних.Характеристика набору даних забезпечу? короткий ? стислий опис деякого набору даних.Пор?вняння забезпечу? пор?вняльний опис двох або б?льше набор?в даних.Прогнозуюч? (predictive) ?рунтуються на анал?з? даних, створення модел?, передбаченн? тенденц?й або властивостей нових або нев?домих даних.Завдання прогнозування вир?шуються в р?зноман?тних областях людсько? д?яльност?, таких як наука, медицина, економ?ка, виробництво та ?нших.Прикладами можуть бути наступн? завдання:- прогнозування ф?нансових тенденц?й; - прогнозування збору урожаю; - прогнозування ц?н на товари.Кр?м економ?чно? ? ф?нансово? сфери, завдання прогнозування ставляться в найр?зноман?тн?ших областях: медицин?, фармаколог??, техн?чних науках.Власне завдання прогнозування призначене на знаходження тенденц?? динам?ки певного об’?кта чи под??, спираючись на ретроспективн? дан?, а саме анал?зуючи його стан в минулому та сьогоденн?. Саме тому р?шення завдання прогнозування потребу? наявност? навчально? виб?рки даних.При вир?шенн? задач? прогнозування можна виокремити два ключових моменти:- виб?р модел? прогнозування; - анал?з адекватност? та точност? побудованого прогнозу.2.3 Процес ?нтелектуального анал?зу данихПроцес ?АД ? свого роду досл?дженням. Як ? будь-яке досл?дження, цей процес склада?ться з певних етап?в, що включають елементи пор?вняння, тип?зац??, класиф?кац??, узагальнення, абстрагування, повторення.Розглянемо традиц?йний процес ?АД. В?н включа? наступн? етапи:анал?з предметно? област?;постановка завдання;п?дготовка даних;побудова моделей;перев?рка ? оц?нка моделей;виб?р модел?;застосування модел?;корекц?я ? оновлення модел?.Розглянемо детально етапи, що стосуються побудови ? застосування модел?. Для початку визначимо поняття ?модель? ? ?моделювання?У широкому сенс? слова моделювання – це наукова дисципл?на, мета яко? – вивчення метод?в побудови ? використання моделей для п?знання реального св?ту.Моделювання – ?диний до тепер?шнього часу систематизований спос?б побачити вар?анти майбутнього ? визначити потенц?йн? насл?дки альтернативних р?шень, що дозволя? ?х об'?ктивно пор?внювати.Моделювання – досить популярний ? ефективний метод досл?дження даних, який ? основою анал?зу даних.?сну? величезна к?льк?сть ситуац?й, коли експериментувати в реальному житт? не ? можливим. У цих випадках якраз ? застосову?ться моделювання.Моделювання як процес явля? собою побудову модел? ? вивчення ?? властивостей, як? под?бн? до найб?льш важливим, з точки зору анал?тика, властивостям досл?джуваних об'?кт?в.Таким чином, за допомогою моделювання вивчаються властивост? об'?кт?в шляхом досл?дження в?дпов?дних властивостей побудованих моделей.Моделювання ? метод, процес ? наукова дисципл?на.Моделювання широко застосову?ться при використанн? метод?в ?АД. Шляхом використання моделей ?АД зд?йсню?ться анал?з даних. За допомогою моделей ?АД виявля?ться корисна, ран?ше нев?дома, доступна ?нтерпретац?? ?нформац?я, яка використову?ться для прийняття р?шень.Модель явля? собою спрощене уявлення про реальний об'?кт, процес або явище.Створення ? використання модел? ?АД ? ключовим моментом для початку розум?ння, осмислення ? прогнозування тенденц?й анал?зованого об'?кта.Побудова моделей ?АД зд?йсню?ться з метою досл?дження або вивчення модельованого об'?кта, процесу, явища ? отримання нових знань, необх?дних для прийняття р?шень. Використання моделей ?АД дозволя? визначити оптимальне р?шення в конкретн?й ситуац??.Анал?тик створю? модель як подобу досл?джуваного об'?кта. Модел? можуть бути записан? у вигляд? р?зних зображень, схем, математичних формул ? т.д. Перевагою використання моделей при досл?дженнях ? простота модел? в пор?внянн? з досл?джуваним об'?ктом. При цьому модел? дозволяють вид?лити в об'?кт? найб?льш ?стотн? фактори з точки зору мети досл?дження, ? не в?двол?катися на незначн? детал?.З останнього зауваження виплива?, що модель ма? властив?сть неповноти, оск?льки ? за сво?м визначенням абстрактною.Наведемо простий приклад. Нехай ? база даних кл??нт?в ф?рми, що м?стить ?нформац?ю про доходи кл??нта, с?мейний стан, уподобання ? т.д. На п?дстав? ц??? ?нформац?? потр?бно визначити, чи ? певний кл??нт потенц?йним покупцем нового товару ф?рми.Будуючи модель, ми припуска?мо, що виб?р кл??нта буде визначатися характеристиками, як? ? в баз? даних (? ми вважа?мо ?х ?стотними для даного завдання). Однак на р?шення кл??нта можуть впливати ряд ?нших чинник?в (наприклад, мода, вплив реклами, поява на ринку аналог?чних товар?в ?нших виробник?в). Ц? чинники ? неврахованими. Отже, в процес? використання модел? ?? структура повинна вдосконалюватися шляхом уточнення фактор?в.Побудован? модел? можуть мати р?зну складн?сть. Складн?сть побудовано? модел? залежить в?д використовуваних метод?в, а також в?д складност? об'?кта, який анал?зу?ться.П?д складним об'?ктом розум??ться об'?кт складно? структури, який характеризу?ться великою к?льк?стю вх?дних зм?нних, м?нлив?стю внутр?шньо? структури ? зовн?шн?х чинник?в, нел?н?йн?стю вза?мозв'язк?в ? ?н.Класиф?кац?я тип?в моделей в залежност? в?д характерних властивостей, властивих досл?джуваному об'?кту або систем?, така:динам?чн? (системи, що зм?нюються в час?) ? статичн?;стохастичн? ? детерм?нован?;неперервн? ? дискретн?;л?н?йн? ? нел?н?йн?;статистичн?; експертн?; модел?, заснован? на методах ?АД;прогнозуючи (класиф?кац?йн?) ? описов?.Розглянемо докладно прогнозуючи ? описов? модел?. Саме такий п?дрозд?л в?дпов?да? под?лу завдань ?АД на два класи: т? що прогнозують ? описов?.Прогнозуюч? ? класиф?кац?йн? (predictive) модел?.Ц? модел? в явному вигляд? м?стять ?нформац?ю для прогнозу, тобто дозволяють прогнозувати числов? значення або клас (категор?ю).Модел?, за допомогою яких зд?йсню?ться прогноз числових значень атрибут?в, будемо називати прогнозуючими. Прогнозування нових значень зд?йсню?ться на основ? в?домих (?снуючих) значень. Прогнозуюч? модел? ?АД дозволяють виявити особливост? функц?онування конкретного об'?кта ? на ?х основ? прогнозувати майбутню повед?нку об'?кта. При використанн? моделювання (на в?дм?ну, наприклад, в?д припущень, заснованих на ?нту?ц??) вза?мозв'язок зм?нних може бути оц?нений к?льк?сно, ??що дозволя? вибрати найб?льш точну модель ? отримати б?льш над?йний прогноз.На в?дм?ну в?д класиф?кац??, в задачах прогнозування ц?льовими ? безперервн? зм?нн?.Приклади прогнозують моделей – це модел? л?н?йно? регрес?? (найпрост?ш? модел?) ? модел? на основ? нейронних мереж.Модел?, за допомогою яких зд?йсню?ться прогнозування класу об'?кта, будемо називати класиф?кац?йними.Таким чином, за допомогою описаних вище моделей вир?шують завдання класиф?кац?? ? прогнозування. Таке р?шення ма? на уваз? двоетапний процес: створення модел? ? ?? використання.2.4 Пор?вняння класичних метод?в ?нтелектуального анал?зу даних 2.4.1 Random forest?Одним з найпопулярн?ших ансамблевих метод?в машинного навчання, який часто використову?ться науковцями з групи профес?йних досл?джень, ? Random forest. Алгоритм випадкових л?с?в – один з найкращих серед алгоритм?в класиф?кац?? та ?нших завдань – здатний точно класиф?кувати велику к?льк?сть даних.Random forest – це метод ансамблевого навчання (також розгляда?ться як р?зновид метода найближчого сус?да) для класиф?кац?? та регрес??, як? будують ряд дерев р?шень п?д час тренування модел? та виводять моду для клас?в або прогноз для побудованих дерев. (Random forest – це торгова марка Лео Бреймана та Аделя Катлера для ансамблю дерев р?шень).Випадков? л?си – це по?днання предиктор?в дерев, де кожне дерево залежить в?д значень випадкового вектора, в?д?браного незалежно, з однаковим розпод?лом для вс?х дерев у л?с?. Основний принцип поляга? в тому, що група "слабких учн?в" може з?братися, щоб сформувати "сильного учня". Випадков? л?си – чудовий ?нструмент для прогнозування, враховуючи, що вони не надто придатн? через закон велико? к?лькост?. Введення правильного виду випадковост? робить ?х точними класиф?каторами та регресорами.Дерева з одним р?шенням часто мають велику дисперс?ю або велику зм?щен?сть. Випадков? л?си намагаються пом’якшити проблеми велико? дисперс?? та велико? упередженост? шляхом усереднення для пошуку природного балансу м?ж двома крайнощами. Зважаючи на те, що у випадкових л?сах ? к?лька параметр?в, як? можна налаштувати, ? ?х можна просто використовувати з налаштуваннями параметр?в за замовчуванням, вони ? простим ?нструментом для використання без наявност? модел? або для створення розумно? модел? швидко та ефективно.Випадков? л?си легко вивчити та використовувати як для профес?онал?в, так ? для непрофес?йних людей – з невеликими досв?дом у програмуванн?. Прост?ше кажучи, можна см?ливо робити б?льш точн? прогнози без б?льшост? основних помилок, характерних для ?нших метод?в.Випадков? л?си будують багато дерев класиф?кац??. Кожне дерево буду?ться за наступним алгоритмом:Якщо к?льк?сть випадк?в у навчальному набор? становить N, виб?рки Nвипадк?в будуть випадковими, але ?з зам?ною, з вих?дних даних. Цей зразок буде навчальним набором для вирощування дерева.Якщо ? вх?дн? зм?нн? M, число mM вказу?ться таким чином, що в кожному вузл? m зм?нних вибираються навмання з M, а найкраще розд?лення на ц? m використову?ться для розд?лення вузла. Значення m утриму?ться пост?йним п?д час вирощування л?су.Кожне дерево вирощу?ться до повного вичерпання п?двиб?рки ? не п?дда?ться процедур??в?дс?кання.Основн? переваги методу випадкових л?с?в:Точн?сть;Ефективн?сть роботи на великих базах даних;Обробка тисяч? вх?дних зм?нних без ?х видалення;Оц?нка важливост? зм?нно? в класиф?кац??;Створення внутр?шньо? неупереджено? оц?нки помилки узагальнення по м?р? просування забудови;Забезпечення ефективност? метод?в оц?нки в?дсутн?х даних;П?дтримка точност?, у випадку коли значна частина даних в?дсутня;Надання метод?в збалансування похибки в незбалансованих наборах даних у сукупност? клас?в;Генерован? л?си можуть бути збережен? для подальшого використання з ?ншими даними;Обчислення прототип?в, що да? ?нформац?ю про сп?вв?дношення м?ж зм?нними та класиф?кац??ю.Недол?ки:Схильн?сть до перенавчання, особливо у завданнях з великою к?льк?стю шум?в;Великий розм?р отримуваних моделей. Потр?бно O(NK)?пам'ят? для збер?гання модел?, де K?– число дерев.В?дзначимо, що R ? Python мають над?йн? та як?сн? пакети для реал?зац?? методу Random forest.2.4.2 Л?н?йний класиф?катор (Linear model)Л?н?йн? модел? – одн? з найпоширен?ших метод?в машинного навчання, як? часто використовуються при вир?шенн? задач класиф?кац??. Основна ?дея л?н?йного класиф?катора поляга? в тому, що ознаковий прост?р може бути розд?лений г?перплощиною на два п?дпростор?в, у кожному з яких прогнозу?ться одне з двох значень ц?льового класу.Якщо це можна зробити без помилок, то навчальна виб?рка назива?ться л?н?йно розд?леною.Нижче математично описана найпрост?ша л?н?йна модель б?нарно? класиф?кац??:yx=signi=1nwi*xi=sign(wT x) (2.1)У дан?й модел? прогноз для об’?кту x буду?ться шляхом визначення знаку л?н?йно? комб?нац?? вагових коеф?ц??нт?в модел? w та вх?дного вектору ознак об’?кта x. А в?дпов?дний процес навчання даного класиф?катора можна звести до знаходження вагових коеф?ц??нт?в модел?.Лог?стична регрес?я ? окремим випадком л?н?йного класиф?катора, зокрема вона ма? хороше вм?ння – прогнозувати ймов?рн?сть p+ в?днесення прикладу x до класу "+":p+=Pyi=1 xi=x) (2.2)Прогнозування не просто в?дпов?д? ("+1" або "-1"), а саме ймов?рност? в?днесення до класу "+1" для багатьох задач ? дуже важливою б?знес-вимогою. Наприклад, в задач? кредитного скорингу, де традиц?йно застосову?ться лог?стична регрес?я, часто прогнозу?ться ймов?рн?сть неповернення кредиту (p+). Кл??нт?в, як? звернулись за кредитом, сортують за ц??ю передбаченою ймов?рн?стю (за зменшенням), п?сля чого отримують скоркарту – грубо кажучи, рейтинг кл??нт?в в?д поганих до хороших.Отже, ми хочемо прогнозувати ймов?рн?сть p+, а поки вм??мо будувати л?н?йний прогноз за допомогою МНК:Bx= wT x (2.3)Яким чином перетворити отримане значення в ймов?рн?сть, меж? яко? [0, 1]? Очевидно, для цього потр?бна деяка функц?я f. У модел? лог?стично? регрес?? для цього береться конкретна функц?я: 11+e-wT x (2.4)Спробу?мо роз?братися, як? для цього передумови.Рисунок 2.1 – Граф?к сигмано?дно? функц??Позначимо P(X) ймов?рн?стю того, що в?дбува?ться под?я X. Тод? в?дношення ймов?рностей OR(X) визнача?ться з P(X)1-P(X), а це – в?дношення ймов?рностей того, в?дбудеться под?я чи не в?дбудеться. Очевидно, що ймов?рн?сть ? в?дношення шанс?в м?стять однакову ?нформац?ю. Але в той час як P(X) знаходиться в межах в?д 0 до 1, OR(X) знаходиться в межах в?д 0 до неск?нченност?.Якщо обчислити логарифм OR(X) (тобто назива?ться логарифм шанс?в, або логарифм в?дносини ймов?рностей), то легко пом?тити, що logORX ? R. Його ? прогнозують за допомогою МНК.Розглянемо детальн?ше процес моделювання дано? ймов?рност? та оц?нки параметр?в модел? лог?стично? регрес??.Розглянемо в?дношення:Bx= P(X)1-P(X) (2.5)За визначення лог?стична регрес?я – л?н?йна модель класиф?кац??, а отже ма?мо:logBx= wT x (2.6)Застосовуючи сп?вв?дношення (2.5) та (2.6), можемо виразити ймов?рн?сть в?днесення об’?кту x до позитивного класу таким чином:p+= Bx1+Bx= ewT x1+ewT x= 11+e-wT x=sigmoid(wT x) (2.7)У сп?вв?дношенн? (4), sigmoid (x) - сигмо?да. Таким чином, отримали ймов?рн?сть в?днесення об’?кту x до позитивного класу. У загальному, ймов?рн?сть в?днесення об’?кту x до класу yi зручно записувати наступним чином:Py=yi xi=x)= 11+eyiwT x (2.8)Тепер з’ясу?мо, як в?дбува?ться процес навчання лог?стично? регрес??. Ймов?рн?сть отримання вектору значень ц?льово? функц?? запису?ться наступним чином:PyX= i=1nP(y=yi|x=xi) (2.9)Цю р?вн?сть можна трансформувати наступним чином, адже ймов?рн?сть залежна в?д вектору вагових коеф?ц??нт?в, тобто параметр? модел? нашо? регрес??:PyX= i=1nPy=yix=xi, w (2.10)У даному сп?вв?дношенн?: y – вектор значень ц?льово? функц?? на навчальн?й виб?рц?, X – матриця описових характеристик об’?кт?в начально? виб?рки розм?рн?стю n×m, де n – к?льк?сть елемент?в у навчальн?й виб?рц?, m – к?льк?сть незалежних зм?нних – описових ознак об’?кта. w – вектор вагових коеф?ц??нт?в лог?стично? регрес?? розм?рн?стю m×1, який потр?бно оц?нити при навчанн? модел?.Використавши метод максимально? правдопод?бност?, зможемо оц?нити нев?дом? параметри нашо? нашо? навчально? виб?рки:logPyX=logi=1nPy=yix=xi, w= i=1nlogPy=yix=xi, w= i=1nlog11+eyiwT x=-i=1nlog?(1+eyiwT x) (2.11)Таким чином, задача максим?зац?? логарифму функц?? правдопод?бност? зводиться до задач? м?н?м?зац?? такого функц?оналу:i=1nlog?(1+eyiwT x) (2.12)Отриманий вираз – лог?стична функц?я помилок, позначимо ?? наступним чином:LlogX, y, w= i=1nlog1+eyiwT x(2.13)Отже, вс? вищезазначен? д?? спростили процес навчання лог?стично? регрес?? до задач? м?н?м?зац?? лог?стично? функц?? помилок:w=argminw(LlogX, y, w) (2.14)Отже, п?дводячи п?дсумки можна виокремити переваги ? недол?ки л?н?йних моделей у задачах машинного навчання.Переваги:Добре вивчен?;Дуже швидк?, можуть працювати на дуже великих виб?рках;Практично поза конкуренц??ю, коли ознак дуже багато (в?д сотень тисяч ? б?льше), а також коли вони розр?джен?;Коеф?ц??нти перед ознаками можуть ?нтерпретуватися (за умови що ознаки масштабован?) – в л?н?йно? регрес?? як приватн? пох?дн? залежною зм?нною в?д ознак, в лог?стичн?й – як зм?на шанс?в на в?днесення до одного з клас?в exp в раз при зм?н? ознаки x1 на 1 од.;Лог?стична регрес?я вида? ймов?рност? в?днесення до р?зних клас?в (це дуже ц?ну?ться, наприклад, в ф?нансов?й сфер?);Модель може будувати ? нел?н?йу границю, якщо на вх?д подати пол?ном?альн? ознаки.Недол?ки:Погано працюють в задачах, в яких залежн?сть в?дпов?дей в?д ознак складна, нел?н?йна;На практиц? припущення теореми Маркова-Гаусса майже н?коли не виконуються, тому част?ше л?н?йн? методи працюють г?рше, н?ж, наприклад, SVM ? ансамбл? (за як?стю виконання завдання класиф?кац?? / регрес??).2.4.3 Метод опорних вектор?в (Support Vector Machines)Метод опорних вектор?в – один з найб?льш популярних метод?в навчання, який застосову?ться для розв'язання задач класиф?кац?? ? регрес??.Основна ?дея класиф?катора на опорних векторах поляга? в тому, щоб будувати поверхню, що розд?ля? задан? класи об’?кт?в, з використанням т?льки невелико? п?дмножини точок, що лежать в зон?, критичн?й для под?лу, тод? як ?нш? в?рно класиф?куючи спостереження навчально? виб?рки поза ц??ю зоною ?гноруються (точн?ше, ? "резервуаром" для оптим?зац?йного алгоритму).Якщо ? два класи спостережень ? передбача?ться л?н?йна форма границ? м?ж класами, то можлив? два випадки. Перший з них пов'язаний з можлив?стю ?деального под?лу даних за допомогою деяко? г?перплощини:(2.15)Оск?льки таких г?перплощин може бути безл?ч, то оптимальною ? поверхня, що розд?ля?, яка максимально в?ддалена в?д навчальних точок, тобто ма? максимальний пром?жок M (margin).Об’?кти, як? ? найближчими до розд?льно? г?перплощини називаються – опорн? вектори – зв?дси ? походить назва даного методу. Розглянемо б?льш детальн?ше принцип роботи методу опорних вектор?в.Ма?мо деяку тренувальну виб?рку: X – матриця ознак об’?кт?в тренувально? виб?рки, y – вектор значень ц?льово? функц?? на об’?ктах тренувально? виб?рки. Важливо, що для роботи методу опорних вектор?в, y прийма? значення ?-1? для об’?кт?в негативного класу та ?+1? для об’?кт?в позитивного класу.Пром?жок м?ж об’?ктами клас?в, який максим?зу? в?дстань м?ж г?перплощиною та опорними векторами, можна визначити наступним чином: Mxi= yi(wT x- w0) (2.16), де xi – деякий об’?кт навчально? виб?рки, yi – в?дпов?дне значення ц?льово? зм?нно?, x – вектор ознак для об’?кта xi, wT – вектор вагових коеф?ц??нт?в модел?, w0 – деякий скалярний пор?г, що визнача? розд?льну г?перплощину.Розглянемо w – вектор нормал?, проведений до розд?льно? г?перплощини, x+ – об’?кт позитивного класу, x- – об’?кт негативного класу. Тод?, знайдемо проекц?ю вектору, к?нцями якого будуть опорн? вектори, на вектор w. Власне, довжина ц??? проекц?? ? буде показувати ширину розд?льно? полоси, яку алгоритму потр?бно максим?зувати п?д час навчання:x+-x-,ww = 1w*x+, w- x-, w= 2w→max→w→min?(wT w)2 →min (2.17)На рисунку 2.2. можна побачити принцип роботи алгоритму побудови максимально? розд?льно? полоси.Рисунок 2.2 – ?Принцип роботи алгоритму побудови максимально? розд?льно? полоси?Варто зазначити, що при наявност? нел?н?йного зв'язку м?ж ознаками ? в?дгуком як?сть л?н?йних класиф?катор?в часто може виявитися незадов?льним. Для обл?ку нел?н?йност? зазвичай розширюють прост?р зм?нних, включаючи р?зн? функц?ональн? перетворення вих?дних предиктор?в (пол?номи, експоненти ? ?н.).Машину опорних вектор?в SVM (Support Vector Machine) можна розглядати як нел?н?йне узагальнення л?н?йного класиф?катора, засноване на розширенн? розм?рност? вих?дного простору предиктор?в за допомогою спец?альних ядерних функц?й. Це дозволя? будувати модел? з використанням розд?ляючих поверхонь само? р?зно? форми.Основна ?дея використання ядер поляга? в тому, що при в?дображенн? даних у прост?р б?льш високо? розм?рност? вих?дна множина точок може стати л?н?йно розд?леною. Тод? природно припустити, що оптимальна розд?льна г?перплощина машини опорних вектор?в може бути знайдена шляхом п?дбору коеф?ц??нт?в αi виразу Таким чином, як ? в л?н?йному випадку, вир?шу?ться математично зручна задача квадратично? оптим?зац?? з використанням множник?в Лагранжа. Обчислення екстремуму в розширених просторах велико? розм?рност? виявилося також можливим, тому що ядро ??форму?ться т?льки для обмеженого набору опорних вектор?в.Найчаст?ше використовують наступн? ядров? функц??:л?н?йне ядро: Kxi,xj=xiTxj (2.18)пол?ном?альне ядро з? степеню p:Kxi,xj=1+xiTxjp (2.19)гаус?вське ядро з рад?ально-базисною функц??ю або RBF (Radial Basis Function):Kxi,xj=expγxj-xj2 (2.20)сигмо?дне ядро:Kxi,xj=tanhγxiTxj+β0 (2.21)Говорячи про властивост? описаних ядрових функц?й, можна вид?лити наступн?:Пол?ном?альне ядро. При його використанн? обчислюються ус? можлив? комб?нац?? вих?дних ознак об’?кта до певно? степен?;Гаус?вське ядро. При його використанн? обчислюються ус? можлив? пол?ном?альн? комб?нац?? ус?х степен?в щодо вих?дних ознак об’?кта.Отже, враховуючи все вищеописане, можна вид?лити основн? переваги ? недол?ку методу опорних вектор?в.Переваги SVM:Зам?сть багатоекстремально? задач? вир?шу?ться задача квадратичного програмування, що ма? ?дине р?шення. Методи оптим?зац?? в цьому випадку ?стотно б?льш ефективн?.Автоматично визнача?ться число нейрон?в прихованого шару. Воно дор?вню? числу опорних вектор?в.Принцип оптимально? розд?льно? г?перплощини призводить до максим?зац?? ширини, що розд?ля? смуги м?ж класами, а отже, до б?льш впевненою класиф?кац??. Недол?ки SVM:Метод опорних вектор?в нест?йкий по в?дношенню до шуму у вих?дних даних. Якщо навчальна виб?рка м?стить шумов? викиди, вони будуть ?стотно врахован? при побудов? розд?льно? г?перплощини. До сих п?р не розроблен? загальн? методи побудови спрямовуючих простор?в або ядер, найб?льш придатних для конкретного завдання. Побудова адекватного ядра ? мистецтвом ?, як правило, спира?ться на апр?орн? знання про предметну область. У загальному випадку, коли л?н?йна розд?льн?сть не гарантована, доводиться п?дбирати керуючий параметр алгоритму C.Для реал?зац?? методу опорних вектор?в в середовищ? R зазвичай використову?ться функц?я svm () з пакету e1071.2.5 Висновки до розд?лу 2В даному розд?л? були сформован? основи ?нтелектуального анал?зу даних, визначено основн? поняття, завдання ? процес ?АД, представлен? фундаментальн? методи ?АД, а також показано принцип ?х роботи. Використання виявлених законом?рностей для прогнозування майбутн?х р?шень, а також анал?з виключень, призначений для знаходження аномал?й в законом?рностях – ? основним процесом ?нтелектуального анал?зу даних.Серед найпоширен?ших метод?в ?АД можна виокремити дерева р?шень, опорн? вектори, л?н?йну регрес?ю, а також нейромережу.РОЗД?Л 3 ПРОГРАМНА РЕАЛ?ЗАЦ?Я ТА ЕКСПЕРИМЕНТАЛЬН? РЕЗУЛЬТАТИ3.1 Виб?р ?нструмента для реал?зац?? модел? Модель для прогнозування р?шень по заявкам на в?зи була розроблена з використанням теоретичних в?домостей, статистичних даних, метод?в ?нтелектуального анал?зу даних та машинного навчання.Для розробки програмного продукту, а також роботи з даними було вир?шено використовувати мову програмування Python ? б?бл?отеку машинного навчання scikit-learn (sklearn). Перевагою мови програмування Python ? велика продуктивн?сть та можлив?сть доступно читати ? переглядати написаний код. Значна к?льк?сть сучасних компан?й ? окремих програм?ст?в використову? саме цю мову для розробки програмного продукту з анал?зом даних. Мова програмування Python ма? велику базу б?бл?отек. Сама мова славиться великою сп?льнотою розробник?в, а приваблю? ?х в першу чергу наука про дан? ? ун?версальн?сть мови.Одн??ю з основних б?бл?отек для роботи з даними ? sklearn. Ця б?бл?отека ма? ц?лий ряд алгоритм?в для навчання з учителем ? без. ?нтерфейс б?бл?отеки представлений мовою Python, проте ? можлив?сть використовувати б?бл?отеки С, що дозволя? значно п?двищити швидк?сть роботи. У б?бл?отец? також ? основн? алгоритми машинного навчання: л?н?йно? регрес?? та ?? модиф?кац?й, гребенево? регрес??, опорних вектор?в, дерев р?шень ? л?с?в ? ?н. ? ? реал?зац?? основних метод?в кластеризац??. Кр?м того, б?бл?отека м?стить пост?йно використовуван? досл?дниками методи роботи з ознаками: наприклад, зниження розм?рност? методом головних компонент. Частиною пакета ? б?бл?отека imblearn, що дозволя? працювати з розбалансованими виб?рками ? генерувати нов? значення.Важливо, що Scikit-learn ? л?цензованою б?бл?отекою ? ма? рел?зи для найр?зноман?тн?ших операц?йних систем, зокрема MacOS ? Windows. Розробники б?бл?отеки активно заохочують комерц?йне та академ?чне використання sklearn.Ще одн??ю перевагою у вибор? ?нструмент?в Puthon ? R стала швидк?сть роботи, яка, наприклад, значно переважа? над ?нструментами написаними мовою Java. Р?зниця може бути у дек?лька годин, а то ? дн?в. Саме тому для вир?шення завдання дано? дипломно? роботи було обрано технолог?? Python ? sklearn.3.2 Використан? б?бл?отекиПри розробц? програмного продукту за допомогою мови програмування Python було використано р?зноман?тн? б?бл?отеки, як для роботи з даними, так ? для окремих метод?в ? оц?нки ?х продуктивност?. Список використаних б?бл?отек наведено нижче:pandas – високор?внева Python б?бл?отека для анал?зу даних;numpy – б?бл?отека мови Python, що використову?ться для роботи з великими багатовим?рними масивами ? матрицями, разом з великою б?бл?отекою високор?вневих ? дуже швидких математичних функц?й для операц?й з цими масивами;sklearn.tree – б?бл?отека для роботи з деревами р?шень;sklearn.svm – б?бл?отека для роботи з опорними векторами;sklearn.linear_model – б?бл?отека для роботи з л?н?йними моделями;sklearn.ensemble – б?бл?отека для робити з ансамблями;sklearn.neural_network – б?бл?отека для роботи з нейромережею;sklearn.naive_bayes – б?бл?отека для роботи з на?вним ба?совським класиф?катором;sklearn.model_slection – б?бл?отека для роботи з даними;sklearn.metrics – б?бл?отека оц?нки функц?й та ?х продуктивност?;matplotlib.pyplot – використову?ться для побудови граф?к?в.?мпорт б?бл?отек продемонстровано на рисунку 3.1.Рисунок 3.1 – ?мпорт б?бл?отек3.3 Попередн?й анал?з та ф?льтрац?я данихПеред початком роботи програмного продукту, необх?дно проанал?зувати дан? наявно? виб?рки, з метою виявлення найзагальн?ших законом?рностей та тенденц?й, характеру та властивостей даних.Спершу трансформу?мо дан? з початково? виб?рки у прийнятний для роботи вигляд. На рисунку 3.2 зображена таблиця з початковими даними для подальшо? очистки ? анал?зу.Рисунок 3.2 - Таблиця з початковими данимиДана таблиця ма? наступн? параметри:Case_Status – статус заявки на в?зу;Employer_Name – ?м’я роботодавця;Soc_Name – сфера д?яльност?;Job_Title – назва роботи;Full_Position – повна ставка чи н?;Prevaling_Wage – зароб?тна плата;Filing_Year – р?к подач? заявки;Worksite – робочий майданчик;Longitude – довжина.Дал? проанал?зу?мо статус поданих заяв в?дносно загально? к?лькост?. На рисунку 3.3 зображена д?аграма, яка в?добража? статус заявки на в?зу у розр?з? до к?лькост? поданих заяв.Рисунок 3.3 – Статус заявки у розр?з? к?лькост?Проанал?зу?мо м?сце роботи заявник?в на отримання в?зи з наявно? виб?рки даних. Топ-15 компан?й представлен? на рисунку 3.4.Рисунок 3.4 – Топ 15 компан?й по к?лькост? заявПроанал?зу?мо профес?? заявник?в на отримання в?зи з наявно? виб?рки даних. Топ-15 профес?й представлен? на рисунку 3.5.Рисунок 3.5 – Топ 15 профес?й заявник?в на в?зуПроанал?зу?мо динам?ку к?лькост? поданих заявок по рокам (рисунок 3.6), а також динам?ку схвалених заявок за останн? роки (рисунок 3.7).Рисунок 3.6 – Динам?ка к?лькост? заявок на в?зу у розр?з? рок?вРисунок 3.7 – Динам?ка к?лькост? схвалених заявок на в?зу у розр?з? рок?вДал? в?дф?льтру?мо рядки та збережемо лише т?, де статус заявки ?схвалено? або ?в?дхилено?. Також видалимо рядки з нульовими значеннями для параметр?в ?EMPLOYER_NAME?, ?SOC_NAME?, ?JOB_TITLE?, ?FULL_TIME_POSITION?, ?PREVAILING_WAGE?. Процес ф?льтрац?? зображений на рисунку 3.8. Рисунок 3.8 – Процес ф?льтрац?? данихОсобливост? створення та категор?зац??Задан? категоричн? дан? необх?дно перетворити у числов? значення. ?сну? три способи перетворення категоричних даних у числов?:Кодування до порядкових значеньГешування ознакУн?тарне кодуванняПерш н?ж вибрати будь-який з перерахованих вище способ?в, необх?дно отримати детальну ?нформац?ю про ун?кальн? значення для кожного стовпця. На рисунку 3.9 наведено даний процес. Рисунок 3.9 – Процес перетворення категоричних даних у числов?3.4 Тренування модел? та експерименти з прогнозуванням р?шеньМетодами ?нтелектуального анал?зу даних зд?йснимо рекурсивний в?дб?р ознак, п?сля чого на основ? нашо? виб?рки зд?йснимо прогнозування, зазначаючи при цьому метрики якостей. На рисунку 3.10 зображено результати прогнозування методом дерев р?шень.Рисунок 3.10 – Прогнозування методом дерев р?шеньПроанал?зу?мо отриман? дан? за допомогою AUC ROC-криво?. Це граф?к, що дозволя? оц?нити як?сть?б?нарно? класиф?кац??, в?добража? сп?вв?дношення м?ж часткою об'?кт?в в?д загально? к?лькост? нос??в?ознаки, в?рно класиф?кованих до загально? к?лькост? об'?кт?в, що не несуть ознаки, помилково класиф?кованих, як так?, що мають ознаку. Також в?дома як?крива похибок. Анал?з класиф?кац?й ?з застосуванням ROC-кривих назива?ться?ROC-анал?зом.На рисунку 3.11 зображено ROC-крива для прогнозування методом дерев р?шень. Рисунок 3.11 – ROC-крива для методу дерев р?шеньНа рисунку 3.12 зображено результати прогнозування методом лог?чтично? регрес??.Рисунок 3.12 – Прогнозування методом лог?стично? регрес??На рисунку 3.13 зображено ROC-крива для прогнозування методом лог?стично? регрес??. Рисунок 3.13 – ROC-крива для методу лог?стично? регрес??На рисунку 3.14 зображено результати прогнозування методом Random Forest.Рисунок 3.14 – Прогнозування методом Random ForestНа рисунку 3.15 зображено ROC-крива для прогнозування методом Random Forest.Рисунок 3.15 – ROC-крива для методу Random ForestНа рисунку 3.16 зображено результати прогнозування за допомогою нейронно? мереж?.Рисунок 3.16 – Прогнозування за допомогою нейронно? мереж?На рисунку 3.17 зображено ROC-крива для прогнозування за допомогою нейронно? мереж?.Рисунок 3.17 – ROC-крива для нейронно? мереж?Викона?мо прогнозування методом опорних вектор?в зм?нюючи при цьому функц?ю ядра. На рисунку 3.18-3.21 зображено результати прогнозування за допомогою методу опорних вектор?в з використанням гаус?вського, л?н?йного, пол?ном?ального ? сигмо?дного ядра.Рисунок 3.18 – Прогнозування за допомогою методу опорних вектор?в з використанням гаус?вського ядра.Рисунок 3.18 – Прогнозування за допомогою методу опорних вектор?в з використанням л?н?йного ядра.Рисунок 3.18 – Прогнозування за допомогою методу опорних вектор?в з використанням пол?ном?ального ядра.Рисунок 3.18 – Прогнозування за допомогою методу опорних вектор?в з використанням сигмо?дного ядра.Оц?нюючи метрики якостей представлених моделей, найб?льш точне прогнозування методу опорних вектор?в викону?ться з використанням сигмо?дного ядра. На рисунку 3.19 зображено ROC-крива для даного випадку.Рисунок 3.19 – ROC-крива для методу опорних вектор?в з використанням сигмо?дного ядра.Попередн? результатиОтже, за результатами побудови моделей р?зними методами, найб?льшточне та як?сне прогнозування, виходячи з показник?в метрики якостей, викону?ться за допомогою нейронно? мереж?. Це п?дтверджу?ться ? показами ROC-криво?, значення AUC яко? для даного методу найвище ? дор?вню? 0,87. 3.5. Висновки до розд?лу 3В даному розд?л? показан? результати експеримент?в при робот? з програмою. Зважаючи на отриман? результат, можна д?йти до висновку, шо реал?зован? алгоритми були обран? правильно. Результати прогнозування, зважаючи на метрики якостей, досить непоган?, ? залежать в?д вибору метода машинного навчання та його параметр?в.Вдосконалення наявних моделей можливо завдяки зб?льшення часу для тренування моделей, а також покращення якост? ? повноти анал?зованих даних.РОЗД?Л 4 ФУНКЦ?ОНАЛЬНО-ВАРТ?СНИЙ АНАЛ?З ПРОГРАМНОГО ПРОДУКТУ4.1. Функц?ональний анал?з програмного продуктуРозробка програмного продукту включа? в себе багато складових, як?сть яких буде визначати над?йн?сть, ефективн?сть, зручн?сть к?нцевого продукту. Для найкращо? реал?зац?? ус?х складових, витративши при цьому м?н?мум часу ? матер?альних ресурс?в, необх?дно провести анал?з можливих вар?ант?в Задача поляга? в оц?нц? основних характеристик програмного продукту, призначеного для побудови прогнозу ф?нансово-економ?чного процесу. Даний програмний продукт був розроблений за допомогою мови програмування Python.4.2 Об?рунтування функц?й та параметр?в програмного продуктуГоловна функц?я F0-розробка програмного продукту, який анал?зу? дан? за допомогою метод?в техн?чного анал?зу. Виходячи з конкретно? мети, можна вид?лити наступн? основн? функц?? програмного продукту:F1-виб?р мови програмування: А) мова програмування Python; Б) мова програмування С#; F2- використання б?бл?отек: А) використання готово? б?бл?отеки; Б) написання алгоритм?в роботи з даними вручну;F3- середовище розробки: А) Python notebook; Б) IDE Pycharm. Вар?анти реал?зац?? основних функц?й наведен? у морфолог?чн?й карт? системи (дивись рис. 4.1). На основ? ц??? карти побудовано позитивно-негативну матрицю вар?ант?в основних функц?й (табл. 4.1).Рисунок 4.1 – Морфолог?чна картаМорфолог?чна карта в?дображу? вс? можлив? комб?нац?? вар?ант?в реал?зац?? функц?й, як? складають повну множину вар?ант?в ПП.Таблиця 4.1- Позитивно-негативна матрицяОсновн? функц??Вар?анти реал?зац??ПеревагиНедол?киF1АЗайма?менше часу при написанн? кодуДинам?чна тип?зац?яБКод швидко викону?ться, кросплатформенийЗайма?б?льше часу при написанн? кодуF2АЛегк?сть реал?зац??, економ?я часуМеньша гнучк?стьБОптимально для власних продукт?вЗатрачений час, можлив? помилкиF3АШирокий виб?р можливостейВ?дсутн?сть в?дладки кодуБПрисутня можлив?сть в?дладки кодуНеобх?дна додаткова?нсталяц?яНа основ? анал?зу позитивно-негативно? матриц? робимо висновок, що при розробц? програмного продукту деяк? вар?анти реал?зац?? функц?й варто в?дкинути, тому, що вони не в?дпов?дають поставленим перед програмним продуктом задачам.Розглянемо вс? можлив? комб?нац?? вар?ант?в реал?зац?? функц?й, як? складають повну множину вар?ант?в ПП, проанал?зу?мо переваги та недол?ки реал?зац?й функц?й та в?дкинемо вар?анти реал?зац?? функц?й, що не в?дпов?дають поставленим перед ПП завданням.Таким чином, будемо розглядати так? вар?анти реал?зац??? ПП:1)F1а – F2а – F3а2)F1а – F2a – F3бДля оц?нювання якост? розглянутих функц?й обрано систему параметр?в, описану дал?. Для характеристики ПП будемо використовувати наступн? параметри: Х1- параметр функц?? F1; X2 – параметр функц?? F2; X3, X4 – параметри функц?? F3.На основ? побажань майбутн?х користувач?в ПП, ?х вимог, досв?ду розробника, можливостей мови програмування визнача?мо г?рш?, середн? та кращ? значення параметр?в ПП, що наведен? в таблиц? 4.2.Таблиця 4.2 – Основн? параметри ППНайменування параметруПозначення параметруЗначення параметруГ?рш?Середн?Кращ?Швидкод?я мови програмування, сX11773Об’?мпам’ят? для збереженняданих, кбХ226014035Час навчання модел?, хвХ335023070Об’?м програмного коду, строкХ438001900800За даними таблиц? 4.2 будуються граф?чн? характеристики параметр?в (рисунок 4.2– 4.5).Рисунок 4.5 – граф?чн? характеристики параметр?в Х1-Х4П?сля детального анал?зу кожний експерт оц?ню? ступ?нь важливост? параметр?в шляхом присво?ння ?м ранг?в. Результати експертного ранжування наведено у таблиц? 4.3.Таблиця 4.3 – Результати ранжування параметр?в.ПараметрРанг параметру за оц?нкою експертаСума ранг?в, RiВ?дхилення, ΔiКвадрат в?дхилення, Δi21234567X1122112110-7,556,25X2211221211-6,542,25X33434333235,530,25X44343444268,572,25Разом10101010101010700201Обчислимо коеф?ц??нт узгодженост?:W= 12SN2(n3-n)= 12*20149*(64-4)=0,8204>Wk=0,67Ранжування можна вважати достов?рним, тому що знайдений коеф?ц??нт узгодженост? високий та перевищу? нормативний коеф?ц??нт для обчислювально? техн?ки, який дор?вню? 0,67.Використовуючи отриман? в?д кожного експерта результати ранжування (таблиця 4.4), проведемо попарне пор?вняння вс?х параметр?в ? результати занесемо в таблицю 4.5. Таблиця 4.4 – Попарне пор?вняння параметр?в експертами.ПараметриЕкспертиК?нцева оц?нкаЧисловезначення1234567Х1 та Х2<>><<><<1.5Х1 та Х3<<<<<<<<0.5Х1 та Х4<<<<<<<<0.5Х2 та Х3<<<<<<<<0.5Х2 та Х4<<<<<<<<0.5Х3 та Х4<><><<<<1.5Таблиця 4.5 – Розрахунок вагомост? параметр?вПараметриПараметри XiПерший крокДругий крокХ1X2Х3Х4biKbibiKbiХ110,50,50,52,50,156259,250,157Х21,510,50,53,50,2187512,250,207Х31,51,510,54,50,2812516,250,275Х41,51,51,515,50,3437521,250,361Загалом:161591Як видно з таблиц?, р?зниця значень коеф?ц??нт?в вагомост? не перевищу? 2% п?сля друго? ?терац??, тому б?льшо? к?лькост? ?терац?й не потр?бно.Розрахунок показник?в р?вня якост? вар?ант?в реал?зац?? основних функц?й програмного продукту надано в таблиц? 4.6.Таблиця 4.6 – Розрахунок показник?в р?вня якост? вар?ант?в реал?зац?? основних функц?й програмного продукту Основна функц?яВар?антреал?зац??Абсолютне значення параметру, Х?Бальна оц?нка параметру, В?Коеф?ц??нт вагомост? параметру,Кв?Коеф?ц??нт р?вня якост?, Ктр?F1а)Х1580,1571,256F2а)Х214060,2071,242F3а)X323060,2751,65а)X4190060,3612,166б)X315080,2752,2б)X4 135080,3612,888За даними таблиц? 4.6 визнача?мо коеф?ц??нт р?вня якост? кожного з вар?ант?в реал?зац?? ПП:Kя1=1,256+1,242+1,65+2,166=6,314Kя2=1,256+1,242+2,2+2,888=7,586Як видно з розрахунк?в, кращим ? другий вар?ант, для якого коеф?ц??нт техн?чного р?вня ма? найб?льше значення.4.3. Економ?чний анал?з вар?ант?в розробкиДля визначення вартост? розробки ПП спочатку проведемо розрахунок трудом?сткост?.Ус? вар?анти включають в себе три окремих завдання:Розробкапроекту програмного продукту;Розробка програмно?? оболонки;При цьому два вар?анти мають р?зн? додатков? завдання:Реал?зац?я метод?в анал?зу. Для першого вар?анту.Створення нового методу анал?зу. Для другого вар?анту.Завдання 1 за ступенем новизни в?дноситься до групи В, ступ?нь складност? 1 трудом?стк?сть дор?вню?: ТР = 43 людино-дн?в завдання. Поправочний коеф?ц??нт, який врахову? вид нормативно-дов?дково? ?нформац?? для першого завдання: КП = 0,81. Поправочний коеф?ц??нт, який врахову? складн?сть контролю вх?дно? та вих?дно? ?нформац?? для вс?х завдань р?вний 1: КСК = 1. Оск?льки при розробц? першого завдання використовуються стандартн? модул?, враху?мо це за допомогою коеф?ц??нта КСТ = 0.8. Тод?, трудом?стк?сть програмування першого завдання дор?вню?:Т1=43*0,81*0,8=27,86 людино-дн?вПроведемо аналог?чн? розрахунки для подальших завдань.Для другого завдання використову?ться алгоритм друго? групи складност?, ступ?нь новизни Б, тобто: Тр=27 людино-дн?в, Кп=0,9,Кск=1,Кст=0,8:Т2=27?0,9?0,8=19,44 людино-дн?вДля завдання три(А) використову?ться алгоритм третьо? групи складност?, степ?нь новизни Г, тобто: Тр=64 людино-дн?в, Кск=1,Кст=0,6, КП =1,021Т3(а) =8?0,6?0,36 =39,21 людино-дн?вДля завдання три(Б) використову?ться алгоритм першо? групи складност?, степ?нь новизни Б, тобто: Тр=8 людино-дн?в, Кск=1,Кст=0,6, КП =0,36Т3(б) =8?0,6?0,36 =1,728 людино-дн?вСклада?мо трудом?стк?сть в?дпов?дних завдань для кожного з обраних вар?ант?в реал?зац?? програми, щоб отримати ?х трудом?стк?сть:ТI=27,86+19,44+39,21?8=692,08людино-годинТII=(27,86+19,44+1,728)?8=392,22людино-годинНайб?льш високу трудом?стк?сть ма? вар?ант I.В розробц? беруть участь один програм?ст з окладом 15000 грн., один датаанал?тик з окладом 17000грн. Визначимо зарплату за годину за формулою:Cч=(15000+17000)/(2*8*22)=90,90грнСзп=90,90?692,08?1,2=75492,09 грн.Сзп=90,90?392,22 ?1,2=42783,36 грн.В?драхування на соц?альний внесок становить 22%:Св?д=Сзп?0.22=75492,09? 0.22 =16608,26 грн.Св?д=Сзп?0.22=42783,36 ?0.22=9412,33 грн.Тепер визначимо витрати на оплату одн??? машино-години (СМ).Так як одна ЕОМ обслугову? одного програм?ста з окладом 15000 грн., та датаанал?тика з окладом 17000 грн.з коеф?ц??нтом занятост? 0,2 то для одн???? машини отрима?мо:Сг=12*14000*0,6+12*18000*0,6=230400 грн.З урахуванням додатково?? зароб?тно?? плати:Сзп=Сг? (1+Кз ) = 230400?(1+0.2)=276480 грн.В?драхування на соц?альнии? внесок 22% :СВ?Д=276480*0,22=60825,6грн.Амортизац?и?н? в?драхування розрахову?мо при амортизац?? 25% тавартост? ЕОМ – 60000 грн.СА=КТМ*КА*ЦПР=1,15*0,25*60000=17250 грн.Витрати на ремонт та проф?лактику розрахову?мо як:СР=КТМ*ЦПР*КР=1,15*60000*0,05=3450 грн.де КР-в?дсоток витрат на поточн? ремонти.Ефективний? годиннии? фонд часу ПК за р?к розрахову?мо за формулою:ТЕФ=365-142-16*8*0,8=1324,8 годВитрати на оплату електроенерг?? розрахову?мо за формулою:СЕЛ=1324,8*0,156*0,6*1,53=189,72 грн.Накладн? витрати розрахову?мо за формулою:СН=60000*0,67=40200 грн.Тод?, р?чн? експлуатац?и?н? витрати розрахову?мо за формулою:СЕКС=276480+60825,6+17250+3450+189,72 +40200=398395,32 грн.Тод? соб?варт?сть одн??? машино-години ЕОМ дор?внюватиме:СМ-Г=398395,321324,8=300,72 грн/годВраховуючи, що вс? роботи ведуться на ЕОМ, витрати на оплату машинного часу:См=300,72*692,08=208122,298 грн.См=300,72*392,22=117948,39 грн.Накладн? витрати в?дпов?дно:СН=75492,09*0,67=50579,70 гн.СН=42783,36*0,67=32684,85 грн.Розраху?мо повну варт?сть розробки:СПП=75492,09+16608,26 +208122,298+50579,70=350799,35 грн.СПП=42783,36+9412,33+117948,39+32684,85=202828,93 грн.4.4. Виб?р кращого вар?анта програмного продукту техн?ко-економ?чного р?вняРозраху?мо коеф?ц??нт техн?ко-економ?чного р?вня за формулою:Kя1=1,256+1,242+1,65+2,166=6,314Kя2=1,256+1,242+2,2+2,888=7,586КТЕР1=6,314350799,35=1,8*10-5КТЕР2=7,586202828,93=3,7*10-54.5. Висновки до розд?лу 4Результатом проведення ФВА стало виявлення найб?льш оптимального вар?анту розробки ПП. Даний вар?ант в?дпов?да? ус?м вимогам розробника ? задовольня? потреби споживач?в. Кр?м того, ФВА дозволив заощадити як матер?альн? ресурси, так ? час, в?дкидаючи ус? нерац?ональн? вар?анти проектування. Процес анал?зу можна умовно розд?лити на дв? частини. В перш?й з них проведено досл?дження ПП з техн?чно? точки зору: було визначено основн? функц?? ПП та сформовано множину вар?ант?в ?х реал?зац??; для кожного вар?анту обчислено значення найб?льш важливих параметр?в ПЗ; на основ? обчислених значень параметр?в а також експертних оц?нок ?х важливост? було обчислено коеф?ц??нт техн?чного р?вня, який ? дав змогу визначити оптимальну з техн?чно? точки зору альтернативу реал?зац?? функц?й ПП. Другу частину ФВА присвячено досл?дженню економ?чно? доц?льност? розробки ? впровадження запропонованого ПП, а також вибору ?з альтернативних вар?ант?в реал?зац?? найб?льш економ?чно об?рунтованого. Пор?вняння запропонованих вар?ант?в реал?зац?? в рамках дано? частини виконувалось за коеф?ц??нтом ефективност?, для обчислення якого були обчислен? так? допом?жн? параметри, як трудом?стк?сть, витрати на зароб?тну плату, накладн? витрати.Було проанал?зовано два найб?льш приваблив? вар?анти реал?зац?? продукту. В результат? пор?вняння вар?ант?в м?ж собою за низкою як?сних ? к?льк?сних показник?в б?льш пристосованим виявився другий вар?ант. Його коеф?ц??нт техн?ко-економ?чного р?вня склада? 3,7*10-5.Хоча в?н ? одним з найважчих у реал?зац??, зате якнайповн?ше розкрива? можливост? системи, що розробля?ться. Основною перевагою даного вар?анта реал?зац?? ? те, що в?н забезпечу? збереження ц?л?сност?, запоб?га? можливост? дублювання даних ? зручний для користувача.У зв'язку ?з цим можна зробити висновок, що даний вар?ант реал?зац?? легше буде продати, а також в?н послужить гарною рекламою для розробника.У результат? написання даного розд?лу були отриман? навички застосування функц?онально-варт?сного анал?зу до програмного продукту.ВИСНОВКИУ дан?й бакалаврськ?й дипломн?й робот? було сформульовано та розв’язано задачу прогнозування р?шень по заявкам на отримання в?зи за допомогою метод?в ?нтелектуального анал?зу даних. Були сформован? основн? поняття в?зового режиму, зд?йснений анал?з ?снуючих п?дход?в до вир?шення дано? проблеми, проведено ?х пор?вняльну характеристику. Зд?йснена формал?зац?я задач? у терм?нах ?нтелектуального анал?зу даних.В ход? роботи були наведен? основн? принципи ? завдання ?нтелектуального анал?зу даних для вир?шення задач? прогнозування, розглянуто фундаментальн? методи ? ?х математичн? основи, основн? характеристики, а також переваги та недол?ки. Проведено пор?вняльний анал?з даних метод?в, а також основних метрик оц?нки якост? вир?шення поставлено? задач?. Було створено програмний продукт, ?з використанням високор?внево? мови програмування Python. У ход? виконання роботи найкраще проявив себе метод нейронно? мереж?.Покращити ? удосконалити результати дано? роботи можна шляхом використання б?льшого об’?му даних для тренування мереж?, зб?льшення к?лькост? прихованих шар?в нейронних мереж, що у свою чергу потребу? використання значно б?льшо? к?лькост? обчислювальних ресурс?в ? часу виконання завдання.СПИСОК ВИКОРИСТАНО? Л?ТЕРАТУРИБарсегян А.А., Купр?янов М.С., Холод ?.?. Анал?з даних ? процес?в: навч.пос?бн/ 3-? вид. Санкт-Петербург: 2009. 512 с.Недашк?вська Н.?. ?нтелектуальний анал?з даних: конспект лекц?й. Ки?в: КП?, 2019. 96с.Чубукова ?. А. Data mining - Електрон. дан? (1 файл) – Режим доступу: (дата звернення 20.02.2020) – Назва з екрану.Хар?сон М. Як влаштований Python. Г?д для розробник?в, програм?ст?в та вс?х хто ц?кавиться/ пер. з англ. ?. Матве?ва. Санкт-Петербург: Питер, 2019. 272 с.Дж. Вандер Плас. Python. Наука про дан? ? машинне навчання. Санкт-Петербург: Питер, 2018. 576 с.Sean Ekins, Ana C. Puhl, Kimberley M. Zorn, Thomas R. Lane, Daniel P. Russo. ?Clark Exploiting machine learning for end-to-end drug discovery and development?.Ian Goodfellow, Yoshua Bengio, Aaron Courville. Deep Learning, The MIT Press Cambridge, Massachusetts London, England: 2018.F. Chollet. Deep Learning with Python, Manning Shelter Island: 2017.Scikit-learn: Machine Learning in Python: 2019.Метод опорних вектор?в. URL: М?н?стерство закордонних справ Укра?ни. Поради подорожуючим. URL: Метод опорных векторов. Supported Vector Machine (SVM). URL: Машинное обучение (Machine Learning). URL: Модель Random Forest для класиф?кац??. URL: ДОДАТОК АДОДАТОК Б#!/usr/bin/env python# coding: utf-8# # H1B Visa Petitions Decision Prediction# ### 1 ?мпорт б?бл?отек# In[1]:##basic library - Pandas and Numpyimport pandas as pdimport numpy as np## Imports for Data Consistency - String Matchimport difflib as dff## Imports for different type of classfiersfrom sklearn import tree # <- Decision- Treesfrom sklearn import svm # <- Support Vector Machinesimport sklearn.linear_model as linear_model # <- Logisitic Regression - Sigmoid Function on the Linear Regressionfrom sklearn.ensemble import RandomForestClassifier # <- Random Forest Classifierfrom sklearn.neural_network import MLPClassifier # <- Neural Networksfrom sklearn.naive_bayes import GaussianNB # <- Gaussian Naive-Bayes Classifier## Imports for recursive feature eliminationfrom sklearn.feature_selection import RFEfrom sklearn.linear_model import LogisticRegression## Imports for splitting the data into training and test datafrom sklearn.model_selection import train_test_split## Imports for evaluating the different classifier models selectedimport sklearn.metrics as metricsfrom sklearn import preprocessing## Data Visualisationimport matplotlib.pyplot as pltget_ipython().run_line_magic('matplotlib', 'inline')# ### Step 2: Import the data and load it into a pandas dataframe for further cleaning and Analysis# In[2]:## Input the data's absolute/relative path from the userpath_excel = "h1b_train.csv"# In[3]:## Define the column names and read the data file into a pandas dataframecolumn_names = ['CASE_STATUS', 'EMPLOYER_NAME','SOC_NAME', 'JOB_TITLE', 'FULL_TIME_POSITION', 'PREVAILING_WAGE', 'FILING_YEAR', 'WORKSITE', 'LONGITUDE', 'LATITUDE']table_1 = pd.read_table(path_excel, names = column_names, skiprows = 1, error_bad_lines = False, sep = ',')# In[4]:pd.set_option('display.max_colwidth', -1)pd.options.mode.chained_assignment = None# In[5]:table_1.head()# # Попередн?й анал?з даних# ### Статус заявки у розр?з? к?лькост?# In[6]:plot_status_numberinit = table_1['CASE_STATUS'].value_counts().plot(title = 'CASE STATUS vs NUMBER OF PETITIONS', kind = 'barh', color = 'green')plot_status_numberinit.set_xlabel("CASE STATUS")plot_status_numberinit.set_ylabel("NUMBER OF PETITIONS")plt.show()print(table_1['CASE_STATUS'].value_counts())# Data Type and String Data Format conversion to upper case# In[7]:table_2 = table_1.loc[table_1['CASE_STATUS'].isin(["CERTIFIED", "DENIED", "REJECTED"])]# In[8]:table_2['FILING_YEAR'] = table_2['FILING_YEAR'].astype(int)table_2['EMPLOYER_NAME'] = table_2['EMPLOYER_NAME'].str.upper()table_2['SOC_NAME'] = table_2['SOC_NAME'].str.upper()table_2['JOB_TITLE'] = table_2['JOB_TITLE'].str.upper()table_2['FULL_TIME_POSITION'] = table_2['FULL_TIME_POSITION'].str.upper()#datatype conversion for the year column# In[9]:table_2.head()# In[10]:plot_status_number = table_2['CASE_STATUS'].value_counts().plot(title = 'CASE STATUS vs NUMBER OF PETITIONS', kind = 'bar', color = 'green')plot_status_number.set_xlabel("CASE STATUS")plot_status_number.set_ylabel("NUMBER OF PETITIONS")for p in plot_status_number.patches: plot_status_number.annotate(str(p.get_height()), (p.get_x() * 1.0050, p.get_height() * 1.005))plot_status_number# ### top 15 компан?й по к?лькост? заяв# In[11]:plot_status_topemp= table_2['EMPLOYER_NAME'].value_counts().head(15).plot.barh(title = "Top 15 employers filing the petitions", color = 'green', figsize = (7, 5))plot_status_topemp.set_ylabel("NAME OF THE EMPLOYER")plot_status_topemp.set_xlabel("NUMBER OF PETITIONS")plot_status_topempprint(table_2['EMPLOYER_NAME'].value_counts().head(15))# ### top 15 профес?й# In[12]:plot_status_topsoc= table_2['SOC_NAME'].value_counts().head(15).plot.barh(title = "Top 15 in demand positions SOCs", color = 'green', figsize = (7, 5))plot_status_topsoc.set_ylabel("SOC NAME")plot_status_topsoc.set_xlabel("NUMBER OF PETITIONS")plot_status_topsocprint(table_2['SOC_NAME'].value_counts().head(15))# ### Наск?льк? зм?нилася к?льк?сть заяв упродовж останн?х рок?в# In[13]:dfplot_status_fyear = pd.DataFrame(table_2['FILING_YEAR'].value_counts())dfplot_status_fyear = dfplot_status_fyear.sort_values(['FILING_YEAR'])plot_status_fyear = dfplot_status_fyear.plot(title = 'H1-B Petitions per year', kind = 'line')plot_status_fyear.set_xlabel('FILING YEAR')plot_status_fyear.set_ylabel('NUMBER OF PETITIONS')plt.show()dfstatus_acceptance_peryear = pd.DataFrame(table_2[table_2['CASE_STATUS'] == 'CERTIFIED'].FILING_YEAR.value_counts() / table_2.FILING_YEAR.value_counts())dfstatus_acceptance_peryear = dfstatus_acceptance_peryear.sort_values(['FILING_YEAR'])status_acceptance_peryear = dfstatus_acceptance_peryear.plot(title = 'H1-B Petitions acceptance per year', kind = 'line')status_acceptance_peryear.set_xlabel('FILING YEAR')status_acceptance_peryear.set_ylabel('ACCEPTANCE RATIO')plt.show()# ### Р?чна зарплата у розр?з? рок?в# In[14]:dfsalaries_trends_year = table_2.loc[:,['PREVAILING_WAGE', 'FILING_YEAR']].groupby(['FILING_YEAR']).agg(['median'])plot_salaries_trends_year = dfsalaries_trends_year.plot(kind = 'bar', color = 'g', legend = None)plot_salaries_trends_year.set_xlabel('FILING YEAR')plot_salaries_trends_year.set_ylabel('MEDIAN WAGE')plt.show()dfsalaries_trends_year# ### 3 Залишимо заявки з? статусом 'CERTIFIED' або 'DECLINED'# In[15]:print(table_2['CASE_STATUS'].unique())table_2 = table_2.loc[table_2['CASE_STATUS'].isin(["CERTIFIED", "DENIED"])] #filtering# ### 4 Подальша ф?льтрац?я# In[16]:table_2.isnull().sum(axis = 0)# In[17]:table_3 = table_2.dropna(axis=0, how='any', subset = ['EMPLOYER_NAME', 'SOC_NAME', 'JOB_TITLE', 'FULL_TIME_POSITION', 'PREVAILING_WAGE'])# In[18]:print(table_2.shape)print(table_3.shape)# In[19]:table_3.CASE_STATUS.value_counts()# ### 6 Балансування даних# In[20]:table_temp_2_Dx = table_3[table_3['CASE_STATUS'] == 'DENIED']#table_temp_2_Dx.duplicated(features_for_dup_removal).value_counts()# In[21]:table_temp_2_Cx = table_3[table_3['CASE_STATUS'] == 'CERTIFIED']#table_temp_2_Cx.duplicated(features_for_dup_removal).value_counts()# In[22]:Input_Certified, Input_Certified_extra, y_certified, y_certified_extra = train_test_split(table_3[table_3.CASE_STATUS == 'CERTIFIED'], table_temp_2_Cx.CASE_STATUS, train_size= 0.06, random_state=1)#Input_Certified is the needed x axis data#Input_certified_extra is the eliminitated attributes data#Same applied for the Y axis but as the values are "Certified" throughout, it doesn't matter# In[23]:training_dataframe = Input_Certified.append(table_temp_2_Dx)# In[24]:## plot the distribution of the certified and denied samples after downsamplingplot_after_ds = training_dataframe['CASE_STATUS'].value_counts().plot(title = 'CASE STATUS vs NUMBER OF PETITIONS', kind = 'bar', color = 'green')plot_after_ds.set_xlabel("CASE STATUS")plot_after_ds.set_ylabel("NUMBER OF PETITIONS")for p in plot_after_ds.patches: plot_after_ds.annotate(str(p.get_height()), (p.get_x() * 1.0050, p.get_height() * 1.005))plt.show()# # Доповнення ознак# For the given categorical data, they need to convert it to numerical values# # There are three ways to convert the categorical data to numerical ones.# # 1. Encoding to ordinal values# 2. Feature Hashing# 3. One-Hot Encoding# # Prior selecting any of the above methods, it is necessary to get the details of the unique values for each of the columns/Features. Below is the plot for the same.# In[25]:# one-hot encoding for every possible and needed columnprint("Case Status ",training_dataframe.CASE_STATUS.nunique())print("Unique Employers ",training_dataframe.EMPLOYER_NAME.nunique())print("Prevailing Wages ",training_dataframe.PREVAILING_WAGE.nunique())print("Unique SOCs ", training_dataframe.SOC_NAME.nunique())print("Unique Job Titles ",training_dataframe.JOB_TITLE.nunique())print("Unique Filing Year ",training_dataframe.FILING_YEAR.nunique())print("Unique Worksite State ",training_dataframe.WORKSITE.nunique())print("Unique Employment Type ", training_dataframe.FULL_TIME_POSITION.nunique())# In[26]:def wage_categorization(wage): if wage <=50000: return "VERY LOW" elif wage >50000 and wage <= 70000: return "LOW" elif wage >70000 and wage <= 90000: return "MEDIUM" elif wage >90000 and wage<=150000: return "HIGH" elif wage >=150000: return "VERY HIGH"# In[27]:def categorisation_visagrant(ratio_of_acceptance): if ratio_of_acceptance == -1: return "AR" elif ratio_of_acceptance >=0.0 and ratio_of_acceptance<0.20: return "VLA" elif ratio_of_acceptance>=0.20 and ratio_of_acceptance<0.40: return "LA" elif ratio_of_acceptance>=0.40 and ratio_of_acceptance<0.60: return "MA" elif ratio_of_acceptance>=0.60 and ratio_of_acceptance<0.80: return "HA" elif ratio_of_acceptance>=0.80: return "VHA"# In[28]:def state_extractor(work_site): return work_site.split(', ')[1]# In[29]:training_dataframe['WORKSITE'] = training_dataframe['WORKSITE'].apply(state_extractor)# In[30]:training_dataframe.WORKSITE.unique()# In[31]:training_dataframe['WAGE_CATEGORY'] = training_dataframe['PREVAILING_WAGE'].apply(wage_categorization)# In[32]:training_dataframe_1 = training_dataframe.loc[:,['EMPLOYER_NAME', 'CASE_STATUS']]training_dataframe_1s = training_dataframe.loc[:,['SOC_NAME', 'CASE_STATUS']]training_dataframe_1j = training_dataframe.loc[:,['JOB_TITLE', 'CASE_STATUS']]# In[33]:training_dataframe_2_C = training_dataframe_1[training_dataframe_1.CASE_STATUS == 'CERTIFIED'].EMPLOYER_NAMEtraining_dataframe_2_Cs = training_dataframe_1s[training_dataframe_1s.CASE_STATUS == 'CERTIFIED'].SOC_NAMEtraining_dataframe_2_Cj = training_dataframe_1j[training_dataframe_1j.CASE_STATUS == 'CERTIFIED'].JOB_TITLEpositive_counts = training_dataframe_2_C.value_counts()positive_counts_s = training_dataframe_2_Cs.value_counts()positive_counts_j = training_dataframe_2_Cj.value_counts()# In[34]:total_counts = training_dataframe_1.EMPLOYER_NAME.value_counts()total_counts_s = training_dataframe_1s.SOC_NAME.value_counts()total_counts_j = training_dataframe_1j.JOB_TITLE.value_counts()# In[35]:final_ratio_series = positive_counts / total_countsfinal_ratio_series.fillna(-1, inplace=True)final_classification_employer = final_ratio_series.apply(categorisation_visagrant)training_dataframe['EMPLOYER_ACCEPTANCE'] = training_dataframe.EMPLOYER_NAME.map(final_classification_employer)# In[36]:final_ratio_series_s = positive_counts_s / total_counts_sfinal_ratio_series_s.fillna(-1, inplace=True)final_classification_soc = final_ratio_series_s.apply(categorisation_visagrant)training_dataframe['SOC_ACCEPTANCE'] = training_dataframe.SOC_NAME.map(final_classification_soc)# In[37]:final_ratio_series_j = positive_counts_j / total_counts_jfinal_ratio_series_j.fillna(-1, inplace=True)final_classification_job = final_ratio_series_j.apply(categorisation_visagrant)training_dataframe['JOB_ACCEPTANCE'] = training_dataframe.JOB_TITLE.map(final_classification_job)# In[38]:print("Case Status ",training_dataframe.CASE_STATUS.nunique())print("Unique Employers ",training_dataframe.EMPLOYER_ACCEPTANCE.nunique())print("Wages Category", training_dataframe.WAGE_CATEGORY.nunique())print("Unique SOCs ", training_dataframe.SOC_ACCEPTANCE.nunique())print("Unique Job Titles ",training_dataframe.JOB_ACCEPTANCE.nunique())print("Unique Filing Year ",training_dataframe.FILING_YEAR.nunique())print("Unique Worksite State ",training_dataframe.WORKSITE.nunique())print("Unique Employment Type ", training_dataframe.FULL_TIME_POSITION.nunique())# In[39]:dict_cs = {"CERTIFIED" : 1, "DENIED": 0}dict_fp = {"Y" : 1, "N" : 0}try: training_dataframe['CASE_STATUS'] = training_dataframe['CASE_STATUS'].apply(lambda x: dict_cs[x]) training_dataframe['FULL_TIME_POSITION'] = training_dataframe['FULL_TIME_POSITION'].apply(lambda x: dict_fp[x])except: pass# In[40]:training_dataframe['FILING_YEAR'] = training_dataframe['FILING_YEAR'].astype('int')training_dataframe.sort_index(inplace = True)training_dataframe = training_dataframe.loc[:, ['CASE_STATUS', 'FILING_YEAR', 'WORKSITE', 'WAGE_CATEGORY', 'EMPLOYER_ACCEPTANCE', 'JOB_ACCEPTANCE', 'SOC_ACCEPTANCE', 'FULL_TIME_POSITION']]training_dataframe.head()# In[41]:final_df_train = pd.get_dummies(training_dataframe, columns=['FILING_YEAR', 'WORKSITE', 'FULL_TIME_POSITION', 'WAGE_CATEGORY', 'EMPLOYER_ACCEPTANCE', 'JOB_ACCEPTANCE', 'SOC_ACCEPTANCE' ], drop_first=True)final_df_train.head()# ### 7 Рекурсивний в?дб?р ознак# In[42]:model = LogisticRegression()rfe = RFE(model, 30)fit = rfe.fit(final_df_train.iloc[:,1:], final_df_train.iloc[:,0])support_rfe = rfe.support_length_cols = list(final_df_train.iloc[:,1:].columns.values)list_selected = []for index in range(len(length_cols)): if support_rfe[index] == True: list_selected.append(length_cols[index]) else: passprint(list_selected)print(rfe.ranking_) # ref.ranking_ returns an array with positive integer values # to indicate the attribute ranking with a lower score indicating a higher ranking # In[43]:unique_listcols = [col.split('_')[0] for col in list_selected]set(unique_listcols)# Splitting into training and test data# In[44]:X_train, X_test, y_train, y_test = train_test_split(final_df_train.iloc[:,1:], final_df_train.iloc[:, 0], test_size = 0.20, random_state=1)#y_train[y_train==1].shapey_test[y_test==1].shape# In[45]:X_train.head()# # Навчання модел?# ## Decision Tree Model# In[46]:dtree = tree.DecisionTreeClassifier()dtree = dtree.fit(X_train, y_train) # In[47]:y_pred = dtree.predict(X_test)y_prob = dtree.predict_proba(X_test)print("test", y_test[:10])print("pred", y_pred[:10])print()print(metrics.confusion_matrix(y_test,y_pred))print(metrics.classification_report(y_test, y_pred))#print(metrics.precision_score(y_test,y_pred)) # Parameter "average" is requred if not a binary model#print(metrics.recall_score(y_test,y_pred)) # Parameter "average" is requred if not a binary model#print(metrics.f1_score(y_test,y_pred)) # ## Logistic Regression Model# In[48]:lr_clf = linear_model.LogisticRegression()lr_clf.fit(X_train, y_train) # In[49]:y_pred_lr = lr_clf.predict(X_test)probs = lr_clf.predict_proba(X_test)print("test", y_test[:10])print("pred", y_pred_lr[:10])print(metrics.confusion_matrix(y_test,y_pred_lr))print(metrics.classification_report(y_test, y_pred_lr))#print(metrics.precision_score(y_test,y_pred)) # Parameter "average" is requred if not a binary model#print(metrics.recall_score(y_test,y_pred)) # Parameter "average" is requred if not a binary model#print(metrics.f1_score(y_test,y_pred))# ## Random Forest Classifier# In[50]:rf = RandomForestClassifier(n_estimators = 75, random_state = 50)# Train the model on training datarf.fit(X_train, y_train)# In[51]:y_pred_rf = rf.predict(X_test)probs = rf.predict_proba(X_test)print("test", y_test[:10])print("pred", y_pred[:10])print(metrics.confusion_matrix(y_test,y_pred_rf))print(metrics.classification_report(y_test, y_pred_rf))#print(metrics.precision_score(y_test,y_pred_rf)) # Parameter "average" is requred if not a binary model#print(metrics.recall_score(y_test,y_pred))#print(metrics.f1_score(y_test, y_pred))# Parameter "average" is requred if not a binary model# In[52]:rf = RandomForestClassifier(n_estimators =100, random_state = 42)# Train the model on training datarf.fit(X_train, y_train)# In[53]:y_pred_rf = rf.predict(X_test)probs = rf.predict_proba(X_test)print("test", y_test[:10])print("pred", y_pred[:10])print(metrics.confusion_matrix(y_test,y_pred_rf))print(metrics.classification_report(y_test, y_pred_rf))#print(metrics.precision_score(y_test,y_pred_rf)) # Parameter "average" is requred if not a binary model#print(metrics.recall_score(y_test,y_pred))#print(metrics.f1_score(y_test, y_pred))# Parameter "average" is requred if not a binary model# ## Artificial Neural Networks# In[54]:mlp = MLPClassifier(hidden_layer_sizes=(20,20,20,20,20), max_iter=1000)mlp.fit(X_train, y_train)# In[55]:y_pred_mlp = mlp.predict(X_test)confusion = metrics.confusion_matrix(y_test, y_pred_mlp)print(confusion)print(metrics.classification_report(y_test, y_pred_mlp))#print(metrics.recall_score(y_test, y_pred))#print(metrics.f1_score(y_test, y_pred))# In[56]:mlp = MLPClassifier(hidden_layer_sizes=(20,20,20,20,20), max_iter=1000, activation='tanh', solver='lbfgs')mlp.fit(X_train, y_train)# In[57]:y_pred_mlp = mlp.predict(X_test)confusion = metrics.confusion_matrix(y_test, y_pred_mlp)print(confusion)print(metrics.classification_report(y_test, y_pred_mlp))#print(metrics.recall_score(y_test, y_pred))#print(metrics.f1_score(y_test, y_pred))# ## Gaussian Naive Bayes Classifier# In[58]:gaus_clf = GaussianNB()gaus_clf.fit(X_train, y_train)# In[59]:y_pred_glb = gaus_clf.predict(X_test)confusion = metrics.confusion_matrix(y_test, y_pred_glb)print(confusion)print(metrics.classification_report(y_test, y_pred_glb))# In[60]:mlp = MLPClassifier(hidden_layer_sizes=(20,20,20,20,20), max_iter=1000)mlp.fit(X_train, y_train)# In[61]:y_pred_mlp = mlp.predict(X_test)confusion = metrics.confusion_matrix(y_test, y_pred_mlp)print(confusion)print(metrics.classification_report(y_test, y_pred_mlp))#print(metrics.recall_score(y_test, y_pred))#print(metrics.f1_score(y_test, y_pred)) ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download