Я строю регрессионную модель для целевой переменной с тяжелыми хвостами. Я хочу дополнить данные, чтобы модель получала достаточно обучающих выборок в области, где это длинный хвост. Важна точность прогноза для редких точек данных.
В настоящее время я увеличиваю данные, добавляя шум в обучающие образцы. После разделения на обучение и тестирование я использую MinMaxScaler для всех функций (X), но не масштабирую целевую переменную (y). Затем я добавляю шум к X и y с разными средними и стандартными значениями, так как X масштабируется до [0,1], а y - нет. Вот код для увеличения путем добавления шума
def add_noise(mean, std, df):
noise = np.random.normal(mean, std, df.shape)
df2= df.where(df <= 0.001 , df.add(abs(noise)))
return df2
Я вызываю это, используя что-то вроде add_noise (0,0.005, X_train) и add_noise (0,1, y_train) X_train нормализовано / масштабировано, поэтому я могу использовать небольшое стандартное отклонение. Теперь я должен решить, какое стандартное отклонение y_train вызовет только небольшое возмущение, которое соответствует возмущению X_train.
Вопросы
- Как мне найти правильное среднее и стандартное моя переменная y - имея в виду, что модель должна видеть аналогичное распределение данных между исходным набором данных и расширенным?
- Есть ли другие предложения по увеличению данных для регрессии?