Я столкнулся с особой ситуацией при предварительной обработке данных.
Допустим, у меня есть набор данных A
.Я разделил набор данных на A_train
и A_test
.Я подгоняю A_train
, используя любой из данных скейлеров (sci-kit learn), и преобразую A_test
с этим scaler
.Теперь обучение нейронной сети с A_train
и проверка на A_test
работает хорошо.Никакого переоснащения и производительности нет.
Допустим, у меня есть набор данных B
с теми же функциями, что и в A
, но с разными диапазонами значений для функций.Простым примером A
и B
могут быть наборы данных о жилищном строительстве в Бостоне и Париже, соответственно (это просто аналогия, заключающаяся в том, что такие характеристики, как стоимость, уровень преступности и т. Д., Значительно различаются).Чтобы проверить производительность вышеупомянутой обученной модели на B
, мы преобразуем B
в соответствии с атрибутами масштабирования A_train
, а затем проверяем.Это обычно снижает производительность, так как эта модель никогда не отображает данные из B
.
. Особенность в том, что если я подгоняю и преобразую непосредственно в B
вместо использования атрибутов масштабирования A_train
, производительностьнамного лучшеОбычно это снижает производительность, если я проверяю это на A_test
.В этом сценарии кажется, что это работает, хотя это не правильно.
Поскольку я работаю в основном над наборами климатических данных, обучение по каждому набору данных невозможно.Поэтому я хотел бы знать, как лучше масштабировать такие разные наборы данных с одинаковыми функциями, чтобы получить лучшую производительность.
Любые идеи, пожалуйста.
PS: я знаю, тренируя мою модель с большим количеством данныхможет улучшить производительность, но меня больше интересует правильный способ масштабирования.Я попытался удалить выбросы из наборов данных и применил QuantileTransformer
, это улучшило производительность, но могло быть и лучше.