сколько данных нужно для обучения нейронной сети
Transfer Learning: как быстро обучить нейросеть на своих данных
Машинное обучение становится доступнее, появляется больше возможностей применять эту технологию, используя «готовые компоненты». Например, Transfer Learning позволяет использовать накопленный при решении одной задачи опыт для решения другой, аналогичной проблемы. Нейросеть сначала обучается на большом объеме данных, затем — на целевом наборе.
В этой статье я расскажу, как использовать метод Transfer Learning на примере распознавания изображений с едой. Про другие инструменты машинного обучения я расскажу на воркшопе «Machine Learning и нейросети для разработчиков».
Если перед нами встает задача распознавания изображений, можно воспользоваться готовым сервисом. Однако, если нужно обучить модель на собственном наборе данных, то придется делать это самостоятельно.
Для таких типовых задач, как классификация изображений, можно воспользоваться готовой архитектурой (AlexNet, VGG, Inception, ResNet и т.д.) и обучить нейросеть на своих данных. Реализации таких сетей с помощью различных фреймворков уже существуют, так что на данном этапе можно использовать одну из них как черный ящик, не вникая глубоко в принцип её работы.
Однако, глубокие нейронные сети требовательны к большим объемам данных для сходимости обучения. И зачастую в нашей частной задаче недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Transfer Learning решает эту проблему.
Transfer Learning для классификации изображений
Нейронные сети, которые используются для классификации, как правило, содержат N выходных нейронов в последнем слое, где N — это количество классов. Такой выходной вектор трактуется как набор вероятностей принадлежности к классу. В нашей задаче распознавания изображений еды количество классов может отличаться от того, которое было в исходном датасете. В таком случае нам придётся полностью выкинуть этот последний слой и поставить новый, с нужным количеством выходных нейронов
Зачастую в конце классификационных сетей используется полносвязный слой. Так как мы заменили этот слой, использовать предобученные веса для него уже не получится. Придется тренировать его с нуля, инициализировав его веса случайными значениями. Веса для всех остальных слоев мы загружаем из предобученного снэпшота.
Существуют различные стратегии дообучения модели. Мы воспользуемся следующей: будем тренировать всю сеть из конца в конец (end-to-end), а предобученные веса не будем фиксировать, чтобы дать им немного скорректироваться и подстроиться под наши данные. Такой процесс называется тонкой настройкой (fine-tuning).
Структурные компоненты
Для решения задачи нам понадобятся следующие компоненты:
В нашем примере компоненты (1), (2) и (3) я буду брать из собственного репозитория, который содержит максимально легковесный код — при желании с ним можно легко разобраться. Наш пример будет реализован на популярном фреймворке TensorFlow. Предобученные веса (4), подходящие под выбранный фреймворк, можно найти, если они соответствуют одной из классических архитектур. В качестве датасета (5) для демонстрации я возьму Food-101.
Модель
В качестве модели воспользуемся классической нейросетью VGG (точнее, VGG19). Несмотря на некоторые недостатки, эта модель демонстрирует довольно высокое качество. Кроме того, она легко поддается анализу. На TensorFlow Slim описание модели выглядит достаточно компактно:
Веса для VGG19, обученные на ImageNet и совместимые с TensorFlow, скачаем с репозитория на GitHub из раздела Pre-trained Models.
Датасет
В качестве обучающей и валидационной выборки будем использовать публичный датасет Food-101, где собрано более 100 тысяч изображений еды, разбитых на 101 категорию.
Скачиваем и распаковываем датасет:
Пайплайн данных в нашем обучении устроен так, что из датасета нам понадобится распарсить следующее:
Все вспомогательные функции, ответственные за обработку данных, вынесены в отдельный файл data.py :
Обучение модели
Код обучения модели состоит из следующих шагов:
После запуска обучения можно посмотреть на его ход с помощью утилиты TensorBoard, которая поставляется в комплекте с TensorFlow и служит для визуализации различных метрик и других параметров.
В конце обучения в TensorBoard мы наблюдаем практически идеальную картину: снижение Train loss и рост Validation Accuracy
Тестирование модели
Теперь протестируем нашу модель. Для этого:
Весь код, включая ресурсы для построения и запуска Docker контейнера со всеми нужными версиями библиотек, находятся в этом репозитории — на момент прочтения статьи код в репозитории может иметь обновления.
На воркшопе «Machine Learning и нейросети для разработчиков» я разберу и другие задачи машинного обучения, а студенты к концу интенсива сами представят свои проекты.
Обучающие наборы данных для нейронных сетей: как обучить и проверить нейросеть на Python
В данной статье мы будем использовать для обучения многослойного перцептрона сгенерированные в Excel выборки, а затем посмотрим, как нейросеть работает с проверочными выборками.
Если вы хотите разработать нейронную сеть на Python, вы находитесь в правильном месте. Прежде чем углубиться в обсуждение о том, как использовать Excel для создания обучающих данных для вашей нейросети, для получения дополнительной информации посмотрите остальные статьи серии выше, в меню с содержанием.
Что такое обучающие данные?
В реальной жизни обучающие выборки состоят из данных измерений в сочетании с «решениями», которые помогут нейронной сети обобщить всю эту информацию в соответствующую связь вход-выход.
Например, предположим, что вы хотите, чтобы ваша нейронная сеть предсказывала вкусовые качества помидора на основе цвета, формы и плотности. Вы не представляете, как именно цвет, форма и плотность связаны с вкусностью, но вы можете измерить цвет, форму и плотность, и у вас есть вкусовые рецепторы. Таким образом, всё, что вам нужно сделать, это собрать тысячи и тысячи помидоров, записать их физические характеристики, попробовать каждый (лучшая часть), а затем поместить всю эту информацию в таблицу.
Каждая строка – это то, что я называю одной обучающей выборкой, и в ней четыре столбца: три из них (цвет, форма и плотность) являются столбцами входных данных, а четвертый – целевым выходным значением.
Рисунок 1 – Связь между данными в Excel и параметрами нейросети
Во время обучения нейронная сеть найдет связь (если когерентная связь существует) между тремя входными значениями и выходным значением.
Оценка обучающих данных
Имейте в виду, что всё должно обрабатываться в числовом виде. Вы не можете в качестве входного параметра вашей нейронной сети использовать строку «сливовидная форма», а «аппетитный» не будет работать в качестве выходного значения. Вы должны количественно оценить ваши измерения и ваши классификации.
Для формы вы можете присвоить каждому помидору значение от –1 до +1, где –1 представляет собой идеальную сферу, а +1 означает крайне вытянутую форму. Что касается вкусовых качеств, вы можете оценивать каждый помидор по пятибалльной шкале от «несъедобного» до «восхитительного», а затем использовать унитарный код для сопоставления этих оценок с выходным вектором из пяти элементов.
Следующая диаграмма показывает, как этот тип кодирования используется для классификации выходных значений нейронной сети.
Рисунок 2 – Унитарный код для выходных значений нейросети
Выходная схема, использующая унитарный код, позволяет нам определить недвоичные классификации таким образом, чтобы это было совместимо с логистической сигмоидной функцией активации. Выходные данные логистической функции являются, по сути, двоичными, поскольку область перехода на графике является узкой по сравнению с бесконечным диапазоном входных значений, для которых выходное значение очень близко к минимальному или максимальному значению:
Рисунок 3 – График логистической функции
Таким образом, мы не хотим создавать эту нейросеть с одним выходным узлом, а затем предоставлять обучающие выборки, которые имеют выходные значения 0, 1, 2, 3 или 4 (или, если вы хотите оставаться в диапазоне от 0 до 1, это будут 0, 0,2, 0,4, 0,6 или 0,8), поскольку логистическая функция активации выходного узла будет устойчиво придерживаться минимального и максимального выходных значений.
Нейронная сеть просто не понимает, насколько нелепым было бы сделать вывод, что все помидоры либо несъедобны, либо восхитительны.
Создание набора обучающих данных
Нейронная сеть на Python, о которой мы говорили в части 12, импортирует обучающие выборки из файла Excel. Обучающие данные, которые я буду использовать для этого примера, организованы следующим образом:
Рисунок 4 – Обучающие данные в таблице Excel
Наш текущий код для перцептрона ограничен одним выходным узлом, поэтому всё, что мы можем сделать, – это выполнить классификацию типа «истина/ложь». Входные значения – это случайные числа от –5 до +5, сгенерированные по формуле Excel:
Как показано на скриншоте, результат рассчитывается следующим образом:
Это математическая связь вход-выход, которую перцептрон должен извлечь из обучающих данных. Вы можете создать столько выборок, сколько захотите. Для такой простой задачи, как эта, вы можете достичь очень высокой точности классификации с 5000 выборками и одной эпохой.
Обучение нейросети
Вам нужно установить входную размерность на три ( I_dim = 3, если вы используете мои имена переменных). Я настроил нейросеть так, чтобы в ней было четыре скрытых узла ( H_dim = 4), и выбрал скорость обучения 0,1 ( LR = 0,1).
Найдите инструкцию training_data = pandas.read_excel(. ) и введите название своей таблицы (если у вас нет доступа к Excel, библиотека Pandas также может читать файлы ODS). Затем просто нажмите кнопку «Run». Обучение с 5000 выборками занимает всего несколько секунд на моем ноутбуке.
Если вы используете полную программу « MLP_v1.py », которую я включил в часть 12, валидация(смотрите следующий раздел) начинается сразу после завершения обучения, поэтому перед тем, как приступить к обучению нейросети, вам необходимо подготовить данные валидации.
Валидация нейросети
Чтобы проверить эффективность нейросети, я создаю вторую электронную таблицу и генерирую входные и выходные значения, используя точно такие же формулы, а затем импортирую эти проверочные данные так же, как импортировал обучающие данные:
В следующем фрагменте кода показано, как выполнить базовую валидацию:
Точность классификации вычисляется путем сравнения значения классификации с целевым значением для текущей выборки валидации, подсчета количества правильных классификаций и деления на количество выборок валидации.
Самая низкая точность классификации составила 88,5%, самая высокая – 98,1%, а средняя – 94,4%.
Заключение
Мы рассмотрели важную теоретическую информацию, относящуюся к обучающим данным нейронной сети, и провели первый эксперимент по обучению и валидации нашего многослойного перцептрона на языке Python. Я надеюсь, вам интересна эта серия статей о нейронных сетях – мы добились большого прогресса со времени первой статьи, и есть еще много, что нам нужно обсудить!
Нейросеть с нуля своими руками. Часть 1. Теория
Здравствуйте. Меня зовут Андрей, я frontend-разработчик и я хочу поговорить с вами на такую тему как нейросети. Дело в том, что ML технологии все глубже проникают в нашу жизнь, и о нейросетях сказано и написано уже очень много, но когда я захотел разобраться в этом вопросе, я понял что в интернете есть множество гайдов о том как создать нейросеть и выглядят они примерно следующим образом:
Более подробная информация разбросана кусками по всему интернету. Поэтому я постарался собрать ее воедино и изложить в этой статье. Сразу оговорюсь, что я не являюсь специалистом в области ML или биологии, поэтому местами могу быть не точным. В таком случае буду рад вашим комментариям.
Пока я писал эту статью я понял, что у меня получается довольно объемный лонгрид, поэтому решил разбить ее на несколько частей. В первой части мы поговорим о теории, во второй напишем собственную нейросеть с нуля без использования каких-либо библиотек, в третьей попробуем применить ее на практике.
Так как это моя первая публикация, появляться они будут по мере прохождения модерации, после чего я добавлю ссылки на все части. Итак, приступим.
Для чего нужны нейросети
В нашем глазу есть сенсоры, которые улавливают количество света попадающего через зрачок на заднюю поверхность глаза. Они преобразуют эту информацию в электрические импульсы и передают на прикрепленные к ним нервные окончания. Далее это сигнал проходит по всей нейронной сети, которая принимает решение о том, не опасно ли такое количество света для глаза, достаточно ли оно для того, чтобы четко распознавать визуальную информацию, и нужно ли, исходя из этих факторов, уменьшить или увеличить количество света.
На выходе этой сети находятся мышцы, отвечающие за расширение или сужение зрачка, и приводят эти механизмы в действие в зависимости от сигнала, полученного из нейросети. И таких механизмов огромное количество в теле любого живого существа, обладающего нервной системой.
Устройство нейрона
Дендриты нейрона создают дендритное дерево, размер которого зависит от числа контактов с другими нейронами. Это своего рода входные каналы нервной клетки. Именно с их помощью нейрон получает сигналы от других нейронов.
Тело нейрона в природе, достаточно сложная штука, но именно в нем все сигналы, поступившие через дендриты объединяются, обрабатываются, и принимается решение о том передавать ли сигнал далее, и какой силы он должен быть.
Нейросети в IT
Что же, раз механизм нам понятен, почему бы нам не попробовать воспроизвести его с помощью информационных технологий?
Итак, у нас есть входной слои нейронов, которые, по сути, являются сенсорами нашей системы. Они нужны для того, чтобы получить информацию из окружающей среды и передать ее дальше в нейросеть.
Также у нас есть несколько слоев нейронов, каждый из которых получает информацию от всех нейронов предыдущего слоя, каким-то образом ее обрабатывают, и передают на следующий слой.
И, наконец, у нас есть выходные нейроны. Исходя из сигналов, поступающих от них, мы можем судить о принятом нейросетью решении.
Такой простейший вариант нейронной сети называется перцептрон, и именно его мы с вами и попробуем воссоздать.
Все нейроны по сути одинаковы, и принимают решение о том, какой силы сигнал передать далее с помощью одного и того же алгоритма. Это алгоритм называется активационной функцией. На вход она получает сумму значений входных сигналов, а на выход передает значение выходного сигнала.
Но в таком случае, получается, что все нейроны любого слоя будут получать одинаковый сигнал, и отдавать одинаковое значение. Таким образом мы могли бы заменить всю нашу сеть на один нейрон. Чтобы устранить эту проблему, мы присвоим входу каждого нейрона определенный вес. Этот вес будет обозначать насколько важен для каждого конкретного нейрона сигнал, получаемый от другого нейрона. И тут мы подходим к самому интересному.
То есть мы подаем на вход нейросети определенные данные, для которых мы знаем, каким должен быть результат. Далее мы сравниваем результат, который нам выдала нейросеть с ожидаемым результатом, вычисляем ошибку, и корректируем веса нейронов таким образом, чтобы эту ошибку минимизировать. И повторяем это действие большое количество раз для большого количества наборов входных и выходных данных, чтобы сеть поняла какие сигналы на каком нейроне ей важны больше, а какие меньше. Чем больше и разнообразнее будет набор данных для обучения, тем лучше нейросеть сможет обучиться и впоследствии давать правильный результат. Этот процесс называется обучением с учителем.
Добавим немного математики.
В качестве активационной функции нейрона может выступать любая функция, существующая на всем отрезке значений, получающихся на выходе нейрона и входных данных. Для нашего примера мы возьмем сигмоиду. Она существует на отрезке от минус бесконечности до бесконечности, плавно меняется от 0 до 1 и имеет значение 0,5 в точке 0. Идеальный кандидат. Выглядит она следующим образом:
Таким образом сумма входных значений первого нейрона скрытого слоя будет равна
Передав это значение в активационную функцию, мы получим значение, которое наш нейрон передаст далее по сети в следующий слой.
sigmoid(0,22) = 1 / (1 + e^-0,22) = 0,55
Аналогичные операции произведём для второго нейрона скрытого слоя и получим значение 0,60.
И, наконец, повторим эти операции для единственного нейрона в выходном слое нашей нейросети и получим значение 0,60, что мы условились считать как истину.
Пока что это абсолютно случайное значение, так как веса мы выбирали случайно. Но, предположим, что мы знаем ожидаемое значение для такого набора входных данных и наша сеть ошиблась. В таком случае нам нужно вычислить ошибку и изменить параметры весов, таким образом немного обучив нашу нейросеть.
Первым делом рассчитаем ошибку на выходе сети. Делается это довольно просто, нам просто нужно получить разницу полученного значения и ожидаемого.
Чтобы узнать насколько нам надо изменить веса нашего нейрона, нам нужно величину ошибки умножить на производную от нашей активационной функции в этой точке. К счастью, производная от сигмоиды довольно проста.
Таким образом наша дельта весов будет равна
Новый вес для входа нейрона рассчитывается по формуле
Аналогичным образом рассчитаем новый вес для второго входа выходного нейрона:
Итак, мы скорректировали веса для входов выходного нейрона, но чтобы рассчитать остальные, нам нужно знать ошибку для каждого из нейронов нашей нейросети. Это делается не так очевидно как для выходного нейрона, но тоже довольно просто. Чтобы получить ошибку каждого нейрона нам нужно новый вес нейронной связи умножить на дельту. Таким образом ошибка первого нейрона скрытого слоя равна:
error = 0.18 * 0.24 = 0.04
Теперь, зная ошибку для нейрона, мы можем произвести все те же самые операции, что провели ранее, и скорректировать его веса. Этот процесс называется обратным распространением ошибки.
Итак, мы знаем как работает нейрон, что такое нейронные связи в нейросети и как происходит процесс обучения. Этих знаний достаточно чтобы применить их на практике и написать простейшую нейросеть, чем мы и займемся в следующей части статьи.
Сколько данных обучения требуется для машинного обучения?
Дата публикации 2017-07-24
Количество необходимых вам данных зависит как от сложности вашей проблемы, так и от сложности выбранного вами алгоритма.
Это факт, но он не поможет вам, если вы находитесь в самом конце проекта машинного обучения.
Общий вопрос, который мне задают:
Сколько данных мне нужно?
Я не могу ответить на этот вопрос непосредственно для вас или для кого-либо. Но я могу дать вам несколько способов обдумать этот вопрос.
В этом посте я изложу набор методов, которые вы можете использовать, чтобы подумать о том, сколько учебных данных вам нужно, чтобы применить машинное обучение к вашей проблеме.
Я надеюсь, что один или несколько из этих методов могут помочь вам понять сложность вопроса и то, как он тесно связан с сущностью проблемы индукции, которую вы пытаетесь решить.
Давайте погрузимся в это.
Примечание. Есть ли у вас собственные эвристические методы для определения объема данных, необходимых для машинного обучения? Пожалуйста, поделитесь ими в комментариях.
Почему вы задаете этот вопрос?
Важно знать, почему вы спрашиваете о необходимом размере учебного набора данных.
Ответ может повлиять на ваш следующий шаг.
В более общем плане, у вас могут возникнуть другие пешеходные вопросы, такие как:
Возможно, именно эти последние вопросы и будут рассмотрены в предложениях в этом посте.
На практике я сам отвечаю на этот вопрос, используя кривые обучения (см. Ниже), используя методы повторной выборки для небольших наборов данных (например, перекрестную проверку в k-кратном порядке и начальную загрузку) и добавляя доверительные интервалы к конечным результатам.
По какой причине вы спрашиваете о количестве образцов, необходимых для машинного обучения?
Пожалуйста, дайте мне знать в комментариях.
Итак, сколько данных вам нужно?
1. Это зависит; Никто не может сказать вам
Никто не может сказать вам, сколько данных вам нужно для вашей задачи прогнозного моделирования.
Это непостижимо: неразрешимая проблема, ответы на которую вы должны найти путем эмпирического исследования.
Объем данных, необходимых для машинного обучения, зависит от многих факторов, таких как:
Это наша отправная точка.
А также «это зависит»- это ответ, который большинство практикующих даст вам в первый раз, когда вы спросите.
2. Причина по аналогии
Многие люди работали над многими проблемами прикладного машинного обучения перед вами.
Некоторые из них опубликовали свои результаты.
Возможно, вы можете посмотреть на исследования проблем, похожих на вашу, как на оценку объема данных, которые могут потребоваться.
Точно так же обычно проводят исследования того, как производительность алгоритма масштабируется с размером набора данных. Возможно, такие исследования могут сообщить вам, сколько данных вам требуется для использования определенного алгоритма.
Возможно, вы можете усреднить по нескольким исследованиям.
Поиск документов в Google,Google ученый, а такжеArxiv,
3. Используйте экспертизу домена
Вам нужен образец данных о вашей проблеме, который представляет проблему, которую вы пытаетесь решить.
В общем, примеры должны быть независимыми и одинаково распределенными.
Помните, что в машинном обучении мы учим функцию сопоставления входных данных с выходными данными. Изученная функция сопоставления будет полезна только тем данным, которые вы предоставляете для изучения.
Это означает, что должно быть достаточно данных для разумного захвата отношений, которые могут существовать как между входными объектами, так и между входными объектами и выходными объектами.
Используйте свои знания предметной области или найдите эксперта по домену и расскажите о домене и масштабе данных, которые могут потребоваться для обоснованного отражения полезной сложности проблемы.
4 Используйте статистическую эвристику
Существуют статистические эвристические методы, которые позволяют рассчитать подходящий размер выборки.
Большая часть эвристики, которую я видел, касалась задач классификации в зависимости от количества классов, входных объектов или параметров модели. Некоторые эвристики кажутся строгими, другие кажутся совершенно случайными.
Вот несколько примеров, которые вы можете рассмотреть:
Все они выглядят как специальные коэффициенты масштабирования для меня.
Вы использовали какую-либо из этих эвристик?
Как прошло? Дай мне знать в комментариях.
В теоретической работе по этой теме (не в моей области знаний!) Классификатор (например, k-ближайшие соседи) часто противопоставляется оптимальному байесовскому правилу принятия решений, а сложность характеризуется в контексте проклятия размерности; это означает экспоненциальное увеличение сложности задачи по мере увеличения количества входных объектов.
Результаты показывают, что следует избегать локальных методов (например, k-ближайших соседей) для разреженных выборок из задач большой размерности (например, несколько выборок и много входных объектов).
5. Нелинейным алгоритмам нужно больше данных
Более мощные алгоритмы машинного обучения часто называют нелинейными алгоритмами.
По определению они могут изучать сложные нелинейные отношения между входными и выходными функциями. Вы можете очень хорошо использовать эти типы алгоритмов или намереваться их использовать.
Эти алгоритмы часто являются более гибкими и даже непараметрическими (они могут определить, сколько параметров требуется для моделирования вашей проблемы в дополнение к значениям этих параметров). Они также отличаются высокой дисперсией, что означает, что прогнозы варьируются в зависимости от конкретных данных, используемых для их обучения. Эта дополнительная гибкость и мощность достигается за счет необходимости большего количества обучающих данных, часто намного большего объема данных.
Фактически, некоторые нелинейные алгоритмы, такие как методы глубокого обучения, могут продолжать совершенствоваться, если вы дадите им больше данных.
Если линейный алгоритм достигает хорошей производительности с сотнями примеров на класс, вам может понадобиться тысячи примеров на класс для нелинейного алгоритма, такого как случайный лес или искусственная нейронная сеть.
6. Оцените размер набора данных и умение модели
При разработке нового алгоритма машинного обучения часто демонстрируют и даже объясняют производительность алгоритма в зависимости от объема данных или сложности проблемы.
Эти исследования могут или не могут быть выполнены и опубликованы автором алгоритма, и могут или не могут существовать для алгоритмов или типов задач, с которыми вы работаете.
Я бы предложил провести собственное исследование с использованием имеющихся данных и одного хорошо работающего алгоритма, такого как случайный лес.
Составьте исследование, в котором оценивается умение модели в зависимости от размера набора обучающих данных.
Построение результата в виде линейного графика с размером набора обучающих данных на оси X и навыком модели на оси Y даст вам представление о том, как размер данных влияет на навык модели в конкретной задаче.
Этот график называетсякривая обучения,
Из этого графика вы можете спроецировать объем данных, необходимый для разработки умелой модели, или, возможно, сколько данных вам действительно нужно, прежде чем вы достигнете точки перегиба убывающей доходности.
Я настоятельно рекомендую этот подход в целом для разработки надежных моделей в контексте всестороннего понимания проблемы.
7. Наивный догадка
Вам нужно много данных при применении алгоритмов машинного обучения.
Зачастую вам требуется больше данных, чем может потребоваться в классической статистике.
Я часто отвечаю на вопрос о том, сколько данных требуется с легкомысленным ответом:
Получите и используйте как можно больше данных.
Если ответить на вопрос и не знать специфику вашей проблемы, я бы сказал что-то наивное:
Опять же, это просто дополнительные предположения, но это отправная точка, если вам это нужно. Так что начните!
Большие данные часто обсуждаются вместе с машинным обучением, но вам может не потребоваться, чтобы большие данные соответствовали вашей прогностической модели.
Некоторые проблемы требуют больших данных, всех данных, которые у вас есть. Например, простой статистический машинный перевод:
Если вы выполняете традиционное прогнозное моделирование, то, скорее всего, будет наблюдаться уменьшение прибыли в размере обучающего набора, и вам следует изучить свои проблемы и выбранные вами модели, чтобы увидеть, где эта точка находится.
Не медлите; Начать
Теперь прекратите готовиться к моделированию вашей проблемы и моделируйте ее.
Не позволяйте проблеме размера обучающего набора помешать вам начать работу над проблемой прогнозирующего моделирования.
Во многих случаях я рассматриваю этот вопрос как причину для промедления.
Получите все данные, которые вы можете, используйте то, что у вас есть, и посмотрите, насколько эффективны модели для вашей проблемы.
Изучите что-то, затем примите меры, чтобы лучше понять, что у вас есть, с помощью дальнейшего анализа, дополнить ваши данные дополнением или собрать больше данных из своего домена.
Дальнейшее чтение
Этот раздел предоставляет больше ресурсов по этой теме, если вы хотите углубиться.
Этот вопрос широко обсуждается на таких сайтах Q & A, как Quora, StackOverflow и CrossValidated. Ниже приведено несколько примеров выбора, которые могут помочь.
Я ожидаю, что есть некоторые большие статистические исследования по этому вопросу; вот несколько я мог найти.
Другие связанные статьи.
Если вы знаете больше, пожалуйста, дайте мне знать в комментариях ниже.
Резюме
В этом посте вы обнаружили набор способов думать и рассуждать о проблеме ответа на общий вопрос:
Сколько данных обучения мне нужно для машинного обучения?
Помог ли какой-либо из этих методов?
Позвольте мне знать в комментариях ниже.
У вас есть вопросы?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.
За исключением, конечно, вопроса о том, сколько данныхвыконкретно нужно.