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

CART также является прогностической моделью, которая помогает найти переменную на основе других помеченных переменных. Чтобы быть более ясным, древовидные модели предсказывают результат, задавая набор вопросов if-else. Использование моделей деревьев дает два основных преимущества:

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

Гайки и болты деревьев

Выше показано изображение классификатора дерева решений, каждый раунд известен как Узлы. У каждого узла будет условие if-else на основе помеченной переменной. Основываясь на этом вопросе, каждый экземпляр ввода будет направлен / направлен на конкретный листовой узел, который сообщит окончательный прогноз. Есть три типа узлов,

  1. Корневой узел: не имеет родительского узла и дает два дочерних узла на основе вопроса
  2. Внутренний узел: у него будет родительский узел и два дочерних узла.
  3. Листовой узел: у него также будет родительский узел, но не будет дочерних узлов.

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

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

Как следует из самого названия, цель CART - предсказать, к какому классу принадлежит входной экземпляр, на основе его помеченных значений. Для этого он создаст Области принятия решения, используя Границы принятия решения. Представьте, что у нас есть 2D-набор данных,

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

Думаю, достаточно вводных сведений, давайте рассмотрим несколько примеров того, как создавать модели CART на Scikit learn.

Дерево классификации

#use a seed value for reusability 
SEED = 1 
# Import DecisionTreeClassifier from sklearn.tree
from sklearn.tree import DecisionTreeClassifier
# Instantiate a DecisionTreeClassifier 
# You can specify other parameters like criterion refer sklearn    documentation for Decision tree. or try dt.get_params()
dt = DecisionTreeClassifier(max_depth=6, random_state=SEED)
# Fit dt to the training set
dt.fit(X_train, y_train)
# Predict test set labels
y_pred = dt.predict(X_test)
# Import accuracy_score
from sklearn.metrics import accuracy_score
# Predict test set labels
y_pred = dt.predict(X_test)
# Compute test set accuracy  
acc = accuracy_score(y_pred, y_test)
print("Test set accuracy: {:.2f}".format(acc))

Дерево регрессии

# Import DecisionTreeRegressor from sklearn.tree
from sklearn.tree import DecisionTreeRegressor
# Instantiate dt
dt = DecisionTreeRegressor(max_depth=8,
              min_samples_leaf=0.13,
             random_state=3)
# Fit dt to the training set
dt.fit(X_train, y_train)
# Predict test set labels 
y_pred = dt.predict(X_test)
# Compute mse
mse = MSE(y_test, y_pred)
# Compute rmse_lr
rmse = mse**(1/2)
# Print rmse_dt
print('Regression Tree test set RMSE: {:.2f}'.format(rmse_dt))

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