Как я могу ускорить удаление рекурсивных функций на 6 100 000 функций? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь получить рейтинг возможностей из довольно большого набора функций (~ 6 100 000) в sklearn.Вот код, который у меня есть:

train, test = train_test_split(rows, test_size=0.2, random_state=310)
train, val = train_test_split(train, test_size=0.25, random_state=310)
train_target = [i[-1] for i in train]

svc = SVC(verbose=5, random_state=310, kernel='linear')
svc.fit([i[1:-1] for i in train], train_target)

model=svc
rfe = RFE(model, verbose=5, step=1, n_features_to_select=1)
rfe.fit([i[1:-1] for i in train], train_target)
rank = rfe.ranking_

Каждая тренировка модели занимает ~ 10 минут.для 6 100 000 функций это означает десятилетия времени вычислений.На самом деле 115,9 лет.Есть ли лучший способ сделать это?Я знаю, что rfe требует результатов последнего исключения, но есть ли способ ускорить это путем распараллеливания или получения ранжирования по-другому?Я могу использовать тысячи узлов (спасибо компании, на которую я работаю!), Поэтому любой параллелизм будет потрясающим!

У меня есть список коэффициентов гиперплоскости линейного SVM.Упорядочить их достаточно просто, но статья, для которой это делается, будет рецензирована профессором наук о данных Стэнфорда, и он категорически не согласен с использованием не ранжирующих алгоритмов для ранжирования .... и не Стэнфордских квасцов, таких какмне.: P

Я могу взять больший step, но это лишит возможности фактически ранжировать все функции.скорее, я бы оценил группы из 100 000 или 10 000 функций, что не очень полезно.

РЕДАКТИРОВАТЬ: nSV может быть полезно, поэтому я включил его ниже:

obj = -163.983323, rho = -0.999801
nSV = 182, nBSV = 148
Total nSV = 182
...