Ребенок учится ползать, ходить, а затем бегать. Мы находимся на этапе сканирования, когда дело доходит до применения машинного обучения.

На мой взгляд, большинство руководств по машинному обучению недостаточно удобны для начинающих. Эта статья предназначена для начинающих и предполагает НУЛЕВОЕ знание машинного обучения. Мы узнаем, что такое машинное обучение и как оно работает, с нуля.

Готовый? Давайте углубимся.

Введение в машинное обучение

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

Том Митчелл дает более современное определение: «Говорят, что компьютерная программа учится на опыте E в отношении некоторого класса задач T и показателя производительности P, если ее производительность при выполнении задач в T, измеряемая P, улучшается с опытом E. ” Нам нужно больше концептуального понимания, чтобы понять, что это значит (давайте вернемся к этому позже).

Машинное обучение — это метод анализа данных, который автоматизирует построение аналитической модели.

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

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

С чего начинается процесс обучения?

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

Машина «учится», используя старые/прошлые данные, чтобы получить информацию о наиболее вероятном событии, которое произойдет. Если старые данные очень похожи на новые данные, то то, что вы можете сказать о старых данных, вероятно, будет иметь отношение к новым данным. Это как оглядываться назад, чтобы смотреть вперед (что-то вроде «Назад в будущее» 😉).

Применение ML в реальных сценариях

  • Алгоритмы машинного обучения, вероятно, стоят за некоторыми интернет-магазинами. Такие компании, как Amazon, используют эту технологию, чтобы предлагать персонализированные услуги и рекомендации. Машинное обучение позволяет ритейлерам предлагать вам персонализированные рекомендации на основе ваших предыдущих покупок или действий.
  • Системы распознавания голоса, такие как Google Assistant, Siri и Cortana, используют машинное обучение для имитации человеческого взаимодействия.
  • Карты Google анализируют скорость трафика с помощью анонимных данных о местоположении со смартфонов. Это позволяет нам сократить время в пути, получая предложения по более быстрым маршрутам.
  • Некоторые поисковые системы предлагают рекомендации на основе предыдущих результатов поиска, что также является примером использования машинного обучения.

И многое другое…

Типы алгоритмов машинного обучения

Алгоритмы машинного обучения можно разделить на три:

  • Контролируемое обучение (управляемое задачами)
  • Неконтролируемое обучение (управляемое данными)
  • Обучение с подкреплением (обучение из окружающей среды)

Вау! Вам может быть интересно, что все эти термины? Позвольте мне объяснить это простыми словами.

Контролируемое обучение

Предположим, что у вас есть вход x и выход y. Обучение с учителем — это когда алгоритм используется для изучения сопоставления между переменными x и . >y в виде функции y = f(x).

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

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

Неконтролируемое обучение

Неконтролируемое обучение — это когда у вас есть только входные данные x и нет соответствующих выходных переменных.

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

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

Обучение с подкреплением

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

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

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

С чего начать машинное обучение

  • Прежде всего, изучите (и/или) повторите линейную алгебру. Массачусетский технологический институт предоставил удивительный открытый курс по линейной алгебре. Это должно познакомить вас со всеми основными понятиями линейной алгебры, и вам следует обратить особое внимание на векторы, умножение матриц, определители и разложение собственных векторов — все это играет важную роль в работе алгоритмов ML.
  • После этого исчисление должно быть вашим следующим фокусом. Здесь вас должно больше всего заинтересовать изучение и понимание значения производных и того, как мы можем использовать их для оптимизации. Вы должны обязательно пройти все темы в Исчислении с одной переменной и по крайней мере в первых двух разделах Многомерного исчисления.
  • Подробно изучите библиотеки Python, используемые в машинном обучении, в основном Numpy, Pandas, Matplotlib и SKLearn. Машинное обучение без всего этого, то, что я люблю называть «инструментами», было бы довольно сложным.
  • Получить кодирование! Всегда полезно реализовать все алгоритмы с нуля на Python, прежде чем использовать готовые модели в SciKit-Learn, так как это дает вам лучшее и глубокое понимание того, как это работает. Вы можете начать с них в произвольном порядке:
  1. Линейная регрессия
  2. Логистическая регрессия
  3. Наивный байесовский классификатор
  4. K-ближайшие соседи (KNN)
  5. Кластеризация K-средних
  6. Метод опорных векторов (SVM)
  7. Деревья решений
  8. Случайные леса
  9. Повышение градиента

Дорожная карта реализации алгоритма

  • Получите данные для работы. В Интернете доступны миллионы наборов данных, которые удовлетворят даже самые необычные ваши потребности. Kaggle и UCI — отличные ресурсы для поиска наборов данных. Можно также сгенерировать собственный набор данных для некоторых реализаций алгоритма.
  • Выбор алгоритма(ов). Когда у вас есть данные в удобном месте для работы с ними, вы можете начать пробовать различные алгоритмы. Изображение ниже является приблизительным руководством. (Из документации SKLearn)

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

  • Визуализируйте данные: в Python есть различные библиотеки, такие как Matplotlib и Seaborn, которые помогают нам отображать данные, а также лучше понимать данные и то, что нужно делать. Используйте их для изучения ваших данных.
  • Настройте алгоритм: все модели, которые мы реализуем, имеют множество кнопок и ручек, с которыми можно поиграться, более известных как гиперпараметры. Скорость обучения, значение k и т. д. — все это можно изменить, чтобы получить наилучшую возможную модель.
  • Оцените модель. Библиотека Python, SKLearn, предоставляет множество инструментов для оценки вашей модели и проверки таких показателей, как точность, прецизионность и т. д.

Вывод

Как только вы познакомитесь с несколькими алгоритмами и концепциями, приступайте к одному краткосрочному проекту (проектам), который не является сверхсложным (для начала). Не бойтесь потерпеть неудачу. Поначалу большая часть вашего времени будет потрачена на то, чтобы разобраться с математикой или понять, как и почему выскочила ошибка. Но главное упорство. Эти маленькие модели — песочница, где можно многому научиться на ошибках — так что используйте их и пробуйте все, даже если это не имеет смысла для кого-то другого. Если это имеет смысл для вас, это может оказаться наиболее подходящей моделью.

Лучший способ обойти библиотеки Python — это либо пройти курсы Datacamp, либо напрямую ознакомиться с их официальной документацией. Если вы действительно хотите глубоко погрузиться в машинное обучение, я бы порекомендовал вам начать с Курса машинного обучения Эндрю Нг на Coursera (или) курса CS-229 Стэнфордского университета.

Посмотрите мой блог здесь.

Я ушел, ~Пуф~!

Первоначально опубликовано на https://the-minimalist.now.sh 20 марта 2020 г.