Выберите какая метка соответствует листу дерева с наибольшим количеством обучающих примеров

Обновлено: 28.05.2024

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

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

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

  1. Является ли этот человек близким другом или просто знакомым? Если человек просто знакомый, то отклоните просьбу; если человек друг, то переходите к следующему шагу.
  2. Человек просит машину в первый раз? Если это так, одолжите им машину, в противном случае переходите к следующему шагу.
  3. Была ли машина повреждена в прошлый раз, когда они возвращали машину? Если да, отклоните просьбу; если нет, одолжите им машину.

Дерево решений для вышеупомянутого сценария выглядит следующим образом:

Преимущества деревьев решений

Использование деревьев решений для прогнозного анализа имеет ряд преимуществ:

  1. Деревья решений могут быть использованы для прогнозирования как непрерывных, так и дискретных значений, т. е. они хорошо работают как для задач регрессии, так и для задач классификации.
  2. Они требуют относительно меньших усилий для обучения алгоритма.
  3. Они могут быть использованы для классификации нелинейно разделимых данных.
  4. Они очень быстры и эффективны по сравнению с KNN и другими алгоритмами классификации.

Реализация деревьев решений с помощью Python Scikit Learn

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

Примечание : Задачи классификации и регрессии были выполнены в записной книжке Jupyter IPython.

1. Дерево решений для классификации

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

Набор данных

Набор данных для этой задачи можно загрузить по этой ссылке:

Набор данных для этой задачи можно загрузить по этой ссылке:

Для получения более подробной информации об этом наборе данных ознакомьтесь с UCI ML repo для этого набора данных.

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

Импорт библиотек

Следующий сценарий импортирует необходимые библиотеки:

Импорт набора данных

Импорт набора данных

Импорт набора данных

Анализ данных

Выполните следующую команду, чтобы увидеть количество строк и столбцов в нашем наборе данных:

Результат покажет “(1372,5)”, что означает, что наш набор данных имеет 1372 записи и 5 атрибутов.

Выполните следующую команду для проверки первых пяти записей набора данных:

Результат будет выглядеть следующим образом:

0 -0.44699 -2.8073 8.6661 3.62160 0
0 -1.46210 -2.4586 8.1674 4.54590 1
0 0.10645 1.9242 -2.6383 3.86600 2
0 -3.59440 -4.0112 9.5228 3.45660 3
0 -0.98880 4.5718 -4.4552 0.32924 4

Подготовка данных

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

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

Здесь переменная X содержит все столбцы из набора данных, кроме столбца “Класс”, который является меткой. Переменная y содержит значения из столбца “Класс”. Переменная X – это наш набор атрибутов, а переменная y содержит соответствующие метки.

Заключительный этап предварительной обработки состоит в том, чтобы разделить наши данные на обучающие и тестовые наборы. Библиотека model_selection Scikit-Learn содержит метод train_test_split , который мы будем использовать для случайного разделения данных на обучающие и тестовые наборы. Для этого выполните следующий код:

В приведенном выше коде параметр test_size указывает отношение тестового набора, которое мы используем для разделения 20% данных в тестовом наборе и 80% для обучения.

Обучение и составление прогнозов

После того, как данные были разделены на обучающие и тестовые наборы, последний шаг состоит в том, чтобы обучить алгоритм дерева решений на этих данных и сделать прогнозы. Scikit-Learn содержит библиотеку tree , которая содержит встроенные классы/методы для различных алгоритмов дерева решений. Поскольку мы собираемся выполнить здесь задачу классификации, мы будем использовать класс DecisionTreeClassifier для этого примера. Метод fit этого класса вызывается для обучения алгоритма на обучающих данных, которые передаются в качестве параметра методу fit . Выполните следующий сценарий для обучения алгоритма:

Теперь, когда наш классификатор обучен, давайте сделаем прогнозы по тестовым данным. Для составления прогнозов используется метод predict класса Decision Tree Classifier|/. Взгляните на следующий код для использования:

Оценка алгоритма

На данный момент мы обучили наш алгоритм и сделали некоторые прогнозы. Теперь посмотрим, насколько точен наш алгоритм. Для задач классификации обычно используются такие метрики, как матрица путаницы , точность, отзыв и оценка F1 . К счастью для нас, библиотека Scikit=-Learn metrics содержит методы classification_report и confusion_matrix , которые могут быть использованы для расчета этих метрик для нас:

