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

Почему отсутствие данных является проблемой?

Прежде всего, давайте разберемся в проблеме. Почему отсутствующие данные являются проблемой?

Сначала рассмотрим сценарий «Нет данных». Несмотря на то, что проблема отсутствия данных может быть очевидной для специалистов по данным, многие люди не знают об этой проблеме. Вот высокоуровневое объяснение проблемы. Представьте, что вы сидите в пустой комнате. Кто-то говорит вам, что через 10 минут вас попросят распознать китайские иероглифы. Допустим, у вас нет предыдущего знания китайского языка, и вы не можете чему-либо научиться. Через 10 минут приходит интервьюер и начинает показывать вам некоторых персонажей. У вас есть два варианта — ничего не говорить или угадать смысл. Насколько хорошо вы выступили? Думайте о моделях машинного обучения как о маленьких, очень упрощенных искусственных мозгах. Говорим ли мы о размеченных или неразмеченных данных, модели машинного обучения для обучения требуют данных. Без него лучшие модели могут обойтись только догадками.

Аналогичные проблемы возникают при работе с небольшими наборами данных или наборами данных с отсутствующими элементами данных — необъективными оценками. Представьте себя в той же комнате, но на этот раз там есть визуальный словарь китайского языка, в котором 50 иероглифов. Вы читаете его, запоминаете некоторые символы, возможно, обнаруживаете какие-то шаблоны, которые могут быть полезны для обнаружения еще большего количества символов в будущем. Приходит интервьюер и просит вас распознать 10 символов. К счастью, все 10 персонажей были в книге, и ваши ответы на 100% точны. Теперь мы можем сделать вывод, что вы отлично знаете китайский язык! Нет? Почему? Что произойдет, если вы получите еще 10 персонажей, которых раньше не видели? Основываясь на этих 10 иероглифах, интервьюер может сделать любой вывод, и он может варьироваться от «высокое владение письменным китайским языком» до «полное отсутствие знания китайского языка». Вы можете себе представить, какой ущерб может нанести плохо оцененная модель машинного обучения в производственной среде.

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

Сколько данных мне нужно?

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

Вот несколько идей о том, как вы можете решить, сколько данных вам нужно. Имейте в виду, что задача вашей модели состоит в том, чтобы фиксировать корреляции между входными функциями и/или между входными и выходными функциями. Вы должны предоставить достаточно данных, чтобы охватить, по крайней мере, наиболее репрезентативные сценарии. Чем сложнее корреляции, тем больше данных вам нужно. Вот пример. Представьте, что вам нужно создать игру «Соедини точки», результатом которой должна быть синусоида. Сколько точек вы бы поставили? Не могли бы вы описать это с одной точкой? Два? Три? Пять? Сто? Когда вы должны остановиться? Точно так же производительность любой модели зависит от того, сколько хороших образцов данных вы предоставите. Надеюсь, теперь понятно, что нелинейные алгоритмы часто требуют больше данных, чем линейные.

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

Если ничего из этого не относится к вам, начните с чего-нибудь, сделайте обоснованное предположение! Насколько велика ваша проблема? Для сложных задач глубокого обучения, таких как распознавание изображений, вам, вероятно, потребуются от сотен тысяч до миллионов образцов данных (изображений). Для более простых задач попробуйте несколько сотен, нескольких тысяч, десятков тысяч и посмотрите, как работает ваша модель. Попробуйте более простые модели. Метод проб и ошибок — ваш лучший друг.

Обработка недостающих данных

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

Сбор дополнительных данных

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

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

Методы увеличения данных

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

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

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

Работа с небольшим объемом данных

Если ни один из них не работает для вас, остается только использовать алгоритмы, которые обеспечат достойную производительность даже при небольшом объеме данных. Если вы еще этого не сделали, проанализируйте свои данные! Посмотрите, все ли функции действительно необходимы, и/или рассмотрите возможность регуляризации и усреднения модели. Обратите особое внимание на шум и выбросы. Они могут иметь гораздо большее негативное влияние на ваши результаты, если ваш набор данных невелик. Работайте с более простыми моделями и исключайте сложные алгоритмы, связанные с нелинейностью или взаимодействием функций. Наконец, введите доверительные интервалы. Например, при классификации ваших данных рассмотрите вероятностную классификацию. Это может быть очень полезно при анализе производительности модели.

Резюме

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

Первоначально опубликовано на www.smartcat.io.