Как настроить параметры в Random Forest, используя Scikit Learn?
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
Я использую случайную модель леса с 9 образцами и около 7000 атрибутов. Из этих образцов есть 3 категории, которые распознает мой классификатор.
Я знаю, что это далеко не идеальные условия, но я пытаюсь выяснить, какие атрибуты являются наиболее важными в предсказаниях функций. Какие параметры лучше всего настроить для оптимизации важности функции?
Я пробовал разные n_estimators
и заметил, что количество "значимых функций" (т.е. ненулевые значения в массиве feature_importances_
) резко возросло.
Я прочитал документацию, но если у кого-то есть опыт в этом, я хотел бы знать, какие параметры лучше всего настроить, и краткое объяснение, почему.
Ответы
Ответ 1
По моему опыту, есть три возможности, которые стоит изучить с помощью Sklearn RandomForestClassifier в порядке важности:
-
n_estimators
-
max_features
-
criterion
n_estimators
на самом деле не стоит оптимизировать. Чем больше оценок вы дадите, тем лучше это сделает. Обычно 500 или 1000.
max_features
стоит изучить для разных значений. Это может сильно повлиять на поведение РФ, потому что оно решает, сколько функций каждое дерево в РФ учитывает при каждом расколе.
criterion
может оказать небольшое влияние, но обычно по умолчанию это нормально. Если у вас есть время, попробуйте.
Обязательно используйте sklearn GridSearch (желательно GridSearchCV, но ваш размер набора данных слишком мал) при тестировании этих параметров.
Если я правильно понимаю ваш вопрос, у вас есть только 9 образцов и 3 класса? Предположительно, 3 образца в классе? Очень, очень вероятно, что ваш РФ собирается перерабатывать с этим небольшим количеством данных, если только они не являются хорошими репрезентативными отчетами.
Ответ 2
Ключевыми частями обычно являются три элемента:
- количество оценок - обычно больше леса, тем лучше, есть небольшая вероятность переобучения здесь.
- максимальная глубина каждого дерева (по умолчанию нет, что приводит к полному дереву) - уменьшение максимальной глубины помогает бороться с переобучением
- Максимальные функции для каждого разделения (по умолчанию sqrt (d)) - вы можете немного поиграть, поскольку он значительно изменяет поведение всего дерева. sqrt эвристика обычно является хорошей отправной точкой, но реальное сладкое пятно может быть где-то еще.
Ответ 3
В этой замечательной статье есть подробное объяснение настраиваемых параметров, как отслеживать производительность и компромисс скорости, некоторые практические советы и способы для выполнения grid-поиска.
Ответ 4
n_estimators
является хорошим, как говорят другие. Он также хорошо справляется с переобучением при его увеличении.
Но я думаю, что min_sample_split
также полезен при работе с переназначением в наборе данных с небольшими выборками, но с большими возможностями.