#python #runtime
Вопрос:
Я использую модель SARIMA на Python. Когда модель находит оптимальное решение, она «проверяет» все возможные комбинации и выбирает ту, которая имеет наименьший AIC. Когда я использую следующие параметры: это даст очень большое количество возможных решений. Когда я запускаю эту модель, на поиск наилучшего сочетания параметров уйдет очень много времени (2/3 часа или более). Может ли кто-нибудь помочь мне ускорить этот процесс?
Ниже функции, которую я использую (m-компонент сезонности, например, 4-квартальные данные):
def optimize_SARIMA(parameters_list, d, D, s, exog):
"""
Return dataframe with parameters, corresponding AIC and SSE
parameters_list - list with (p, q, P, Q) tuples
d - integration order
D - seasonal integration order
s - length of season
exog - the exogenous variable
"""
results = []
for param in tqdm_notebook(parameters_list):
try:
model = SARIMAX(exog, order=(param[0], d, param[1]), seasonal_order=(param[2], D, param[3], s)).fit(disp=-1)
except:
continue
aic = model.aic
results.append([param, aic])
result_df = pd.DataFrame(results)
result_df.columns = ['(p,q)x(P,Q)', 'AIC']
#Sort in ascending order, lower AIC is better
result_df = result_df.sort_values(by='AIC', ascending=True).reset_index(drop=True)
return result_df
p = range(0, m , 1)
d = 1
q = range(0, m, 1)
P = range(0, m, 1)
D = 1
Q = range(0, m, 1)
s = m
parameters = product(p, q, P, Q)
parameters_list = list(parameters)
print(len(parameters_list))
result_df = optimize_SARIMA(parameters_list, 1, 1, m, data['Volume'])
result_df