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

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

Среди примеров можно выделить два основных провала. Один задает неправильный вопрос. Другой - неправильная процедура оценки. К сожалению, этими навыками сложно овладеть, и они имеют множество тонких слоев.

Задаю неправильный вопрос

Джейсон Белл заявляет, что нам нужно думать о том, что мы считаем победой. "Привлекает ли эта рекламная кампания Google потенциальных клиентов, ведущих к продаже?" vs. "Привлекает ли эта рекламная кампания Google потенциальных клиентов, ведущих к дополнительным продажам?"

Погуглите «Amazon‹ название книги ›», и первое объявление обычно предназначено для Amazon. Алгоритм хорошо поработал? Я так не думаю. На людей в такой ситуации реклама не влияет, но они все равно могут нажимать на нее. Это самое худшее!

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

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

При оценке программ рассматривается эффективность и результативность программ и политики. Дисциплина заставляет нас задавать следующие вопросы:

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

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

Использование неправильной процедуры оценки

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

Сделать это правильно чрезвычайно сложно. Требуется тщательный выбор подходящей метрики оценки и объективной выборки данных.

Неверная метрика оценки

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

Я не могу не вспомнить главу «Как разрабатывать алгоритмы» в «Руководстве по разработке алгоритмов» Стива Скиены.

Я правда понимаю в чем проблема?

(а) Из чего именно состоит ввод?

б) Каковы именно желаемые результаты или результат?

(c) Могу ли я построить достаточно маленький входной пример, чтобы его можно было решить вручную? Что происходит, когда я пытаюсь ее решить?

(d) Насколько важно для моей заявки, чтобы я всегда находил оптимальный ответ? Могу ли я согласиться на что-то близкое к оптимальному?

(e) Насколько велик типичный пример моей проблемы?

(f) Насколько важна скорость в моем приложении?

(g) Сколько времени и усилий я могу вложить в реализацию?

Смещение выборки

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

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

Сбор данных

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

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

Очистка данных

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

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

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

Разработка функций

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

Если мы или кто-то еще усредняем полный набор данных, мы раскрываем информацию о «будущем» в наших обучающих данных во время тестирования. В результате мы преувеличиваем эффективность нашей модели. Это проблема, хотя средства в данных обучения и тестирования почти одинаковы.

Принятие решений

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

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

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

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

Что происходит, когда мы снова пытаемся применить нашу модель?

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

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

Не попадитесь врасплох

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

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