Это приведет к следующей оценке:

Из матрицы путаницы вы можете видеть, что из 275 тестовых экземпляров наш алгоритм неправильно классифицировал только 4. Это 98,5 % точности. Не так уж и плохо!

2. Дерево решений для регрессии

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

Набор данных

Набор данных, который мы будем использовать для этого раздела, такой же, как и в статье о линейной регрессии. Мы будем использовать этот набор данных, чтобы попытаться предсказать потребление газа (в миллионах галлонов) в 48 штатах США на основе налога на газ (в центах), дохода на душу населения (в долларах), мощеных автомагистралей (в милях) и доли населения с водительскими правами.

Набор данных доступен по этой ссылке:

Набор данных доступен по этой ссылке:

Подробности набора данных можно найти в оригинальном источнике .

Первые два столбца в приведенном выше наборе данных не содержат никакой полезной информации, поэтому они были удалены из файла набора данных.

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

Импорт библиотек
Импорт набора данных
Анализ данных

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

Вывод выглядит следующим образом:

9.0 0 3571 1976 541 0.525
9.0 1 4092 1250 524 0.572
9.0 2 3865 1586 561 0.580
7.5 3 4870 2351 414 0.529
8.0 4 4399 431 410 0.544

Вывод выглядит следующим образом:

48.000000 Вывод выглядит следующим образом: 48.000000 48.000000 48.000000 48.000000
7.668333 Вывод выглядит следующим образом: 4241.833333 5565.416667 576.770833 0.570333
0.950770 станд 573.623768 3491.507166 111.885816 0.055470
5.000000 минута 3063.000000 431.000000 344.000000 0.451000
7.000000 25% 3739.000000 3110.250000 509.500000 0.529750
7.500000 50% 4298.000000 4735.500000 568.500000 0.564500
8.125000 75% 4578.750000 7156.000000 632.750000 0.595250
10.000000 максимум 5342.000000 17782.000000 986.000000 0.724000
максимум

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная y содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная X содержит набор атрибутов, а переменная y содержит соответствующие метки.

Здесь переменная || X || содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная || y || содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная || X || содержит набор атрибутов, а переменная || y || содержит соответствующие метки.

Здесь переменная || X || содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная || y || содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная || X || содержит набор атрибутов, а переменная || y || содержит соответствующие метки.

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная y содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная y содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

699 631.0 41
561 524.0 2
525 510.0 12
640 704.0 36
648 524.0 38
498 510.0 9
460 510.0 24
508 603.0 13
644 631.0 35

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

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

Для оценки эффективности регрессионного алгоритма обычно используются следующие метрики: || средняя абсолютная ошибка||, || среднеквадратичная ошибка || и ||

Средняя абсолютная ошибка для нашего алгоритма составляет 54,7, что составляет менее 10 процентов от среднего значения всех значений в столбце “Petrol_Consumption”.

Средняя абсолютная ошибка для нашего алгоритма составляет 54,7, что составляет менее 10 процентов от среднего значения всех значений в столбце “Petrol_Consumption”.

Хотите узнать больше о Scikit-Learn и других полезных алгоритмах машинного обучения? Я бы рекомендовал проверить некоторые более подробные ресурсы, такие как онлайн-курс:

Вывод

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

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

Дерево решений — эффективный инструмент интеллектуального анализа данных и предсказательной аналитики. Он помогает в решении задач по классификации и регрессии.

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

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

дерево классификации — когда целевая переменная дискретная;

дерево регрессии — когда целевая переменная непрерывная.

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

Дальнейшее развитие деревьев решений как самообучающихся моделей для анализа данных связано с Джоном Р. Куинленом (автором алгоритма ID3 и последующих модификаций С4.5 и С5.0) и Лео Брейманом, предложившим алгоритм CART и метод случайного леса.

Структура дерева решений

Рассмотрим понятие более подробно. Дерево решений — метод представления решающих правил в определенной иерархии, включающей в себя элементы двух типов — узлов (node) и листьев (leaf). Узлы включают в себя решающие правила и производят проверку примеров на соответствие выбранного атрибута обучающего множества.

Простой случай: примеры попадают в узел, проходят проверку и разбиваются на два подмножества:

первое — те, которые удовлетворяют установленное правило;

