Смещение набора данных BigQuery Split - PullRequest
0 голосов
/ 19 декабря 2018

Хороший пример из статьи oreilly для случая ML набора данных о времени полета авиакомпании.Запрос состоит в том, чтобы выбрать 80% записей для обучения.

SELECT
  date,
  airline,
  departure_airport,
  departure_schedule,
  arrival_airport,
  arrival_delay
FROM
  [bigquery-samples:airline_ontime_data.flights]
WHERE
  ABS(HASH(date)) % 10 < 8

Насколько мне известно, дата не уникальна.Допустим, если все 30% полетов выполняются в определенный день (это не лучший пример, другой набор данных мог бы лучше вписаться в этот сценарий), то значение хеш-значения для этого всегда одинаково.Если мы модифицируем их с 10, то 30% записи будут либо оставаться в <8 сторонах, либо> = 8 сторонах.

Если мое понимание правильное и этот запрос вызывает смещение, есть ли другой лучший способразделить набор данных до 80/10/10?

1 Ответ

0 голосов
/ 19 декабря 2018

Да, в статье предполагается, что даты распределены равномерно, что может быть неверно.Вместо этого вы можете напрямую отсканировать содержимое строки:

SELECT
  date,
  airline,
  departure_airport,
  departure_schedule,
  arrival_airport,
  arrival_delay
FROM
  `bigquery-samples`.airline_ontime_data.flights
WHERE
  MOD(ABS(FARM_FINGERPRINT(TO_JSON_STRING(flights))), 10) < 8

Обратите внимание, что этот запрос использует стандартный SQL вместо устаревшего SQL.Если вы используете автономный классический интерфейс BigQuery, снимите флажок «Использовать устаревший SQL» в меню параметров перед его запуском.

...