(т.е. как объяснить кому-либо алгоритмы машинного обучения)

ВАЖНОЕ ПРИМЕЧАНИЕ: В первом посте этой серии я совершил ошибку, приравняв нетехнических людей к стереотипу технически безграмотной бабушки. Некоторые члены сообщества специалистов по науке о данных обратили мое внимание на сексизм и эйджизм, стоящие за этим популярным трюком. Они совершенно правы. Как женщина, я никогда не хотела бы никого ущемлять в своем сообществе, особенно людей, идентифицирующих себя с женщинами, и / или пожилых специалистов. Без сомнения, мы, молодые женщины, не смогли бы достичь того, что мы сегодня делаем, без тяжелой и часто незаметной работы тех, кто был до нас.

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

А теперь перейдем к науке о данных!

Теперь, когда мы рассмотрели градиентный спуск, линейную регрессию и логистическую регрессию в Части 1, давайте перейдем к моделям деревьев решений и случайного леса.

Деревья решений

Дерево решений - это суперпростая структура, которую мы каждый день используем в своей голове. Это просто представление о том, как мы принимаем решения, как в игре «если-то-то-то». Сначала вы начнете с вопроса. Затем вы записываете возможные ответы на этот вопрос и несколько дополнительных вопросов, пока на каждый вопрос не будет ответа.

Давайте посмотрим на дерево решений, чтобы решить, следует ли кому-то играть в бейсбол в определенный день:

Вышеупомянутое дерево начинается с вопроса: какова сегодня погода? Есть три возможных ответа: Солнечный, Пасмурно или Дождь.

  • Допустим, сегодня солнечный день: мы пойдем по ветке «Солнечный».
  • Затем ветвь «Солнечный» приводит нас к «Влажность», которая побуждает нас спросить себя, какой сегодня день - с высокой влажностью или нормальный.
  • Допустим, сегодня день с высокой влажностью. тогда мы пойдем по ветке «Высокий»
  • Поскольку на данный момент больше нет вопросов, на которые нужно отвечать, мы пришли к окончательному решению: нет, нам не следует играть в бейсбол сегодня, потому что сейчас солнечно и очень влажный

И это действительно все, что нужно для понимания деревьев решений!

…Просто шучу. Есть еще несколько быстрых вещей:

  • Деревья решений используются для моделирования нелинейных отношений (в отличие от моделей линейной регрессии и моделей логистической регрессии).
  • Деревья решений могут моделировать как категориальные, так и непрерывные переменные результата, хотя они в основном используются для задач классификации (то есть для переменных категориальных результатов).
  • Деревья решений легко понять! Вы можете легко визуализировать их и точно выяснить, что происходит в каждой точке разделения. Вы также можете увидеть, какие функции наиболее важны.
  • Деревья решений склонны к переобучению. Это связано с тем, что независимо от того, сколько раз вы обрабатываете данные в одном дереве решений, поскольку это всего лишь серия операторов «если-то-то-то», вы всегда будете иметь один и тот же точный результат. Это означает, что ваше дерево решений будет очень точно соответствовать вашим обучающим данным, но может не дать вам полезных прогнозов, когда вы передадите ему новые данные.

Итак, как дерево решений узнает, когда нужно разбить?

(Под «разделением» я подразумеваю формирование большего количества ветвей.)

Существует множество алгоритмов, которые могут использовать деревья решений, но два наиболее популярных - это ID3 (ID означает «Итеративный дихотомайзер») и CART (CART означает «Дерево классификации и регрессии»). Каждый из этих алгоритмов использует разные меры, чтобы решить, когда разделить. Деревья ID3 используют получение информации, а деревья CART используют индекс Джини.

Начнем с деревьев ID3.

ID3 деревья и получение информации

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

Но что такое получение информации? Технически говоря, получение информации - это критерий, в котором энтропия используется в качестве меры примеси. Давайте немного разберемся с этим.

Энтропия

Просто энтропия - это мера (не) порядка - она ​​говорит вам, сколько информации отсутствует или насколько беспорядочны ваши данные. То, что лишено большого количества информации, считается неупорядоченным (т. Е. Имеет высокий показатель энтропии), и наоборот.

