Machine Learning: Инструменти за програмисти

Притежаването на добри познания по програмиране е важно за програмистите, които се занимават с машинно обучение, защото това им предоставя неограничени възможности както при изграждане на модели, така и при интегриране на съществуващи такива в проекти.

Каква е ролята на програмирането в машинното обучение?

Със създаването на 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.

Научете повече

Автор: Десислава Христова