З чого почати роботу з ML і DL. Огляд кращих бібліотек
У січні вийшла моя стаття про типи машинного навчання і способи їх застосування для повсякденних завдань. Спасибі всім за фідбек і коментарі: особливо часто мене запитували про те, як всі описані методи і алгоритми можна «помацати» і втілити. У цій статті я підкажу способи.
Сьогодні існує величезна кількість бібліотек для машинного і глибокого навчання. Щоб полегшити завдання вибору для новачків, ми розглянемо тільки найпопулярніші і необхідні бібліотеки, які покривають всі базові потреби для початку роботи з ML і DL.
Мова програмування: Python або R?
Мова R створювався для вирішення завдань статистики і дуже популярний серед дата-аналітиків. Його основна проблема — він погано підходить для вирішення завдань, не пов'язаних з аналізом і візуалізацією даних.
У свою чергу Python — мова загального призначення і може бути успішно застосований для вирішення різних завдань.
Саме тому в останні пару років Python набрав величезну популярність і став lingua franca в співтоваристві машинного навчання. Практично будь-яка сучасна ML або DL бібліотека надає Python API.
Тому зараз завдання вибору сильно спростилася: використовуйте Python і не помилитеся.
Сам мова дуже простий і тому легкий у вивченні. Тим більше, що для застосування в машинному навчанні не потрібно знати всі його тонкощі.
Jupyter Notebook: робота з даними, кодом і графіками
Якщо в традиційному програмуванні більшу частину часу ви проводите в текстових редакторах або IDE-шки, то Data Science велика частина коду пишеться в Jupyter Notebook .
Це простий і потужний інструмент для аналізу даних. Він дозволяє писати код на Python, R і інших мовах, додавати текстові описи у Markdown, вбудовувати графіки і діаграми безпосередньо в інтерактивну веб-сторінку.
Плюс до всього, Google випустив безкоштовний сервіс Google Colab , який надає хмарну версію Jupyter Notebook і дає можливість виробляти обчислення на CPU і GPU. Усі потрібні питоновские ML бібліотеки вже встановлені, так що можна починати відразу там, якщо лінь встановлювати всі локально.
Scikit-learn: краща бібліотека для класичних алгоритмів ML
Scikit-learn — одна з найпопулярніших ML бібліотек на сьогодні. Вона підтримує більшість алгоритмів навчання, як з вчителем, так і без: лінійна і логістична регресія, метод опорних векторів (SVM), Naive Bayes класифікатор, градієнтний бустинг, кластеризація, KNN, k-середні і багато інших.
Крім цього, Scikit-learn містить безліч корисних утиліт для підготовки даних і аналізу результатів. Ця бібліотека в основному призначена для класичних алгоритмів машинного навчання, тому її функціонал для нейронних мереж дуже обмежений, а для задач глибокого навчання вона не може бути використана зовсім.
В доповнення до дуже якісної документації , Scikit-learn містить розділ з туториалами , в якому показано, як працювати з бібліотекою, а також даються базові знання з машинного навчання.
Pandas: отримання та підготовка даних
Аналіз і підготовка даних часто займає більшу частину часу при вирішенні ML завдань. Дані можуть бути отримані в CSV, JSON, Excel або іншому структурованому (або не дуже) форматі, і вам потрібно обробити їх для того, щоб використовувати ML моделях.
Для цих цілей використовується бібліотека Pandas . Це потужний інструмент, який дозволяє швидко аналізувати, модифікувати і готувати дані для подальшого використання в інших ML і DL бібліотеках, таких як Scikit-learn, TensorFlow або PyTorch.
У Pandas можна завантажувати дані з різних джерел: SQL баз, CSV, Excel, JSON файлів і інших менш популярних форматів.
Коли дані завантажені в пам'ять, з ними можна виконувати безліч різних операцій для аналізу, трансформації, заповнення відсутніх значень і очищення набору даних. Pandas дозволяє виконувати безліч SQL-подібних операцій над наборами даних: об'єднання, угруповання, агрегування і т. п. Також вона надає вбудований набір популярних статистичних функцій для базового аналізу.
Jupyter Notebook також підтримує Pandas і реалізує гарну візуалізацію його структур даних.
Сайт Pandas містить дуже детальну документацію . Але почати можна з 10-хвилинного туториала , який показує всі основні фішки і можливості бібліотеки.
Бібліотека NumPy: багатовимірні масиви і лінійна алгебра
Основний функціонал NumPy полягає у підтримці багатовимірних масивів даних і швидких алгоритмів лінійної алгебри. Саме тому NumPy — ключовий компонент Scikit-learn, SciPy і Pandas.
Зазвичай NumPy використовують як допоміжну бібліотеку для виконання різних математичних операцій зі структурами даних Pandas, тому варто вивчити її базові можливості.
Для цього відмінно підійде вступний туторіал по Numpy , а також основи NumPy .
Matplotlib і Seaborn: побудова графіків та візуалізація даних
Matplotlib — це стандартний інструмент у наборі дата-інженера. Він дозволяє створювати різноманітні графіки та діаграми для візуалізації отриманих результатів.
Графіки, створені в Matplotlib, легко інтегруються в Jupyter Notebook. Це дає можливість візуалізувати дані та результати, отримані при обробці моделей.
Для цієї бібліотеки створено безліч додаткових пакетів. Один з найбільш популярних — це Seaborn . Його основна фішка — готовий набір найбільш часто використовуваних статистичних діаграм і графіків.
Традиційно, обидві бібліотеки мають розділ з туториалами на їх сайтах, але більш ефективним підходом буде зареєструватися на сайті Kaggle і подивитися в розділі «Kernels» готові приклади використання, наприклад, Comprehensive Data Exploration with Python .
Tensorflow і Keras: бібліотеки глибокого навчання
Будь-яка бібліотека глибокого навчання містить три ключові компоненти: багатовимірні масиви (вони ж тензори), оператори лінійної алгебри та обчислення похідних.
У Tensorflow , бібліотеці глибокого навчання від Google, відмінно реалізовані всі три компоненти. Поряд з CPU, вона підтримує обчислення на GPU і TPU (тензорних процесорах Google).
В даний час це найбільш популярна бібліотека глибокого навчання, внаслідок чого за нею створено безліч туториалов і онлайн-курсів. Але зрілість має і зворотний бік — досить кострубатий API і більш високий поріг входу, порівняно з тією ж PyTorch.
Keras — це надбудова над Tensorflow, яка вирішує безліч юзабіліті-проблем останньої. Її головна фішка — це можливість будувати архітектуру нейронної мережі з використанням красивого Python DSL. Для Keras також написано безліч навчальних матеріалів, тому розібратися з нею нескладно.
PyTorch: альтернативна бібліотека глибокого навчання
Мабуть, PyTorch — це друга за популярністю DL бібліотека після Tensorflow, яка створена в Facebook. Її сильна сторона в тому, що вона була розроблена для Python, і тому використовує його стандартні ідіоми. Порівняно з Tensorflow, тут поріг входу набагато нижче, а будь-яку нейронну мережу можна побудувати з використанням стандартних ООП класів і об'єктів.
Її легше налагоджувати, тому що код виконується як звичайний Python код — ні етапи компіляції, як в TensorFlow. Тому можна користуватися навіть питоновским відладчиком.
Якщо порівнювати з Keras, PyTorch — більш багатослівний, але менш магічний.
У PyTorch теж є своя надбудова — це бібліотека fastai . Вона дозволяє вирішити більшість стандартних DL завдань в пару рядків коду. Але що робить fastai дійсно особливою — це їх неймовірний онлайн-курс Practical Deep Learning for Coders .
На що звернути увагу
Незважаючи на дуже розвинену екосистему, є явні лідери, найбільш широко застосовуються в світі машинного і глибокого навчання. Роблячи перші кроки в ML, краще використовувати саме їх, оскільки для них створені докладні туторіали, онлайн-курси, а також є активні ком'юніті .
Щоб зробити процес навчання більш гладким, є сенс почати експерименти з класичних завдань ML і сфокусуватися на використанні Scikit-learn і Pandas. І після цього вже рухатися в бік глибокого навчання.
Якщо ви ставите питанням, яку DL бібліотеку краще вибрати: TensorFlow/Keras або PyTorch, то найкращою відповіддю буде знайти онлайн-курс, який вам подобається, і курс зробить вибір за вас.
Після ознайомлення з основними інструментами і хоча б базового розуміння, що вони дозволяють робити, наступний важливий крок — вибір навчальних матеріалів. Курсів за ML і DL існує величезна безліч і часу пройти всі просто не вистачить. Тому в наступній статті ми обговоримо найкращі, на мій погляд, варіанти по цим темам, а також подальші кроки після їх проходження.
Опубліковано: 15/02/19 @ 11:00
Розділ Різне
Рекомендуємо:
Кириличний домен або домен на латиниці – що краще для SEO
DOU Проектор: MiRONAFT FabLab – найбільша в Україні лабораторія робототехніки, відкрита для всіх
Сайт не шукається в ТОП-100 Яндекса, що робити?
Брюссель очима інженера – про життя в Бельгії і складнощі релокації
Різко впали позиції однієї сторінки в Яндексі – що робити?