Использование принципа бритвы Оккама для быстрого продвижения вашего проекта

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

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

И решение простое… Убедитесь, что вы работаете только над тем, что абсолютно важно!

И вы делаете это, делая прототип вашего проекта как можно проще. Не упрощая.

Хорошо, отлично… как мне это сделать?

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

Я большой поклонник принципа бритвы Оккама.

Бритва Оккама – это философия простого решения проблем, также известная как закон экономии, согласно которому сущности не следует умножать без необходимости. .

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

Суть этого принципа намекает на необходимость простоты.

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

Вот моя бритва OCAM для вашего прототипирования ваших проектов по науке о данных или машинному обучению:

  • О получить
  • Сбережливое
  • Аанализ
  • Модель
  • Подать

Получать

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

Поэтому первым шагом является создание модуля, который получает и принимаетэти данные из своего источника. Эти данные могут поступать в различных форматах: csv, json, xml и т. д. И вам нужно будет создать какую-то интеграцию с этим источником данных, чтобы вы могли начать работать с ним. Это также известно как извлекающая часть конвейера ETL.

Вот отличный учебник о том, как получать данные в различных форматах и ​​преобразовывать их во что-то более полезное.



Чистый

После того, как вы получили данные, их нужно будет очистить.

Я кратко познакомлю читателя с несколькими идеями о том, как можно очистить данные.

Шаг 1: Найдите грязь

Начните очистку данных, определив, что не так с вашими данными.

Найдите следующее:

  • Есть ли строки с пустыми значениями? Целые столбцы без данных? Какие данные отсутствуют и почему?
  • Как распространяются данные? Помните, визуализации — ваши друзья. Делайте графики, исследуйте и внимательно изучайте выбросы. Проверьте распределения, чтобы увидеть, какие группы или диапазоны более широко представлены в вашем наборе данных.
  • Остерегайтесь странностей: существуют ли невозможные значения? Типа «дата рождения: мужчина», «адрес: -1234».
  • Согласны ли ваши данные? Почему одни и те же названия продуктов пишутся прописными буквами, а иногда — верблюжьим?

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

Шаг 2: очистите грязь

Знать проблему — полдела.

Другая половина ее решает.

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

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

Шаг 2 включает восемь важных соображений, касающихся ваших данных:

  • Недостающие данные
  • Выбросы
  • Загрязненные данные
  • Несогласованные данные
  • Неверные данные
  • Дублирующиеся данные
  • Проблемы с типами данных
  • Структурные ошибки

Шаг 3: промойте и повторите

После очистки повторяете шаги 1 и 2.

Это полезно по трем причинам:

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

Специалисты по данным тратят 83,2 % (примечание: не реальная статистика) своего времени на очистку и организацию данных из-за связанных с этим преимуществ.

Или, как гласит старая мудрость машинного обучения:

Мусор на входе, мусор на выходе.

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

Чистые данные побеждают причудливые алгоритмы в любой день.

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

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

Анализировать

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

Это может включать ряд действий, включая профилирование ваших данных. Что такое профилирование, спросите вы?

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

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

А способов профилировать данные столько же, сколько, так сказать, содрать шкуру с кота.

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

Вот ИДЕЯ того, что вы будете делать на этапе анализа:

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

Вопросы, которые вы должны задать себе на этом этапе, включают:

  • Чему я научился?
  • Помогает ли это мне понять явление лучше, чем раньше?
  • Имеют ли мои теории о том, что может воздействовать на мою проблему, влиять на нее или вызывать ее, больше ясности?

А теперь начинается самое интересное, пора…

Модель

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

Это рецепт бесконечных страданий.

Да все верно. Бесконечные, ужасные страдания.

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

И эта контрольная точка называется базовым уровнем.

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

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

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

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

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

Какой результат может получить кто-то, не используя причудливую технику специалиста по данным?

Это может быть что-то вроде линейной регрессии.

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

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

Это становится тем, с чем вы сравниваете любой более сложный алгоритм машинного обучения.

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

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

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



Служить

Теперь нужно как-то эти результаты куда-то отправить.

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

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

Ваша подача не должна быть изысканной.

Помните, это прототип.

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

Я большой поклонник Gradio, и вы можете проверить его интеграцию с Comet здесь:



Вот некоторые из вещей, которые вы можете обнаружить на этом этапе:

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

Вот и все.

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

Получив это, вы можете повторять, улучшать и интегрировать.

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

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

Вы заметите, что когда вы начнете удалять, у вас останется всего несколько общих типов задач:

  • Ополучить данные
  • Cбережливые данные
  • Аанализировать данные
  • Моделированиемоделирования процесса генерации данных
  • Отправитьпоказать результаты

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

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

И помните: у вас есть одна жизнь на этой планете, почему бы не попробовать сделать что-то большое?

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

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

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