Два месяца назад я начал свою первую штатную должность в качестве специалиста по данным, работая над внедрением машинного обучения в инженерную фирму, занимающуюся коммерческим строительством. Я получил работу после трех месяцев тренировок в учебном лагере и изнурительных пятимесячных поисков работы. На протяжении всего этого процесса я погрузился в мир науки о данных, брался за побочные проекты, изучал новейшие модели глубокого обучения и просматривал доски объявлений, такие как / r / datascience. Поступая так, легко создавалось впечатление, что я точно знаю, что значит быть специалистом по данным. Это все равно что получать деньги за участие в соревнованиях Kaggle, верно? Не совсем.
Пока что опыт был очень полезным, но и сложным, чего я не ожидал. После того, как я понял, как применить свои навыки в новой области, имея возможность учиться только на своих ошибках, я надеюсь, что эти идеи помогут вам подготовиться к предстоящим вызовам. Это невероятно полезный путь для спуска, и, надеюсь, эти знания помогут вам немного легче преодолеть первый набор препятствий на нем.
1. Никогда не бойтесь задавать вопросы
Когда специалисты по обработке данных описывают свою работу, они часто упоминают о важности того, чтобы быть «экспертом в предметной области». От вас ждут не только технических знаний в области разработки программного обеспечения и машинного обучения, но и понимания тонкостей своего бизнеса и своего положения на рынке. Однако, когда вы начинаете новую роль в области науки о данных, скорее всего, это будет связано с областью, в которой вы еще не являетесь экспертом, и это нормально (я не говорю, что это относится ко всем, но я думаю, что в 9 случаях из 10 это будет иметь место для вашей первой работы в области науки о данных).
Один из лучших способов как можно быстрее стать экспертом, которым от вас ожидают стать, - это получать информацию от окружающих вас людей. Каждый раз, когда кто-то ссылается на область компании, о которой вы никогда не слышали, или использует отраслевой жаргон, которого вы не знаете, спросите их, что это такое. Ваше любопытство не только увеличит темп обучения, но и не застрянет в неудобной ситуации, когда вам придется имитировать понимание, когда в следующий раз поднимется эта тема. Многим людям на рабочем месте неудобно открываться, когда они чего-то не понимают. Если да, то вы быстро пройдете мимо этих людей. Идите уверенно и учитесь.
Задание вопросов выходит за рамки знания предметной области. Я не могу сказать вам, сколько раз я видел, как одноклассник или студент бился головой о стену, изо всех сил пытаясь решить проблему с кодированием и не зная, куда обратиться. Не бойтесь спрашивать в Интернете! Stack Overflow - ваш друг. Конечно, можно добиться роста от самостоятельной работы с проблемами, но спросить других людей, как они справились с той же проблемой, - отличный шанс быстро получить ответ и, надеюсь, найти несколько новых методов, о которых вы, возможно, никогда не думали. .
2. Разберитесь в проблеме, прежде чем придумывать решение.
Учитывая весь ажиотаж в мире науки о данных, связанный с новыми моделями и технологиями, может быть легко увлечься немедленными размышлениями о том, как применить эти методы к проблемам, над которыми вы работаете. По правде говоря, часто эти методы либо слишком сложны, чтобы быть практичными, либо они не решают проблему, над которой вы работаете. Одержимость науки о данных соревнованиями по повышению точности на 0,001% позволяет легко думать, что достижение максимально возможной производительности модели является единственным важным соображением.
На практике ваша работа в качестве специалиста по данным имеет очень много ограничений. Ваше время, данные, к которым у вас есть доступ, и вычислительная мощность - все это факторы, которые могут привести к тому, что простой ответ будет лучшим. Может быть, вы работаете над проблемой, для решения которой эта последняя капля производительности очень ценится для вашей компании, и если это вы, непременно потратьте время, которое вам нужно. Но вместо того, чтобы просто стремиться к производительности ради нее самой, постарайтесь понять влияние этой производительности на бизнес, а затем взвесите в уме, оправдывают ли добавленное время и сложность это решение. Возможно, вам вообще не нужно использовать машинное обучение! Если вы сначала сосредоточитесь на полном понимании параметров и последствий проблемы для бизнеса, у вас будет гораздо меньше шансов найти излишне сложное решение.
3. Научитесь делать свой код переносимым
Когда вы впервые изучаете науку о данных, у вас может сложиться впечатление, что это все записные книжки Jupyter и ядра Kaggle, и что пока вы можете создавать надежную модель в среде iPython, у вас все отлично. Но что насчет того, когда вы действительно хотите внедрить эту модель в разработку? Конечно, вы можете забрать свою модель и передать ее кому-нибудь, если вы работаете в магазине Python, но что, если этим человеком должны быть вы? А как насчет всех функций изменения данных, которые вы написали ранее в своем блокноте? Их тоже нужно будет реализовать.
Скорее всего, эти функции будут полезны и для других проектов, над которыми вы работаете. Это когда вам нужно подумать о том, чтобы сделать свой код модульным и создать набор строительных блоков, которые вы можете легко реализовать в производственной среде. Если вы извлекаете данные из набора API, создавайте оболочки, которые можно импортировать в другие скрипты. Если вы постоянно очищаете одни и те же данные, превратите свои функции очистки в класс, который можно использовать везде, где эти данные появляются. Классический «проект по науке о данных» может привести к мысли, что каждый проект полностью разрознен и не уделяется особого внимания ценности частей, которые вы создаете в процессе. Может быть, в своем учебном лагере вы одну неделю работали с набором данных «Титаник», а на следующей выполняли распознавание изображений, чтобы никогда больше не открывать блокнот «Титаник». Попав на рабочее место, вы снова и снова будете работать с одними и теми же данными. Сосредоточьтесь на программировании таким образом, чтобы вашу работу можно было быстро воспроизвести в каждом проекте и как можно проще перенести из записных книжек в производство.
4. Протестируйте и создайте прототип всего
Как только вы начнете мыслить модульно и сделать свой код переносимым, тестирование и создание прототипов в максимально возможном количестве ситуаций становится невероятно важным для эффективного выполнения работы. Допустим, вы начали создавать конвейер машинного обучения. У вас есть сценарий, который извлекает данные из вашей базы данных, очищает и преобразует их. У вас есть отдельный сценарий, который извлекает данные из API, другой, который объединяет все эти данные вместе, еще один, который обучает ваши модели, и, наконец, тот, который выдает обученную модель, которую вы можете использовать в производственной среде. Есть много шагов, на которых этот процесс может пойти не так.
Если вы привыкли работать в статической среде, такой как блокнот Jupyter, когда все ваши данные поступают из CSV, легко упустить из виду, насколько важно продумывать крайние случаи, которые могут возникнуть в реальной жизни. Не позволяйте себе успокаиваться только потому, что ваши скрипты работают с набором данных, с которым вы работаете в данный момент. Реальные данные беспорядочные, и они разорвут ваш скрипт на части. Если вы построите весь свой конвейер только для того, чтобы понять, что все ломается, когда есть нулевые значения где-то, о чем вы не думали, вы будете ругать себя за то, что не подумали об этом раньше. Чем дальше в вашем конвейере проблема, тем сложнее ее диагностировать, что увеличивает время, необходимое для исправления. Сделайте себе одолжение и исправьте эти ошибки, прежде чем вы сделаете десять шагов вглубь.
5. Оставайтесь позитивными
Это может показаться самым банальным советом, но его сложнее всего иметь в виду, когда вы часами работаете над ошибками или пытаетесь понять, как работает алгоритм. Скорее всего, если вы читаете это, значит, вы относительно новичок в науке о данных, а это невероятно сложная область. Неслучайно это прибыльное занятие, в котором работают доктора наук и исследователи. Если вы сталкиваетесь со стенами, сбиваетесь с толку или чувствуете себя подавленным из-за широты знаний, которые от вас ожидают, сделайте передышку. Чувствовать вызов - это нормально, и если да, то это здорово. Это значит, что вы учитесь. У вас есть опора на всех, кто проживает свои дни, не чувствуя проблем. Подумайте о том, что в первую очередь вдохновило вас на науку о данных, и используйте это как мотивацию для решения стоящих перед вами задач. Если вы сможете продолжать получать удовольствие от работы, даже несмотря на борьбу, вы настроите себя на удивительно полезный и успешный опыт.