Результаты классификации зависят от random_state?
Я хочу реализовать модель AdaBoost, используя scikit-learn (sklearn). Мой вопрос похож на другой вопрос, но это не совсем то же самое. Насколько я понимаю, переменная random_state, описанная в документации, предназначена для случайного разделения наборов обучения и тестирования в соответствии с предыдущей ссылкой. Так что, если я правильно понимаю, мои результаты классификации не должны зависеть от семян, это правильно? Стоит ли беспокоиться, если результаты моей классификации окажутся зависимыми от переменной random_state?
2 ответа
Ваша оценка классификации будет зависеть от random_state
, Как правильно сказал @Ujjwal, он используется для разделения данных на тренировочные и тестовые тесты. Не только это, многие алгоритмы в Scikit-Learn используют random_state
выбрать подмножество признаков, подмножеств выборок, определить начальные веса и т. д.
Например,
Оценки на основе дерева будут использовать
random_state
для случайного выбора функций и образцов (например,DecisionTreeClassifier, RandomForestClassifier
).В кластерных оценках, таких как Kmeans,
random_state
используется для инициализации центров кластеров.SVM используют его для первоначальной оценки вероятности
- Некоторые алгоритмы выбора функций также используют его для первоначального выбора
- И многое другое...
В документации указано, что:
Если ваш код опирается на генератор случайных чисел, он никогда не должен использовать такие функции, как numpy.random.random или numpy.random.normal. Такой подход может привести к проблемам повторяемости в тестах. Вместо этого следует использовать объект numpy.random.RandomState, который построен из
random_state
аргумент передан классу или функции.
Для лучшего понимания прочитайте следующие вопросы и ответы:
Это имеет значение. Когда ваш тренировочный набор отличается, ваше тренировочное состояние также меняется. Для другого подмножества данных вы можете получить классификатор, который мало отличается от того, который был обучен с другим подмножеством.
Следовательно, вы должны использовать постоянное семя, как 0
или другое целое число, чтобы ваши результаты были воспроизводимыми.