Я хотел бы знать, почему RandomForestClassifiers, которые я создаю в Python, используя scikit-learn, дает разные результаты, когда я повторяю обучение в одном наборе данных. Может кто-нибудь объяснить это мне, пожалуйста?Почему RandomForestClassifier scikit-learn не детерминирован в явной настройке?
Соответствующая часть моего кода заключается в следующем:
from sklearn.ensemble import RandomForestClassifier as RFC
RFC(n_estimators=100, max_features=None, criterion="entropy", bootstrap=False)
Эта настройка должна фактически предотвратить любую случайность, не так ли? Он должен заставить алгоритм использовать то же количество экземпляров данных (что является полным набором данных) для каждого базового учащегося, чтобы расти, и рассматривать каждую функцию для каждого раскола.
Один объяснений я получил это: Может быть, алгоритм сохраняет некоторую хаотичность в том, как особенности вынуты из множества всех функций, например:
- Приведены особенности f1 и f2
- Для split в узле 1 алгоритм выбирает f1, а затем f2 для рассмотрения для этого разделения
- Обе функции могут иметь одинаковое качество разделения, а f1 выбирается первым, когда он был нарисован первым
- Для разделения в узле 2 алгоритм может быть как сначала выберите f2 и f1 и, следовательно, созданная модель может отличаться от других моделей, созданных этим алгоритмом.
Кому дается достоверная информация?
Спасибо за ваше время и ответ, Чернослив! Да, семя, конечно, «решит» эту проблему, сделав алгоритм детерминированным. Беда в том, что у меня есть особая проблема, и я не могу позволить себе пропустить семя. Вы пытались выразить всю случайность, оставшуюся в описанной установке, как я описал в примере? – vern
КПП. RF-конструктор предлагает параметр random_state для определения семени. – vern
Ah; Я вижу освещение, которое вы описываете. Тем не менее, я по-прежнему считаю, что ваши маркированные шаги определяют именно тот случай, когда вы получите разные результаты из серии прогонов. Можете ли вы проверить эту гипотезу с набором функций, в которых две функции не могут иметь одинаковое качество разделения? – Prune