Простое объяснение с примерами из математики, программирования и реальной жизни.


Для кого это руководство?

  • Для технических специалистов, которые хотят повторить основы машинного обучения.
  • Для тех, кто не смыслит в технике, но хочет ознакомиться с машинным обучением и не знает, с чего начать.
  • Для тех, кто считает, что машинное обучение “тяжело” освоить.

Почему именно машинное обучение?

Искусственный интеллект влияет на наше будущее значительнее, чем любая другая инновация. Скорость развития ИИ поразительна: быстро растущее количество и разнообразие доступных данных, более дешевая и мощная вычислительная обработка, доступные хранилища данных.

В этой статье вы ознакомитесь с основами машинного обучения и алгоритмами, которые лежат в основе технологий, влияющих на нашу повседневную жизнь. Вы узнаете, как они функционируют, а также какие инструменты использовать для построения схожих моделей и приложений.

Подготовка к изучению машинного обучения

Чтобы разобраться в представленных концепциях, нужно обладать следующими знаниями:

  • Углубленные знания начального уровня алгебры: Вы должны разбираться в таких понятиях, как переменные, коэффициенты, линейные уравнения, исчисления, а также графики.
  • Владение основами программирования, а также опыт написания кода на Python: Опыт в машинном обучении не требуется, однако вы должны уметь читать и писать код Python с базовыми конструкциями, такими как определения функций, списки, словари, циклы и условные выражения.
  • Базовые знания следующих библиотек Python:
  1. NumPy
  2. Pandas
  3. SciKit-Learn
  4. SciPy
  5. Matplotlib (и/или Seaborn)

Семантическое дерево:

Искусственный интеллект — это наука об агентах, которые воспринимают окружающий мир, формируют планы и принимают решения для достижения целей.

Машинное обучение — это подраздел искусственного интеллекта. Его цель заключается в том, чтобы научить компьютеры обучаться самостоятельно. С помощью алгоритма обучения машина может определять закономерности в указанных данных, выполнять построение модели и предсказывать вещи без явно запрограммированных правил и моделей.

Семантическое дерево

Что такое машинное обучение?

Артур Сэмюэл описывает машинное обучение как: “Область науки, благодаря которой компьютеры могут обучаться без явного программирования.” Это старое и неформальное определение, которое на данный момент почти потеряло смысл.

Том Митчелл дает более современное определение: “Компьютерная программа обучается на основе опыта E по отношению к некоторому классу задач T и меры качества P, если качество решения задач из T, измеренное на основе P, улучшается с приобретением опыта E.”

Простыми словами, смысл машинного обучения заключается в том, что базовые алгоритмы могут предоставить информацию о наборе данных без написания кода для решения этой проблемы вручную. Вместо написания кода, вы предоставляете данные для базового алгоритма, а он формирует собственные выводы на основе этих данных.

Алгоритмы машинного обучения относятся к следующим категориям: обучение с учителем (Supervised Learning), обучение без учителя (Unsupervised Learning) и обучение с подкреплением (Reinforcement Learning).

  • Supervised Learning: Алгоритм обучения с учителем принимает маркированные данные и создает модель, которая выполняет предсказания, предоставляя новые данные. Это могут быть как задачи классификации, так и задачи регрессии.
  • Unsupervised Learning: Приобучении без учителя предоставляются непомеченные и неклассифицированные данные, в которых нужно найти закономерности и создать структуру данных для получения значения. Формы обучения без учителя: кластеризация (clustering) и уменьшение размерности (dimensionality reduction).
  • Reinforcement Learning: Обучение с подкреплением использует систему поощрений и метод проб и ошибок в целях максимизации долгосрочного поощрения.
Рабочий процесс машинного обучения

Roadmap для начала изучения машинного обучения:

  1. Начать стоит с изучения/повторения линейной алгебры. MIT предоставляет отличный open course по линейной алгебре, с помощью которого можно ознакомиться с ключевыми концепциями. Особое внимание следует уделить изучению векторов, умножению матриц, детерминантам и спектральному разложению матрицы — они играют важную роль в работе алгоритмов машинного обучения.
  2. Затем уделите внимание высшей математике. Изучите производные и способы их использования для оптимизации. Обязательно разберите все темы в Single Variable Calculus и (как минимум) первые два раздела Multivariable Calculus.
  3. Изучите библиотеки Python, используемые в машинном обучении, такие как Numpy, Pandas, Matplotlib и SKLearn. Разобраться в машинном обучении без этих ‘инструментов’ будет довольно сложно.
  4. Начните программировать! Советую реализовать все алгоритмы из scratch вPython, прежде чем использовать готовые модели в SciKit — Learn, чтобы разобраться, как все это работает. Я делал алгоритмы в следующем порядке по возрастанию сложности:
  • Линейная регрессия (Linear Regression)
  • Логистическая регрессия (Logistic Regression)
  • Наивный байесовский классификатор (Naive Bayes Classifier)
  • Метод k-ближайших соседей (K — Nearest Neighbors — KNN)
  • Метод k-средних (K — Means)
  • Метод опорных векторов (Support Vector Machine — SVM)
  • Дерево принятия решений (Decision Trees)
  • Random Forests
  • Gradient Boosting

Roadmap для реализации алгоритма:

  1. Соберите данные для работы. В интернете доступны миллионы наборов данных, удовлетворяющих даже самым причудливым потребностям. Kaggle и UCI— отличные ресурсы для просмотра наборов данных. Вы также можете сгенерировать собственные данные.
  2. Выберите алгоритм(ы). После сбора данных можно начать работу над алгоритмами. На изображении показан приблизительный ориентир. (Из документации SKLearn)

На этой стадии следует пройтись по краткой теории каждого алгоритма, которые я разместил на Github с каждой реализацией. 

3. Визуализируйте данные! В Python есть множество библиотек, таких как Matplotlib и Seaborn, с помощью которых можно выстроить данные в график и получить финальный результат. Таким образом, вам будет легче разобраться в данных и в том, какие действия они выполняют. (и конечно, сделать крутую модель!)

4. Настройте алгоритм. Все реализованные модели обладают множеством кнопок и рычагов, известными как гиперпараметры. Коэффициент скорости обучения, значение k и т. д. — все это можно изменить, чтобы получить наилучшую из возможных моделей.

5. Оцените модель. БиблиотекаPython SKLearn предоставляет множество инструментов для анализа модели и проверки показателей, таких как правильность, показатель f1, точность и т. д.


Примечания:

  • Ознакомившись с несколькими алгоритмами и концепциями, попробуйте выполнить один или несколько простых и краткосрочных проектов (для начала).
  • Не бойтесь совершать ошибки. По-началу вы будете тратить большую часть времени на попытки разобраться в математике и причинах возникновения ошибок. Однако терпение — ключ к успеху.
  • Маленькие модели — основа для изучения чего-то большего. Пробуйте все подряд и тогда у вас получится создать лучшую модель.
  • Наилучший способ изучить библиотеки Python — пройти Datacamp courses или начать с изучения документации.

Все вышеописанное можно найти на Github в репозитории Machine-Learning. Все алгоритмы систематизированы, как с реализациями из scratch, так и с использованием SciKit-Learn. Также представлены используемые наборы данных и краткая теория о работе алгоритмов вместе с примерами из реальной жизни.


Перевод статьи Shaurya Bhandari: A Beginner’s Guide to Machine Learning

Предыдущая статьяЧистый код в Android
Следующая статья10 лайфхаков для работы с библиотекой Pandas