второе — те, которые не удовлетворяют установленное правило.

Далее к каждому подмножеству снова применяется правило, процедура повторяется. Это продолжается, пока не будет достигнуто условие остановки алгоритма. Последний узел, когда не осуществляется проверка и разбиение, становится листом.

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

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

Терминология

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

Какие задачи решает дерево решений?

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

Классификация. Отнесение объектов к одному из заранее известных классов. Целевая переменная должна иметь дискретные задачи.

Регрессия (численное предсказание). Предсказание числового значения независимой переменной для заданного входного вектора.

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

Процесс построения дерева решений

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

Узел становится листом в двух случаях:

естественным образом — когда он содержит единственный объект или объект только одного класса;

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

n примеров, для каждого из которых задана метка класса Ci(i = 1..k);

m атрибутов Aj(j = 1..m), которые определяют принадлежность объекта к тому или иному классу.

Тогда возможно три случая:

Множество S — пустое множество без примеров. Для него сформируется лист, класс которого выберется из другого множества. Например, самый распространенный из родительского множества класс.

Множество S состоит из обучающих примеров всех классов Ck. В таком случае множество разбивается на подмножества в соответствии с классами. Для этого выбирают один из атрибутов Aj множества S, состоящий из двух и более уникальных значений: a1, a2, …, ap), где p — число уникальных значений признака. Множество S разбивают на p подмножеств (S1, S2, …, Sp), состоящих из примеров с соответствующим значением атрибута. Процесс разбиения продолжается, но уже со следующим атрибутом. Он будет повторяться, пока все примеры в результирующих подмножества не окажутся одного класса.

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

Сегодня существует много алгоритмов обучения: ID3, CART, C4.5, C5.0, NewId, ITrule, CHAID, CN2 и другие. Самыми популярными считаются:

ID3 (Iterative Dichotomizer 3). Алгоритм позволяет работать только с дискретной целевой переменной. Деревья решений, построенные на основе ID3, получаются квалифицирующими. Число потомков в узле неограниченно. Алгоритм не работает с пропущенными данными.

CART (Classification and Regression Tree). Алгоритм решает задачи классификации и регрессии, так как позволяет использовать дискретную и непрерывную целевые переменные. CART строит деревья, в каждом узле которых только два потомка.

Основные этапы построения дерева решений

Построение осуществляется в 4 этапа:

Выбрать атрибут для осуществления разбиения в данном узле.

Определить критерий остановки обучения.

Выбрать метод отсечения ветвей.

Оценить точность построенного дерева.

Далее рассмотрим каждый подробнее.

Выбор атрибута разбиения

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

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

Теоретико-информационный критерий

В основе критерия лежит информационная энтропия:

где n — число классов в исходном подмножестве, Ni — число примеров i-го класса, N — общее число примеров в подмножестве.

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

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

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

где Info(S) — информация, связанная с подмножеством S до разбиения, Info(Sa) — информация, связанная с подмножеством, полученным при разбиении атрибута A.

Задача выбора атрибута в такой ситуации заключается в максимизации величины Gain(A), которую называют приростом информации. Поэтому теоретико-информационный подход также известен под название «критерий прироста информации.

Статистический подход

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

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

Индекс Джини рассчитывается по формуле:

где Q — результирующее множество, n — число классов в нем, pi — вероятность i-го класса (выраженная как относительная частота примеров соответствующего класса).

Значение показателя меняется от 0 до 1. Если индекс равен 0, значит, все примеры результирующего множества относятся к одному классу. Если равен 1, значит, классы представлены в равных пропорциях и равновероятны. Оптимальным считают то разбиение, для которого значение индекса Джини минимально.

Критерий остановки алгоритма

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

Для этого используют несколько подходов:

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

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

Задание минимально допустимого числа примеров в узле. Устанавливается ограничение на создание узлов с числом примером меньше заданного (например, 7). В таком случае не будут создаваться тривиальные разбиения и малозначимые правила.

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

Отсечение ветвей

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

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

Строительство полного дерева, в котором листья содержат примеры одного класса.

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

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

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

Извлечение правил

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

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

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

Преимущества и недостатки дерева решений

Преимущества:

Формируют четкие и понятные правила классификации. Например, «если возраст

Пример алгоритма дерева решений машинного обучения Python (tree.DecisionTreeRegressor)

