Притежаването на добри познания по програмиране е важно за програмистите, които се занимават с машинно обучение, защото това им предоставя неограничени възможности както при изграждане на модели, така и при интегриране на съществуващи такива в проекти.
Каква е ролята на програмирането в машинното обучение?
Със създаването на ML решения чрез езици за програмиране, програмистите могат да разширят функционалностите на приложения, добавяйки моделите за машинно обучение, както и да изградят конкретни специфични системи, които да подпомогнат процеса на взимане на решения.
Създадени са множество рамки и библиотеки за програмистите за улеснение на процеса на работа по обработка на данните, тяхната визуализация и прилагане на различните алгоритми.
Чрез тази статия ще ви запозная с някои от популярните езици за програмиране при машинното обучение, като ще разгледаме и кои библиотеки се използват, в кои среди, както и плюсовете и минусите на всеки език.
Ще разгледаме езиците:
Езици за програмиране, използвани за машинно обучение
Множеството езици за програмиране и библиотеки, които има за тях, дават голямо разнообразие от инструменти и техники на програмистите, чрез които те лесно да могат да създават ML решения на конкретни задачи.
Python
Python е най-популярният език за машинно обучение, като той притежава множество библиотеки за обработка и анализ на данни. Гъвкав е и позволява лесно да се изграждат модели. Подходящ език е за начинаещи, които искат да навлязат в сферата на машинното обучение.
Ключови библиотеки за Python са:
NumPy (Numerical Python)
NumPy е основна за научни изчисления с Python. Тя е мощен инструмент, предоставящ множество полезни функции за линейна алгебра и поддържащ многомерни масиви с основните им операции. Тя е основа за разработката на много други библиотеки.
Pandas (Pуthоn Dаtа Anаlуѕіѕ Lіbrаrу)
Pandas дава възможност на програмистите да се възползват от структури от данни с висока производителност и инструменти за анализ. Тя е сравнително нова и е създадена като надстройка на NumPy. Съдържа в себе си 2 важни структури – Series (едномерен масив) и DataFrame (двумерен масив). Притежава и инструменти за импортиране на данни от различни формати (csv, Excel, SQL и др.), както и за свързване, сливане и агрегиране в съответните структури. Чрез вградените си функции Pandas дава възможност и за представяне на данните в подходящ вид за последващ анализ.
SciPy
SciPy е популярна библиотека на Python, която съдържа различни модули за линейна алгебра, статистика, оптимизация и др. Полезна е много при решаване на задачи, свързани с научни изчисления и също така и за обработка на изображения. Създадена е на базата на NumPy, лесна е и позволява бързи и мощни изчисления.
Matplotlib, Seaborn, Bokeh и приятели
Предназначени са за създаване на визуализации с Python. Диаграмите, които се изграждат с тях, са висококачествени и могат да бъдат в различни формати. Съдържат голям брой визуализации, включително и стандартните – хистограма, стълбовидна диаграма (bar chart), линейни графики и др. Предоставят и възможности за интерактивни и динамични визуализации.
Scikit-learn
Scikit-learn е създадена с помощта на NumPy, SciPy и Matplotlib. Тя е с отворен код и достъпна за всеки, като предлага лесни за използване и ефективни инструменти за задачи като регресия, класификация и др.
Среди за програмиране
Има изключително много решения, като Jupyter Notebook е класика в жанра. Повечето програмисти, които се занимават с машинно обучение, прибягват към интерактивните тетрадки на Jupyter. Други популярни среди са Google Colab и Spyder, но списъкът е доста дълъг, така че всеки може да намери подходящата за него.
Предимства
- Има голяма общност от хора, които използват Python за машинно обучение
- Създадени са изключително голям брой библиотеки и пакети
- Поддържа се от много операционни системи
Недостатъци
- Съдържа по-малко пакети със статистически модели в сравнение с R
- По-бавен e в изпълнение на приложенията от други езици като C++ и Java
- Грешките се появяват по време на изпълнение, което налага повече тестване
R
R e известен сред анализаторите език за програмиране, създаден за статистически изследвания, като той не е толкова за програмисти, колкото за статистици. Може да се прилага и за решаване на задачи, свързани с машинно обучение. R съдържа голям брой статистически методи (линейно и нелинейно моделиране, анализ на времеви редове, клъстеризация и др.). За разлика от Python, R не може да се използва за създаване на приложения.
R има огромно количесто библиотеки, които много улесняват работата при изграждане на модели. Някои от по-често прилаганите например са:
Dplyr
Dplyr предимно служи за обработка на данни. Нейните възможности са групирани в около 5 основни функции, свързани с манипулиране на данни – select() за избор на определени колони, filter(), когато искаме да покажем специфични редове, arrange() за смяна на подредбата на редове, mutate() при добавяне на нови колони и summarize() за обобщаване на част от данните.
Ggplot2
Ggplot2 е основна за графично представяне на данни с R и е вдъхновена от книгата Граматика на Графиките от Л. Уилкинсън (The Grammar of Graphics by L. Wilkinson). Съдържа множество визуализации и голям набор от функции, които позволяват графичното представяне на връзките между отделните характеристики на данните.
Mlr (Machine Learning in R)
Тази библиотека е страхотна за изпълнение на задачи, свързани с машинно обучение, като предлага множество алгоритми за класификация, регресия, клъстеризация и др. Написана е по такъв начин, че позволява на програмистите да разширяват функционалностите им и да създават собствени алгоритми.
Среди за програмиране
За писане на скриптове на R популярни и често предпочитани са средите RStudio и RKWard.
Предимства
- Страхотен е за различни статистически анализи
- RStudio улеснява и ускорява процеса на работа
- Поддържа се от различни операционни системи без проблеми
- Има много инструменти за R и голяма общност
Недостатъци
- Има по-необичаен синтаксис в сравнение с други езици
- R използва много интензивно RAM паметта, което предизвиква затруднения при работа с големи данни
- Бавен е и неподходящ за начинаещи в статистиката
JavaScript
JavaScript е основният език за разработка на мобилни и уеб приложения. За уеб разработчиците, които искат да се възползват от възможностите на машинното обучение в своите приложения, най-естественото решение е да прибeгнат към библиотеки на JavaScript. С тях могат да се изграждат модели, като някои от по-популярните са:
TensorFlow.js
TensorFlow.js позволява да се зареждат вече съществуващи модели или да се изграждат нови такива, като те намират място в сървърната или клиентската част на мобилни, уеб или десктоп приложения. Основна единица е tf.tensor, който представлява едномерна или многомерна структура от данни, подобна на масивите. Има множество функции, които са готови за използване и с помощта на които могат да се прилагат алгоритми за машинно обучение при създаване на модели.
Stdlib-js
Stdlib-js освен че позволява използване на сложни математически и статистически функции при изграждане на модели, се прилага много и за създаване на визуализации при анализ на данни. Дава голям избор от графики и също така тя съдържа и множество примерни извадки, с които може да се извършват тестове.
Brain.js
Brain.js е библиотека на JavaScript, която е много добре документирана, лесна за разбиране и използване. Тя се прилага при работа с невронни мрежи, като предоставя голям набор от функционалности. Намира мястото си в сървърната част на приложения, но също и директно в браузъра.
Machinelearn.js
Ролята, която изпълнява Machinelearn.js, е аналогична на тази на Scikit-learn при Python. Съдържа много готови модели за машинно обучение, както и някои популярни извадки за тестови цели (Iris, Boston и HeartDisease).
Среди за програмиране
Има огромно количество среди, като сред програмистите на JavaScript, много популярни и предпочитани са редакторите Visual Studio Code, Sublime Text и Atom.
Предимства
- Относително лесен за научаване език
- Прилагане на модели за машинно обучение директно в браузъра
- Подходящ е при разработване на ML решения за мобилни и уеб приложения
Недостатъци
- Няма достатъчно библиотеки за машинно обучение, създадени за JavaScript
- Понякога има разлики при интерпретацията от различните браузъри
- Общността от хора, използващи JavaScript за машинно обучение, не е толкова голяма
Намерихте ли своя език?
Ако програмирате на различен от разгледаните до тук езици, то библиотеки за машинно обучение съществуват и за още доста езици за програмиране, като някои от по-популярните са:
- C++ (mlpack, Dlib)
- Java (WEKA, Massive Online Analysis – MOA, MALLET)
- Julia (Flux, Knet, MLBase.jl)
- C# (ML.Net, Accord.Net)
Машинното обучение продължава да набира популярност и да разширява приложението си във всички сфери на бизнеса с всеки изминал ден. Постоянно се разработват много нови и интересни библиотеки, които да подпомогнат работата на програмистите, разработващи ML решения.
Искате да научите повече за машинното обучение?
Включете се в курса по машинно обучение и анализ на данни с Python.
Автор: Десислава Христова