Как настроить параметры в 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 эвристика обычно является хорошей отправной точкой, но реальное сладкое пятно может быть где-то еще.

Ответ 4

n_estimators является хорошим, как говорят другие. Он также хорошо справляется с переобучением при его увеличении.

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