2015-02-15 1 views
3

Я бегу scikit-learn (версия 0.15.2) Случайный лес с python 3.4 в Windows 7 64-бит. У меня есть эта очень простая модель:scikit-learn Случайный лес чрезмерное использование памяти

import numpy as np 
from sklearn.ensemble import RandomForestClassifier 

#Data=np.genfromtxt('C:/Data/Tests/Train.txt', delimiter=',') 

print ("nrows = ", Data.shape[0], "ncols = ", Data.shape[1]) 
X=np.float32(Data[:,1:]) 
Y=np.int16(Data[:,0]) 
RF = RandomForestClassifier(n_estimators=1000) 
RF.fit(X, Y) 

Х наборы данные имеют около 30 000 х 500 элементов в следующем формате:

139.2398242257808,310.7242684642465 ...

Даже при отсутствии параллельной обработки, то использование памяти ползет до 16 ГБ в конце концов! Мне интересно, почему так много использования памяти.

Я знаю, это было предложено, прежде чем некоторое время назад, но до версии 0.15.2 ...

Любые предложения?

Спасибо.

+1

Ваш параметр оценки очень высок, и вы не контролируете глубину деревьев. – JAB

+0

Спасибо. Что бы вы рекомендовали для диапазонов глубины деревьев и n_estimator для случая множественной классификации ~ 100 классов? – Chinook

+0

Вы пытались уменьшить количество оценок и посмотреть, уменьшает ли он используемую память? Это просто догадка, что я боюсь - я задавался вопросом, создаете ли вы много очень глубоких деревьев. – JAB

ответ

1

Перемещение ответа из комментариев.

Попробуйте уменьшить количество деревьев, установив меньший параметр n_estimators. Затем вы можете попытаться контролировать глубину дерева с помощью max_depth или min_samples_split и торговли глубиной для увеличения числа оценок.

1

К сожалению, потребление памяти линейно с количеством классов. Поскольку у вас есть 100 из них и довольно приличное количество образцов, неудивительно, что память взрывается. Решения включают в себя управление размером деревьев (max_depth, min_samples_leaf, ...), их число (n_estimators) или уменьшение количества классов в вашей проблеме, если это возможно.

+0

Спасибо. Я экспериментирую со всеми из них, о которых вы упомянули, и проблема с памятью сейчас в порядке. Главный виновник не контролировал глубину деревьев. – Chinook