Давайте проанализируем шаги:
Шаг 1: OHE Для вашего OHE единственная зависимость между точками данных состоит в том, что должно быть ясно, какие категории существуют в целом.Таким образом, OHE можно разбить на два этапа, оба из которых не требуют, чтобы все точки данных находились в оперативной памяти.
Шаг 1.1: определение категорий Поток считывает ваши точки данных, собирая все категории.Нет необходимости сохранять прочитанные вами точки данных.
Шаг 1.2: преобразование данных После шага 1.1 каждая точка данных может быть независимо преобразована.Так что поток читать, конвертировать, поток писать.Вам всегда нужна только одна или несколько точек данных в памяти.
Шаг 1.3: выбор функции Может быть стоит взглянуть на выбор функций, чтобы уменьшить объем памяти и повысить производительность.Этот ответ утверждает, что это должно произойти до SMOTE.
Методы выбора признаков, основанные на энтропии, зависят от всех данных.В то время как вы, вероятно, также можете объединить что-то, что является потоком, один подход, который работал хорошо для меня в прошлом, это удаление функций, которые имеют только одна или две точки данных, поскольку эти функции определенно имеют низкую энтропию и, вероятно, мало помогают классификатору.Это можно сделать снова, как Шаг 1.1 и Шаг 1.2
Шаг 2: SMOTE Я недостаточно знаю SMOTE, чтобы дать ответ, но, возможно, проблема уже решена сама, если вы сделаете выбор функций.В любом случае сохраните полученные данные на диск, чтобы вам не нужно было повторно вычислять для каждого тренинга.
Шаг 3: тренировка Посмотрите, можно ли тренировку проводить партиями или в потоковом режиме (в основном онлайн) или простос меньшим количеством выборочных данных.
Что касается сохранения на диск: используйте формат, который можно легко передавать, например, csv или другой формат с возможностью разделения.Не используйте рассол для этого.