Есть кое-что, о чем вам нужно знать, если вы строите модели дерева решений с помощью известного пакета Python scikit-learn.

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

Несмотря на эту природу, scikit-learn предоставляет гиперпараметр «Случайное состояние» для класса дерева решений. Этот гиперпараметр необходим только в том случае, если алгоритм не является детерминированным, поскольку фиксация случайного состояния на постоянном целочисленном значении останавливает случайность.

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

Не совсем.

Алгоритм дерева решений может использовать переданное ему значение случайного состояния для принятия «решения» в следующих трех случаях:

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

ii) Если вы установите гиперпараметр разделителя на «случайный» вместо «лучший». Как следует из названия, это добавит некоторую случайность в процесс разделения.

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

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

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

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

И, кстати, знаете ли вы, почему в документации scikit-learn и бесчисленных учебниках для параметра случайного состояния установлено значение «42»? Это потому, что 42 считается самым важным числом (по крайней мере, среди поклонников научно-фантастического жанра).

Не верите? Погуглите «ответ на главный вопрос жизни, Вселенной и всего остального».