Technological solutions for intelligent analysis of Big Data. Programming languages

We consider the problems arising during in the process of application of  data analysis methods to Big Data. Modern programming languages are analyzed from the point of view of efficiency of their application for development of machine learning (ML) tools focused on Big Data.We analyzed the main typ...

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2019
Автори: Grishanova, I.Y., Rogushina, J.V.
Формат: Стаття
Мова:Ukrainian
Опубліковано: Інститут програмних систем НАН України 2019
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/334
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming

Репозитарії

Problems in programming
id pp_isofts_kiev_ua-article-334
record_format ojs
resource_txt_mv ppisoftskievua/71/646f1408346ee6fbe6c8372e02b5db71.pdf
spelling pp_isofts_kiev_ua-article-3342023-01-19T05:43:01Z Technological solutions for intelligent analysis of Big Data. Programming languages Технологические решения для интеллектуального анализа Big Data. Языки программирования Технологічнi рішення для інтелектуального аналізу Big Data. Мови програмування Grishanova, I.Y. Rogushina, J.V. Big Data; intelligent data analysis; machine learning UDC 004,853, 004.55 Big Data; интеллектуальный анализ данных; машинное обучение УДК 004.853, 004.55 Big Data; інтелектуальний аналіз даних; машинне навчання УДК 004.853, 004.55 We consider the problems arising during in the process of application of  data analysis methods to Big Data. Modern programming languages are analyzed from the point of view of efficiency of their application for development of machine learning (ML) tools focused on Big Data.We analyzed the main types of machine learning tasks associated with information acqusition from Big Data that can be useful for practical use. This analysis shows that these tasks are solved by methods of statistical processing and training of neural networks. Therefore, it is advisable to have appropriate libraries in software tools aimed at solving these problems.Availability of the large number of ML algorithms that are focused on the different types of input information and different representations of result knowledge indicates the need for specialized libraries of machine learning implemented these algorithms. Another important factor in choosing a tool environment where  ML tasks are solved for Big Data is processing speed: this requirement is caused by the large volumes of data to be compiled.External services for ML and Big Data processing , proposed by Google, Amazon, etc., greatly simplify the process of developing of intelligent data analysis tools for those programming languages that support the use of such services.Thus, for creation of experimental prototypes that combine modern approaches to machine learning with elements of artificial intelligence (AI) the most suitable programming language is Python. This conclusion is also confirmed by the world's results of surveys of developers in the field of Data Sciences. But other programming languages analyzed in this paper can become more useful under certain additional conditions: for example, C++ for projects oriented on specific software and hardware or Java and Scala for corporate applications.Problems in programming 2018; 4: 45-58   Рассмотрены проблемы, возникающие в процессе применения методов анализа данных к Big Data. Проанализированы современные  языки программирования  с точки зрения эффективности их применение для разработки средств машинного обучения (ML – Machine Learning), ориентированных на Big Data.Проанализированы основные типы задач машинного обучения, связанные с извлечением из Big Data сведений, полезных для практического применения. Этот анализ показывает, что такие задачи решаются с  использованием методов статистической обработки и обучение нейросетей. Поэтому в программных средствах, ориентированных на решение этих задач, целесообразно иметь соответствующие библиотеки.Наличие большого разнообразия алгоритмов ML, ориентированных на разные типы входной информации и знаний, которые по ни строятся, свидетельствует о потребностях в специализированных библиотеках машинного обучения, которые реализуют эти алгоритмы. Еще одним важным фактором для выбора инструментальной среды, в которой задачи ML решаются для  Big Data, является скорость  обработки: это связано с большими объемами тех данных, которые должны обрабатываться.Внешние сервисы для ML и обработки Big Data, созданные Google, Amazon и т.п., значительно упрощают процесс разработки средств интеллектуального анализа данных  для тех языков программирование, которые поддерживают использование таких сервисов.Таким образом, для создания экспериментальных прототипов, которые объединяют современные подходы к машинному обучению с элементами искусственного интеллекта (ИИ), наиболее пригодным языком программирования есть Python. Этот вывод подтверждают и мировые результаты опрасов разработчиков в сфере Data Sciences. Но другие языки программирования, проанализированные в данной работе, могут быть даже более полезными при определенных дополнительных условиях: например, С++ – для разработок, ориентированных на специфическое аппаратное или программное обеспечения, а   Java и Scala – для создания корпоративных приложений.Problems in programming 2018; 4: 45-58 Розглянуто проблеми, що виникають в процесі застосування методів аналізу даних до Big Data. Проаналізовано сучасні  мови програмування  з точки зору ефективності їх застосування для розробки засобів машинного навчання (ML – Machine Learning) та прикладних програм, орієнтованих на Big Data.Проаналізовано основні типи задач машинного навчання, пов’язаних зі здобуттям з Big Data відомостей, корисних для практичного застосування. Цей аналіз показує, що ці задачі вирішуються з  використанням методів статистичної обробки та навчання нейромереж. Тому в програмних засобах, орієнтованих на рішення цих задач, доцільно мати відповідні бібліотеки.Наявність великого різномаїття алгоритмів ML, орієнтованих на різні типи вхідної інформації та знань, що за ними будуються, свідчить про потреби в спеціалізованих бібліотеках машинного навчання, які реалізують ці алгоритми. Ще одним важливим фактором для вибору інструментального середовища, в якому задачі ML вирішуються для  Big Data, є швидкість  обробки: це пов’язано з великими обсягами тих даних, що мають оброблятися.Зовнішні сервіси для ML та обробки Big Data, створені Google, Amazon тощо, значно спрощують процес розробки засобів інтелектуального аналізу даних  для тих мов програмування, що підтримують використання таких сервісів.Таким чином, для створення експериментальних прототипів, що поєднують сучасні підходи до машинного навчання з елементами штучного інтелекту (ШІ), найбільш придатною мовою програмування є Python. Цей висновок підтверджують і світові результати опитувань розробників в сфері Data Sciences. Але інші мови програмування, проаналізовані в даній роботі, можуть бути навіть більш корисними за певних додаткових умов: приміром, С++ – для розробок, орієнтованих на специфічне апаратне або програмне забезпечення, а   Java та Scala – для створення корпоративних застосувань. Problems in programming 2018; 4: 45-58  Інститут програмних систем НАН України 2019-02-28 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/334 10.15407/pp2018.04.045 PROBLEMS IN PROGRAMMING; No 4 (2018); 45-58 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 4 (2018); 45-58 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 4 (2018); 45-58 1727-4907 10.15407/pp2018.04 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/334/334 Copyright (c) 2018 PROBLEMS OF PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2023-01-19T05:43:01Z
collection OJS
language Ukrainian
topic Big Data
intelligent data analysis
machine learning
UDC 004,853
004.55
spellingShingle Big Data
intelligent data analysis
machine learning
UDC 004,853
004.55
Grishanova, I.Y.
Rogushina, J.V.
Technological solutions for intelligent analysis of Big Data. Programming languages
topic_facet Big Data
intelligent data analysis
machine learning
UDC 004,853
004.55
Big Data
интеллектуальный анализ данных
машинное обучение
УДК 004.853
004.55
Big Data
інтелектуальний аналіз даних
машинне навчання
УДК 004.853
004.55
format Article
author Grishanova, I.Y.
Rogushina, J.V.
author_facet Grishanova, I.Y.
Rogushina, J.V.
author_sort Grishanova, I.Y.
title Technological solutions for intelligent analysis of Big Data. Programming languages
title_short Technological solutions for intelligent analysis of Big Data. Programming languages
title_full Technological solutions for intelligent analysis of Big Data. Programming languages
title_fullStr Technological solutions for intelligent analysis of Big Data. Programming languages
title_full_unstemmed Technological solutions for intelligent analysis of Big Data. Programming languages
title_sort technological solutions for intelligent analysis of big data. programming languages
title_alt Технологические решения для интеллектуального анализа Big Data. Языки программирования
Технологічнi рішення для інтелектуального аналізу Big Data. Мови програмування
description We consider the problems arising during in the process of application of  data analysis methods to Big Data. Modern programming languages are analyzed from the point of view of efficiency of their application for development of machine learning (ML) tools focused on Big Data.We analyzed the main types of machine learning tasks associated with information acqusition from Big Data that can be useful for practical use. This analysis shows that these tasks are solved by methods of statistical processing and training of neural networks. Therefore, it is advisable to have appropriate libraries in software tools aimed at solving these problems.Availability of the large number of ML algorithms that are focused on the different types of input information and different representations of result knowledge indicates the need for specialized libraries of machine learning implemented these algorithms. Another important factor in choosing a tool environment where  ML tasks are solved for Big Data is processing speed: this requirement is caused by the large volumes of data to be compiled.External services for ML and Big Data processing , proposed by Google, Amazon, etc., greatly simplify the process of developing of intelligent data analysis tools for those programming languages that support the use of such services.Thus, for creation of experimental prototypes that combine modern approaches to machine learning with elements of artificial intelligence (AI) the most suitable programming language is Python. This conclusion is also confirmed by the world's results of surveys of developers in the field of Data Sciences. But other programming languages analyzed in this paper can become more useful under certain additional conditions: for example, C++ for projects oriented on specific software and hardware or Java and Scala for corporate applications.Problems in programming 2018; 4: 45-58  
publisher Інститут програмних систем НАН України
publishDate 2019
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/334
work_keys_str_mv AT grishanovaiy technologicalsolutionsforintelligentanalysisofbigdataprogramminglanguages
AT rogushinajv technologicalsolutionsforintelligentanalysisofbigdataprogramminglanguages
AT grishanovaiy tehnologičeskierešeniâdlâintellektualʹnogoanalizabigdataâzykiprogrammirovaniâ
AT rogushinajv tehnologičeskierešeniâdlâintellektualʹnogoanalizabigdataâzykiprogrammirovaniâ
AT grishanovaiy tehnologíčniríšennâdlâíntelektualʹnogoanalízubigdatamoviprogramuvannâ
AT rogushinajv tehnologíčniríšennâdlâíntelektualʹnogoanalízubigdatamoviprogramuvannâ
first_indexed 2025-07-17T09:34:19Z
last_indexed 2025-07-17T09:34:19Z
_version_ 1838499591365853184
fulltext Моделі та засоби систем баз даних і знань © І.Ю. Гришанова, Ю.В. Рогушина, 2018 ISSN 1727-4907. Проблеми програмування. 2018. № 4 45 УДК 004.853, 004.55 https://doi.org/10.15407/pp2018.04.045 І.Ю. Гришанова, Ю.В. Рогушина ТЕХНОЛОГІЧНI РІШЕННЯ ДЛЯ ІНТЕЛЕКТУАЛЬНОГО АНАЛІЗУ BIG DATA. МОВИ ПРОГРАМУВАННЯ Розглянуто проблеми, що виникають в процесі застосування методів аналізу даних до Big Data. Про- аналізовано сучасні мови програмування з точки зору ефективності їх застосування для розробки засобів машинного навчання (ML – Machine Learning) та прикладних програм, орієнтованих на Big Data. Проаналізовано основні типи задач машинного навчання, пов’язаних із здобуттям з Big Data відомостей, корисних для практичного застосування. Цей аналіз показує, що ці задачі вирішуються з використанням методів статистичної обробки та навчання нейромереж. Тому в програмних засобах, орієнтованих на рішення цих задач, доцільно мати відповідні бібліотеки. Наявність великого різно- маніття алгоритмів ML, орієнтованих на різні типи вхідної інформації та знань, що за ними будують- ся, свідчить про потреби в спеціалізованих бібліотеках машинного навчання, які реалізують ці алго- ритми. Ще одним важливим фактором для вибору інструментального середовища, в якому задачі ML вирішуються для Big Data, є швидкість обробки: це пов’язано з великими обсягами тих даних, що мають оброблятися. Зовнішні сервіси для ML та обробки Big Data, створені Google, Amazon тощо, значно спрощують процес розробки засобів інтелектуального аналізу даних для тих мов програму- вання, що підтримують використання таких сервісів. Таким чином, для створення експерименталь- них прототипів, що поєднують сучасні підходи до машинного навчання з елементами штучного інте- лекту (ШІ), найбільш придатною мовою програмування є Python. Цей висновок підтверджують і св і- тові результати опитувань розробників у сфері Data Sciences. Але інші мови програмування, проана- лізовані в даній роботі, можуть бути навіть більш корисними за певних додаткових умов: приміром, С++ – для розробок, орієнтованих на специфічне апаратне або програмне забезпечення, а Java та Scala – для створення корпоративних застосувань. Ключові слова: Big Data, інтелектуальний аналіз даних, машинне навчання Вступ Зростання обсягів інформації, що збирається у сучасному світі, і вимоги до її обробки і збереження роблять актуальним дослідження в області методів і алгоритмів аналізу великих наборів даних. Поки ме- жею можливостей сучасних програмних застосувань, орієнтованих на обробку ве- ликих обсягів даних, є петабайтні набори і гігабайтні потоки даних. Але відповідно до тенденції розвитку науки і суспільства очікуються ще більші масштаби й обсяги даних. Подальше зростання кількості ін- формації та ускладнення її структури ро- бить все більш актуальними проблеми ма- шинного навчання (ML) та інтелектуаль- ного аналізу даних (Data Mining), які до- зволяють здобувати з Big Data корисні та практично застосовні факти та знання. Термін «великі дані» (Big Data) був введений у 2008 р. К. Лінчем – редакто- ром журналу Nature [1]. Саме у цей час об- сяги даних, що генерувалися в електрон- ному вигляді, викликали потребу в розро- бці відповідної інфраструктури для їх збе- реження та обробки. Big Data – це дані, для яких характерні властивості, які нази- вають «три V» – обсяг (volume), швид- кість (velocity) і розманіття (variety). Від- повідно до цих властивостей випливають проблеми: наявність великого обсягу є проблемним для засобів обробки; необхід- ність швидкої обробки та високе різнома- ніття форматів подання даних викликає складності аналізу й обробки. Великі дані – це об’ємні, високош- видкісні та різноманітні інформаційні ак- тиви, які потребують економічно ефектив- них, інноваційних методів обробки інфор- мації для поглибленого розуміння та при- йняття рішень [2]. У роботі [3] висловлена гіпотеза про те, що виявлення закономірностей у великих масивах даних стає одним з ін- струментів дослідження й одним з методів здобуття нових знань у сучасних умовах. Якщо раніше поява нових фактів легко фі- ксувалася і ставала предметом досліджен- ня, то в даний час проблемою є знахо- дження таких нових фактів у великих ма- сивах даних і їх формалізація. http://dx.doi.org/10.7124/bc.000027 Моделі та засоби систем баз даних і знань 46 Аналіз даних великого обсягу пот- ребує створення технологій та засобів реа- лізації високопродуктивних обчислень [4]. Програми, які орієнтовані на обробку ве- ликих обсягів, працюють з файлами даних обсягом від декількох терабайт до пета- байта. На практиці ці дані надходять у різ- них форматах і часто бувають розподілені між декількома джерелами збереження ін- формації та неструктуровані або слабо- структуровані. Особливо слід виділити множинність форматів даних та їх нестру- ктурованість або слабоструктурованість, що само по собі створює проблеми навіть при не дуже великому обсязі. Data Mining Data Mining – технології аналізу да- них у базах або сховищах даних, яка базу- ється на статистичних методах та призна- чена для виявлення заздалегідь невідомих закономірностей, а також для підтримки прийняття стратегічно важливих рішень. Ці технології спрямовані на одержання знань з даних. Для виявлення (discovery) знань з даних використовують автоматизовані ме- тоди та засоби обробки інформації. За ная- вності даних великого обсягу саме цей на- прямок забезпечує отримання нової та ко- рисної інформації. Для виявлення знань застосують методи машинного навчання, які призначені для інтелектуального аналі- зу даних – Data Mining (більш детальний огляд задач Data Mining наведено в [5]). В Data Mining застосовують методи машинного навчання, призначені для використання отриманого раніше досвіду для вдосконалення подальшої поведінки комп’ютерної системи та методи статисти- чного аналізу. Машинне навчання базуєть- ся на прикладній статистиці. Сучасні методи інтелектуального аналізу даних є результатом еволюції під- ходів у двох напрямках: з одного боку – це інтелектуалізація статистичних методів, з іншого – побудова штучних систем за ана- логією з біологічними об’єктами, які нази- вають штучними нейронними мережами. Глибоке навчання (Deep Learning ) є окремим випадком машинного навчання. Воно дозволяє знайти рішення для таких проблем, як розпізнавання зображень та мовлення, переклад природної мови тощо, що не були задовільно вирішені за допо- могою традиційних алгоритмів машинного навчання. Процес глибокого навчання по суті є процес побудови багатошарової нейронної мережі на основі стохастичного градієнтного спуску. Для її побудови пот- рібна велика кількість вхідної інформації, і тому таке навчання може ефективно вико- ристовуватися для обробки Big Data. Ко- жен наступний шар отримує на вході вихі- дні дані попереднього шару. При цьому ознаки організовані ієрархічно, ознаки більш високого рівня є похідними від ознак більш низького рівня. Це дозволяє вирішувати проблему обробки надто вели- кого простору ознак, але оскільки внутрі- шні шари сховані, тому пояснення резуль- татів глибокого навчання користувач не отримує. Нині технології машинного навчан- ня широко застосовуються провідними ро- зробниками програмного забезпечення. Приміром, компанія Google активно вико- ристовує ці технології, що дозволяє значно покращити функції його сервісів: розпі- знавання мовлення в Google Now; машин- ний переклад, який використовує не тільки правила граматики, а також і попередній досвід; автоматичні короткі відповіді Smart Reply тощо. Використання машинного навчання та методів ШІ значно підвищує якість ро- боти програм, тому, створюючи засоби ін- телектуальної обробки даних, необхідно передбачати підтримку в них можливостей машинного навчання. Обираючи інстру- ментальні засоби для розробки проекту, необхідно враховувати наступні фактори, які значним чином визначають ефектив- ність їх застосування до даного класу за- дач: - наявність бібліотек для статис- тичної обробки (саме на статистичних ме- тодах базується основна частина ML); - наявність спеціалізованих біб- ліотек для побудови різноманітних ней- ронних мереж (для підтримки глибокого навчання); - наявність бібліотек машинного навчання (це значно прискорює реалізацію Моделі та засоби систем баз даних і знань 47 прикладних задач класифікації, кластери- зації, прогнозування тощо) та реалізації алгоритмів ШІ; - швидкість роботи (обробка Big Data потребує високопродуктивних обчис- лень); - можливість обробки різних ти- пів даних (Big Data можуть бути представ- лені у найрізноманітніших форматах) та неструктурованої та слабоструктурованої інформації; - зручність застосування та роз- винута інфраструктура інструментального середовища; - підтримка спільноти користу- вачів та розробників, наявність вичерпної і актуальної документації та навчальних курсів. Мови програмування, що використовуються для ML в Big Data Аналіз публікацій у Web показує, що на даний час для масштабованої обро- бки даних у більшості випадків викорис- товують наступні мови програмування: R, Python, Scala і Java. Деякі джерела вклю- чають у цей перелік ще мови, орієнтовані на розробки в галузі штучного інтелекту (ШІ) – Lisp і Prolog, та універсальні мови широкого вжитку – C/C++, PHP і навіть скриптову мову Javascript. Особливості розробки застосувань з ML В програмних застосуваннях з ма- шинного навчання, задачі тренування та оперування (або виведення) розділені. Та- ким чином, для розробки застосування з тренування можливо використовувати од- ну мову, а для виведення – іншу. Це до- зволяє підвищити операційну складність розроблюваних програм. Крім того, деякі мови мають більш швидкі бібліотеки для виконання окремих задач, і існує можли- вість їх використання через API. Таким чином, однією з важливих вимог є швид- кість виконання. Наступною характеристикою, яку виділяють спеціалісти з ML та Big Data, є типізація змінних. Можливість не вказува- ти явно тип змінних підвищує гнучкість програмного забезпечення (ПЗ), але це та- кож підвищує шанс отримання помилок. Деякі спеціалісти вважають, що мови про- грамування такі, як Python, що мають ди- намічне виділення пам’яті (не типізовані змінні), не підходять для машинного на- вчання. Для оцінювання придатності мови програмування для роботи з великими да- ними та реалізації функцій глибинного машинного навчання, визначимо вимоги, яким вона повинна відповідати. 1. Можливості роботи з масштабо- ваними масивами даних. 2. Можливості роботи з існуючими бібліотеками ШІ. 3. Підтримка роботи з Deep Neural Networks (DNNs) або Deep Learning Frameworks. 4. Швидкість роботи. 5. Технологічна зрілість мови (ная- вність професійної спільноти, специфічних бібліотек, зручного інструментарію для розробки та тестування, можливості ство- рення графічного інтерфейсу користувача). 6. Складність вивчення. 7. Економічна ефективність. Розглянемо докладніше сформульо- вані вимоги. Зрозуміло, що для роботи з великими масивами даних, необхідно мати відповідний інструментарій, який дозволяє масштабування і не залежить від розміру, формату та місця зберігання. Крім того очевидно, що складні та вибагливі до шви- дкості та використання пам`яті алгоритми ШІ, роботи з натуральними мовами, не- структурованими даними, статистичні операції агрегування тощо мають бути ре- алізовані з максимальною оптимізацією. Оскільки в більшості випадків до- сить просто і оптимально передавати про- цеси машинного навчання для виконання їх вже готовими нейромережами Deep Neural Networks (DNNs) або фреймворка- ми Deep Learning Frameworks, вимога су- місності, наявності API, можливості пра- цювати з відлагодженими алгоритмами DNNs та DLF є дуже важлива. На даний час створено вже досить багато потужних багатофункціональних сервісів. У листопаді 2015 року корпорація Google запустила сервіс TensorFlow – без- Моделі та засоби систем баз даних і знань 48 коштовне програмне забезпечення, яке має вільну ліцензію Apache 2.0. Це ПЗ добре відповідає сучасним вимогам машинного навчання і може використовуватися для проектів, пов`язаних з Deep Learning. Ця система – досить гнучка як для прове- дення досліджень, так і для використання машинного навчання в існуючих програм- них продуктах для розширення можливос- тей. TensorFlow – це відкрита програмна бібліотека для машинного навчання цілій низці задач, розроблена компанією Google для задоволення її потреб у системах, зда- тних будувати та тренувати нейронні ме- режі для виявлення та розшифровування образів та кореляцій, аналогічно до на- вчання й розуміння, які застосовують лю- ди [6]. Для поширення ідей машинного на- вчання, компанія Google розробила курс відео-занять, де просто і доступно викла- дені принципи роботи з ПЗ Deep Learning, що представлено компанією для вільного використання (https://proglib.io/p/google- ml-recipes/). Розробники ПЗ можуть вільно використовувати цей сервіс: будувати ме- режі, завантажувати свої дані, робити їх аналіз тощо. На початку 2018 року Google пред- ставив новий продукт: Firebase Machine Learning Kit – набір бібліотек з машинного навчання. Цей набір дозволяє ефективно використовувати можливості машинного навчання в мобільних застосуваннях для Android та iOS. Бібліотека Firebase Machine Learning Kit дозволяє розробни- кам легко та з мінімальним кодом викори- стовувати усі можливі високоточні, попе- редньо навчені глибокі моделі в своїх мо- більних застосуваннях. Більшість моделей доступні як локально, так і в Google Cloud. На даний час моделі обмежені задачами, що пов`язані з комп’ютерним баченням, розпізнаванням обличь у реальному часі, оптичним розпізнаванням символів, ска- нуванням штрих-кодів та виявленням об’єктів. Крім Google, свій набір сервісів з машинного навчання випустили й інші лі- дери галузі ІТ: корпорація Амазон надало набір хмарних сервісів Amazon Machine Learning з докладною документацією з ос- нов та прикладів використання машинного навчання (https://aws.amazon.com/ru/ machine-learning/); Microsoft також запро- понували Microsoft Azure Machine Learning – набір сервісів з машинного навчання (https://azure.microsoft.com/en-us/services/ machine-learning/). За наведеними в https://proglib.io/p/ fast-machine-learning/ результатами тесту- вання (на 2017 рік), використання Microsoft Azure Machine Learning значно перевищує Amazon: набагато швидше ви- конується ітерація, є можливість додава- ти/видаляти стовпці без необхідності по- вторного завантаження файлів. В наведе- ному прикладі, процес навчання, який на Amazon займає 11 хвилин, на Azure триває всього 23 секунди. Крім того зазначається, що в Microsoft Azure Machine Learning більш зручний інтерфейс. Однак, ця галузь дуже швидко розвивається і ситуація змі- нюється. Проведене в травні 2018 року опитування серед профільних спеціа- лістів Інтернет-видання KDNuggets (https://www.kdnuggets.com/2018/05/poll- tools-analytics-data-science-machine-lear- ning-results.html), що спеціалізується на Deep Learning, Machine Learning, Big Data, навпроти, показало падіння задоволеністю сервісами Microsoft, IBM, та зростання по- пулярності сервісів від Google у порівнян- ні з 2017 роком. Окрім вищезазначених сервісів від Microsoft, Google, IBM та Amazon, виділя- ють наступні популярні фреймворки:  DIGITS: Програма Deep Learning візуалізації від NVIDIA. Вона на- дає графічний інтерфейс GUI для побудо- ви та ревізії (reviewing) мережі DNNs (https://developer.nvidia.com/digits).  Caffe: Фреймворк написаний на C++, він надає інтерфейс для Python (http://caffe.berkeleyvision.org/). Для почат- ку роботи з ним не має необхідності нічого кодувати. Це зроблено дякуючи тому, що Caffe може бути сконфігуровано з Google Protobuf, текстовим форматом типу JSON (https://developers.google.com/protocol- buffers/docs/overview). https://proglib.io/p/google-ml-recipes/ https://proglib.io/p/google-ml-recipes/ https://aws.amazon.com/ru/ https://azure.microsoft.com/en-us/services/ https://proglib.io/p/%20fast-machine-learning/ https://proglib.io/p/%20fast-machine-learning/ Моделі та засоби систем баз даних і знань 49  Theano: Більшість Deep Lear- ning Frameworks подібні одна до одної і мають досить несуттєві розбіжності, вод- ночас як Theano (http://deeplearning.net/ software/theano/) є однією з таких, що син- таксично відрізняється від Caffe. Theano – це бібліотека символьної математики, над функціями якої побудовані пакети, що ре- алізують можливості DNN.  Torch: Torch (http://torch.ch/) використовується Facebook для дослі- дження DNN, він підтримується Google, NVIDIA, та іншими провідними компа- ніями, що займаються Deep Learning. Він використовує мову програмування Lua (http://www.lua.org/).  TensorFlow: як Torch – інстру- мент Facebook, так TensorFlow (https://www.tensorflow.org/) – головний інструмент Google. Як більшість проектів Google, він базований на Python.  cuDNN: це бібліотека NVIDIA (https://developer.nvidia.com/cudnn) для розпаралелювання навчання мережі DNN на графічних процесорах (GPU). Викори- стання розпаралелювання на процесорах GPU надало величезний поштовх для розвитку нейромереж, надаючи можли- вість суттєвого пришвидшення процесу навчання.  Convolutional Neural Networks (CNNs) (https://en.wikipedia.org/wiki/ Convolutional_neural_network) – це набір блоків нейромережі DNN, що реалізує на- вчання на маленьких фрагментах зобра- ження, які потім поєднуються з сусідніми, і так далі допоки не отримується початко- ве зображення. Таке розбиття на блоки знижує складність процесу навчання, що особливо важливо для обробки великих зображень. Найбільш поширеними фреймвор- ками на даний час вважаються Caffe та Tensorflow. Caffe підтримує Python та Matlab. Tensorflow підтримує Python та R. Також необхідно зазначити, що більшість менш популярних DNN фреймворків (типу Theano), беззаперечно надають підтримку мові Python. Це надає неабияку фору цій мові серед інших. Важливим параметром у виборі мови програмування для глибокого на- вчання є швидкість виконання обчислень. Мова R була побудована як мова для ста- тистичних обчислень, отже вона має вбу- довану підтримку статистичної обробки та аналізу даних. За рахунок цих вбудова- них функцій, R є більш швидкою для ви- конання статистичних задач. На протива- гу, Python використовує бібліотеки та фреймворки, що підключаються і тому є повільнішим. Дуже важливим параметром є тех- нологічна зрілість та поширеність мови програмування та інфраструктури. Як за- значалося, R найбільш підходить для ста- тистичного аналізу. Python більше підхо- дить для різних задач генерування: пре- процесінг даних, пост-обробка результатів. Крім цього, Python є більш зручним для випадків, коли необхідна інтеграція ма- шинного навчання з іншим програмним забезпеченням. Підтримка співтовариства (Commu- nity Support). Враховуючи стрімкий розви- ток технологій, коли нові релізи компіля- торів, трансляторів, бібліотек, API вихо- дять швидше, ніж створюється докладна документація, дуже важливо мати підтри- мку в певній професійній спільноті, що займається конкретним проектом. Більш поширені мови мають більші спільноти, водночас як рідкі екзотичні мови мають доволі обмежені співтовариства. Складність початкового вивчення. Мова R є більш функціональна, водночас як Python – більш об`єктно-орієнтована. Отже, якщо ви знайомі з об`єктно- орієнтованим програмуванням, вивчення Python буде легшим, ніж R, і навпаки, при досвіді в функціональному програмуванні, R буде зручнішим. Таким чином, вибір мови суттєво залежить від попереднього досвіду розробника. Не останнє місце займає параметр економічної ефективності. Як приклад, Matlab є комерційним проектом, викорис- тання якого потребує покупки ліцензії. Водночас, більшість мов є вільними проек- тами з відкритим кодом і не потребують оплати за їх використання. Однак, можли- http://deeplearning.net/ Моделі та засоби систем баз даних і знань 50 во, використання певних бібліотек, сервісів або фреймворків, теж може бути платним. Мова R – інтерпретована об'єктно- орієнтована мова програмування високого рівня, орієнтована на виконання статисти- чних обчислень, аналізу та зображення да- них у графічному вигляді, а також програ- мне середовище розробника або дослідни- ка даних [7]. R – об’єктно-орієнтована мова про- грамування. Це означає, що теоретично будь-що може бути збережене як об'єкт R. Кожен об’єкт має свій клас, який описує, що містить цей об’єкт і, що кожна функція може з цими даними робити. R підтримує широкий спектр стати- стичних і чисельних методів. Її можна ро- зширювати за допомогою пакетів, які по суті є бібліотеками та призначені для під- тримки специфічних функцій і для роботи у спеціальних областях застосування. Ба- зовий набір R містить основний набір па- кетів, але станом на 2013 рік доступно більш 4000 спеціалізованих пакетів. R створювалася під впливом мови програмування S з семантикою успадкова- ною від Scheme. Незважаючи на певні принципові відмінності, більшість програм мовою S можуть працювати також в сере- довищі R. Її назва походить від першої лі- тери імен її розробників – Роса Іхаки та Роберта Джентлмена (Оклендський Уні- верситет, Нова Зеландія). Ще однією особливістю мови R є графічні можливості, що полягають у під- тримці створення якісної графіки, яка мо- же включати математичні символи. R і її пакети, поширюються через CRAN (Comprehensive R Archive Network). R розповсюджується безкоштовно за ліцензією GNU (General Public Licence) у вигляді вільно доступного вихідного ко- ду або відкомпільованих бінарних версій для таких операційних систем, як Linux, FreeBSD, Microsoft Windows, Mac OS X, Solaris. R використовує текстовий користу- вацький інтерфейс, однак існують різні графічні інтерфейси користувача, біль- шість з яких є комерційними. R має потужні можливості для здій- снення статистичного аналізу: ця мова під- тримує такі широко вживані методи Data Mining, як лінійна і нелінійна регресія, аналіз часових рядів (серій), кластерний аналіз, а також класичні статистичні тести і багато іншого. Більша частина стандартних функ- цій R написана мовою R, однак існує мож- ливість підключати код, написаний на С та С++. R – інтерпретована мова програму- вання. Це впливає на швидкість її роботи, але спрощує процес розробки прототипів застосувань. R – це найбільш потужний безкош- товний програмний інструмент з дуже ши- роким набором статистичних бібліотек. В 2013 році R став самим широко викорис- товуваним в науковій літературі пакетом для статистичного аналізу. На сьогодні R фактично є стандартом в розробці застосу- вань в галузі статистики. R надає дуже потужний і швидкий механізм для аналізу даних, однак орієн- тація на математичну статистику і незвич- ний принцип програмування ускладнюють її вивчення, а суто академічні розробки не дозволяють проводити широкі практичні застосування та розробляти великі комер- ційні проекти. Існує багато онлайн курсів з вивчення цієї мови, в 2016 році вийшов безкоштовний курс на платформі Pro- metheus «Аналіз даних та статистичне ви- ведення на мові R (https://courses. prometheus.org.ua/courses/IRF/Stat101/2016 _T3/about). Python – інтерпретована об'єктно- орієнтована мова програмування високого рівня із строгою динамічною типізацією [8], розроблена Гвідо ван Россумом в 1990 році. Python підтримує модулі та пакети модулів, що сприяє модульності та повторному використанню коду. Інтерпре- татор Python та стандартні бібліотеки дос- тупні як у скомпільованій, так і у вихідній формі для всіх основних платформ. Python підтримує різні парадигми програмування, у тому числі процедурну, функціональну, об'єктно-орієнтовану та аспектно-орієнтовану. Мова містить стру- ктури даних високого рівня разом із дина- мічною семантикою та динамічним зв'язу- ванням. Моделі та засоби систем баз даних і знань 51 Використання Python надає розро- бникам ПЗ в сфері ML наступні переваги: - широкий набір бібліотек, які реалізують машинне навчання, алгоритми ШІ, роботи з нейромережами, сервісами крупних постачальників послуг DNNs та DLF; - можливість використання в діа- логовому режимі, що корисно для прове- дення експериментів з ML; - наявність бібліотеки для семан- тичної обробки текстових документів. Біб- ліотека Gensim [9] – інструментарій з відк- ритим кодом для векторно-просторового та тематичного моделювання, який підт- римує аналіз текстових документів для видобування семантичної структури, мас- штабовану статистичну семантику та по- шук семантично схожих документів; - велика кількість додаткових модулів широкого призначення (приміром, для створення графічного інтерфейсу); - підтримка виконання матема- тичних задач (обробка комплексних чисел, цілих чисел довільної величини); - переносимість програм; - потужне середовище розробки IDLE, що входить у стандартний дистри- бутив; - відкритий код (можливість ре- дагувати його іншими користувачами). До основних недоліків Python від- носять низьку швидкодію, що може стати критичним при обробці великих обсягів інформації, та відсутність статичної типі- зації. Але слід відмітити, що бібліотека Gensim, яка ефективно реалізує ряд моде- лей для тематичного моделювання: ла- тентно-семантичний аналіз, латентне роз- міщення Дірихле та ієрархічні процеси Дірихле, і за останні роки стала однією із стандартних бібліотек для моделі word2vec, після декількох етапів доопра- цювання, нині працює швидше за первин- ний код, який написаний на С. Java – універсальна об'єктно- орієнтована мова програмування, що сьо- годні є однією з найпоширеніших [10]. Пе- рша версія Java була розроблена Sun Microsystems (згодом у 2009 році компанія була поглинена Oracle) в 1996 році. Пото- чною версією (вересень 2018 року) є Java 11. Java застосовується для створення різ- номанітного програмного забезпечення: десктопних застосунків, Web-порталів, сервісів тощо, що можуть виконуватися на різних типах пристроїв: звичайних ПК, планшетах, смартфонах. Синтаксис Java подібний до C/C++ і C#. Ключовою особливістю Java є те, що програмний код спочатку транслюється в спеціальний байт-код, який не залежить від платформи, а після цього виконується віртуальною машиною JVM (Java Virtual Machine), що працює на конкретному комп`ютері. У цьому полягає принципова відмінність Java від таких інтерпретованих мов, як PHP чи Perl. Така архітектура є основою кросп- латформеності і апаратної переносимості програм на Java без перекомпіляції на різ- ні платформи (Windows, Linux, Mac OS тощо), для яких існує своя реалізація вір- туальної машини JVM. Недоліком Java є відносно низька швидкодія: програми, що виконуються ві- ртуальною машиною Java, працюють пові- льніше за скомпільований машинний код (наприклад, написаними на С++, який при компіляції часто оптимізується під вико- нання на певному програмному і апарат- ному забезпеченні). Проте за останнє деся- тиріччя розробники віртуальної машини значно пришвидшили цей процес, тому нині програми на Java не надто поступа- ються аналогам на С++. Крім того, вважа- ється, що програмування на Java – досить складний процес, кількість кодів для про- мислової програми завелика. Java підтримує поліморфізм, спад- кування, статичну типізацію. Об’єктно- орієнтований підхід дозволяє вирішити задачі з побудови великих, але гнучких, ма- сштабованих і розширюваних додатків. Пі- дтримується великий набір спеціалізованих бібліотек (приміром, Weka, Mahout) [11]. Weka [12] – середовище для розро- бки методів машинного навчання і засто- сування їх до реальних даних. Це вільне програмне забезпечення, написане на Java. Воно надає прямий доступ до бібліотеки алгоритмів. MOA (Massive On-Line Analysis) [13] – бібліотека з відкритим кодом, на- Моделі та засоби систем баз даних і знань 52 писана на Java та призначена для машин- ного навчання і збору інформації в пото- ках даних у режимі реального часу. Вона містить набір алгоритмів машинного на- вчання: для регресійного аналізу, класи- фікації, виявлення аномалій, кластериза- ції, рекомендаційних систем, та інструме- нти для оцінки їх за часом і в питанні ви- користання пам’яті. Deeplearning4 (https://deeplearning4j. org/) – бібліотека з відкритим кодом, напи- сана на Java і Scala, призначена для об'єд- нання глибоких нейронних мереж і глибо- кого навчання для бізнес-середовища. Біб- ліотека дозволяє працювати з Hadoop, ви- рішуючи задачі розпізнавання мовлення і тексту, для виявлення аномалій у даних часових рядів. MALLET (MAchine Learning for Languag Toolkit) (http://mallet.cs.umass.edu/) – бібліотека з відкритим кодом, розробле- на для обробки тексту з застосуванням машинного навчання. Вона підтримує ста- тистичну обробку природної мови, класте- ризацію, класифікацію документів, інфор- маційний пошук, моделювання тощо. В бібліотеці реалізовано широкий спектр ал- горитмів ML – наївний байєсівський алго- ритм, дерево прийняття рішень, метод ма- ксимуму ентропії тощо. ELKI (Environment for Developing KDD-Applications Supported by Index Structures) (https://elki-project.github.io/) – бібліотека, що забезпечує середовище для розробки KDD (Knowledge discovery in databases – здобуття знань з баз даних), що підтримуються індексними структурами. Бібліотека орієнтована на неконтрольовані методи в кластерному аналізі і виявлення аномалій. Для досягнення високої продук- тивності і масштабованості ELKI пропонує структури індексації даних, такі як R*-дерева (такі структури застосовуються для індексації просторової інформації), що можуть забезпечити значне збільшення продуктивності. Scala – мультипарадигмова мова програмування, що поєднує властивості об'єктно-орієнтованого та функціонально- го програмування [14]. Вона створена на початку 2000-их років у Федеральній полі- технічній школі міста Лозанна (у Швейца- рії). Багато концепцій Scala запозичено з Java і C#. Scala сумісна із існуючими програ- мами мовою Java, тобто код Scala може викликатися із Java-програм і навпаки. Програми Scala виконуються на віртуаль- ній машині Java (JVM) за умови приєднан- ня до дистрибутиву файлу scala-library.jar . Інтеграція з Java дозволяє компілювати код, написаний на Scala, для JVM, а також використовувати всі java-бібліотеки. Scala поєднує статичну типізацію, об’єктно- орієнтоване програмування і функціональ- ний підхід. Основна відмінність Scala від Java – наявність лямбда-виразів, монад та інших елементів функціонального програ- мування. Для вивчення Scala рекомендується вивчити спочатку Java, тому що ці мови програмування часто перетинаються між собою і використовують загальні техноло- гії. Навчитися на Scala досить складно, але це пов’язано скоріше з тим, що на ній пот- рібно вирішувати більш складні задачі, пов’язані з Big Data і великими системами. Переваги Scala: підтримка функці- онального програмування та синтаксис простіший, ніж у Java. Недоліки: важкий для розуміння код, повільна робота ком- пілятора. За відгуками спеціалістів, що пра- цюють зі Scala, це досить потужна і зручна мова, вона містить багато корисних функ- цій програмування, таких як співставлення з зразками (патернами проектування) і по- требує значно менше коду, ніж стандартна Java. Зазначимо, що Hadoop MapReduce, HDFS  написано на  Java. Storm, Kafka та Spark працюють на JVM (в Clojure та Scala). C++ – компільована мова програ- мування високого рівня, розроблена Б. Страуструпом в 1979 році, що підтри- мує кілька парадигм програмування: об’єктно-орієнтовану, узагальнену та про- цедурну [15]. C++ базується на мові С. У 1990-х роках С++ стала однією з найужи- ваніших мов програмування загального призначення. Моделі та засоби систем баз даних і знань 53 С++ використовується для систем- ного програмування, розробки програмно- го забезпечення, драйверів, потужних сер- верних та клієнтських програм, а також для створення відеоігор. Можливості цієї мови дозволяють програмувати на низько- му рівні, працювати з пам’яттю, адресами, портами (на апаратному рівні – hardware) та досягати оптимізації та швидкодії за ра- хунок використання низькорівневих функ- цій. Програми на C++ розробляють для різних платформ і систем з використанням особливостей конкретного апаратного за- безпечення. Головна перевага C++ – швидкість виконання: програма перетворюється в код, який при компіляції оптимізується під конкретне апаратне забезпечення. На цій мові створюють апаратно-прив`язане ПЗ, критичне за швидкістю. На C++ написано багато надшвид- ких бібліотек, які реалізують генетичні ал- горитми, нейронні мережі, обробку сигна- лів реального часу та критичних систем. До явних недоліків C++ можна від- нести необхідність дрібного кодування ни- зького рівня, що ускладнює розробку ве- ликих систем. LISP (LISP, від англ. LISt Processing – «обробка списків») – сімейство високо- рівневих мов програмування загального призначення, що базуються на представ- ленні програми системою лінійних списків символів. LISP розроблено в кінці 1950-их у Масачусетському Технологіч- ному Інституті для дослідження проблем штучного інтелекту та для рішення задач не чисельного характеру. Ця мова вважа- ється другою після Fortran найстаршою високорівневою мовою програмування. LISP орієнтовано на обробку сим- вольної інформації. Ця мова дуже зручна для розробки лінгвістичних програм, осо- бливо для обробки природномовних текс- тів. Розробники використовують LISP для багатьох класичних проектів ШІ. У вигляді списків зручно представляти алгебраїчні вирази, графи, множини, правила виведен- ня і багато інших складних об’єктів. LISP підтримує символьне програмування, має швидкий інструментарій з прототипуван- ня, широкі можливості з розширювання і багато варіантів трансляторів. Prolog (від “PROgramming in LOGic”) – декларативна мова логічного програмування загального призначення, розроблена в 1972 році Аланом Кольмерое та Філіпом Русселем для вирішення задач з області штучного інтелекту та математич- ної лінгвістики. Мета створення цієї мови програмування – поєднати використання логіки з представленням знань. Prolog ба- зується на логіці диз’юнктів Хорна, що є підмножиною логіки предикатів першого порядку. Prolog є однією із найстарших мов логічного програмування, хоча він значно менш популярний за імперативні мови. Він використовується в системах обробки природних мов, дослідженнях ШІ: експер- тних системах, онтологічному аналізі і ін- ших предметних областях, для яких вико- ристання логічної парадигми є природним. Логічне програмування – основна парадигма Prolog, але пізніші реалізації, наприклад, Visual Prolog, підтримують об’єктно-орієнтоване чи кероване подіями програмування, іноді навіть з елементами імперативного стилю. Структура програми на Prolog відрі- зняється від структури програми, написа- ної процедурною мовою. Prolog-програма – це набір правил і фактів. Рішення задачі досягається інтерпретацією цих правил і фактів. При цьому користувачу не потріб- но забезпечувати детальну послідовність інструкцій, щоб указати, яким чином здій- снюється керування ходом обчислень на шляху до результату. Замість цього він тільки визначає можливі рішення задачі і забезпечує програму фактами і правилами, що дозволяють їй відшукати необхідне рі- шення. На сьогодні Prolog – одна з найпо- пулярніших мов програмування для дове- дення теорем, побудови експертних сис- тем, обробки природномовних текстів. Її широко використовують в дослідницькій роботі та освіті, але промислове програму- вання на ній вважається складним, оскіль- ки не всі компілятори підтримують модулі, а також існують проблеми сумісності між системами модулів основних компіляторів. Моделі та засоби систем баз даних і знань 54 Prolog реалізовано практично для усіх відомих операційних систем і плат- форм, приміром, для Unix, Windows, iOS і для мобільних платформ. Існує кілька без- коштовних та комерційних реалізацій, що забезпечують створення зручних графіч- них інтерфейсів користувача. PHP (http://php/net) – скриптова мо- ва програмування, розроблена як інстру- мент для створення динамічних Web- сторінок і роботи з базами даних. Ця мова забезпечує генерацію HTML-сторінок на стороні Web-сервера. Зараз PHP є однією з найпоширеніших мов, що використову- ються у розробці Web-застосувань, – вона фактично є стандартом для стеку LAMP (Linux, Apache, MySQL, PHP), що підтри- мується переважною більшістю хостинг- провайдерів. Нині PHP загалом використовується для створення Web-застосувань, але вона придатна і для створення звичайних GUI- додатків (використовується зв'язування PHP GUI-бібліотекою GTK) чи CLI- додатків. Основна реалізація PHP, розроблена PHP Group, є вільним програмним забез- печенням і поширюється на умовах ліцен- зії PHP License. Головними недоліками мови вва- жають недостатню швидкість (робота ін- терпретатора) та непередбачуваність нових версій, а також проблеми в безпеці, надій- ності, цілісності та передбачуваності. Але PHP постійно розвивається, її нові версії передбачають реалізацію алго- ритмів машинного навчання, роботу з API популярних сервісів DNNs та фреймвор- ками Deep Learning Frameworks та з Big Data. Переваги PHP – простота синтаксису, досить багата функціональність. Наявність ядра і модулів, що підключаються, збіль- шують її можливості. PHP-ML Machine Learning library for PHP – бібліотека для машинного на- вчання мовою PHP, яка містить алгоритми з аналізу даних, обробки багатошарових нейронних мереж, препроцесінг, видобу- вання ознак тощо [17]. В цій бібліотеці ре- алізовано методи класифікації (приміром, метод к-найближчих сусідів), регресії, кластеризації тощо. Для використання біб- ліотеки PHP-ML необхідно мати PHP вер- сії 7.1 або вище. PHP-ML використовує ліцензію MIT Licence. PHP FANN – cтандартне базове ро- зширення PHP версій 5.2.0 і вище і бібліо- теки libfann 2.1.0 і вище [17] реалізує в PHP багатошарову штучну нейронну ме- режу з підтримкою повнозв’язних та непо- внозв’язних мереж. Розширення включає фреймворк для керування навчальними вибірками. Це розширення просте в вико- ристанні, гнучке, має добру документацію та швидко працює. Базові функції: навчання мережі, операції із структурою нейронної мережі FANN (створення, копіювання, видален- ня), операції із структурою навчальних да- них (створення, запис-читання, копіюван- ня, видалення, об’єднання тощо), керуван- ня процесом навчання. Рекомендації від світового товариства Data Science Згідно опитування, яке було прове- дено видавництвом KDNuggets [18] в тра- вні 2018, Python визнаний беззаперечним лідером у використанні його в Data Science and Machine Learning. Важливими чинни- ками цього вибору називають широкий вибір бібліотек і факт того, що це досить легка мова як для вивчення, так і для робо- ти. Крім того необхідно зауважити, що всі основні академічні курси з комп’ютерних наук, аналізу даних та машинного навчан- ня, використовують Python для демонстра- ції і тестування прикладів. Таким чином, Python фактично став мовою, на якій роз- мовляють вчені з даних та машинного на- вчання. Основні причини, за якими Python обирають більшість розробників:  проста та високорівнева мова, яка дозволяє трьома рядками виконати складний процес;  гнучкість;  наявність розвинених бібліотек, зокрема Tensorflow, Keras і Theano;  зрозумілість мови для вивчення завдяки традиційній об`єктній орієнтова- ності; Моделі та засоби систем баз даних і знань 55  широка підтримка професійних спільнот;  універсальність;  зручність інструментарія для ро- зробника;  швидке створення прототипів і побудова програм;  підтримка модульності;  швидке тестування. У таблиці приведені результати опитування видавництвом KDNuggets світової спільноти спеціалістів, які пра- цюють з великими даними та машинним навчанням. Таблиця Software 2018 % % 2018 vs 2017 Python 65.6 % 11 % R 48.5 % – 14 % В травні 2017 року [19] видання Towards Data Science провело опитування серед більше ніж 2 тисяч спеціалістів з Data Science та машинного навчання на тему які мови програмування вони вико- ристовують і над якими проектами пра- цюють. Оскільки опитування проводили спеціалісти з даних, то за результатами опитування були побудовані декілька мо- делей з метою визначити найбільш важли- ві фактори, які впливають на вибір мови програмування для нового проекту. Порів- няння топ-5 мов і результатів показало, що не існує простої відповіді на питання «яка мова краща». Все залежить від багатьох чинників: яку систему планується побуду- вати, який базис мають розробники, і чому було обрано саме машинне навчання як рішення задачі. Найбільш популярною мовою на даний час вважається Python – 57 % вче- них з даних і розробників машинного на- вчання використовують його, 33 % відда- ють цій мові перевагу. Python часто порівнюють з R, але ці мови з погляду на рейтинг популярності досить далекі. R посідає 4-те місце в рей- тингу з використання (31 %) та 5 позицію у питанні «якій мові ви віддасте перевагу при виборі для нового проекту» (5 %). R займає останнє місце – тільки 17 % розро- бників, які її використовували, віддадуть їй перевагу в новому проекті. Це говорить про те, що в більшості випадків R є доволі додатковою мовою. У Python цей показник 58 %, найвищий з мов, що чітко показує тренди використання. Отже Python є як найбільш вживаним, так і мова, якій біль- шість віддає перевагу при запуску нового проекту. Друге місце за використанням (44 %) і за пріоритетністю (19 %) після Python займає C/C++. Третє місце посідає Java. Мови машинного навчання типу Julia, Satlab, SAS попадають за межі 5 % в пріоритетності та використанні. Аналіз результатів опитування по- казав, що при виборі мови програмування для машинного навчання, найбільш важ- ливим є тип проекту – предметна область застосування. Науковці з машинного навчання, які працюють в області аналізу емоцій віддають перевагу Python (44 %) та R (11 %) більше, ніж іншим мовам, що відрі- зняється від точки зору розробників з ін- ших галузей. Java обирають частіше, коли задачі пов`язані з безпекою мереж, кібер-атаками і розпізнаванням шахрайских дій. У даній галузі Python має останнє місце. Загалом, безпека мереж і алгоритми розпізнавання шахрайских дій розробляються і викорис- товуються у великих організаціях, частіше в фінансових закладах, де Java завжди ви- користовувалась для внутрішніх розробок. В областях, які менш орієнтовані на кор- порації, типу обробки природної мови (natural language processing) та аналіз емо- цій, розробники обирають Python, який надає простий і швидкий засіб для побудо- ви високопродуктивних алгоритмів. Ця простота і швидкість отримується завдяки існуванню широкому набору спеціалізова- них бібліотек. В розробці комп’ютерних ігор (29 %) і пересувних роботів (27 %) – двох предметних областях (ПрО), де найпоши- ренішим є C/C++, яка надає високу про- дуктівність та ефективність, використання Моделі та засоби систем баз даних і знань 56 алгоритмів ШІ розширює можливості та- ких програм. Логічно, що реалізацію ал- горитмів ШІ варто створювати також на C/C++, для чого вже існують високопро- дуктивні бібліотеки. Мові R найбільше віддають перева- гу в сфері біоінженерії та біоінформатиці (11%), оскільки раніше її вже активно ви- користовували в біомедичній статистиці в учбових закладах. Саме тому ця мова най- більш пріоритетна в цій галузі. Крім проблематики тієї задачі, для якої розробляється ПЗ, на вибір мови про- грамування для машинного навчання є професійний досвід розробників. В залеж- ності від свого попереднього професійного досвіду, розробники виділяють 5 мов. Python виділяють першим більшість з тих, для кого Data Science є першою спеціалі- зацією або областю вивчення (38 %). Це говорить про те, що Python на даний час став складовою частиною області Data Science і мовою спілкування (стандартом де-факто) для вчених і спеціалістів з да- них. Цього не можна сказати про R, який частіше обирають спеціалісти з аналітики даних та статистики (14 %). Відповідно, спеціалісти в C/C++ віддали перевагу своїй мові (8 %). Інжене- ри і технічні спеціалісти, які використову- ють C/C++ для низькорівневого програму- вання контролерів та інших комп`ютерних елементів (embedded programming), відда- ють перевагу своїй мові і більше побою- ються таких мов, як Java та R. Логічно, що вони частіше працюють на проектах, пов`язаних з низькорівневим машинним навчанням на апаратному рівні. Це проек- ти в галузі класифікації зображень, пере- сування роботів тощо. Розробники, які працюють на Java, здебільшого займаються розробкою фронт-енд застосувань для стаціонарних комп`ютерів. Це пов`язано з здебільшого корпоративними застосуваннями. Корпо- ративні розробники схильні використову- вати Java в усіх проектах, включаючи і машинне навчання (пріоритетність обрали 21 %). Однак, зазначимо, що Java є доволі складна мова програмування, що потребує великого часу для вивчення. На відмінність від Java, Python є простою мовою, швидкою у вивченні, яку можна швидко застосувати для експери- ментів, щоб швидко розібратися в машин- ному навчанні. Мови C/C++ для машинного на- вчання обирають користувачі, які бажають розширити свої існуючі проекти викорис- танням машинного навчання (20 %) і зо- всім рідко – для побудови нових застосу- вань (14 %). Фронт-енд розробники, що працю- ють з Javascript, розширюють функціонал існуючих веб-застосувань та створюють нові, підключаючись за допомогою API до сервісів машинного навчання. Як приклад, це візуалізація роботи алгоритму машин- ного навчання на веб сторінці. Проведений аналіз показав, що по- няття «краща мова програмування для ма- шинного навчання» не існує. Вибір мови програмування залежить від задачі, типу програми, галузі, з якої ви прийшли і для чого ви використовуєте машинне навчан- ня. В більшості випадків розробники пор- тирують алгоритми машинного навчання в мову, яка вже їм відома, особливо якщо це стосується задачі вдосконалення вже іс- нуючих проектів, як наприклад, інженерні проекти для C/C++ або задача візуалізації для Javascript. Для тих, хто тільки починає вивча- ти програмування і машинне навчання, Python буде найкращим вибором: просте використання і великий набір спеціалізо- ваних бібліотек, але для роботи в великих компаніях, можливо, краще обрати Java або Scala. Висновки Вищенаведений аналіз основних за- дач машинного навчання, пов’язаних з об- робкою Big Data, з метою здобуття з них корисних для практичного застосування відомостей, показав доцільність застосу- вання для цього засобів статистичної об- робки та роботи з нейромережами. Одно- часно наявність великого різномаїття ал- горитмів ML, орієнтованих на різні типи вхідної інформації та знань, що за ними будуються, свідчить про потреби в спеціа- Моделі та засоби систем баз даних і знань 57 лізованих бібліотеках, що реалізують ці алгоритми. На даний час існує багато он-лайн сервісів з машинного навчання, а також бібліотек і фреймворків, які можливо за- стосовувати в своїх розробках. Великі пе- реваги мовам програмування надає мож- ливість використовувати зовнішні хмарні сервіси для збереження та обробки вели- ких даних. Ще одним важливим фактором для вибору інструментального середовища, в якому вирішуються задачі ML, є швидкість обробки: це пов’язано з великими обсяга- ми тих даних, що мають оброблятися. Таким чином, для створення експе- риментальних прототипів, що поєднують сучасні підходи до машинного навчання з елементами штучного інтелекту, найбільш придатною мовою програмування є Python. Цей висновок підтверджують і ре- зультати опитувань розробників в сфері Data Sciences. Але інші мови програмуван- ня, проаналізовані в даній роботі, можуть бути навіть більш корисними за певних додаткових умов: приміром, для розробок, орієнтованих на специфічне програмне за- безпечення або на створення корпоратив- них застосувань. Література 1. Lynch C. Bigdata: How do your data grow? Nature. 2008. Vol. 455, N 7209. P. 28–29. 2. Gandomi A., Haider M. Beyond the hype: Big data concepts, methods, and analytics. International Journal of Information Management. 35 (2). 2015. P. 137–144. 3. The Fourth Paradigm: Data-Intensive Scientific Discovery. 2009. http://research.microsoft.com/enus/collaborati on/fourthparadigm. 4. Чехарин Е.Е. Большие данные: большие проблемы. Перспективы науки и образо- вания, № 3 (21), 2016. 5. Гладун А.Я., Рогушина Ю.В. Data Mining: пошук знань в даних. К.:ТОВ "ВД "АДЕФ- Україна", 2016. 452 с. 6. TensorFlow. https://www.tensorflow.org/get_ started/get_started. 7. The R Project for Statistical Computing. https://www.r-project.org. 8. Python. – https://www.python.org. 9. Gensim. – https://radimrehurek.com/gensim/. 10. Java. https://www.oracle.com/technetwork/ java/index.html. 11. Топ 5 библиотек машинного обучения для Java. https://javarush.ru/groups/posts/254-top- 5-bibliotek-mashinnogo-obuchenija-dlja-java. 12. Weka. https://www.cs.waikato.ac.nz/ml/weka/ index.html. 13. MOA – Massive On-Line Analysis. https://moa.cms.waikato.ac.nz/. 14. The Scala Programming Language. https://www.scala-lang.org. 15. The Features of C++ as a Language. http://www.cplusplus.com/ info/description/. 16. PHP-ML. https://php-ml.readthedocs.io/en/ latest/. 17. Fast Artificial Neural Network или FANN. – http://php.net/manual/ru/book.fann.php. 18. Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis. – https://www.kdnuggets.com/2018/05/poll- tools-analytics-data-science-machine- learning-results.html. 19. Voskoglou C. What is the best programming language for Machine Learning? – https://towardsdatascience.com/what-is-the- best-programming-language-for-machine- learning-a745c156d6b7. References 1. Lynch C. Bigdata: How do your data grow? Nature. 2008. Vol. 455, N 7209. P. 28–29. 2. Gandomi A., Haider M. Beyond the hype: Big data concepts, methods, and analytics. International Journal of Information Management. 35 (2). 2015. P. 137–144. 3. The Fourth Paradigm: Data-Intensive Scientific Discovery. 2009. http://research.microsoft.com/enus/collaborati on/fourthparadigm. 4. Cheharin E.E. Big data: big problems. Perspectives of sciences and education, 2016. N 3 (21). [in Russian]. 5. Gladun A.Y., Rogushina J.V. Data Mining: retrieval of knowlegde into data. K.: ADEF- Ukraine, 2016. 452 p. [in Ukrainian]. 6. TensorFlow. https://www.tensorflow.org/get_ started/get_started. 7. The R Project for Statistical Computing. https://www.r-project.org. 8. Python. – https://www.python.org. 9. Gensim. – https://radimrehurek.com/gensim/. 10. Java. https://www.oracle.com/technetwork/ java/index.html. https://www.tensorflow.org/get_ https://www.oracle.com/technetwork/ http://research.microsoft.com/enus/collaboration/fourthparadigm http://research.microsoft.com/enus/collaboration/fourthparadigm https://www.tensorflow.org/get_ https://www.oracle.com/technetwork/ Моделі та засоби систем баз даних і знань 58 11. Top 5 libraries of machine learning for Java. – https://javarush.ru/groups/posts/254-top-5- bibliotek-mashinnogo-obuchenija-dlja-java. [in Russian]. 12. Weka. https://www.cs.waikato.ac.nz/ml/weka/ index.html. 13. MOA – Massive On-Line Analysis. https://moa.cms.waikato.ac.nz/. 14. The Scala Programming Language. https://www.scala-lang.org. 15. The Features of C++ as a Language. http://www.cplusplus.com/ info/description/. 16. PHP-ML. https://php-ml.readthedocs.io/en/ latest/. 17. Fast Artificial Neural Network или FANN. – http://php.net/manual/ru/book.fann.php. 18. Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis. – https://www.kdnuggets.com/2018/05/poll- tools-analytics-data-science-machine- learning-results.html. 19. Voskoglou C. What is the best programming language for Machine Learning? – https://towardsdatascience.com/what-is-the- best-programming-language-for-machine- learning-a745c156d6b7. Одержано 05.10.2018 Про авторів: Гришанова Ірина Юріївна, науковий співробітник. Кількість наукових публікацій в українських виданнях – 17. Кількість наукових публікацій в зарубіжних виданнях – 3. http://orcid.org/0000-0003-4999-6294. Рогушина Юлія Віталіївна, кандидат фізико-математичних наук, старший науковий співробітник. Кількість наукових публікацій в українських виданнях – 140. Кількість наукових публікацій в зарубіжних виданнях – 30. Індекс Хірша – 3. http://orcid.org/0000-0001-7958-2557. Місце роботи авторів: Інститут програмних систем НАН України, 03181, Київ-187, проспект Академіка Глушкова, 40. Тел.: 066 550 1999. E-mail: i26031966@gmail.com, ladamandraka2010@gmail.com, mailto:i26031966@gmail.com mailto:ladamandraka2010@gmail.com