Программная инженерия для машинного обучения

Насколько это может быть важно?

ТОЛЬКО необходимая теория

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

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

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

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

Возможно, вы использовали scikit-learn, numpy, Tensorflow. Правильно? Но задумывались ли вы о том, что работает за этим? Проще говоря, это объектно-ориентированное программирование (OOPS), которое представляет собой парадигму программирования и активно используется при написании кода уровня производства.
Хорошая часть состоит в том, что когда вы работаете над проектом и хотите получить собственный оптимизированный пакет, вы можете закодировать его (желательно на python), а затем загрузить в PyPI (это индекс пакета python). Каждый раз, когда вы работаете над проектом, вы можете просто импортировать его, а не вводить весь код, что сделает код более чистым и простым в использовании.

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

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

ОСНОВНЫЕ Практические советы

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

  1. Изучите любой язык высокого уровня:
    Все языки высокого уровня поддерживают ООП. Мое предложение изучить Python. Если вы хорошо знаете C, освоение Python не займет много времени, и даже если вы новичок в программировании, Python довольно легко освоить.
  2. Изучите Структуры данных и алгоритмы:
    Если вы хорошо владеете структурой данных, тогда только он сможет понять алгоритмы и понять их анализ. Здесь я пропускаю математическую часть, так как вам не нужно так сильно подчеркивать, если вы не занимаетесь академической наукой. Ресурсы, которые я предоставил, вероятно, являются лучшими, если вы хотите быстро освоить его.
  3. Изучите Базы данных:
    Здесь я предлагаю книгу, которую вам просто нужно пройти, чтобы завершить цикл, и я бы хотел, чтобы вы особо подчеркнули главу 20. < br /> Это поможет понять наиболее упускаемую из виду часть машинного обучения.

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

Будет жить

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

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

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

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

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

Вывод

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

Спасибо!