Зависимости данных

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

Зависимости данных

  • Входные данные (функции) определяют поведение системы машинного обучения.
    • Мы пишем модульные тесты для программных библиотек, но как насчет данных?
  • При выборе входных сигналов требуется осторожность.
    • Может быть, даже больше внимания, чем при выборе программных библиотек?
  • Надежность
    • Что происходит, когда сигнал недоступен? Вы знаете?
  • Надежность
    • Что происходит, когда сигнал недоступен? Вы знаете?
  • Версии
    • Изменяется ли когда-нибудь система, вычисляющая этот сигнал? Как часто? Что случилось бы?
  • Надежность
    • Что происходит, когда сигнал недоступен? Вы знаете?
  • Версии
    • Изменяется ли когда-нибудь система, вычисляющая этот сигнал? Как часто? Что случилось бы?
  • Необходимость
    • Оправдывает ли полезность сигнала затраты на его включение?
  • Корреляции
    • Являются ли какие-либо из моих входных сигналов настолько связанными друг с другом, что нам нужны дополнительные стратегии, чтобы разделить их?
  • Корреляции
    • Являются ли какие-либо из моих входных сигналов настолько связанными друг с другом, что нам нужны дополнительные стратегии, чтобы разделить их?
  • Петли обратной связи
    • На какой из моих входных сигналов могут повлиять выходные данные моей модели?

Резюме видео-лекции

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

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

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

Надежность

Несколько вопросов о надежности ваших входных данных:

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

Версии

Несколько вопросов о версиях:

  • Меняется ли когда-нибудь система, которая вычисляет эти данные? Если так:
    • Как часто?
    • Как вы узнаете, когда эта система изменится?

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

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

Необходимость

Следующий вопрос может напомнить вам о регуляризации :

  • Оправдывает ли полезность функции затраты на ее включение?

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

Корреляции

Некоторые характеристики коррелируют (положительно или отрицательно) с другими характеристиками. Задайте себе следующий вопрос:

  • Есть ли какие-либо функции настолько связанные друг с другом, что вам нужны дополнительные стратегии, чтобы разделить их?

Петли обратной связи

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

Иногда модель может влиять на другую модель. Например, рассмотрим две модели прогнозирования цен на акции:

  • Модель А, которая является плохой прогностической моделью.
  • Модель Б.

Так как модель А ошибочна, она ошибочно решает купить акции X. Эти покупки повышают цену акций X. Модель B использует цену акций X в качестве исходной характеристики, поэтому модель B может легко прийти к некоторым ложным выводам о стоимость акций Акции X. Таким образом, Модель Б может покупать или продавать акции Акции X на основе неправильного поведения Модели А. Поведение Модели Б, в свою очередь, может повлиять на Модель А, возможно, спровоцировав тюльпаноманию или падение акций Компании Х.