В этой статье дерево решений Python для подведения итогов использует модель sklearn.tree.DecisionTreeRegressor. Сначала нам нужно понять, для чего используется дерево решений в машинном обучении на python, затем четко понять принцип алгоритма, и, наконец, мы можем применить алгоритм дерева решений к реальному сценарию.
Дерево решений - это вспомогательный инструмент принятия решений, который рисует узлы решений в виде дерева, метод рисования для нахождения оптимального решения. Существует три шага для построения дерева решений: первый шаг - записать цель, которую вы хотите достичь, второй шаг - записать все варианты для достижения этой цели справа от цели, третий шаг - оценить результаты каждого плана и Вероятность достижения

1. Что такое дерево решений

这里写图片描述

Буквальное значение дерева решений может быть разделено на решение и дерево, и есть части ствола, ветви и листа. Мы можем представить, как выглядит дерево. Данные решения - это корневой узел конечного узла. На рисунке ниже показано, как выглядит общее дерево решений.

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

2. Что могут делать деревья решений

这里写图片描述

Дерево решений - это сброс всех данных на конечные узлы, которые можно использовать как для классификации, так и для регрессии (в этой статье в основном рассматриваются проблемы классификации). В задаче классификации процесс классификации экземпляров на основе признаков может рассматриваться как набор условий if-then или условного распределения вероятностей, определенных в пространстве признаков и пространстве классов. Таким образом, мы можем использовать дерево решений для получения некоторых вероятностных распределений целевых потребностей на основе выборок. Вот несколько простых примеров для иллюстрации:
Есть владелец платформы бытовой техники, который хочет увеличить продажи продукции и анализирует факторы, которые могут повлиять на продажи: погоду, время и рекламные мероприятия, чтобы проанализировать, влияет ли это на объем продаж и сколько. Для того, чтобы решить, стоит ли вкладывать больше ресурсов, в какие узлы увеличивать продажи. Затем в этом сценарии мы будем использовать погоду, время и рекламные мероприятия в качестве учебных образцов, а объем продаж, соответствующий образцам, в качестве целевых ярлыков. Посредством дерева решений мы можем быстро нарисовать вероятность каждого узла для целевой метки и, наконец, использовать результаты, чтобы решить, каким образом увеличить продажи.

3. Классификация алгоритмов дерева решений

Алгоритм дерева решений Описание алгоритма
Алгоритм ID3 Суть заключается в том, чтобы использовать метод получения информации в качестве критерия выбора атрибутов на каждом уровне дерева решений, чтобы помочь группе определить соответствующие атрибуты, которые следует использовать при создании каждого узла.
Алгоритм C4.5 Важным улучшением алгоритма создания дерева решений C4.5 для алгоритма ID3 является использование скорости получения информации для выбора атрибутов узла. Алгоритм C4.5 может преодолеть недостатки случая ID: алгоритм ID3 использует только атрибуты дискретного описания, в то время как алгоритм C4.5 может обрабатывать как атрибуты дискретного описания, так и атрибуты непрерывного описания.
Алгоритм CART Дерево решений CART - это очень эффективный непараметрический метод классификации и регрессии, который создает двоичное дерево путем построения дерева, построения дерева и оценки дерева. Когда конечная точка является непрерывной переменной, дерево является деревом регрессии, а когда конечная точка является категориальной переменной, дерево является деревом классификации

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

формула:H(X)=-Σ pi * logpi, i=1,2, … , n

Каштан: набор [1,1,1,1,1,1,1,1,2,2]; набор B [1,2,3,4,5,6,7,8,9,1]
Очевидно, что значение энтропии множества A ниже, поскольку в A есть только две категории, которые относительно стабильны и в B слишком много категорий, значение энтропии будет намного больше. (Надеемся ли мы, что в задаче классификации значение энтропии для категории данных после ветвления через узел велико или мало?) Чем выше неопределенность, тем больше полученное значение энтропии. Когда p = 0 или p = 1, H (p) = 0, случайная переменная вообще не имеет никакой неопределенности, когда p = 0.5, H (p) = 1, случайная переменная имеет наибольшую неопределенность в это время.

4. Решение обрезка деревьев

