aimclub / FEDOT

Automated modeling and machine learning framework FEDOT
https://fedot.readthedocs.io
BSD 3-Clause "New" or "Revised" License
627 stars 86 forks source link

Fedot's bugs in timeseries problem #944

Closed aPovidlo closed 1 year ago

aPovidlo commented 1 year ago

There are bugs in composition which pop up with logging_level=logging.DEBUG:

And in general, the quality of the pipelines are decreased. It was discovered that numbers of generations is pretty small even if timeout = 40 for a simple datasets.

Script for repeating the bug:

path_to_ts = os.path.join(f'{fedot_project_root()}', 'examples/data/ts', 'ts_sea_level.csv')

time_series = pd.read_csv(path_to_ts)
time_series['Date'] = pd.to_datetime(time_series['Date'])

len_forecast = 250

task_parameters = TsForecastingParams(forecast_length=len_forecast)
task = Task(TaskTypesEnum.ts_forecasting, task_parameters)

input_data = InputData(
    idx=time_series['Date'].values,
    features=np.array(time_series['Level']),
    target=np.array(time_series['Level']),
    task=task,
    data_type=DataTypesEnum.ts
)

train_data, test_data = train_test_data_setup(input_data)

model = Fedot(problem='ts_forecasting',
              task_params=task.task_params,
              timeout=15,
              logging_level=logging.DEBUG
)

pipeline = model.fit(train_data)
valer1435 commented 1 year ago

Горизонт 250 - уж слишком много для такого примера. Нашел сейчас в пайплайне rfr, который обучался на 500 признаков. А учитывая горизонт - таких моделей надо было строить 250 штук, что просто висло

nicl-nno commented 1 year ago

Можно сделать чтобы по-умолчанию фактический горизонт был не больше какого-то разумного значения - а дальше до заданного горизонта прогнозировалось итеративно.

aPovidlo commented 1 year ago

Горизонт 250 - уж слишком много для такого примера. Нашел сейчас в пайплайне rfr, который обучался на 500 признаков. А учитывая горизонт - таких моделей надо было строить 250 штук, что просто висло

Опирался на данный пример. Возможно, для rfr это действительно много

nicl-nno commented 1 year ago

Но для примера действительно можно просто уменьшить.

valer1435 commented 1 year ago

Можно сделать чтобы по-умолчанию фактический горизонт был не больше какого-то разумного значения - а дальше до заданного горизонта прогнозировалось итеративно.

Думаю можно просто убрать тяжелые модели в best_quality. Но по идее должны быть уже

aPovidlo commented 1 year ago

@valer1435 А какой следует поставить горизонт тогда?

valer1435 commented 1 year ago

@valer1435 А какой следует поставить горизонт тогда?

Поставил 10. Странно, что попадаются операции, которых я никогда не видел и даже убирал из пла моделей (clstm, например). Поэтому долго работает

aPovidlo commented 1 year ago

@valer1435 А какой следует поставить горизонт тогда?

Поставил 10. Странно, что попадаются операции, которых я никогда не видел и даже убирал из пла моделей (clstm, например). Поэтому долго работает

Понял, тогда запущу тетрадку позже после фикса моделей

nicl-nno commented 1 year ago

@valer1435 @aPovidlo можно ли закрывать?