TL;DR

Совет 1. Создавайте случайные модели леса, используя h2o.ai вместо scikit-learn.

Совет 2: предоставьте пояснения к местной модели с помощью LIME.

Я расскажу вам, как, почему и простой способ сделать это ниже.

Кому следует это читать?

Эта статья предназначена для двух аудиторий:

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

Совет 1. Создавайте случайные модели леса, используя h2o.ai вместо scikit-learn

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

Допустим, у вас есть две характеристики: возраст (непрерывный) и образование (четыре уровня: средняя школа, бакалавр, магистр и доктор философии). Одно горячее кодирование превращает эти две функции в пять функций. Когда дерево решений выбирает лучшую характеристику для разделения в узле, если один из категорийных уровней индивидуально не имеет большей предсказательной силы, чем возраст, непрерывная функция обычно выбирается первой. Следовательно, если вы когда-нибудь смотрели на графики важности функций scikit-learn, вы заметите, что непрерывные переменные обычно находятся наверху.

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

С другой стороны, h2o.ai проверяет вышеуказанные условия, но также проверяет составные условия. Сложные состояния - это когда разные категориальные уровни сгруппированы в один. Например, если точки данных имеют значение «Средняя школа» или «Бакалавр», то переместите точки данных влево от узла или вправо. Все остальные комбинации уровней также проверяются на разбиение. Например, старшая школа или магистр, бакалавр или доктор философии, старшая школа или бакалавр или магистр (это похоже на однократно закодированное значение доктора философии) и т. Д. Эти дополнительные сложные условия приводят к большей вероятности категориального переменная выбирается для разделения. Однако имейте в виду, что, поскольку эти реализации проверяют дополнительные составные условия, время их обучения обычно больше, чем реализация scikit-learn.

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

Если вы никогда не строили модель с помощью h2o.ai, не волнуйтесь, я вас поддержу. В конце этой статьи есть ссылка на блокнот Jupyter с простым примером. Это довольно просто!

Совет 2. Предоставьте пояснения к местной модели с помощью LIME

LIME расшифровывается как Local Interpretable Model-Agnostic Explanations. В то время как важность функции случайного леса обеспечивает глобальное объяснение прогнозов, LIME позволяет вам получить интерпретацию для каждого прогноза в вашем наборе тестов. Если вы никогда раньше не слышали о LIME, вот хороший ресурс, чтобы понять, как это работает, и указывает на исходную статью и пакет Python.

Ниже приводится объяснение единственного прогноза из известного набора данных Титаника.

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

К сожалению, использование LIME с h2o.ai может сбивать с толку, но чтобы помочь вам, я написал пакет под названием limewrapper, чтобы упростить процесс разработки функций, чтобы можно было легко использовать LIME с h2o.ai. Найти и установить пакет можно здесь. Если вы хотите сразу погрузиться в ситуацию, вот пример блокнота, в котором я покажу вам, как построить простую случайную модель леса (классификатор и регрессор) с помощью h2o.ai и как получить локальные объяснения с помощью пакета limewrapper.

Имея эти два совета в рукаве, у вас не должно возникнуть проблем с тем, чтобы произвести впечатление на интервьюеров или развеять некоторые (но не все) опасения скептиков из бизнеса.

Надеюсь, это поможет в вашем путешествии по науке о данных. Подробнее о моем путешествии вы можете узнать здесь. Если у вас есть какие-либо вопросы, вы можете связаться со мной через LinkedIn - www.linkedin.com/in/joelprince. Рад поболтать!

Если вам понравилась эта статья, посмотрите:

  1. Мое первое резюме по науке о данных
  2. От аспиранта до специалиста по данным: мои два цента на успешный переход