Обучение модели XGBoost через огромный фрейм данных с преобразованием его в разреженный - PullRequest
0 голосов
/ 06 февраля 2020

У меня очень большой фрейм данных PySpark с ~ 5000 столбцами и ~ 1B строк. Я хочу обучить модель XGBoost поверх этого набора данных.

Я не могу удалить какие-либо функции из данных, так как они уже предварительно обработаны и функции выбираются по мере необходимости.

Обычно, когда данные небольшие (пара ГБ), я конвертировал их в Pandas и помещал модель XGBoost поверх этого следующим образом.

df = spark_df.toPandas()

X = df[[x for x in df.columns if x != 'target']]
y = df['target']

dtrain = xgb.DMatrix(X,label=y)

watchlist  = [(dtrain,'train')]
num_round = 300
early_stopping_rounds=10

bst = xgb.train(param, dtrain, num_round, watchlist,early_stopping_rounds=early_stopping_rounds)

Чтобы обучиться этому Огромный набор данных. Я думал о преобразовании набора данных в разреженное представление (это может помочь мне, потому что моя структура данных по природе является разреженной - большинство строк будут нулевыми почти во всех столбцах)

Я хочу обучить модель используя разреженное представление моего набора данных. Но данные настолько велики, что я могу «позволить себе toPandas() и преобразовать их в разреженное представление, подобное CSR.

Я искал способ прямого преобразования spark_df в CSR или любое другое разреженное представление, над которым может работать XGBoost, но не может его найти.

Это выполнимо? Если так, как продолжить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...