Почему обрезка: Переоснащение дерева решений очень рискованно и теоретически может полностью разделить данные. Представьте, что если дерево достаточно большое, не каждый конечный узел будет иметь одни данные. Не похоже, что вы не можете найти конец, и при его отображении возникнет большая проблема. Таким образом, мы должны обрезать дерево решений!
Стратегии обрезки делятся на: До и после обрезки
Предварительное сокращение: операция сокращения при настройке дерева решений (более практично), ограничение глубины, количество листовых узлов
Количество выборок конечных узлов, получение информации и т. д.
Постобрезка. После того, как дерево решений установлено, выполняется операция сокращения и выполняются определенные критерии.(Чем больше листовых узлов, тем больше потери)

sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)

Модель дерева решений, которая будет построена в машинном обучении на python, sklearn.tree можно условно разделить на пять частей: Импорт данных 、 Предварительная очистка данных 、 Предварительная обработка данных 、 Параметры настройки модели сборки 、 Модель вывода ;
Нажмите здесь, чтобы загрузить данные случая


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

Кроме того, этот учебник будет охватывать:

  • Анатомия деревьев классификации (глубина дерева, корневые узлы, узлы принятия решений, конечные узлы / конечные узлы).
  • Как деревья классификации делают предсказания
  • Как использовать scikit-learn (Python) для создания деревьев классификации
  • Настройка гиперпараметра

Как всегда, код, используемый в этом руководстве, доступен на моемGitHub(анатомия,прогнозы). Давайте начнем!

Сlassification йрвыходTРис (CART) - это термин, введенный Лео Брейманом для обозначения алгоритма дерева решений, который можно выучить для задач классификации или регрессивного прогнозного моделирования. Этот пост охватывает классификацию деревьев.

Деревья классификации

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


Как использовать дерево классификации


Как вырастают деревья классификации? (Не математическая версия)


На рисунке видно, что сетоса была правильно классифицирована по всем 38 баллам. Это чистый узел. Деревья классификации не разбиваются на чистые узлы. Это не приведет к дальнейшему получению информации. Однако нечистые узлы могут расколоться дальше. Обратите внимание, что правая сторона рисунка B показывает, что многие точки ошибочно классифицированы как лишние цвета. Другими словами, он содержит точки двух разных классов (virginica и versicolor). Деревья классификации - это жадный алгоритм, который означает, что по умолчанию он будет продолжать расщепляться до тех пор, пока у него не будет чистого узла. Опять же, алгоритм выбирает наилучшую точку разделения (мы разберемся с математическими методами в следующем разделе) для нечистого узла.


На изображении выше, дерево имеет максимальную глубину 2. Глубина дерева - это мера того, сколько расколов может сделать дерево, прежде чем прийти к прогнозу. Этот процесс может быть продолжен и дальше, пока дерево не станет настолько чистым, насколько это возможно. Проблема многих повторений этого процесса состоит в том, что это может привести к очень глубокому дереву классификации со многими узлами. Это часто приводит к переобучению набора обучающих данных. К счастью, большинство реализаций дерева классификации позволяют вам контролировать максимальную глубину дерева, что уменьшает переоснащение. Например, scikit-learn в Python позволяет заранее подготавливать деревья решений. Другими словами, вы можете установить максимальную глубину, чтобы остановить рост дерева решений после определенной глубины. Для визуального понимания максимальной глубины вы можете посмотреть на изображение ниже.


Критерий выбора


В этом разделе рассказывается, как рассчитывается прирост информации и два критерия Джини и энтропия.

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

Чтобы лучше понять родителей и детей, посмотрите на дерево решений ниже.


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


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

Два общих критерия I Для измерения примеси узла используются индекс Джини и энтропия.


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


На рисунке ниже показано, как вычисляется прирост информации для дерева решений с энтропией.


Я не буду вдаваться в подробности по этому поводу, поскольку следует отметить, что различные примесные меры (индекс Джини и энтропия)обычно дают похожие результаты, График ниже показывает, что индекс Джини и энтропия являются очень похожим критерием примеси. Я предполагаю, что одной из причин, по которой Gini является значением по умолчанию в scikit-learn, является то, что энтропия может быть немного медленнее для вычисления (потому что она использует логарифм).

Различные показатели примесей (индекс Джини и энтропия)обычно дают похожие результаты, БлагодаряData Science StackExchangeа такжеСебастьян Рашкадля вдохновения для этого графика.