Давайте посмотрим на конкретный пример, чтобы укрепить интуицию, лежащую в основе этого:

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

Но потом вы видите, что в шкафу есть несколько коробок и большой маркер Sharpie. Вы начинаете маркировать каждую коробку категорией вещей, которые вы планируете в нее положить. Затем вы начинаете убирать комнату и класть каждый предмет одежды / игрушку для собак / книгу в соответствующую коробку. Вы убрались в комнате! Если бы мы могли измерить энтропию комнаты сейчас, она была бы довольно низкой (а получение информации было бы высоким). Хорошая работа!

Точно так же деревья ID3 всегда будут принимать решение, которое принесет им наибольший выигрыш в информации. Больше информации = меньше энтропии. Это означает, что с каждым разбиением в дереве решений алгоритм будет двигаться в сторону все более низкой энтропии.

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

(Я) Чистота

Помимо перехода к низкой энтропии, деревья ID3 также будут принимать решение, обеспечивающее им максимальную чистоту. Деревья ID3 делают это, потому что хотят, чтобы каждое решение было максимально ясным. То, что имеет низкую энтропию, также имеет высокую чистоту. Большой объем информации = низкая энтропия = высокая чистота

Это имеет интуитивный смысл - если что-то сбивает с толку и неупорядочено (т. Е. Имеет высокую энтропию), ваше понимание этого нечеткое, неясное или нечистое.

CART Trees и индекс Джини

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

Индекс Джини в основном показывает, как часто случайно выбранная точка данных из вашего набора данных может быть неправильно классифицирована. В CART-деревьях (и в жизни) мы всегда хотим минимизировать вероятность неправильной маркировки любой части наших данных. Это действительно так просто!

Хорошо, все это имеет смысл, но как насчет нелинейных вещей, о которых вы упомянули ранее?

В Части 1 этой серии мы узнали, что линейные отношения определяются линиями.

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

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

Нелинейность на самом деле прямо противоположна этому. Вы можете думать о нелинейных данных и функциях по-разному:

  • С нелинейными данными вы не сможете визуализировать линейную плоскость, которая сегментирует ваши данные. Когда вы не можете разделить данные линейно, ваша модель зависит от нелинейной функции. Это, в свою очередь, означает, что ваша модель нелинейна!
  • В то время как линейные функции имеют постоянный наклон (поскольку небольшое изменение x приводит к такому же небольшому изменению y), нелинейные функции этого не делают. Например, их наклон может расти экспоненциально.
  • Вы также можете использовать ту же аналогию, что и в части 1, но вместо небольшого изменения в вашей независимой переменной (-х), приводящего к такому же небольшому изменению в вашей зависимой переменной, небольшое изменение в вашей независимой (-ых) переменной (-ах) приведет к в огромном или сверхмалом изменении зависимой переменной при работе с нелинейными функциями.

Деревья решений отлично подходят для моделирования нелинейных отношений, потому что они не полагаются на линейную плоскость для разделения данных. (Хотя это предложение может показаться пугающим, на самом деле это не так - мы интуитивно знаем, что деревья решений не разделяют данные линейно. Вы можете доказать это себе, просто взглянув на нашу древовидную структуру! Как бы вы сгруппировали все «да» в 1 область и все «нет» в другую область только с помощью линии? Вы не можете!)

… Хорошо, а что насчет переобучения?

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

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

Enter: Случайный лес

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

Вы говорите, ансамбль?

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

Как вы можете видеть на диаграмме слева, модель ансамбля, такая как Random Forest, представляет собой просто набор деревьев решений. Здесь вы можете видеть 3 дерева решений.

Ансамблевые модели, такие как Random Forest, разработаны для уменьшения переобучения и дисперсии за счет использования алгоритмов упаковки.

