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

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

Шаг 1. Переведите формулировку бизнес-проблемы в техническую форму

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

Например. Допустим, нам нужно разработать решение для снижения уровня преступности в городе. Термин «уменьшить» можно интерпретировать как:

  • Снижение уровня преступности в районах с высоким уровнем преступности
  • Снижение уровня преступности по наиболее распространенным видам преступлений

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

Шаг 2. Выберите метод контролируемого обучения

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

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

  • Если нам нужно снизить уровень преступности в районах с высоким уровнем преступности, нам нужно будет определить уровень преступности в районе. Это проблема регрессии.
  • Если нам нужно снизить уровень преступности наиболее распространенных видов преступлений, нам нужно будет определить наиболее распространенный вид преступлений в районе. Это проблема классификации.

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

Шаг 3. Обзор литературы

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

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

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

Шаг 4. Очистка данных

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

  • Отсутствующие значения

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

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

  • Повторяющиеся записи

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

  • Неверные значения

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

Шаг 5. Разработка функций

Feature Engineering — один из самых важных шагов в любой проблеме науки о данных. Хороший набор функций может заставить простые модели работать с вашими данными. Если функции недостаточно хороши, вам, возможно, придется перейти на сложные модели. Feature Engineering в основном включает в себя:

  • Удаление лишних функций

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

  • Преобразование объекта

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

Шаг 6. Изменение данных

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

Шаги с 7 по 9 повторяются.

Шаг 7. Моделирование

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

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

Шаг 8. Сравнение моделей

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

Хорошим методом сравнения производительности различных моделей являются кривые ROC. Кривые ROC помогают визуализировать производительность различных моделей при разных пороговых значениях. В то время как кривые ROC дают целостное представление о производительности модели, на основе бизнес-решения вы должны выбрать показатель производительности, такой как Точность, Истинно положительный показатель, Ложноположительный показатель, Оценка F1 и т. д.

Шаг 9. Анализ ошибок

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

Шаг 10. Улучшите лучшую модель

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

Понимание того, является ли ваша модель избыточной или недостаточной, подскажет вам, как действовать в следующих шагах. Если модель переобучается, вы можете подумать о сборе дополнительных данных. Если модель недостаточно подходит, вы можете подумать об усложнении моделей. [Например. Добавление членов более высокого порядка к линейной/логистической регрессии]

Шаг 11. Развертывание модели

Когда у вас будет окончательная модель, вы захотите, чтобы модель была развернута, чтобы она автоматически предсказывала выходные данные для новой точки данных без повторного обучения. Хотя вы можете вывести формулу для простых моделей, таких как линейная регрессия, логистическая регрессия, дерево решений и т. д., это не так просто для сложных моделей, таких как SVM, нейронные сети, случайный лес и т. д. Я не очень хорошо знаком с другими языками, но В Python есть библиотека pickle, которая позволяет сохранять модели и использовать их для прогнозирования вывода новых данных.

Шаг 12. Добавление отзыва

Обычно данные для любой задачи науки о данных представляют собой исторические данные. Хотя это может быть в определенной степени похоже на текущие данные, оно может не отражать текущие тенденции или изменения. Например. Если вы используете население в качестве входного параметра, а население за 2015–2016 годы может незначительно отличаться, если вы используете модель через 5 лет, это может дать неверные результаты.

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

Заключительные замечания

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

Ссылка на LinkedIn: https://www.linkedin.com/pulse/how-i-approach-data-science-problem-ganesh-n-prasad?trk=prof-post

если у вас есть какие-либо предложения, оставьте комментарий или свяжитесь со мной по адресу [email protected]