Прежде чем закончить этот раздел, я должен отметить, что это различные алгоритмы дерева решений, которые отличаются друг от друга. Некоторые из наиболее популярных алгоритмов - ID3, C4.5 и CART. Scikit-Learn используетоптимизированная версия алгоритма CART, Вы можете узнать о его сложности времениВот,

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

Загрузить набор данных

Набор данных Iris - это один из наборов данных Scikit-Learn, который не требует загрузки какого-либо файла с какого-либо внешнего веб-сайта. Код ниже загружает набор данных радужной оболочки.


Разделение данных на обучающие и тестовые наборы

Приведенный ниже код помещает 75% данных в обучающий набор и 25% данных в тестовый набор.


Цвета на изображении указывают, к какой переменной (X_train, X_test, Y_train, Y_test) были отправлены данные из кадра данных df для этого конкретного разделения теста поезда.

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

Scikit-Learn 4-ступенчатая модель моделирования

Шаг 1:Импортируйте модель, которую вы хотите использовать

В scikit-learn все модели машинного обучения реализованы в виде классов Python.

Шаг 2:Сделайте экземпляр модели

В приведенном ниже коде я установил max_depth = 2 предварительно подготовить дерево, чтобы убедиться, что оно не имеет глубины больше 2. Я должен отметить, что в следующем разделе учебника будет рассказано, как выбрать оптимальный max_depth для вашего дерева.

Также обратите внимание, что в моем коде ниже я сделал random_state = 0 так что вы можете получить те же результаты, что и я.

Шаг 3:Тренируй модель по данным

Модель изучает взаимосвязь между X (длина чашелистика, ширина чашелистика, длина лепестка и ширина лепестка) и Y (вид радужной оболочки)

Шаг 4:Предсказать метки невидимых (тестовых) данных

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

Измерение производительности модели

Хотя существуют и другие способы измерения производительности модели (точность, отзыв, оценка F1,РПЦ Криваяи т. д.), мы будем придерживаться этого простого и использовать точность в качестве нашей метрики

Точность определяется как:

(доля правильных прогнозов): правильные прогнозы / общее количество точек данных

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

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


Важно помнить, что max_depth это не то же самое, что глубина дерева решений. max_depth способ предопределить дерево решений Другими словами, если дерево уже настолько чистое, насколько это возможно на глубине, оно не будет продолжать расщепляться. На рисунке ниже показаны деревья решений с max_depth значения 3, 4 и 5. Обратите внимание, что деревья с max_depth из 4 и 5 идентичны. Они оба имеют глубину 4.


Если вы когда-нибудь задумывались, какова глубина вашего обученного дерева решений, вы можете использовать get_depth метод. Кроме того, вы можете получить число конечных узлов для обученного дерева решений, используя get_n_leaves метод.

В то время как этот учебник охватывал изменение критерия выбора (индекс Джини, энтропия и т. Д.) И max_depth дерева, имейте в виду, что вы также можете настроить минимальные выборки для узла для разделения ( min_samples_leaf ), максимальное количество листовых узлов ( max_leaf_nodes ), и больше.

Одним из преимуществ классификационных деревьев является то, что их относительно легко интерпретировать. Деревья классификации в scikit-learn позволяют вычислить важность функции, которая представляет собой общую величину, которую индекс Джини или энтропия уменьшают из-за разделения на данную функцию. Scikit-learn выводит число от 0 до 1 для каждой функции. Все значения функций нормализованы для суммирования до 1. В приведенном ниже коде показаны значения функций для каждого объекта в модели дерева решений.


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


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

В то время как этот пост только рассматривал деревья решений для классификации, не стесняйтесь видеть мои другие посты Деревья решений для регрессии (Python).Сlassification йрвыходTРис (CART) - относительно старая техника (1984), которая является основой для более сложных техник. Одним из основных недостатков деревьев решений является то, что они обычно не самый точный алгоритм. Отчасти это связано с тем, что деревья решений являются алгоритмом с высокой дисперсией, что означает, что различные расщепления в обучающих данных могут привести к очень разным деревьям. Если у вас есть какие-либо вопросы или мысли по поводу учебника, не стесняйтесь обращаться в комментариях ниже или черезщебет, Если вы хотите узнать, как я сделал некоторые из моих графиков или как использовать библиотеки Pandas, Matplotlib или Seaborn, пожалуйста, подумайтеPython для визуализации данных Учебный курс LinkedIn,

Читайте также: