Сколько обучающих данных необходимо для машинного обучения

Количество необходимых вам данных зависит от сложности задачи и от сложности выбранного вами алгоритма. Это факт, но это вам не поможет, если вы на острие проекта по машинному обучению. Джейсон Браунли опубликовал ответы на часто задаваемые вопросы.

Сколько данных мне необходимо?

Джейсон не может ответить на этот вопрос ни конкретно вам, ни кому-то еще. Но может дать несколько способов взглянуть на данную проблему.

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

Возможно, что один или несколько из этих методов помогут вам понять сложность вопроса и то, как тесно он сочетается с проблемой индукции, которую вы пытаетесь решить.

Давайте разберемся в этом глубже.

Почему вы задаёте этот вопрос?

Важно знать, почему вы спрашиваете о необходимом размере обучающей выборки.

Ответ может повлиять на ваш следующий шаг.

Например:

  • У вас слишком много данных? Рассмотрите возможность разработки кривых обучения, чтобы узнать, насколько велика репрезентативная выборка (ниже). Или рассмотрите возможность использования большой подсистемы данных, чтобы использовать все доступные данные.
  • Данных слишком мало? Рассмотрите целесообразность подтверждения того, что данных действительно слишком мало. Рассмотрите возможность сбора большего количества данных или использования методов приумножения данных, чтобы искусственным путём увеличить размер выборки.
  • Вы ещё не собрали данные? Рассмотрите возможность сбора некоторого количества данных и оценки того, достаточно ли их. Или, в случае, если изучение или сбор данных дорогостоящие, подумайте о том, чтобы пообщаться со специалистом в предметной области и со статистиком.

В более общем плане, по ходу может возникнуть больше вопросов, таких как:

  • Сколько записей экспортировать из базы данных?
  • Сколько выборок необходимо для достижения желаемого уровня эффективности?
  • Насколько большой должна быть выборка данных, чтобы достичь достаточной оценки эффективности модели?
  • Сколько данных нужно, чтобы показать превосходство одной модели над другой?
  • Использовать разделение обучения/тестирования (train/test split) или k-fold перекрёстную проверку?

На эти вопросы должны дать ответ предложения, описанные в данной статье.

На практике, для получения ответов на эти вопросы, используются кривые обучения (смотрите ниже), методы ресемплинга на небольших выборках (например, k-fold перекрёстную проверку и бутсрэппинг) и добавляя доверительные интервалы к конечным результатам.

Итак, сколько данных вам нужно?

1. Зависит от; Никто не может сказать вам

Никто не может сказать вам, сколько нужно данных для вашей прогностической модели.

Ответ неизвестен: это трудноразрешимая задача, решение которой можно найти при помощи эмпирического исследования.

Количество данных, необходимых для машинного обучения, зависит от многих факторов, таких как:

  • Сложность задачи, номинально неизвестная основная функция, наилучшим образом связывающая входные и выходные переменные.
  • Сложность обучающего алгоритма, номинально алгоритм, используемый для индуктивного обучения основной неизвестной отображающей функции из конкретных примеров.

Это наша точка отсчёта.

А «зависит от» — это ответ, который большая часть практиков даст вам, когда вы впервые зададите этот вопрос.

2. Основываясь на аналогии

Множество людей до вас проделало большую работу над решением прикладных задач машинного обучения.

Некоторые из них опубликовали свои результаты.

Вполне возможно, что вы сможете взглянуть на изучение проблем, похожих на ваши, чтобы оценить количество требуемых данных.

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

Можно взять среднее значение из нескольких исследований.

Поищите статьи в Google, Google Scholar, и Arxiv.

3. Используйте экспертные знания в области

Вам нужна выборка данных по вашей задаче, представляющая проблему, которую вы пытаетесь решить.

В общем, примеры должны быть независимы и одинаково распределены.

Помните, что в машинном обучении мы изучаем функцию сопоставления входных данных с выходными данными. Изучаемая сопоставляющая функция будет хороша настолько, насколько будут хороши данные, которые вы предоставите ей для обучения.

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

Используйте ваши знания в области или найдите эксперта в нужной области, и порассуждайте о масштабе данных, необходимых для разумного охвата полезной сложности задачи.

4. Используйте статистическую эвристику

Существуют методы статистической эвристики, которые позволят вам определить подходящий размер выборки.

Большая часть эвристических методов, которые встречал Джейсон, предназначались для классификации задач как функции количества классов, входной функции или параметров модели. Некоторые их них кажутся жесткими, другие – полностью специальными.

Вот несколько примеров, которые вы можете рассмотреть:

  • Коэффициент количества классов: Должно быть x независимых примеров для каждого класса, где x — это десятки, сотни или тысячи (например 5, 50, 500, 5000).
  • Коэффициент количества входных функций: Должно быть x% больше примеров, чем есть входных функций, где x – это десятки (например 10).
  • Коэффициент количества параметров модели: Должно быть x независимых примеров для каждого параметра модели, где x – это десятки (например 10).

Все они выглядят, как специальные коэффициенты масштабирования.

В теоретической работе по данной теме, классификатор (например, метод k-ближайших соседей) часто противопоставляется оптимальному Байесовскому решающему правилу и сложность характеризуется в контексте проклятия размерности; которое говорит о том, что, с увеличением количества входных функций, экспоненциально растет сложность задачи.

Например:

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

Для более детального обсуждения по данной теме, смотрите:

Раздел 2.5 Local Methods in High Dimensions, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2008.

5. Для нелинейных алгоритмов необходимо больше данных

Более эффективные алгоритмы машинного обучения называются нелинейными алгоритмами.

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

Данные алгоритмы часто являются более гибкими и даже непараметрическими (они способны определить, сколько параметров необходимо для моделирования вашей задачи, в дополнение к значениям данных параметров). Также они очень вариативны – это значит, что прогнозы варьируются, основываясь на конкретных, использованных для их обучения, данных. Это дополнительная гибкость и эффективность достигается за счёт потребности в большем количестве данных, часто – в очень большом количестве данных.

Фактически, некоторые нелинейные алгоритмы, вроде методов глубокого обучения, могу продолжать совершенствоваться по мере добавления вами новых данных.

Когда линейному алгоритму, для получения хорошей эффективности, нужно сотни примеров на класс, для нелинейного, вроде случайного леса (random forest) или искусственной нейронной сети, могут потребоваться тысячи.

6. Оценка размера набора данных против навыка модели

Распространённым явлением является разработка нового алгоритма машинного обучения для демонстрации и даже пояснения эффективности алгоритма под воздействием количества данных или сложности задачи.

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

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

Разработайте исследование, которое оценивало бы навык модели, в противопоставлении его размеру выборки данных.

Результат отобразите в виде линейного графика, где ось x – это размер обучающей выборки, а ось y – навык модели. Это даст вам понимание того, как размер данных влияет на навык модели в вашей конкретной задаче.

Этот график называется кривая обучаемости.

С его помощью вы можете спроектировать количество данных, необходимых для разработки хорошо обученной модели, или, возможно, как мало данных вам в действительности нужно до достижения точки снижения результативности.

Рекомендуется использование данного подхода для разработки надёжных моделей в контексте всестороннего понимания задачи.

7. Наивная приблизительная оценка

Для применения алгоритмов машинного обучения вам понадобится много данных.

Зачастую, вам потребуется больше данных, чем могло бы потребоваться в классической статистике.

Достаньте и используйте столько данных, сколько сможете.

Если с нужен ответа на этот вопрос — с нулевыми знаниями о специфике вашей задачи:

  • Вам нужны тысячи данных.
  • Не меньше сотен.
  • В идеале, десятки или сотни, или тысячи для моделирования «средних» задач.
  • Миллионы или десятки миллионов для «трудных» задач, вроде тех, что решаются с помощью глубокого обучения.

Опять же, это только приблизительная оценка для такого случая, но если вам необходимо – это может быть точкой отсчета. Так что беритесь за дело!

8. Соберите больше данных (несмотря ни на что!?)

Большие массивы данных часто обсуждаются в применении к машинному обучению, но вам, для вашей прогностической модели, может и не понадобиться так много данных.

Некоторые задачи требуют использования большого массива данных, всех данных, что у вас есть. Например, простой статистический машинный перевод:

The Unreasonable Effectiveness of Dataречь Питера Норвига)

Если вы занимаетесь традиционным прогностическим моделированием, то, скорее всего, вы столкнётесь с точкой снижения эффективности размера обучающей выборки, так что вам надо будет изучить вашу задачу и избранные модели для определения этой точки.

Имейте в виду, что машинное обучение – это процесс индукции. Модель может охватывать только то, что уже видела. Если ваши обучающие данные не включают в себя крайние случаи, они, очень вероятно, не будут поддерживаться моделью.

Не откладывайте; беритесь за дело

А теперь, перестаньте готовиться к моделированию задачи и начните её моделировать.

Не позволяйте проблеме размера обучающей выборки помешать вам начать работу над прогностическим моделированием задачи.

Во многих случаях именно этот вопрос является причиной прокрастинации.

Соберите столько данных, сколько сможете; используйте то, что у вас есть, и узнаете, насколько эффективны модели для вашей задачи.

Что-нибудь узнайте, затем примите меры для лучшего понимания полученного с помощью дальнейшего анализа, расширьте имеющиеся данные, дополнив их, или соберите больше данных из вашей области.

Дальнейшее чтение

Этот раздел предоставляет больше ресурсов по данной теме, если вы хотите в неё углубиться.

Существует множество обсуждений данного вопроса на Q&A сайтах, вроде Quora, StackOverflow и CrossValidated. Ниже есть несколько избранных примеров, которые могут помочь:

По этому вопросу есть несколько отличных статистических исследований:

Другие статьи по теме:

Подведем итог

В этой статье вы открыли для себя набор способов обдумать и поразмыслить о проблемах ответа на распространённый вопрос:

Сколько данных мне нужно для машинного обучения?