Вероятность случайного лесного классификатора имеет только значения 0, 0.1, 0.2... 1


Я пытаюсь использовать случайный лес для классификации моих данных, но когда я генерирую вероятность классификатора, она всегда имеет значение 0, 0.1, 0.2,... 1 в пределах 5 цифр. Это проблема статистики или проблема программного обеспечения? Я использую RandomForestClassifier в scikit-learn ensemble для Python 2.7.3 на Mac 10.7.5. Мои данные выглядят примерно так:

y   x1   x2   x3   x4...
0   23   4    0
1   102  2    0
1   12   17   1

Переменная отклика y является двоичной. Есть 15 признаков, все они являются либо вещественными, либо целочисленными значениями, некоторые из которых являются двоичный. У меня около 2000 учебных баллов и 500 тестовых. Я установил число деревьев в 500, а число функций, которые нужно попробовать для каждого дерева, - в 8, а для всего остального использую значения по умолчанию. После обучения модели я генерирую вероятности с помощью функции "predict_proba" и получаю результаты, такие как 0.90000000000000002 или 0.10000000000000001

Я подумал, что эта проблема может быть вызвана определенной переменной, поэтому я обучил модель, используя только одну переменную за один раз, повторяемую над пятью переменными. Вероятности только для каждой переменной имеют нормальные значения, такие как 0,5532. Когда я использую две переменные вместе, несколько 0.70000 и т. д. начинают появляться значения. Когда я использую еще больше переменных, я получаю большую долю значений типа 0.700000.

Это статистическая или программная проблема? Numpy прошел тест: numpy.test (), но scipy.test () и sklearn.тест () оба провалились. Я использовал пакеты sci-kit learn в прошлом, когда тесты не удавались без этой проблемы. Кроме того, я знаю, что должен исправьте пакеты, однако я потратил 20 часов на установку из исходного кода, затем двоичных пакетов, а затем прочитал более 30 веб-страниц о том, как другие люди установили его или какие ошибки у них были. Когда они говорят, что установка проста, я не вижу, чтобы они тестировали пакеты. Спасибо.

1 2

1 ответ:

По умолчанию число деревьев, построенных лесом решений склеарна, равно 10. Кажется возможным, что вы неправильно меняете это, как и в случае с ровно 10 деревьями в лесу, именно так будет выглядеть результат (вероятность-это доля деревьев, дающих класс 1, поэтому значения будут равны 0, .1, .2, ..., 1).

Можете ли вы проверить заданные параметры, чтобы увидеть, действительно ли он строит 500 деревьев?

>>> import sklearn.ensemble
>>> rf = sklearn.ensemble.RandomForestRegressor()
>>> rf.n_estimators
10
>>> rf = sklearn.ensemble.RandomForestRegressor(n_estimators=500)
>>> rf.n_estimators
500