Настраивает ли установка случайного состояния в sklearn's RandomForestClassifier вашу модель? - PullRequest
1 голос
/ 08 марта 2019

Я обучаю модель случайного леса и использую постоянное значение random_state. Я также получаю очень хорошую точность по всем наборам данных для обучения, тестирования и проверки (все около ~ .98). Хотя класс меньшинства составляет всего ~ 10% набора данных.

Вот код, если вам интересно:

model = RandomForestClassifier(n_jobs=-1, oob_score=True, random_state=310, n_estimators=300)
model.fit(subset, train.iloc[:,-1])

Учитывая хорошие оценки точности по наборам данных обучения, проверки и тестирования, влияет ли random_state на обобщение моей модели?

Ответы [ 3 ]

1 голос
/ 09 марта 2019

random_state не влияет на обобщение модели. На самом деле, лучше всего иметь одинаковое значение для random_state, когда вы настраиваете свои гиперпараметры, такие как n_estimators, depth и т. Д. Это гарантирует, что на вашу производительность не повлияет случайное начальное состояние.

Кроме того, точность не является рекомендуемой метрикой для измерения производительности модели, когда у вас есть, например, несбалансированный набор данных.

Область под кривой ROC или PR может быть одной из немногих лучших вещей, которые вы можете использовать, но есть много доступных метрик. Смотри здесь

1 голос
/ 09 апреля 2019

Известно, что проблема изучения оптимального дерева решений является NP-полной по нескольким аспектам оптимальности и даже для простых концепций. Следовательно, практические алгоритмы обучения дерева решений основаны на эвристических алгоритмах, таких как жадный алгоритм, где локально оптимальные решения принимаются на каждом узле. Такие алгоритмы не могут гарантировать возвращение глобально оптимального дерева решений. Это может быть смягчено путем обучения нескольких деревьев в ученике ансамбля, где элементы и образцы выбираются случайным образом с заменой.

random_state для случайного выбора подфункций, меньших, чем общее количество фишек, и подвыборок. Этот параметр управляет случайным выбором.

1 голос
/ 09 марта 2019

random_state: int, экземпляр RandomState или None, необязательный (по умолчанию = None)

Если int, random_state - это начальное число, используемое генератором случайных чисел; Если экземпляр RandomState, random_state является генератором случайных чисел; Если None, генератор случайных чисел является экземпляром RandomState, используемым np.random.

Обычно random_state используется для первоначальной установки внутренних параметров, поэтому вы можете повторить обучение детерминистически. Теперь вы можете изменить другие гиперпараметры (например, количество деревьев), чтобы сравнить результаты.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...