Прогноз Sklearn занимает вечностьPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Прогноз Sklearn занимает вечность

Сообщение Anonymous »

Я застрял в этом вопросе уже несколько дней, и мне очень нужна помощь. У меня возникла серьезная проблема с производительностью при использовании нескольких распространенных методов машинного обучения в sklearn. Я работаю над проблемой вероятностного прогнозирования (двоичной классификации) с набором данных, содержащим 5 миллионов наблюдений и 100 функций, используя такие модели, как LogisticRegrade(), MLPClassifier(), RandomForestClassifier() и LinearSVC() из sklearn.
Например, это настройка, которую я использовал для логистической регрессии L2 с перекрестной проверкой, чтобы найти лучший член регуляризации C из сетки c_grid = [1e-15, 1e-10, 1e-5 , 1д-1, 10]:

Код: Выделить всё

lr = LogisticRegression(class_weight=class_weight,
solver='sag', # I also tried 'liblinear'
max_iter=10000,
tol=0.1,
random_state=seed,
penalty='l2')

C = [1e-15, 1e-10, 1e-5, 1e-1, 10]
c_grid = {"C": C}
c_grid = {k: v for k, v in c_grid.items() if v is not None}

...

cv = StratifiedKFold(n_splits=5, random_state=seed, shuffle=True)
clf = GridSearchCV(estimator=lr,
param_grid=c_grid,
scoring='roc_auc',
cv=cv,
return_train_score=True).fit(X_train, Y_train)
best_model = clf.best_estimator_
prob = clf.predict_proba(X_train)[:, 1]
pred = clf.predict(X_train)
Однако весь процесс обучения занял почти 20 часов. Это нормально для набора данных такого размера или это может быть связано с неправильными параметрами или настройками? Например, я скорректировал различные параметры в LogisticRegrade, но ни один из них не улучшил ситуацию.
Плюс, когда я пытался использовать best_model для вычисления результатов тестирования

Код: Выделить всё

prob = clf.predict_proba(X_test)[:, 1]
pred = clf.predict(X_test)
Кажется, это займет целую вечность. Я попробовал распараллелить процесс чем-то вроде

Код: Выделить всё

X_test_batches = np.array_split(X_test, N)
args = [(best_model, batch) for batch in X_test_batches]

with Pool(N) as pool:
prob_batches = pool.map(predict_batch, args)
prob = np.concatenate(prob_batches)
pred = (prob >= 0.5)
но это не слишком помогло, поэтому в конечном итоге мне пришлось вручную реализовать свою собственную функцию прогнозирования (которая, очевидно, работает только для логистики, но не для других моделей, которые я хотел бы протестировать)

Код: Выделить всё

z = np.dot(X_test, best_model.coef_.T) + best_model.intercept_
prob = 1 / (1 + np.exp(-z))
Учитывая, что и обучение, и тестирование занимают неоправданно много времени, я предполагаю, что проблема может быть связана с clf.predict_proba() и clf.predict(). Однако я ожидаю, что sklearn сможет эффективно обрабатывать набор данных из нескольких миллионов наблюдений? Любая помощь будет принята с благодарностью, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/788 ... es-forever
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Реализация sklearn.ensemble.GradientBoostingRegressor с помощью sklearn.multioutput.MultiOutputRegressor и sklearn.model
    Anonymous » » в форуме Python
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Реализация sklearn.ensemble.GradientBoostingRegressor с помощью sklearn.multioutput.MultiOutputRegressor и sklearn.model
    Anonymous » » в форуме Python
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Реализация sklearn.ensemble.GradientBoostingRegressor с помощью sklearn.multioutput.MultiOutputRegressor и sklearn.model
    Anonymous » » в форуме Python
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Оценка тренера Трансформеров занимает вечность
    Anonymous » » в форуме Python
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • Флаттер: Запуск... занимает целую вечность
    Anonymous » » в форуме IOS
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»