Регрессия относится к выявлению лежащих в основе отношений между зависимыми и независимыми переменными, когда зависимая переменная является непрерывной. Прогнозировать непрерывную переменную можно с помощью многих моделей. Некоторые из используемых моделей: линейная регрессия, дерево решений, k-ближайшие соседи и т. Д.

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

Как разрезать торт…

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

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

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

Я пишу строчку кода, но как это работает ?????

Давайте обсудим на примере.

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

я. Тип кухни (индийская, китайская, тайская),

II. Наличие в блюде свежих перцев чили (0-нет, 1-да),

iii. Блюдо готовят для детей? (0-нет, 1-да),

iv. Базовый ингредиент блюда (Рис, Лапша, Овощи),

v. Количество приготовленного блюда (в граммах).

Можно рассмотреть еще много факторов, но давайте ограничимся этими пятью.

Для объяснения можно было бы использовать другие примеры, но что за волнение, если вы не связываете это с чем-то настолько знакомым?

(Обратите внимание на читателя, что набор данных был создан с целью пояснения, он может не соответствовать фактическим значениям)

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

Последовательность шагов:

  1. Вычисляется «mse» (среднеквадратичная ошибка) зависимой переменной в данных обучения. Здесь «среднеквадратичная ошибка» объясняет разброс значений от среднего (например, дисперсию). (MSE рассчитывается, потому что в коде критерий = ‘mse’)

Значения "y" в наших данных: 26,15,25,30,10,24,13,8,14,27

2. Затем модель пытается разделить набор данных, пробуя каждую отдельную независимую переменную и все возможные пороговые значения в качестве условия, и вычисляет MSE после разделения данных.

Каковы возможные разбиения данных?

Например, мы пытаемся разделить данные на основе наличия свежих перцев чили,

Расчет MSE для данных после разделения на «присутствие чили»:

Снижение MSE = 57,36–57,33 = 0,03

Точно так же давайте попробуем разделить наши данные на переменную «готовится ли блюдо для детей?»

Снижение MSE = 57,36–57,302 = 0,058

Аналогичным образом данные могут быть разделены по кухне, т. Е. Если тип кухни = «тайская» и т. Д., И вычислено соответствующее сокращение MSE.

Что происходит в случае непрерывной переменной ?????

«Количество приготовленного блюда» - одна из таких переменных в нашем наборе данных.

Снижение MSE рассчитывается с учетом различных значений непрерывной переменной в качестве порогового значения.

Снижение MSE = 57,36–19,3 = 38,06

Процесс повторяется для разных пороговых значений непрерывной переменной.

Значение «уменьшение MSE» говорит нам, эффективно ли разделение данных по конкретной переменной. Таким же образом рассчитывается сокращение MSE для каждой отдельной переменной.

3. Таким образом, в качестве корневого узла для разделения выбирается переменная, которая дает максимальное сокращение MSE. (в коде мы упоминали splitter = ’best’).

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

Следовательно, первое условие, используемое для разделения данных, - это «количество приготовленного блюда» ‹= 1115.

4. Чтобы дерево росло, узлы, полученные из корня, можно разделить дальше. У нас есть 2 узла, ответвляющихся от корня (один, состоящий из данных, в которых количество конечных тарелок ≤1115, а другой, с данными, в которых количество конечных тарелок ›1115).

Ответ на вопрос «Какой из этих двух узлов разветвляется дальше?» Определяется на основании указанных нами гиперпараметров.

Гиперпараметры min_impurity_split, min_samples_leaf, min_samples_split и min_impurity_decrease помогают нам решить, будет ли узел разветвляться. После выбора узла, который может разветвляться, та же процедура повторяется, чтобы найти переменную и порог, который приводит к максимальному уменьшению mse (mse значений в выбранном узле).

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

Представительство:

Каждый блок / узел в модели дает нам представление о 4 аспектах:

1. Количество образцов обучающих данных, присутствующих в этом узле (образцы).

2. Среднее значение точек в этом узле (значение)

3. MSE значений в этом узле (энтропия)

4. Переменная и порог, на основе которых этот узел далее разделяется.

Обратите внимание, что все конечные узлы дают только сведения 1, 2 и 3, потому что они не разветвляются снова.

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

(Черт… это привело бы к одному большому дереву, если бы обучающие данные были большими).

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

https://scikitlearn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor

Модель построена. Что дальше ???

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

Допустим, нам нужно спрогнозировать количество порошка чили для блюда, которое имеет следующие атрибуты: [Тайский, с перцем чили, не для детей, базовый ингредиент: рис, 850 г готового блюда], точка данных перемещается по показанному пути красным и попадает в узел (кроме этого ни одно условие не проверяется). «Значение» этого узла (которое представляет собой средний порошок чили для точек обучающих данных в этом узле) = 10, следовательно, прогнозируемое количество порошка чили для этой невидимой точки данных = 10 граммов.

Ладно ... Подожди ... Что ?? Среднее количество баллов ??? Именно так предсказывает алгоритм k-Nearest Neighbor. Да .. K-NN берет k «ближайших точек» и возвращает их среднее значение в качестве прогнозируемого значения. Регрессор дерева решений работает таким же образом, но чтобы знать, какие точки усреднять, он использует технику разделения.

Удачного обучения !!!!!!!

Использованная литература:

[1] https://saedsayad.com/decision_tree_reg.htm

[2] https://scikit-learn.org/stable/modules/tree.html