Результаты классификации зависят от 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 или другое целое число, чтобы ваши результаты были воспроизводимыми.

Другие вопросы по тегам