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

В этом посте я хотел бы поделиться своим резюме после просмотра № 1 Hello World и № 2 Визуализация дерева решений в серии Рецепты машинного обучения с Джошем Гордоном от Google Developers, оба из которых являются отличными материалами для разработчиков и не-разработчики, которые хотят начать работу с базовым машинным обучением. На самом деле, серия видео состоит из 10 эпизодов, поэтому я буду следовать руководству Гордона по базовому обучению с учителем, а вы, ребята, сможете написать код вместе со мной!

Предпосылки

  • Python 3 (или Python 2), но я вставлю код Python 3 в этот пост.
  • Некоторый опыт работы с Numpy, Pandas и Scikit-Learn.
  • Самое главное, любопытство узнать, как работает контролируемое обучение!

Привет, мир — рецепты машинного обучения №1

Машинное обучение — это подраздел искусственного интеллекта. Ранние программы искусственного интеллекта обычно преуспевали только в одном: например, Deep Blue мог играть в шахматы на уровне чемпионата, но это все, на что он был способен. Однако с появлением больших данных и вычислительных возможностей мы можем начать писать программу, которая может достаточно хорошо обобщать, и ее не нужно переписывать. Напомним, что машинное обучение — это алгоритмы, которые могут учиться на примерах и опыте.

Гордон указал, что машинное обучение необходимо для решения некоторых задач, которые могут показаться «простыми», например классификации изображений. Имея изображения яблока и апельсина, как мы можем написать программу, чтобы определить такую ​​разницу? Обычный подход к программированию включает в себя жестко запрограммированные правила, например подсчет синих, красных и зеленых пикселей (определение цвета), обнаружение краев, анализ формы, оценку текстуры и т. д.. Но по мере того, как вы углубляетесь в проблему, правила начинают нарушаться и, следовательно, не могут быть обобщены, особенно в случае изображения в градациях серого, где дисперсия очень высока. Вот почему нам нужен алгоритм, который может найти правила для нас, и обучение классификатора поиску шаблонов в примерах является хорошей отправной точкой.

В видео Гордон представил: «Шесть строк Python — это все, что нужно для написания вашей первой программы машинного обучения!». Я исправил фрагмент кода здесь с комментариями для каждой строки.

Визуализация дерева решений — рецепты машинного обучения №2

В предыдущем эпизоде ​​мы просто написали 6 строк кода, чтобы найти закономерности в данных, не зная, что скрывается под капотом. (также называется черным ящиком.) Поэтому мы можем добавлять коды, помогающие визуализировать и понять, почему классификатор принимает такое решение. Возможно, вы слышали о методе опорных векторов (SVM) или Deep Neural. сети, но эти модели страдают от глубокого понимания формы аппроксимируемой функции. Дерево решений, с другой стороны, идеально подходит для фиксации взаимодействий между объектами в данных и имеет очень хорошую визуализацию с узлами и ребрами на каждом этапе принятия решения, что очень полезно на практике. Позже в этой серии обзоров с Джошем Гордоном мы углубимся в технические детали дерева решений. Если вас сейчас интересуют технические детали, обратитесь к Интерпретируемому машинному обучению: Руководство по созданию объяснимых моделей черного ящика.





Хорошо, давайте приступим к делу, взглянув на следующий фрагмент кода.

Допустим, у нас есть следующая матрица тестовых данных, элементы которой соответствуют различным характеристикам радужной оболочки: 'длина чашелистика (см)', 'ширина чашелистика (см)', "длина лепестка (см)" и "ширина лепестка (см)" соответственно. Мы можем сделать прогноз из первого наблюдения на основе рисунка 5, начав с вопроса, меньше или равна ли длина лепестка 2,45 см? Ответ: Да! Таким образом, мы получаем класс предсказания как «setosa».

Как насчет второго наблюдения? У этого длина лепестков больше 2,45 см, больше 1,75 см, меньше 4,85 см. Затем мы задаем другой вопрос, если ширина чашелистика меньше 3,1 см. Ответ - нет! Таким образом, мы в конечном итоге предсказываем, что это наблюдение относится к лишайному.

На этом этапе вы понимаете, как визуализировать дерево решений и осмысленно интерпретировать его. Если следовать той же логике, третье наблюдение будет простым. И прогнозируемый класс — «virginica».

Дополнительные ресурсы