Мы знаем, что деревья решений склонны к переобучению. Другими словами, одно дерево решений может быть прекрасным средством для поиска решения конкретной проблемы, но довольно дрянным, если применить его к проблеме, которую раньше никогда не видели. Подобно пословице «две головы лучше, чем одна», ансамблевые модели используют множество деревьев решений, которые хорошо подходят для их конкретной задачи, чтобы создать более крупную модель, которая отлично подходит для многих различных задач. Подумайте об этом так: вы с большей вероятностью примете правильное деловое решение, прислушиваясь к советам одного или нескольких сотрудников, которые обладают разнообразным опытом? Наверное, последнее. М рудные деревья решений = меньше переобучения.

Хорошо, я переоснащен, но о какой разнице вы говорите?

В мире науки о данных мы должны бороться не только с переобучением. Мы также должны бороться с так называемой дисперсией.

Модель с «высокой дисперсией» - это модель, результат которой может измениться, если ее входные данные изменятся хотя бы незначительно. Подобно переобучению, это означает, что модели с высокой дисперсией плохо обобщаются на новые данные.

Мне нравится думать о дисперсии с точки зрения физического равновесия: если вы балансируете на одной ноге, стоя на твердой земле, вы вряд ли упадете. Но что, если внезапно раздаются порывы ветра со скоростью 100 миль в час? Бьюсь об заклад, ты упадешь. Это потому, что ваша способность балансировать на одной ноге сильно зависит от факторов окружающей среды. Если хоть что-то изменится, это может вас полностью испортить! Так бывает, когда модели имеют большую дисперсию. Если мы вмешаемся в какие-либо факторы в его обучающих данных, мы можем полностью изменить результат. Это нестабильно и, следовательно, не является моделью, на основе которой мы хотели бы принимать решения.

Алгоритмы упаковки

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

В машинном обучении есть слабые ученики и сильные ученики, а алгоритмы пакетирования (или алгоритмы «Bootstrap AGGregatING») имеют дело со слабыми учениками.

(У нас не будет сильных учеников, но следите за ними в будущих частях этой серии!)

Слабые ученики

Слабые ученики составляют основу моделей случайного леса.

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

… Хорошо, возвращаемся к упаковке

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

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

По сути, это просто означает, что по мере того, как алгоритм строит деревья решений со случайными выборками ваших данных, нет точек данных, которые он не мог бы использовать. Например, то, что одно дерево решений создается с 20 точками данных, не означает, что другое дерево решений также не может быть выполнено с использованием 12 из тех же 20 точек данных. Ура, вероятность!

В моделях случайного леса замечательно то, что они могут выполнять всю эту случайную выборку с заменой для каждого дерева решений одновременно (или «параллельно»). А поскольку мы живем в мире случайной выборки с заменой, мы также можем предположить, что каждое из наших деревьев решений независимо от другого.

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

… Но это еще не все!

Мало того, что каждое дерево в модели случайного леса содержит только подмножество ваших данных, каждое дерево также использует только подмножество функций (то есть столбцы) из ваших данных.

Например, предположим, что мы пытаемся классифицировать книгу как проданную или непроданную на основе автора, даты публикации, количества страниц и языка. И в нашем наборе данных 10 000 книг. В модели случайного леса не только каждое из наших деревьев решений будет использовать только случайную выборку из 10000 книг, каждое дерево решений также будет использовать только случайную выборку функций: возможно, в одном дереве решений будет использоваться автор и дата публикации, тогда как другое дерево решений будет использовать автора и количество страниц. И еще одно дерево решений может использовать язык и дату публикации. Дело в том, что когда мы усредняем прогнозы всех этих деревьев решений (то есть «слабых учеников) вместе, мы получаем сверхнадежный прогноз!

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

В этом посте мы узнали все о деревьях решений, нелинейности, переобучении и дисперсии, а также о моделях ансамбля, таких как Random Forest. Следите за Частью 3 - мы рассмотрим две линейные модели, которые немного более продвинуты, чем та, что мы рассмотрели в Части 1: SVM и Наивный байесовский метод.

Как всегда, обращайтесь ко мне с любыми исправлениями или комментариями. Вы можете связаться со мной, прокомментировав этот пост, отправив мне сообщение в LinkedIn или отправив мне электронное письмо (aulorbe [at] gmail.com).